@strapi/admin 5.37.1 → 5.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/App.js +1 -1
- package/dist/admin/admin/src/App.js.map +1 -1
- package/dist/admin/admin/src/App.mjs +1 -1
- package/dist/admin/admin/src/App.mjs.map +1 -1
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +2 -2
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/assets/images/free-trial.png.js.map +1 -1
- package/dist/admin/admin/src/assets/images/free-trial.png.mjs.map +1 -1
- package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.js.map +1 -1
- package/dist/admin/admin/src/assets/images/logo-strapi-2022.svg.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
- package/dist/admin/admin/src/components/Context.js.map +1 -1
- package/dist/admin/admin/src/components/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/DragLayer.js.map +1 -1
- package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +1 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +14 -0
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +15 -1
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Checkbox.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Checkbox.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/DateTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ApiTokensSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentManagerSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/utils/migrations.mjs.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
- package/dist/admin/admin/src/components/LanguageProvider.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +2 -2
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +2 -2
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
- package/dist/admin/admin/src/components/PluginsInitializer.mjs.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +3 -3
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetHelpers.mjs +3 -3
- package/dist/admin/admin/src/components/WidgetHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs +2 -2
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs +3 -3
- package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/constants/filters.js.map +1 -1
- package/dist/admin/admin/src/constants/filters.mjs.map +1 -1
- package/dist/admin/admin/src/constants/theme.js.map +1 -1
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.js.map +1 -1
- package/dist/admin/admin/src/core/store/hooks.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/basename.js.map +1 -1
- package/dist/admin/admin/src/core/utils/basename.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
- package/dist/admin/admin/src/features/AppInfo.js.map +1 -1
- package/dist/admin/admin/src/features/AppInfo.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +0 -1
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +1 -2
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
- package/dist/admin/admin/src/features/Configuration.js.map +1 -1
- package/dist/admin/admin/src/features/Configuration.mjs.map +1 -1
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAdminRoles.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useClipboard.js.map +1 -1
- package/dist/admin/admin/src/hooks/useClipboard.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
- package/dist/admin/admin/src/hooks/useControllableState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDebounce.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
- package/dist/admin/admin/src/hooks/useElementOnScreen.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
- package/dist/admin/admin/src/hooks/useEnterprise.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useFocusInputField.js.map +1 -1
- package/dist/admin/admin/src/hooks/useFocusInputField.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
- package/dist/admin/admin/src/hooks/useForceUpdate.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useInjectReducer.js.map +1 -1
- package/dist/admin/admin/src/hooks/useInjectReducer.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
- package/dist/admin/admin/src/hooks/useIsMounted.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
- package/dist/admin/admin/src/hooks/useOnce.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/usePrev.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePrev.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.js.map +1 -1
- package/dist/admin/admin/src/hooks/useWarnIfUnsavedChanges.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ForgotPasswordSuccess.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Oops.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/NotFoundPage.js.map +1 -1
- package/dist/admin/admin/src/pages/NotFoundPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-audit-logs-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-content-history-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-dark.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/assets/purchase-page-sso-illustration-light.jpg.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenDescription.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/CreateView.mjs.map +1 -1
- 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/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/apiTokenPermissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ActionBoundRoutes.mjs.map +1 -1
- 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/BoundRoute.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -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/components/CollapsableContentType.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/ContentTypesSection.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
- 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 +2 -2
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- 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 +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.mjs.map +1 -1
- 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 +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.mjs.map +1 -1
- 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/ConditionsModal.mjs.map +1 -1
- 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/ContentTypeCollapses.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypes.mjs.map +1 -1
- 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/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.mjs.map +1 -1
- 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 +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RequiredSign.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleRow.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RowLabelWithCheckbox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
- 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/difference.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/getCheckboxState.mjs.map +1 -1
- 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/layouts.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/removeConditionKeyFromData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/CreateView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- 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/CreateActionCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkWrapper.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +1 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +2 -4
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/EventsTable.mjs.map +1 -1
- 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/HeadersInput.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/TriggerContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/reducer.js.map +1 -1
- package/dist/admin/admin/src/reducer.mjs +1 -1
- package/dist/admin/admin/src/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/router.js +4 -4
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/selectors.js.map +1 -1
- package/dist/admin/admin/src/selectors.mjs.map +1 -1
- package/dist/admin/admin/src/services/admin.js.map +1 -1
- package/dist/admin/admin/src/services/admin.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/services/contentApi.js.map +1 -1
- package/dist/admin/admin/src/services/contentApi.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/services/webhooks.js.map +1 -1
- package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
- package/dist/admin/admin/src/translations/es.json.js +356 -120
- package/dist/admin/admin/src/translations/es.json.js.map +1 -1
- package/dist/admin/admin/src/translations/es.json.mjs +355 -121
- package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.js +126 -1
- package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.mjs +126 -1
- package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
- package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
- package/dist/admin/admin/src/utils/arrays.js.map +1 -1
- package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/deviceId.js.map +1 -1
- package/dist/admin/admin/src/utils/deviceId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +1 -3
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +1 -3
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/locales.js.map +1 -1
- package/dist/admin/admin/src/utils/locales.mjs.map +1 -1
- package/dist/admin/admin/src/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/admin/src/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
- package/dist/admin/admin/src/utils/once.js.map +1 -1
- package/dist/admin/admin/src/utils/once.mjs.map +1 -1
- package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -1
- package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/shims.js.map +1 -1
- package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
- package/dist/admin/admin/src/utils/strings.js.map +1 -1
- package/dist/admin/admin/src/utils/strings.mjs.map +1 -1
- package/dist/admin/admin/src/utils/translatedErrors.js.map +1 -1
- package/dist/admin/admin/src/utils/translatedErrors.mjs.map +1 -1
- package/dist/admin/admin/src/utils/urls.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -1
- package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -1
- package/dist/admin/admin/tests/mockData.js.map +1 -1
- package/dist/admin/admin/tests/mockData.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/admin/tests/store.js.map +1 -1
- package/dist/admin/admin/tests/store.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +1 -1
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.js.map +1 -1
- package/dist/admin/ee/admin/src/components/GlobalNotifications.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIAvailability.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useAIUsageWarning.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimits.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/HomePage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/HomePage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- 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/components/Modal.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.mjs.map +1 -1
- 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/useAuditLogsData.mjs.map +1 -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/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Webhooks/components/EventsTable.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/index.js +10 -6
- 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/components/DefaultDocument.js.map +1 -1
- package/dist/admin/src/components/DefaultDocument.mjs.map +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -0
- package/dist/admin/src/components/NoJavascript.js.map +1 -1
- package/dist/admin/src/components/NoJavascript.mjs.map +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/server/ee/server/src/ai/containers/ai.js +0 -4
- package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.mjs +0 -4
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.js +0 -4
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +0 -4
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/content-types/audit-log.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/content-types/audit-log.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/bootstrap.js.map +1 -1
- package/dist/server/ee/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/ee/server/src/content-types/index.js.map +1 -1
- package/dist/server/ee/server/src/content-types/index.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js +5 -5
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/index.js.map +1 -1
- package/dist/server/ee/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/role.js.map +1 -1
- package/dist/server/ee/server/src/controllers/role.mjs +1 -1
- package/dist/server/ee/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js +4 -4
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +16 -16
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/register.js.map +1 -1
- package/dist/server/ee/server/src/register.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/index.js.map +1 -1
- package/dist/server/ee/server/src/routes/index.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/license-limit.js.map +1 -1
- package/dist/server/ee/server/src/routes/license-limit.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/sso.js.map +1 -1
- package/dist/server/ee/server/src/routes/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/routes/utils.js.map +1 -1
- package/dist/server/ee/server/src/routes/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
- package/dist/server/ee/server/src/services/index.js.map +1 -1
- package/dist/server/ee/server/src/services/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/metrics.js.map +1 -1
- package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/provider-registry.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/provider-registry.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport.js.map +1 -1
- package/dist/server/ee/server/src/services/passport.mjs.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
- package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
- package/dist/server/ee/server/src/services/role.js.map +1 -1
- package/dist/server/ee/server/src/services/role.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/ee/server/src/services/user.mjs +1 -1
- package/dist/server/ee/server/src/services/user.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/index.js.map +1 -1
- package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/authentication.js.map +1 -1
- package/dist/server/ee/server/src/validation/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/role.js.map +1 -1
- package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/user.js.map +1 -1
- package/dist/server/ee/server/src/validation/user.mjs.map +1 -1
- package/dist/server/index.js +18 -18
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +2 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +1 -1
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/config/admin-conditions.js.map +1 -1
- package/dist/server/server/src/config/admin-conditions.mjs.map +1 -1
- package/dist/server/server/src/config/email-templates/forgot-password.js.map +1 -1
- package/dist/server/server/src/config/email-templates/forgot-password.mjs.map +1 -1
- package/dist/server/server/src/config/index.js.map +1 -1
- package/dist/server/server/src/config/index.mjs.map +1 -1
- package/dist/server/server/src/content-types/Permission.js.map +1 -1
- package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/Role.js.map +1 -1
- package/dist/server/server/src/content-types/Role.mjs.map +1 -1
- package/dist/server/server/src/content-types/User.js.map +1 -1
- package/dist/server/server/src/content-types/User.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token-permission.js.map +1 -1
- package/dist/server/server/src/content-types/api-token-permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token.js.map +1 -1
- package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
- package/dist/server/server/src/content-types/index.js.map +1 -1
- package/dist/server/server/src/content-types/index.mjs.map +1 -1
- package/dist/server/server/src/content-types/session.js.map +1 -1
- package/dist/server/server/src/content-types/session.mjs.map +1 -1
- package/dist/server/server/src/content-types/transfer-token-permission.js.map +1 -1
- package/dist/server/server/src/content-types/transfer-token-permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/transfer-token.js.map +1 -1
- package/dist/server/server/src/content-types/transfer-token.mjs.map +1 -1
- 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/api-token.js.map +1 -1
- package/dist/server/server/src/controllers/api-token.mjs +3 -3
- package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/server/src/controllers/authentication.mjs +2 -2
- package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/server/src/controllers/content-api.js.map +1 -1
- package/dist/server/server/src/controllers/content-api.mjs.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
- package/dist/server/server/src/controllers/homepage.js.map +1 -1
- package/dist/server/server/src/controllers/homepage.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/permission.js.map +1 -1
- package/dist/server/server/src/controllers/permission.mjs.map +1 -1
- package/dist/server/server/src/controllers/role.js.map +1 -1
- package/dist/server/server/src/controllers/role.mjs +1 -1
- package/dist/server/server/src/controllers/role.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/runner.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/runner.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.mjs +2 -2
- package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/user.mjs +1 -1
- package/dist/server/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/server/src/controllers/validation/schema.js.map +1 -1
- package/dist/server/server/src/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/server/src/controllers/webhooks.js.map +1 -1
- package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
- package/dist/server/server/src/destroy.js.map +1 -1
- package/dist/server/server/src/destroy.mjs.map +1 -1
- package/dist/server/server/src/domain/action/index.js.map +1 -1
- package/dist/server/server/src/domain/action/index.mjs.map +1 -1
- package/dist/server/server/src/domain/action/provider.js.map +1 -1
- package/dist/server/server/src/domain/action/provider.mjs +1 -1
- package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/index.js.map +1 -1
- package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/provider.js.map +1 -1
- package/dist/server/server/src/domain/condition/provider.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/domain/user.js.map +1 -1
- package/dist/server/server/src/domain/user.mjs.map +1 -1
- package/dist/server/server/src/middlewares/data-transfer.js.map +1 -1
- package/dist/server/server/src/middlewares/data-transfer.mjs.map +1 -1
- package/dist/server/server/src/middlewares/index.js.map +1 -1
- package/dist/server/server/src/middlewares/index.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/policies/hasPermissions.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/policies/isAuthenticatedAdmin.js.map +1 -1
- package/dist/server/server/src/policies/isAuthenticatedAdmin.mjs.map +1 -1
- package/dist/server/server/src/policies/isTelemetryEnabled.js.map +1 -1
- package/dist/server/server/src/policies/isTelemetryEnabled.mjs.map +1 -1
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin.js.map +1 -1
- package/dist/server/server/src/routes/admin.mjs.map +1 -1
- package/dist/server/server/src/routes/api-tokens.js.map +1 -1
- package/dist/server/server/src/routes/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/routes/authentication.js.map +1 -1
- package/dist/server/server/src/routes/authentication.mjs.map +1 -1
- package/dist/server/server/src/routes/content-api.js.map +1 -1
- package/dist/server/server/src/routes/content-api.mjs.map +1 -1
- package/dist/server/server/src/routes/homepage.js.map +1 -1
- package/dist/server/server/src/routes/homepage.mjs.map +1 -1
- package/dist/server/server/src/routes/index.js.map +1 -1
- package/dist/server/server/src/routes/index.mjs.map +1 -1
- package/dist/server/server/src/routes/permissions.js.map +1 -1
- package/dist/server/server/src/routes/permissions.mjs.map +1 -1
- package/dist/server/server/src/routes/roles.js.map +1 -1
- package/dist/server/server/src/routes/roles.mjs.map +1 -1
- 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/transfer.js.map +1 -1
- package/dist/server/server/src/routes/transfer.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/routes/webhooks.js.map +1 -1
- package/dist/server/server/src/routes/webhooks.mjs.map +1 -1
- package/dist/server/server/src/services/action.js.map +1 -1
- package/dist/server/server/src/services/action.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/condition.js.map +1 -1
- package/dist/server/server/src/services/condition.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js +9 -9
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs +1 -1
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/services/metrics.js.map +1 -1
- package/dist/server/server/src/services/metrics.mjs.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
- package/dist/server/server/src/services/passport.js.map +1 -1
- package/dist/server/server/src/services/passport.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/query-builders.mjs.map +1 -1
- 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 +2 -2
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +2 -2
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +9 -9
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/permission/queries.mjs +1 -1
- package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/builder.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/builder.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js +10 -10
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.mjs +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
- package/dist/server/server/src/services/permission.js.map +1 -1
- package/dist/server/server/src/services/permission.mjs.map +1 -1
- package/dist/server/server/src/services/project-settings.js.map +1 -1
- package/dist/server/server/src/services/project-settings.mjs.map +1 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +2 -2
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +1 -1
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/utils.js.map +1 -1
- package/dist/server/server/src/services/transfer/utils.mjs.map +1 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +2 -2
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin.js.map +1 -1
- package/dist/server/server/src/strategies/admin.mjs.map +1 -1
- package/dist/server/server/src/strategies/api-token.js.map +1 -1
- package/dist/server/server/src/strategies/api-token.mjs.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
- package/dist/server/server/src/utils/index.js.map +1 -1
- package/dist/server/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/validation/action-provider.js.map +1 -1
- package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/forgot-password.js.map +1 -1
- package/dist/server/server/src/validation/authentication/forgot-password.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/login.js.map +1 -1
- package/dist/server/server/src/validation/authentication/login.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/register.js.map +1 -1
- package/dist/server/server/src/validation/authentication/register.mjs.map +1 -1
- package/dist/server/server/src/validation/authentication/reset-password.js.map +1 -1
- package/dist/server/server/src/validation/authentication/reset-password.mjs.map +1 -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-are-correctly-nested.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +2 -4
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +4 -5
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/permission.js.map +1 -1
- package/dist/server/server/src/validation/permission.mjs.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
- package/dist/server/server/src/validation/policies/hasPermissions.mjs.map +1 -1
- package/dist/server/server/src/validation/project-settings.js.map +1 -1
- package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/validation/transfer/token.js.map +1 -1
- package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/validation/user.js +1 -4
- package/dist/server/server/src/validation/user.js.map +1 -1
- package/dist/server/server/src/validation/user.mjs +1 -4
- package/dist/server/server/src/validation/user.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/package.json +17 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFetchClient.js","sources":["../../../../../admin/src/utils/getFetchClient.ts"],"sourcesContent":["import pipe from 'lodash/fp/pipe';\n// eslint-disable-next-line import/default\nimport qs from 'qs';\n\nimport { getCookieValue, setCookie } from './cookies';\n\nimport type { errors } from '@strapi/utils';\n\nexport type ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\n/**\n * Module-level promise to ensure only one token refresh happens at a time\n */\nlet refreshPromise: Promise<string | null> | null = null;\n\n/**\n * Callback to notify the app when the token is updated (e.g., to update Redux state)\n */\nlet onTokenUpdate: ((token: string) => void) | null = null;\n\n/**\n * Set the callback that will be called when the token is refreshed.\n * This allows the React layer to update Redux state when a token refresh occurs.\n *\n * @param callback - Function to call with the new token, or null to clear\n * @example\n * // In a React component\n * useEffect(() => {\n * setOnTokenUpdate((token) => dispatch(setToken(token)));\n * return () => setOnTokenUpdate(null);\n * }, [dispatch]);\n */\nconst setOnTokenUpdate = (callback: ((token: string) => void) | null): void => {\n onTokenUpdate = callback;\n};\n\n/**\n * Check if the URL is an auth path that should not trigger token refresh.\n * Note: No ^ anchor since the URL may include the baseURL prefix (e.g., \"http://localhost:1337/admin/login\").\n * This differs from baseQuery.ts which uses ^/admin since it receives normalized paths.\n */\nconst isAuthPath = (url: string) => /\\/admin\\/(login|logout|access-token)\\b/.test(url);\n\n/**\n * Store the new token in the appropriate storage (localStorage or cookie)\n * and notify the app to update its state.\n *\n * Uses localStorage if the user selected \"remember me\" during login,\n * otherwise uses cookies for session-based storage.\n *\n * @param token - The JWT token to store\n * @internal Exported for testing purposes\n */\nconst storeToken = (token: string): void => {\n // Check if the original token was stored in localStorage (persist mode)\n const wasPersistedToLocalStorage = Boolean(localStorage.getItem(STORAGE_KEYS.TOKEN));\n\n if (wasPersistedToLocalStorage) {\n localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n } else {\n setCookie(STORAGE_KEYS.TOKEN, token);\n }\n\n // Notify the app to update its state (e.g., Redux)\n if (onTokenUpdate) {\n onTokenUpdate(token);\n }\n};\n\n/**\n * Refresh the access token by calling the /admin/access-token endpoint.\n * This uses a low-level fetch to avoid recursion through the interceptor.\n * Returns the new token on success, or null on failure.\n */\nconst refreshAccessToken = async (): Promise<string | null> => {\n const backendURL = window.strapi.backendURL;\n\n try {\n const response = await fetch(`${backendURL}/admin/access-token`, {\n method: 'POST',\n credentials: 'include', // Include cookies for the refresh token\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n console.warn('[Auth] Token refresh failed with status:', response.status);\n return null;\n }\n\n const result = await response.json();\n const token = result?.data?.token as string | undefined;\n\n if (!token) {\n console.warn('[Auth] Token refresh response missing token');\n return null;\n }\n\n storeToken(token);\n return token;\n } catch (error) {\n console.error('[Auth] Token refresh error:', error);\n return null;\n }\n};\n\n/**\n * Attempt to refresh the token if not already refreshing.\n * Uses a module-level promise to prevent concurrent refresh requests.\n *\n * @returns The new authentication token\n * @throws {Error} If the token refresh fails (e.g., refresh token expired)\n * @internal Exported for testing purposes\n */\nconst attemptTokenRefresh = async (): Promise<string> => {\n if (!refreshPromise) {\n refreshPromise = refreshAccessToken().finally(() => {\n refreshPromise = null;\n });\n }\n\n const newToken = await refreshPromise;\n if (!newToken) {\n const error = new Error('Session expired. Please log in again.');\n error.name = 'TokenRefreshError';\n throw error;\n }\n\n return newToken;\n};\n\ntype FetchResponse<TData = any> = {\n data: TData;\n status?: number;\n};\n\ntype FetchOptions = {\n params?: any;\n signal?: AbortSignal;\n headers?: Record<string, string>;\n validateStatus?: ((status: number) => boolean) | null;\n};\n\ntype FetchConfig = {\n signal?: AbortSignal;\n};\n\ninterface ErrorResponse {\n data: {\n data?: any;\n error: ApiError & { status?: number };\n };\n}\n\nclass FetchError extends Error {\n public name: string;\n public message: string;\n public response?: ErrorResponse;\n public code?: number;\n public status?: number;\n\n constructor(message: string, response?: ErrorResponse) {\n super(message);\n this.name = 'FetchError';\n this.message = message;\n this.response = response;\n this.code = response?.data?.error?.status;\n this.status = response?.data?.error?.status;\n\n // Ensure correct stack trace in error object\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetchError);\n }\n }\n}\n\nconst isFetchError = (error: unknown): error is FetchError => {\n return error instanceof FetchError;\n};\n\nconst getToken = (): string | null => {\n const fromLocalStorage = localStorage.getItem(STORAGE_KEYS.TOKEN);\n if (fromLocalStorage) {\n return JSON.parse(fromLocalStorage);\n }\n\n const fromCookie = getCookieValue(STORAGE_KEYS.TOKEN);\n return fromCookie ?? null;\n};\n\ntype FetchClient = {\n get: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n put: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n post: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n del: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n};\n\n/**\n * @public\n * @param {FetchConfig} [defaultOptions={}] - Fetch Configs.\n * @returns {FetchClient} A fetch client object with methods for making HTTP requests.\n * @description This is an abstraction around the native fetch exposed by a function. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * @example\n * ```tsx\n * import { getFetchClient } from '@strapi/admin/admin';\n *\n * const myFunct = () => {\n * const { get } = getFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const { data } = await get(requestURL);\n *\n * return data;\n * };\n * ```\n */\nconst getFetchClient = (defaultOptions: FetchConfig = {}): FetchClient => {\n const backendURL = window.strapi.backendURL;\n\n /**\n * Create default headers with the current token.\n * This is a function so we can get a fresh token after refresh.\n */\n const getDefaultHeaders = () => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${getToken()}`,\n });\n\n const isFormDataRequest = (body: unknown) => body instanceof FormData;\n const addPrependingSlash = (url: string) => (url.charAt(0) !== '/' ? `/${url}` : url);\n\n // This regular expression matches a string that starts with either \"http://\" or \"https://\" or any other protocol name in lower case letters, followed by \"://\" and ends with anything else\n const hasProtocol = (url: string) => new RegExp('^(?:[a-z+]+:)?//', 'i').test(url);\n\n // Check if the url has a prepending slash, if not add a slash\n const normalizeUrl = (url: string) => (hasProtocol(url) ? url : addPrependingSlash(url));\n\n // Add a response interceptor to return the response\n const responseInterceptor = async <TData = any>(\n response: Response,\n validateStatus?: FetchOptions['validateStatus']\n ): Promise<FetchResponse<TData>> => {\n try {\n const result = await response.json();\n\n /**\n * validateStatus allows us to customize when a response should throw an error\n * In native Fetch API, a response is considered \"not ok\"\n * when the status code falls in the 200 to 299 (inclusive) range\n */\n if (!response.ok && result.error && !validateStatus?.(response.status)) {\n const fetchError = new FetchError(result.error.message, { data: result });\n fetchError.status = response.status;\n throw fetchError;\n }\n\n if (!response.ok && !validateStatus?.(response.status)) {\n const fetchError = new FetchError('Unknown Server Error');\n fetchError.status = response.status;\n throw fetchError;\n }\n\n return { data: result };\n } catch (error) {\n if (error instanceof SyntaxError && response.ok) {\n // Making sure that a SyntaxError doesn't throw if it's successful\n return { data: [], status: response.status } as FetchResponse<any>;\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Execute a fetch request with automatic token refresh on 401 errors.\n * @param url - The request URL (used to check if it's an auth path)\n * @param executeRequest - Function that performs the fetch (called again on retry with fresh headers)\n */\n const withTokenRefresh = async <TData>(\n url: string,\n executeRequest: () => Promise<FetchResponse<TData>>\n ): Promise<FetchResponse<TData>> => {\n try {\n return await executeRequest();\n } catch (error) {\n // Only attempt refresh for 401 errors on non-auth paths\n if (isFetchError(error) && error.status === 401 && !isAuthPath(url)) {\n try {\n await attemptTokenRefresh();\n // Retry - executeRequest will call getDefaultHeaders() again, picking up the new token\n return await executeRequest();\n } catch {\n // If refresh fails, throw the original error\n throw error;\n }\n }\n throw error;\n }\n };\n\n const paramsSerializer =\n <Param = unknown>(params?: Param) =>\n (url: string) => {\n if (params) {\n if (typeof params === 'string') {\n return `${url}?${params}`;\n }\n\n /**\n * TODO V6: Encoding should be enabled in this step\n * So the rest of the app doesn't have to worry about it,\n * It's considered a breaking change because it impacts any API request, including the user's custom code\n */\n const serializedParams = qs.stringify(params, { encode: false });\n return `${url}?${serializedParams}`;\n }\n return url;\n };\n\n const addBaseUrl = (url: Parameters<typeof fetch>[0]) => {\n return `${backendURL}${url}`;\n };\n\n /**\n * We use the factory method because the options\n * are unique to the individual request\n */\n const makeCreateRequestUrl = (options?: FetchOptions) =>\n pipe(normalizeUrl, addBaseUrl, paramsSerializer(options?.params));\n\n const fetchClient: FetchClient = {\n get: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'GET',\n headers,\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n post: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'POST',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n put: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'PUT',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n del: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'DELETE',\n headers,\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n };\n\n return fetchClient;\n};\n\nexport {\n getFetchClient,\n isFetchError,\n FetchError,\n attemptTokenRefresh,\n storeToken,\n setOnTokenUpdate,\n};\nexport type { FetchOptions, FetchResponse, FetchConfig, FetchClient, ErrorResponse };\n"],"names":["STORAGE_KEYS","TOKEN","USER","refreshPromise","onTokenUpdate","setOnTokenUpdate","callback","isAuthPath","url","test","storeToken","token","wasPersistedToLocalStorage","Boolean","localStorage","getItem","setItem","JSON","stringify","setCookie","refreshAccessToken","backendURL","window","strapi","response","fetch","method","credentials","headers","Accept","ok","console","warn","status","result","json","data","error","attemptTokenRefresh","finally","newToken","Error","name","FetchError","message","code","captureStackTrace","isFetchError","getToken","fromLocalStorage","parse","fromCookie","getCookieValue","getFetchClient","defaultOptions","getDefaultHeaders","Authorization","isFormDataRequest","body","FormData","addPrependingSlash","charAt","hasProtocol","RegExp","normalizeUrl","responseInterceptor","validateStatus","fetchError","SyntaxError","withTokenRefresh","executeRequest","paramsSerializer","params","serializedParams","qs","encode","addBaseUrl","makeCreateRequestUrl","options","pipe","fetchClient","get","createRequestUrl","Headers","signal","post","delete","put","del"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getFetchClient.js","sources":["../../../../../admin/src/utils/getFetchClient.ts"],"sourcesContent":["import pipe from 'lodash/fp/pipe';\n// eslint-disable-next-line import/default\nimport qs from 'qs';\n\nimport { getCookieValue, setCookie } from './cookies';\n\nimport type { errors } from '@strapi/utils';\n\nexport type ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\n/**\n * Module-level promise to ensure only one token refresh happens at a time\n */\nlet refreshPromise: Promise<string | null> | null = null;\n\n/**\n * Callback to notify the app when the token is updated (e.g., to update Redux state)\n */\nlet onTokenUpdate: ((token: string) => void) | null = null;\n\n/**\n * Set the callback that will be called when the token is refreshed.\n * This allows the React layer to update Redux state when a token refresh occurs.\n *\n * @param callback - Function to call with the new token, or null to clear\n * @example\n * // In a React component\n * useEffect(() => {\n * setOnTokenUpdate((token) => dispatch(setToken(token)));\n * return () => setOnTokenUpdate(null);\n * }, [dispatch]);\n */\nconst setOnTokenUpdate = (callback: ((token: string) => void) | null): void => {\n onTokenUpdate = callback;\n};\n\n/**\n * Check if the URL is an auth path that should not trigger token refresh.\n * Note: No ^ anchor since the URL may include the baseURL prefix (e.g., \"http://localhost:1337/admin/login\").\n * This differs from baseQuery.ts which uses ^/admin since it receives normalized paths.\n */\nconst isAuthPath = (url: string) => /\\/admin\\/(login|logout|access-token)\\b/.test(url);\n\n/**\n * Store the new token in the appropriate storage (localStorage or cookie)\n * and notify the app to update its state.\n *\n * Uses localStorage if the user selected \"remember me\" during login,\n * otherwise uses cookies for session-based storage.\n *\n * @param token - The JWT token to store\n * @internal Exported for testing purposes\n */\nconst storeToken = (token: string): void => {\n // Check if the original token was stored in localStorage (persist mode)\n const wasPersistedToLocalStorage = Boolean(localStorage.getItem(STORAGE_KEYS.TOKEN));\n\n if (wasPersistedToLocalStorage) {\n localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n } else {\n setCookie(STORAGE_KEYS.TOKEN, token);\n }\n\n // Notify the app to update its state (e.g., Redux)\n if (onTokenUpdate) {\n onTokenUpdate(token);\n }\n};\n\n/**\n * Refresh the access token by calling the /admin/access-token endpoint.\n * This uses a low-level fetch to avoid recursion through the interceptor.\n * Returns the new token on success, or null on failure.\n */\nconst refreshAccessToken = async (): Promise<string | null> => {\n const backendURL = window.strapi.backendURL;\n\n try {\n const response = await fetch(`${backendURL}/admin/access-token`, {\n method: 'POST',\n credentials: 'include', // Include cookies for the refresh token\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n console.warn('[Auth] Token refresh failed with status:', response.status);\n return null;\n }\n\n const result = await response.json();\n const token = result?.data?.token as string | undefined;\n\n if (!token) {\n console.warn('[Auth] Token refresh response missing token');\n return null;\n }\n\n storeToken(token);\n return token;\n } catch (error) {\n console.error('[Auth] Token refresh error:', error);\n return null;\n }\n};\n\n/**\n * Attempt to refresh the token if not already refreshing.\n * Uses a module-level promise to prevent concurrent refresh requests.\n *\n * @returns The new authentication token\n * @throws {Error} If the token refresh fails (e.g., refresh token expired)\n * @internal Exported for testing purposes\n */\nconst attemptTokenRefresh = async (): Promise<string> => {\n if (!refreshPromise) {\n refreshPromise = refreshAccessToken().finally(() => {\n refreshPromise = null;\n });\n }\n\n const newToken = await refreshPromise;\n if (!newToken) {\n const error = new Error('Session expired. Please log in again.');\n error.name = 'TokenRefreshError';\n throw error;\n }\n\n return newToken;\n};\n\ntype FetchResponse<TData = any> = {\n data: TData;\n status?: number;\n};\n\ntype FetchOptions = {\n params?: any;\n signal?: AbortSignal;\n headers?: Record<string, string>;\n validateStatus?: ((status: number) => boolean) | null;\n};\n\ntype FetchConfig = {\n signal?: AbortSignal;\n};\n\ninterface ErrorResponse {\n data: {\n data?: any;\n error: ApiError & { status?: number };\n };\n}\n\nclass FetchError extends Error {\n public name: string;\n public message: string;\n public response?: ErrorResponse;\n public code?: number;\n public status?: number;\n\n constructor(message: string, response?: ErrorResponse) {\n super(message);\n this.name = 'FetchError';\n this.message = message;\n this.response = response;\n this.code = response?.data?.error?.status;\n this.status = response?.data?.error?.status;\n\n // Ensure correct stack trace in error object\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetchError);\n }\n }\n}\n\nconst isFetchError = (error: unknown): error is FetchError => {\n return error instanceof FetchError;\n};\n\nconst getToken = (): string | null => {\n const fromLocalStorage = localStorage.getItem(STORAGE_KEYS.TOKEN);\n if (fromLocalStorage) {\n return JSON.parse(fromLocalStorage);\n }\n\n const fromCookie = getCookieValue(STORAGE_KEYS.TOKEN);\n return fromCookie ?? null;\n};\n\ntype FetchClient = {\n get: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n put: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n post: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n del: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n};\n\n/**\n * @public\n * @param {FetchConfig} [defaultOptions={}] - Fetch Configs.\n * @returns {FetchClient} A fetch client object with methods for making HTTP requests.\n * @description This is an abstraction around the native fetch exposed by a function. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * @example\n * ```tsx\n * import { getFetchClient } from '@strapi/admin/admin';\n *\n * const myFunct = () => {\n * const { get } = getFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const { data } = await get(requestURL);\n *\n * return data;\n * };\n * ```\n */\nconst getFetchClient = (defaultOptions: FetchConfig = {}): FetchClient => {\n const backendURL = window.strapi.backendURL;\n\n /**\n * Create default headers with the current token.\n * This is a function so we can get a fresh token after refresh.\n */\n const getDefaultHeaders = () => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${getToken()}`,\n });\n\n const isFormDataRequest = (body: unknown) => body instanceof FormData;\n const addPrependingSlash = (url: string) => (url.charAt(0) !== '/' ? `/${url}` : url);\n\n // This regular expression matches a string that starts with either \"http://\" or \"https://\" or any other protocol name in lower case letters, followed by \"://\" and ends with anything else\n const hasProtocol = (url: string) => new RegExp('^(?:[a-z+]+:)?//', 'i').test(url);\n\n // Check if the url has a prepending slash, if not add a slash\n const normalizeUrl = (url: string) => (hasProtocol(url) ? url : addPrependingSlash(url));\n\n // Add a response interceptor to return the response\n const responseInterceptor = async <TData = any>(\n response: Response,\n validateStatus?: FetchOptions['validateStatus']\n ): Promise<FetchResponse<TData>> => {\n try {\n const result = await response.json();\n\n /**\n * validateStatus allows us to customize when a response should throw an error\n * In native Fetch API, a response is considered \"not ok\"\n * when the status code falls in the 200 to 299 (inclusive) range\n */\n if (!response.ok && result.error && !validateStatus?.(response.status)) {\n const fetchError = new FetchError(result.error.message, { data: result });\n fetchError.status = response.status;\n throw fetchError;\n }\n\n if (!response.ok && !validateStatus?.(response.status)) {\n const fetchError = new FetchError('Unknown Server Error');\n fetchError.status = response.status;\n throw fetchError;\n }\n\n return { data: result };\n } catch (error) {\n if (error instanceof SyntaxError && response.ok) {\n // Making sure that a SyntaxError doesn't throw if it's successful\n return { data: [], status: response.status } as FetchResponse<any>;\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Execute a fetch request with automatic token refresh on 401 errors.\n * @param url - The request URL (used to check if it's an auth path)\n * @param executeRequest - Function that performs the fetch (called again on retry with fresh headers)\n */\n const withTokenRefresh = async <TData>(\n url: string,\n executeRequest: () => Promise<FetchResponse<TData>>\n ): Promise<FetchResponse<TData>> => {\n try {\n return await executeRequest();\n } catch (error) {\n // Only attempt refresh for 401 errors on non-auth paths\n if (isFetchError(error) && error.status === 401 && !isAuthPath(url)) {\n try {\n await attemptTokenRefresh();\n // Retry - executeRequest will call getDefaultHeaders() again, picking up the new token\n return await executeRequest();\n } catch {\n // If refresh fails, throw the original error\n throw error;\n }\n }\n throw error;\n }\n };\n\n const paramsSerializer =\n <Param = unknown>(params?: Param) =>\n (url: string) => {\n if (params) {\n if (typeof params === 'string') {\n return `${url}?${params}`;\n }\n\n /**\n * TODO V6: Encoding should be enabled in this step\n * So the rest of the app doesn't have to worry about it,\n * It's considered a breaking change because it impacts any API request, including the user's custom code\n */\n const serializedParams = qs.stringify(params, { encode: false });\n return `${url}?${serializedParams}`;\n }\n return url;\n };\n\n const addBaseUrl = (url: Parameters<typeof fetch>[0]) => {\n return `${backendURL}${url}`;\n };\n\n /**\n * We use the factory method because the options\n * are unique to the individual request\n */\n const makeCreateRequestUrl = (options?: FetchOptions) =>\n pipe(normalizeUrl, addBaseUrl, paramsSerializer(options?.params));\n\n const fetchClient: FetchClient = {\n get: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'GET',\n headers,\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n post: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'POST',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n put: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'PUT',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n del: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'DELETE',\n headers,\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n };\n\n return fetchClient;\n};\n\nexport {\n getFetchClient,\n isFetchError,\n FetchError,\n attemptTokenRefresh,\n storeToken,\n setOnTokenUpdate,\n};\nexport type { FetchOptions, FetchResponse, FetchConfig, FetchClient, ErrorResponse };\n"],"names":["STORAGE_KEYS","TOKEN","refreshPromise","onTokenUpdate","setOnTokenUpdate","callback","isAuthPath","url","test","storeToken","token","wasPersistedToLocalStorage","Boolean","localStorage","getItem","setItem","JSON","stringify","setCookie","refreshAccessToken","backendURL","window","strapi","response","fetch","method","credentials","headers","Accept","ok","console","warn","status","result","json","data","error","attemptTokenRefresh","finally","newToken","Error","name","FetchError","message","code","captureStackTrace","isFetchError","getToken","fromLocalStorage","parse","fromCookie","getCookieValue","getFetchClient","defaultOptions","getDefaultHeaders","Authorization","isFormDataRequest","body","FormData","addPrependingSlash","charAt","hasProtocol","RegExp","normalizeUrl","responseInterceptor","validateStatus","fetchError","SyntaxError","withTokenRefresh","executeRequest","paramsSerializer","params","serializedParams","qs","encode","addBaseUrl","makeCreateRequestUrl","options","pipe","fetchClient","get","createRequestUrl","Headers","signal","post","delete","put","del"],"mappings":"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"}
|
|
@@ -3,9 +3,7 @@ import qs__default from 'qs';
|
|
|
3
3
|
import { setCookie, getCookieValue } from './cookies.mjs';
|
|
4
4
|
|
|
5
5
|
const STORAGE_KEYS = {
|
|
6
|
-
TOKEN: 'jwtToken'
|
|
7
|
-
USER: 'userInfo'
|
|
8
|
-
};
|
|
6
|
+
TOKEN: 'jwtToken'};
|
|
9
7
|
/**
|
|
10
8
|
* Module-level promise to ensure only one token refresh happens at a time
|
|
11
9
|
*/ let refreshPromise = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFetchClient.mjs","sources":["../../../../../admin/src/utils/getFetchClient.ts"],"sourcesContent":["import pipe from 'lodash/fp/pipe';\n// eslint-disable-next-line import/default\nimport qs from 'qs';\n\nimport { getCookieValue, setCookie } from './cookies';\n\nimport type { errors } from '@strapi/utils';\n\nexport type ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\n/**\n * Module-level promise to ensure only one token refresh happens at a time\n */\nlet refreshPromise: Promise<string | null> | null = null;\n\n/**\n * Callback to notify the app when the token is updated (e.g., to update Redux state)\n */\nlet onTokenUpdate: ((token: string) => void) | null = null;\n\n/**\n * Set the callback that will be called when the token is refreshed.\n * This allows the React layer to update Redux state when a token refresh occurs.\n *\n * @param callback - Function to call with the new token, or null to clear\n * @example\n * // In a React component\n * useEffect(() => {\n * setOnTokenUpdate((token) => dispatch(setToken(token)));\n * return () => setOnTokenUpdate(null);\n * }, [dispatch]);\n */\nconst setOnTokenUpdate = (callback: ((token: string) => void) | null): void => {\n onTokenUpdate = callback;\n};\n\n/**\n * Check if the URL is an auth path that should not trigger token refresh.\n * Note: No ^ anchor since the URL may include the baseURL prefix (e.g., \"http://localhost:1337/admin/login\").\n * This differs from baseQuery.ts which uses ^/admin since it receives normalized paths.\n */\nconst isAuthPath = (url: string) => /\\/admin\\/(login|logout|access-token)\\b/.test(url);\n\n/**\n * Store the new token in the appropriate storage (localStorage or cookie)\n * and notify the app to update its state.\n *\n * Uses localStorage if the user selected \"remember me\" during login,\n * otherwise uses cookies for session-based storage.\n *\n * @param token - The JWT token to store\n * @internal Exported for testing purposes\n */\nconst storeToken = (token: string): void => {\n // Check if the original token was stored in localStorage (persist mode)\n const wasPersistedToLocalStorage = Boolean(localStorage.getItem(STORAGE_KEYS.TOKEN));\n\n if (wasPersistedToLocalStorage) {\n localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n } else {\n setCookie(STORAGE_KEYS.TOKEN, token);\n }\n\n // Notify the app to update its state (e.g., Redux)\n if (onTokenUpdate) {\n onTokenUpdate(token);\n }\n};\n\n/**\n * Refresh the access token by calling the /admin/access-token endpoint.\n * This uses a low-level fetch to avoid recursion through the interceptor.\n * Returns the new token on success, or null on failure.\n */\nconst refreshAccessToken = async (): Promise<string | null> => {\n const backendURL = window.strapi.backendURL;\n\n try {\n const response = await fetch(`${backendURL}/admin/access-token`, {\n method: 'POST',\n credentials: 'include', // Include cookies for the refresh token\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n console.warn('[Auth] Token refresh failed with status:', response.status);\n return null;\n }\n\n const result = await response.json();\n const token = result?.data?.token as string | undefined;\n\n if (!token) {\n console.warn('[Auth] Token refresh response missing token');\n return null;\n }\n\n storeToken(token);\n return token;\n } catch (error) {\n console.error('[Auth] Token refresh error:', error);\n return null;\n }\n};\n\n/**\n * Attempt to refresh the token if not already refreshing.\n * Uses a module-level promise to prevent concurrent refresh requests.\n *\n * @returns The new authentication token\n * @throws {Error} If the token refresh fails (e.g., refresh token expired)\n * @internal Exported for testing purposes\n */\nconst attemptTokenRefresh = async (): Promise<string> => {\n if (!refreshPromise) {\n refreshPromise = refreshAccessToken().finally(() => {\n refreshPromise = null;\n });\n }\n\n const newToken = await refreshPromise;\n if (!newToken) {\n const error = new Error('Session expired. Please log in again.');\n error.name = 'TokenRefreshError';\n throw error;\n }\n\n return newToken;\n};\n\ntype FetchResponse<TData = any> = {\n data: TData;\n status?: number;\n};\n\ntype FetchOptions = {\n params?: any;\n signal?: AbortSignal;\n headers?: Record<string, string>;\n validateStatus?: ((status: number) => boolean) | null;\n};\n\ntype FetchConfig = {\n signal?: AbortSignal;\n};\n\ninterface ErrorResponse {\n data: {\n data?: any;\n error: ApiError & { status?: number };\n };\n}\n\nclass FetchError extends Error {\n public name: string;\n public message: string;\n public response?: ErrorResponse;\n public code?: number;\n public status?: number;\n\n constructor(message: string, response?: ErrorResponse) {\n super(message);\n this.name = 'FetchError';\n this.message = message;\n this.response = response;\n this.code = response?.data?.error?.status;\n this.status = response?.data?.error?.status;\n\n // Ensure correct stack trace in error object\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetchError);\n }\n }\n}\n\nconst isFetchError = (error: unknown): error is FetchError => {\n return error instanceof FetchError;\n};\n\nconst getToken = (): string | null => {\n const fromLocalStorage = localStorage.getItem(STORAGE_KEYS.TOKEN);\n if (fromLocalStorage) {\n return JSON.parse(fromLocalStorage);\n }\n\n const fromCookie = getCookieValue(STORAGE_KEYS.TOKEN);\n return fromCookie ?? null;\n};\n\ntype FetchClient = {\n get: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n put: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n post: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n del: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n};\n\n/**\n * @public\n * @param {FetchConfig} [defaultOptions={}] - Fetch Configs.\n * @returns {FetchClient} A fetch client object with methods for making HTTP requests.\n * @description This is an abstraction around the native fetch exposed by a function. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * @example\n * ```tsx\n * import { getFetchClient } from '@strapi/admin/admin';\n *\n * const myFunct = () => {\n * const { get } = getFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const { data } = await get(requestURL);\n *\n * return data;\n * };\n * ```\n */\nconst getFetchClient = (defaultOptions: FetchConfig = {}): FetchClient => {\n const backendURL = window.strapi.backendURL;\n\n /**\n * Create default headers with the current token.\n * This is a function so we can get a fresh token after refresh.\n */\n const getDefaultHeaders = () => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${getToken()}`,\n });\n\n const isFormDataRequest = (body: unknown) => body instanceof FormData;\n const addPrependingSlash = (url: string) => (url.charAt(0) !== '/' ? `/${url}` : url);\n\n // This regular expression matches a string that starts with either \"http://\" or \"https://\" or any other protocol name in lower case letters, followed by \"://\" and ends with anything else\n const hasProtocol = (url: string) => new RegExp('^(?:[a-z+]+:)?//', 'i').test(url);\n\n // Check if the url has a prepending slash, if not add a slash\n const normalizeUrl = (url: string) => (hasProtocol(url) ? url : addPrependingSlash(url));\n\n // Add a response interceptor to return the response\n const responseInterceptor = async <TData = any>(\n response: Response,\n validateStatus?: FetchOptions['validateStatus']\n ): Promise<FetchResponse<TData>> => {\n try {\n const result = await response.json();\n\n /**\n * validateStatus allows us to customize when a response should throw an error\n * In native Fetch API, a response is considered \"not ok\"\n * when the status code falls in the 200 to 299 (inclusive) range\n */\n if (!response.ok && result.error && !validateStatus?.(response.status)) {\n const fetchError = new FetchError(result.error.message, { data: result });\n fetchError.status = response.status;\n throw fetchError;\n }\n\n if (!response.ok && !validateStatus?.(response.status)) {\n const fetchError = new FetchError('Unknown Server Error');\n fetchError.status = response.status;\n throw fetchError;\n }\n\n return { data: result };\n } catch (error) {\n if (error instanceof SyntaxError && response.ok) {\n // Making sure that a SyntaxError doesn't throw if it's successful\n return { data: [], status: response.status } as FetchResponse<any>;\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Execute a fetch request with automatic token refresh on 401 errors.\n * @param url - The request URL (used to check if it's an auth path)\n * @param executeRequest - Function that performs the fetch (called again on retry with fresh headers)\n */\n const withTokenRefresh = async <TData>(\n url: string,\n executeRequest: () => Promise<FetchResponse<TData>>\n ): Promise<FetchResponse<TData>> => {\n try {\n return await executeRequest();\n } catch (error) {\n // Only attempt refresh for 401 errors on non-auth paths\n if (isFetchError(error) && error.status === 401 && !isAuthPath(url)) {\n try {\n await attemptTokenRefresh();\n // Retry - executeRequest will call getDefaultHeaders() again, picking up the new token\n return await executeRequest();\n } catch {\n // If refresh fails, throw the original error\n throw error;\n }\n }\n throw error;\n }\n };\n\n const paramsSerializer =\n <Param = unknown>(params?: Param) =>\n (url: string) => {\n if (params) {\n if (typeof params === 'string') {\n return `${url}?${params}`;\n }\n\n /**\n * TODO V6: Encoding should be enabled in this step\n * So the rest of the app doesn't have to worry about it,\n * It's considered a breaking change because it impacts any API request, including the user's custom code\n */\n const serializedParams = qs.stringify(params, { encode: false });\n return `${url}?${serializedParams}`;\n }\n return url;\n };\n\n const addBaseUrl = (url: Parameters<typeof fetch>[0]) => {\n return `${backendURL}${url}`;\n };\n\n /**\n * We use the factory method because the options\n * are unique to the individual request\n */\n const makeCreateRequestUrl = (options?: FetchOptions) =>\n pipe(normalizeUrl, addBaseUrl, paramsSerializer(options?.params));\n\n const fetchClient: FetchClient = {\n get: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'GET',\n headers,\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n post: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'POST',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n put: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'PUT',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n del: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'DELETE',\n headers,\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n };\n\n return fetchClient;\n};\n\nexport {\n getFetchClient,\n isFetchError,\n FetchError,\n attemptTokenRefresh,\n storeToken,\n setOnTokenUpdate,\n};\nexport type { FetchOptions, FetchResponse, FetchConfig, FetchClient, ErrorResponse };\n"],"names":["STORAGE_KEYS","TOKEN","USER","refreshPromise","onTokenUpdate","setOnTokenUpdate","callback","isAuthPath","url","test","storeToken","token","wasPersistedToLocalStorage","Boolean","localStorage","getItem","setItem","JSON","stringify","setCookie","refreshAccessToken","backendURL","window","strapi","response","fetch","method","credentials","headers","Accept","ok","console","warn","status","result","json","data","error","attemptTokenRefresh","finally","newToken","Error","name","FetchError","message","code","captureStackTrace","isFetchError","getToken","fromLocalStorage","parse","fromCookie","getCookieValue","getFetchClient","defaultOptions","getDefaultHeaders","Authorization","isFormDataRequest","body","FormData","addPrependingSlash","charAt","hasProtocol","RegExp","normalizeUrl","responseInterceptor","validateStatus","fetchError","SyntaxError","withTokenRefresh","executeRequest","paramsSerializer","params","serializedParams","qs","encode","addBaseUrl","makeCreateRequestUrl","options","pipe","fetchClient","get","createRequestUrl","Headers","signal","post","delete","put","del"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getFetchClient.mjs","sources":["../../../../../admin/src/utils/getFetchClient.ts"],"sourcesContent":["import pipe from 'lodash/fp/pipe';\n// eslint-disable-next-line import/default\nimport qs from 'qs';\n\nimport { getCookieValue, setCookie } from './cookies';\n\nimport type { errors } from '@strapi/utils';\n\nexport type ApiError =\n | errors.ApplicationError\n | errors.ForbiddenError\n | errors.NotFoundError\n | errors.NotImplementedError\n | errors.PaginationError\n | errors.PayloadTooLargeError\n | errors.PolicyError\n | errors.RateLimitError\n | errors.UnauthorizedError\n | errors.ValidationError\n | errors.YupValidationError;\n\nconst STORAGE_KEYS = {\n TOKEN: 'jwtToken',\n USER: 'userInfo',\n};\n\n/**\n * Module-level promise to ensure only one token refresh happens at a time\n */\nlet refreshPromise: Promise<string | null> | null = null;\n\n/**\n * Callback to notify the app when the token is updated (e.g., to update Redux state)\n */\nlet onTokenUpdate: ((token: string) => void) | null = null;\n\n/**\n * Set the callback that will be called when the token is refreshed.\n * This allows the React layer to update Redux state when a token refresh occurs.\n *\n * @param callback - Function to call with the new token, or null to clear\n * @example\n * // In a React component\n * useEffect(() => {\n * setOnTokenUpdate((token) => dispatch(setToken(token)));\n * return () => setOnTokenUpdate(null);\n * }, [dispatch]);\n */\nconst setOnTokenUpdate = (callback: ((token: string) => void) | null): void => {\n onTokenUpdate = callback;\n};\n\n/**\n * Check if the URL is an auth path that should not trigger token refresh.\n * Note: No ^ anchor since the URL may include the baseURL prefix (e.g., \"http://localhost:1337/admin/login\").\n * This differs from baseQuery.ts which uses ^/admin since it receives normalized paths.\n */\nconst isAuthPath = (url: string) => /\\/admin\\/(login|logout|access-token)\\b/.test(url);\n\n/**\n * Store the new token in the appropriate storage (localStorage or cookie)\n * and notify the app to update its state.\n *\n * Uses localStorage if the user selected \"remember me\" during login,\n * otherwise uses cookies for session-based storage.\n *\n * @param token - The JWT token to store\n * @internal Exported for testing purposes\n */\nconst storeToken = (token: string): void => {\n // Check if the original token was stored in localStorage (persist mode)\n const wasPersistedToLocalStorage = Boolean(localStorage.getItem(STORAGE_KEYS.TOKEN));\n\n if (wasPersistedToLocalStorage) {\n localStorage.setItem(STORAGE_KEYS.TOKEN, JSON.stringify(token));\n } else {\n setCookie(STORAGE_KEYS.TOKEN, token);\n }\n\n // Notify the app to update its state (e.g., Redux)\n if (onTokenUpdate) {\n onTokenUpdate(token);\n }\n};\n\n/**\n * Refresh the access token by calling the /admin/access-token endpoint.\n * This uses a low-level fetch to avoid recursion through the interceptor.\n * Returns the new token on success, or null on failure.\n */\nconst refreshAccessToken = async (): Promise<string | null> => {\n const backendURL = window.strapi.backendURL;\n\n try {\n const response = await fetch(`${backendURL}/admin/access-token`, {\n method: 'POST',\n credentials: 'include', // Include cookies for the refresh token\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n console.warn('[Auth] Token refresh failed with status:', response.status);\n return null;\n }\n\n const result = await response.json();\n const token = result?.data?.token as string | undefined;\n\n if (!token) {\n console.warn('[Auth] Token refresh response missing token');\n return null;\n }\n\n storeToken(token);\n return token;\n } catch (error) {\n console.error('[Auth] Token refresh error:', error);\n return null;\n }\n};\n\n/**\n * Attempt to refresh the token if not already refreshing.\n * Uses a module-level promise to prevent concurrent refresh requests.\n *\n * @returns The new authentication token\n * @throws {Error} If the token refresh fails (e.g., refresh token expired)\n * @internal Exported for testing purposes\n */\nconst attemptTokenRefresh = async (): Promise<string> => {\n if (!refreshPromise) {\n refreshPromise = refreshAccessToken().finally(() => {\n refreshPromise = null;\n });\n }\n\n const newToken = await refreshPromise;\n if (!newToken) {\n const error = new Error('Session expired. Please log in again.');\n error.name = 'TokenRefreshError';\n throw error;\n }\n\n return newToken;\n};\n\ntype FetchResponse<TData = any> = {\n data: TData;\n status?: number;\n};\n\ntype FetchOptions = {\n params?: any;\n signal?: AbortSignal;\n headers?: Record<string, string>;\n validateStatus?: ((status: number) => boolean) | null;\n};\n\ntype FetchConfig = {\n signal?: AbortSignal;\n};\n\ninterface ErrorResponse {\n data: {\n data?: any;\n error: ApiError & { status?: number };\n };\n}\n\nclass FetchError extends Error {\n public name: string;\n public message: string;\n public response?: ErrorResponse;\n public code?: number;\n public status?: number;\n\n constructor(message: string, response?: ErrorResponse) {\n super(message);\n this.name = 'FetchError';\n this.message = message;\n this.response = response;\n this.code = response?.data?.error?.status;\n this.status = response?.data?.error?.status;\n\n // Ensure correct stack trace in error object\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, FetchError);\n }\n }\n}\n\nconst isFetchError = (error: unknown): error is FetchError => {\n return error instanceof FetchError;\n};\n\nconst getToken = (): string | null => {\n const fromLocalStorage = localStorage.getItem(STORAGE_KEYS.TOKEN);\n if (fromLocalStorage) {\n return JSON.parse(fromLocalStorage);\n }\n\n const fromCookie = getCookieValue(STORAGE_KEYS.TOKEN);\n return fromCookie ?? null;\n};\n\ntype FetchClient = {\n get: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n put: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n post: <TData = any, TSend = any>(\n url: string,\n data?: TSend,\n config?: FetchOptions\n ) => Promise<FetchResponse<TData>>;\n del: <TData = any>(url: string, config?: FetchOptions) => Promise<FetchResponse<TData>>;\n};\n\n/**\n * @public\n * @param {FetchConfig} [defaultOptions={}] - Fetch Configs.\n * @returns {FetchClient} A fetch client object with methods for making HTTP requests.\n * @description This is an abstraction around the native fetch exposed by a function. It provides a simple interface to handle API calls\n * to the Strapi backend.\n * @example\n * ```tsx\n * import { getFetchClient } from '@strapi/admin/admin';\n *\n * const myFunct = () => {\n * const { get } = getFetchClient();\n * const requestURL = \"/some-endpoint\";\n *\n * const { data } = await get(requestURL);\n *\n * return data;\n * };\n * ```\n */\nconst getFetchClient = (defaultOptions: FetchConfig = {}): FetchClient => {\n const backendURL = window.strapi.backendURL;\n\n /**\n * Create default headers with the current token.\n * This is a function so we can get a fresh token after refresh.\n */\n const getDefaultHeaders = () => ({\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${getToken()}`,\n });\n\n const isFormDataRequest = (body: unknown) => body instanceof FormData;\n const addPrependingSlash = (url: string) => (url.charAt(0) !== '/' ? `/${url}` : url);\n\n // This regular expression matches a string that starts with either \"http://\" or \"https://\" or any other protocol name in lower case letters, followed by \"://\" and ends with anything else\n const hasProtocol = (url: string) => new RegExp('^(?:[a-z+]+:)?//', 'i').test(url);\n\n // Check if the url has a prepending slash, if not add a slash\n const normalizeUrl = (url: string) => (hasProtocol(url) ? url : addPrependingSlash(url));\n\n // Add a response interceptor to return the response\n const responseInterceptor = async <TData = any>(\n response: Response,\n validateStatus?: FetchOptions['validateStatus']\n ): Promise<FetchResponse<TData>> => {\n try {\n const result = await response.json();\n\n /**\n * validateStatus allows us to customize when a response should throw an error\n * In native Fetch API, a response is considered \"not ok\"\n * when the status code falls in the 200 to 299 (inclusive) range\n */\n if (!response.ok && result.error && !validateStatus?.(response.status)) {\n const fetchError = new FetchError(result.error.message, { data: result });\n fetchError.status = response.status;\n throw fetchError;\n }\n\n if (!response.ok && !validateStatus?.(response.status)) {\n const fetchError = new FetchError('Unknown Server Error');\n fetchError.status = response.status;\n throw fetchError;\n }\n\n return { data: result };\n } catch (error) {\n if (error instanceof SyntaxError && response.ok) {\n // Making sure that a SyntaxError doesn't throw if it's successful\n return { data: [], status: response.status } as FetchResponse<any>;\n } else {\n throw error;\n }\n }\n };\n\n /**\n * Execute a fetch request with automatic token refresh on 401 errors.\n * @param url - The request URL (used to check if it's an auth path)\n * @param executeRequest - Function that performs the fetch (called again on retry with fresh headers)\n */\n const withTokenRefresh = async <TData>(\n url: string,\n executeRequest: () => Promise<FetchResponse<TData>>\n ): Promise<FetchResponse<TData>> => {\n try {\n return await executeRequest();\n } catch (error) {\n // Only attempt refresh for 401 errors on non-auth paths\n if (isFetchError(error) && error.status === 401 && !isAuthPath(url)) {\n try {\n await attemptTokenRefresh();\n // Retry - executeRequest will call getDefaultHeaders() again, picking up the new token\n return await executeRequest();\n } catch {\n // If refresh fails, throw the original error\n throw error;\n }\n }\n throw error;\n }\n };\n\n const paramsSerializer =\n <Param = unknown>(params?: Param) =>\n (url: string) => {\n if (params) {\n if (typeof params === 'string') {\n return `${url}?${params}`;\n }\n\n /**\n * TODO V6: Encoding should be enabled in this step\n * So the rest of the app doesn't have to worry about it,\n * It's considered a breaking change because it impacts any API request, including the user's custom code\n */\n const serializedParams = qs.stringify(params, { encode: false });\n return `${url}?${serializedParams}`;\n }\n return url;\n };\n\n const addBaseUrl = (url: Parameters<typeof fetch>[0]) => {\n return `${backendURL}${url}`;\n };\n\n /**\n * We use the factory method because the options\n * are unique to the individual request\n */\n const makeCreateRequestUrl = (options?: FetchOptions) =>\n pipe(normalizeUrl, addBaseUrl, paramsSerializer(options?.params));\n\n const fetchClient: FetchClient = {\n get: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'GET',\n headers,\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n post: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'POST',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n put: async <TData, TSend = any>(\n url: string,\n data?: TSend,\n options?: FetchOptions\n ): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n /**\n * we have to remove the Content-Type value if it was a formData request\n * the browser will automatically set the header value\n */\n if (isFormDataRequest(data)) {\n headers.delete('Content-Type');\n }\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'PUT',\n headers,\n body: isFormDataRequest(data) ? (data as FormData) : JSON.stringify(data),\n });\n\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n del: async <TData>(url: string, options?: FetchOptions): Promise<FetchResponse<TData>> => {\n const createRequestUrl = makeCreateRequestUrl(options);\n\n const executeRequest = async () => {\n const headers = new Headers({\n ...getDefaultHeaders(),\n ...options?.headers,\n });\n\n const response = await fetch(createRequestUrl(url), {\n signal: options?.signal ?? defaultOptions.signal,\n method: 'DELETE',\n headers,\n });\n return responseInterceptor<TData>(response, options?.validateStatus);\n };\n\n return withTokenRefresh(url, executeRequest);\n },\n };\n\n return fetchClient;\n};\n\nexport {\n getFetchClient,\n isFetchError,\n FetchError,\n attemptTokenRefresh,\n storeToken,\n setOnTokenUpdate,\n};\nexport type { FetchOptions, FetchResponse, FetchConfig, FetchClient, ErrorResponse };\n"],"names":["STORAGE_KEYS","TOKEN","refreshPromise","onTokenUpdate","setOnTokenUpdate","callback","isAuthPath","url","test","storeToken","token","wasPersistedToLocalStorage","Boolean","localStorage","getItem","setItem","JSON","stringify","setCookie","refreshAccessToken","backendURL","window","strapi","response","fetch","method","credentials","headers","Accept","ok","console","warn","status","result","json","data","error","attemptTokenRefresh","finally","newToken","Error","name","FetchError","message","code","captureStackTrace","isFetchError","getToken","fromLocalStorage","parse","fromCookie","getCookieValue","getFetchClient","defaultOptions","getDefaultHeaders","Authorization","isFormDataRequest","body","FormData","addPrependingSlash","charAt","hasProtocol","RegExp","normalizeUrl","responseInterceptor","validateStatus","fetchError","SyntaxError","withTokenRefresh","executeRequest","paramsSerializer","params","serializedParams","qs","encode","addBaseUrl","makeCreateRequestUrl","options","pipe","fetchClient","get","createRequestUrl","Headers","signal","post","delete","put","del"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrefixedId.js","sources":["../../../../../admin/src/utils/getPrefixedId.ts"],"sourcesContent":["/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n"],"names":["getPrefixedId","message","callback","prefixedMessage"],"mappings":";;AAAA;;AAEC,IACM,SAASA,
|
|
1
|
+
{"version":3,"file":"getPrefixedId.js","sources":["../../../../../admin/src/utils/getPrefixedId.ts"],"sourcesContent":["/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n"],"names":["getPrefixedId","message","callback","prefixedMessage"],"mappings":";;AAAA;;AAEC,IACM,SAASA,aAAAA,CAAcC,OAAe,EAAEC,QAA8C,EAAA;AAC3F,IAAA,MAAMC,eAAAA,GAAkB,CAAC,SAAS,EAAEF,OAAAA,CAAAA,CAAS;;;;IAK7C,IAAI,OAAOC,aAAa,UAAA,EAAY;AAClC,QAAA,OAAOA,QAAAA,CAASC,eAAAA,CAAAA;AAClB,IAAA;IAEA,OAAOA,eAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPrefixedId.mjs","sources":["../../../../../admin/src/utils/getPrefixedId.ts"],"sourcesContent":["/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n"],"names":["getPrefixedId","message","callback","prefixedMessage"],"mappings":"AAAA;;AAEC,IACM,SAASA,
|
|
1
|
+
{"version":3,"file":"getPrefixedId.mjs","sources":["../../../../../admin/src/utils/getPrefixedId.ts"],"sourcesContent":["/**\n * Prefix message with 'apiError.'\n */\nexport function getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n"],"names":["getPrefixedId","message","callback","prefixedMessage"],"mappings":"AAAA;;AAEC,IACM,SAASA,aAAAA,CAAcC,OAAe,EAAEC,QAA8C,EAAA;AAC3F,IAAA,MAAMC,eAAAA,GAAkB,CAAC,SAAS,EAAEF,OAAAA,CAAAA,CAAS;;;;IAK7C,IAAI,OAAOC,aAAa,UAAA,EAAY;AAClC,QAAA,OAAOA,QAAAA,CAASC,eAAAA,CAAAA;AAClB,IAAA;IAEA,OAAOA,eAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.js","sources":["../../../../../admin/src/utils/locales.ts"],"sourcesContent":["import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n"],"names":["getDateFnsLocaleName","locale","Object","keys","locales","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA;;;IAIA,MAAMA,uBAAuB,CAACC,MAAAA,GAAAA;AAC5B,IAAA,IAAIC,OAAOC,IAAI,CAACC,
|
|
1
|
+
{"version":3,"file":"locales.js","sources":["../../../../../admin/src/utils/locales.ts"],"sourcesContent":["import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n"],"names":["getDateFnsLocaleName","locale","Object","keys","locales","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA;;;IAIA,MAAMA,uBAAuB,CAACC,MAAAA,GAAAA;AAC5B,IAAA,IAAIC,OAAOC,IAAI,CAACC,kBAAAA,CAAAA,CAASC,QAAQ,CAACJ,MAAAA,CAAAA,EAAS;QACzC,OAAOA,MAAAA;AACT,IAAA;IAEA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.mjs","sources":["../../../../../admin/src/utils/locales.ts"],"sourcesContent":["import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n"],"names":["getDateFnsLocaleName","locale","Object","keys","locales","includes"],"mappings":";;AAIA;;;IAIA,MAAMA,uBAAuB,CAACC,MAAAA,GAAAA;AAC5B,IAAA,IAAIC,OAAOC,IAAI,CAACC,
|
|
1
|
+
{"version":3,"file":"locales.mjs","sources":["../../../../../admin/src/utils/locales.ts"],"sourcesContent":["import * as locales from 'date-fns/locale';\n\ntype LocaleName = keyof typeof locales;\n\n/**\n * Returns a valid date-fns locale name from a Strapi Admin locale.\n * Defaults to 'enUS' if the locale is not found.\n */\nconst getDateFnsLocaleName = (locale: string): LocaleName => {\n if (Object.keys(locales).includes(locale)) {\n return locale as LocaleName;\n }\n\n return 'enUS';\n};\n\nexport { getDateFnsLocaleName };\n"],"names":["getDateFnsLocaleName","locale","Object","keys","locales","includes"],"mappings":";;AAIA;;;IAIA,MAAMA,uBAAuB,CAACC,MAAAA,GAAAA;AAC5B,IAAA,IAAIC,OAAOC,IAAI,CAACC,OAAAA,CAAAA,CAASC,QAAQ,CAACJ,MAAAA,CAAAA,EAAS;QACzC,OAAOA,MAAAA;AACT,IAAA;IAEA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeAPIError.js","sources":["../../../../../admin/src/utils/normalizeAPIError.ts"],"sourcesContent":["import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { FetchError } from '../utils/getFetchClient';\nimport type { errors } from '@strapi/utils';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n value: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data?.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n"],"names":["normalizeError","error","name","intlMessagePrefixCallback","message","normalizedError","id","getPrefixedId","defaultMessage","values","path","join","validateErrorIsYupValidationError","err","details","normalizeAPIError","apiError","response","data","errors","map"],"mappings":";;;;AAyBA,SAASA,eACPC,KAAmC,EACnC,EAAEC,IAAI,EAAEC,yBAAyB,EAAyB,EAAA;IAE1D,MAAM,EAAEC,OAAO,EAAE,GAAGH,KAAAA;AAEpB,IAAA,MAAMI,
|
|
1
|
+
{"version":3,"file":"normalizeAPIError.js","sources":["../../../../../admin/src/utils/normalizeAPIError.ts"],"sourcesContent":["import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { FetchError } from '../utils/getFetchClient';\nimport type { errors } from '@strapi/utils';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n value: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data?.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n"],"names":["normalizeError","error","name","intlMessagePrefixCallback","message","normalizedError","id","getPrefixedId","defaultMessage","values","path","join","validateErrorIsYupValidationError","err","details","normalizeAPIError","apiError","response","data","errors","map"],"mappings":";;;;AAyBA,SAASA,eACPC,KAAmC,EACnC,EAAEC,IAAI,EAAEC,yBAAyB,EAAyB,EAAA;IAE1D,MAAM,EAAEC,OAAO,EAAE,GAAGH,KAAAA;AAEpB,IAAA,MAAMI,eAAAA,GAAkB;AACtBC,QAAAA,EAAAA,EAAIC,4BAAcH,OAAAA,EAASD,yBAAAA,CAAAA;QAC3BK,cAAAA,EAAgBJ,OAAAA;QAChBF,IAAAA,EAAMD,KAAAA,CAAMC,IAAI,IAAIA,IAAAA;AACpBO,QAAAA,MAAAA,EAAQ;AACV,KAAA;AAEA,IAAA,IAAI,UAAUR,KAAAA,EAAO;AACnBI,QAAAA,eAAAA,CAAgBI,MAAM,GAAG;AAAEC,YAAAA,IAAAA,EAAMT,KAAAA,CAAMS,IAAI,CAACC,IAAI,CAAC,GAAA;AAAK,SAAA;AACxD,IAAA;IAEA,OAAON,eAAAA;AACT;AAEA,MAAMO,iCAAAA,GAAoC,CACxCC,GAAAA,GAEA,OAAOA,IAAIC,OAAO,KAAK,QAAA,IAAYD,GAAAA,CAAIC,OAAO,KAAK,IAAA,IAAQ,QAAA,IAAYD,IAAIC,OAAO;AAEpF;;;;AAIC,IACM,SAASC,iBAAAA,CACdC,QAAoB,EACpBb,yBAA8E,EAAA;AAK9E,IAAA,MAAMF,KAAAA,GAAQe,QAAAA,CAASC,QAAQ,EAAEC,IAAAA,EAAMjB,KAAAA;AAEvC,IAAA,IAAIA,KAAAA,EAAO;;AAET,QAAA,IAAIW,kCAAkCX,KAAAA,CAAAA,EAAQ;YAC5C,OAAO;AACLC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBE,gBAAAA,OAAAA,EAASH,OAAOG,OAAAA,IAAW,IAAA;gBAC3Be,MAAAA,EAAQlB,KAAAA,CAAMa,OAAO,CAACK,MAAM,CAACC,GAAG,CAAC,CAACP,GAAAA,GAChCb,cAAAA,CAAea,GAAAA,EAAK;AAAEX,wBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAAEC,wBAAAA;AAA0B,qBAAA,CAAA;AAEtE,aAAA;AACF,QAAA;AACA,QAAA,OAAOH,eAAeC,KAAAA,EAAO;AAAEE,YAAAA;AAA0B,SAAA,CAAA;AAC3D,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeAPIError.mjs","sources":["../../../../../admin/src/utils/normalizeAPIError.ts"],"sourcesContent":["import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { FetchError } from '../utils/getFetchClient';\nimport type { errors } from '@strapi/utils';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n value: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data?.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n"],"names":["normalizeError","error","name","intlMessagePrefixCallback","message","normalizedError","id","getPrefixedId","defaultMessage","values","path","join","validateErrorIsYupValidationError","err","details","normalizeAPIError","apiError","response","data","errors","map"],"mappings":";;AAyBA,SAASA,eACPC,KAAmC,EACnC,EAAEC,IAAI,EAAEC,yBAAyB,EAAyB,EAAA;IAE1D,MAAM,EAAEC,OAAO,EAAE,GAAGH,KAAAA;AAEpB,IAAA,MAAMI,
|
|
1
|
+
{"version":3,"file":"normalizeAPIError.mjs","sources":["../../../../../admin/src/utils/normalizeAPIError.ts"],"sourcesContent":["import { getPrefixedId } from './getPrefixedId';\n\nimport type { ApiError } from '../hooks/useAPIErrorHandler';\nimport type { FetchError } from '../utils/getFetchClient';\nimport type { errors } from '@strapi/utils';\n\nexport interface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n value: string;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data?.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n"],"names":["normalizeError","error","name","intlMessagePrefixCallback","message","normalizedError","id","getPrefixedId","defaultMessage","values","path","join","validateErrorIsYupValidationError","err","details","normalizeAPIError","apiError","response","data","errors","map"],"mappings":";;AAyBA,SAASA,eACPC,KAAmC,EACnC,EAAEC,IAAI,EAAEC,yBAAyB,EAAyB,EAAA;IAE1D,MAAM,EAAEC,OAAO,EAAE,GAAGH,KAAAA;AAEpB,IAAA,MAAMI,eAAAA,GAAkB;AACtBC,QAAAA,EAAAA,EAAIC,cAAcH,OAAAA,EAASD,yBAAAA,CAAAA;QAC3BK,cAAAA,EAAgBJ,OAAAA;QAChBF,IAAAA,EAAMD,KAAAA,CAAMC,IAAI,IAAIA,IAAAA;AACpBO,QAAAA,MAAAA,EAAQ;AACV,KAAA;AAEA,IAAA,IAAI,UAAUR,KAAAA,EAAO;AACnBI,QAAAA,eAAAA,CAAgBI,MAAM,GAAG;AAAEC,YAAAA,IAAAA,EAAMT,KAAAA,CAAMS,IAAI,CAACC,IAAI,CAAC,GAAA;AAAK,SAAA;AACxD,IAAA;IAEA,OAAON,eAAAA;AACT;AAEA,MAAMO,iCAAAA,GAAoC,CACxCC,GAAAA,GAEA,OAAOA,IAAIC,OAAO,KAAK,QAAA,IAAYD,GAAAA,CAAIC,OAAO,KAAK,IAAA,IAAQ,QAAA,IAAYD,IAAIC,OAAO;AAEpF;;;;AAIC,IACM,SAASC,iBAAAA,CACdC,QAAoB,EACpBb,yBAA8E,EAAA;AAK9E,IAAA,MAAMF,KAAAA,GAAQe,QAAAA,CAASC,QAAQ,EAAEC,IAAAA,EAAMjB,KAAAA;AAEvC,IAAA,IAAIA,KAAAA,EAAO;;AAET,QAAA,IAAIW,kCAAkCX,KAAAA,CAAAA,EAAQ;YAC5C,OAAO;AACLC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBE,gBAAAA,OAAAA,EAASH,OAAOG,OAAAA,IAAW,IAAA;gBAC3Be,MAAAA,EAAQlB,KAAAA,CAAMa,OAAO,CAACK,MAAM,CAACC,GAAG,CAAC,CAACP,GAAAA,GAChCb,cAAAA,CAAea,GAAAA,EAAK;AAAEX,wBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAAEC,wBAAAA;AAA0B,qBAAA,CAAA;AAEtE,aAAA;AACF,QAAA;AACA,QAAA,OAAOH,eAAeC,KAAAA,EAAO;AAAEE,YAAAA;AAA0B,SAAA,CAAA;AAC3D,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n"],"names":["getIn","obj","key","def","pathStartIndex","path","toPath","length","undefined","isObject","Array","isArray","isInteger","String","Math","floor","Number","setIn","value","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","nextPath"],"mappings":";;;;;AAGA;;IAGO,SAASA,KAAAA,CAAMC,GAAQ,EAAEC,GAAsB,EAAEC,GAAS,EAAEC,cAAAA,GAAyB,CAAC,EAAA;AAC3F,IAAA,MAAMC,OAAOC,
|
|
1
|
+
{"version":3,"file":"objects.js","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n"],"names":["getIn","obj","key","def","pathStartIndex","path","toPath","length","undefined","isObject","Array","isArray","isInteger","String","Math","floor","Number","setIn","value","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","nextPath"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.mjs","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n"],"names":["getIn","obj","key","def","pathStartIndex","path","toPath","length","undefined","isObject","Array","isArray","isInteger","String","Math","floor","Number","setIn","value","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","nextPath"],"mappings":";;;AAGA;;IAGO,SAASA,KAAAA,CAAMC,GAAQ,EAAEC,GAAsB,EAAEC,GAAS,EAAEC,cAAAA,GAAyB,CAAC,EAAA;AAC3F,IAAA,MAAMC,OAAOC,
|
|
1
|
+
{"version":3,"file":"objects.mjs","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n"],"names":["getIn","obj","key","def","pathStartIndex","path","toPath","length","undefined","isObject","Array","isArray","isInteger","String","Math","floor","Number","setIn","value","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","nextPath"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.js","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: any) => any>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: any) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":";;AAAO,MAAMA,OAAO,CAAsCC,EAAAA,GAAAA;AACxD,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"once.js","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: any) => any>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: any) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":";;AAAO,MAAMA,OAAO,CAAsCC,EAAAA,GAAAA;AACxD,IAAA,MAAMC,IAAAA,GAAOD,EAAAA;AACb,IAAA,IAAIE,MAAAA,GAAS,KAAA;IAEb,IAAI,OAAOD,SAAS,UAAA,EAAY;AAC9B,QAAA,MAAM,IAAIE,SAAAA,CAAU,CAAC,kCAAkC,CAAC,CAAA;AAC1D,IAAA;AAEA,IAAA,OAAO,CAAC,GAAGC,IAAAA,GAAAA;AACT,QAAA,IAAI,CAACF,MAAAA,IAAUG,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAA,EAAe;YACrDN,IAAAA,CAAAA,GAAQG,IAAAA,CAAAA;YACRF,MAAAA,GAAS,IAAA;AACX,QAAA;AACF,IAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.mjs","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: any) => any>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: any) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":"AAAO,MAAMA,OAAO,CAAsCC,EAAAA,GAAAA;AACxD,IAAA,MAAMC,
|
|
1
|
+
{"version":3,"file":"once.mjs","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: any) => any>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: any) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":"AAAO,MAAMA,OAAO,CAAsCC,EAAAA,GAAAA;AACxD,IAAA,MAAMC,IAAAA,GAAOD,EAAAA;AACb,IAAA,IAAIE,MAAAA,GAAS,KAAA;IAEb,IAAI,OAAOD,SAAS,UAAA,EAAY;AAC9B,QAAA,MAAM,IAAIE,SAAAA,CAAU,CAAC,kCAAkC,CAAC,CAAA;AAC1D,IAAA;AAEA,IAAA,OAAO,CAAC,GAAGC,IAAAA,GAAAA;AACT,QAAA,IAAI,CAACF,MAAAA,IAAUG,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAA,EAAe;YACrDN,IAAAA,CAAAA,GAAQG,IAAAA,CAAAA;YACRF,MAAAA,GAAS,IAAA;AACX,QAAA;AACF,IAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizeHandlers.js","sources":["../../../../../admin/src/utils/resizeHandlers.ts"],"sourcesContent":["/**\n * These functions handle DOM element positioning, bounding rect calculations, and resize-specific logic.\n */\n\nimport { WIDGET_SIZING } from './widgetLayout';\n\n/**\n * Snaps a width value to the nearest discrete size\n */\nexport const snapToDiscreteSize = (width: number): number => {\n return WIDGET_SIZING.DISCRETE_SIZES.reduce((prev, curr) =>\n Math.abs(curr - width) < Math.abs(prev - width) ? curr : prev\n );\n};\n\n/**\n * Ensures two widths sum to exactly 12 columns by adjusting the right width\n */\nexport const adjustToTotalColumns = (\n leftWidth: number,\n rightWidth: number\n): { leftWidth: number; rightWidth: number } => {\n const totalWidth = leftWidth + rightWidth;\n if (totalWidth !== WIDGET_SIZING.TOTAL_COLUMNS) {\n const difference = WIDGET_SIZING.TOTAL_COLUMNS - totalWidth;\n rightWidth += difference;\n }\n return { leftWidth, rightWidth };\n};\n\n/**\n * Validates if two widget widths together are valid (sum to 12 columns)\n */\nexport const isValidResize = (leftWidth: number, rightWidth: number): boolean => {\n return (\n leftWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n rightWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n leftWidth + rightWidth === WIDGET_SIZING.TOTAL_COLUMNS\n );\n};\n\n/**\n * Get bounding rects for all elements\n */\nexport const getElementRects = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n if (!leftElement || !rightElement || !containerElement) {\n return null;\n }\n\n return {\n leftRect: leftElement.getBoundingClientRect(),\n rightRect: rightElement.getBoundingClientRect(),\n containerRect: containerElement.getBoundingClientRect(),\n };\n};\n\n/**\n * Calculate resize handle position from DOM elements\n */\nexport const calculateResizeHandlePosition = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return { left: 0, top: 0, height: 0 };\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const left = leftRect.right - containerRect.left;\n const top = leftRect.top - containerRect.top;\n const height = Math.max(leftRect.height, rightRect.height);\n\n return { left, top, height };\n};\n\n/**\n * Calculate row bounds for resize indicator from DOM elements\n */\nexport const calculateRowBounds = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return null;\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const rowLeft = Math.min(leftRect.left, rightRect.left) - containerRect.left;\n const rowTop = leftRect.top - containerRect.top;\n const rowWidth =\n Math.max(leftRect.right, rightRect.right) - Math.min(leftRect.left, rightRect.left);\n const rowHeight = Math.max(leftRect.height, rightRect.height);\n\n return { left: rowLeft, top: rowTop, width: rowWidth, height: rowHeight };\n};\n\n/**\n * Calculates target widths for a resize operation based on delta movement\n */\nexport const calculateTargetWidths = (\n deltaColumns: number,\n startLeftWidth: number,\n startRightWidth: number\n): { targetLeftWidth: number; targetRightWidth: number } => {\n let targetLeftWidth = startLeftWidth + deltaColumns;\n let targetRightWidth = startRightWidth - deltaColumns;\n\n targetLeftWidth = snapToDiscreteSize(targetLeftWidth);\n targetRightWidth = snapToDiscreteSize(targetRightWidth);\n\n // Adjust to maintain total columns constraint\n const adjusted = adjustToTotalColumns(targetLeftWidth, targetRightWidth);\n return { targetLeftWidth: adjusted.leftWidth, targetRightWidth: adjusted.rightWidth };\n};\n\n/**\n * Determines if a resize operation should trigger based on value changes\n * Used for performance optimization to prevent unnecessary updates\n */\nexport const shouldTriggerResize = (\n leftWidth: number,\n rightWidth: number,\n lastResizeValues: { leftWidth: number; rightWidth: number }\n): boolean => {\n return leftWidth !== lastResizeValues.leftWidth || rightWidth !== lastResizeValues.rightWidth;\n};\n"],"names":["snapToDiscreteSize","width","WIDGET_SIZING","DISCRETE_SIZES","reduce","prev","curr","Math","abs","adjustToTotalColumns","leftWidth","rightWidth","totalWidth","TOTAL_COLUMNS","difference","isValidResize","MIN_WIDGET_WIDTH","getElementRects","leftElement","rightElement","containerElement","leftRect","getBoundingClientRect","rightRect","containerRect","calculateResizeHandlePosition","rects","left","top","height","right","max","calculateRowBounds","rowLeft","min","rowTop","rowWidth","rowHeight","calculateTargetWidths","deltaColumns","startLeftWidth","startRightWidth","targetLeftWidth","targetRightWidth","adjusted","shouldTriggerResize","lastResizeValues"],"mappings":";;;;AAMA;;
|
|
1
|
+
{"version":3,"file":"resizeHandlers.js","sources":["../../../../../admin/src/utils/resizeHandlers.ts"],"sourcesContent":["/**\n * These functions handle DOM element positioning, bounding rect calculations, and resize-specific logic.\n */\n\nimport { WIDGET_SIZING } from './widgetLayout';\n\n/**\n * Snaps a width value to the nearest discrete size\n */\nexport const snapToDiscreteSize = (width: number): number => {\n return WIDGET_SIZING.DISCRETE_SIZES.reduce((prev, curr) =>\n Math.abs(curr - width) < Math.abs(prev - width) ? curr : prev\n );\n};\n\n/**\n * Ensures two widths sum to exactly 12 columns by adjusting the right width\n */\nexport const adjustToTotalColumns = (\n leftWidth: number,\n rightWidth: number\n): { leftWidth: number; rightWidth: number } => {\n const totalWidth = leftWidth + rightWidth;\n if (totalWidth !== WIDGET_SIZING.TOTAL_COLUMNS) {\n const difference = WIDGET_SIZING.TOTAL_COLUMNS - totalWidth;\n rightWidth += difference;\n }\n return { leftWidth, rightWidth };\n};\n\n/**\n * Validates if two widget widths together are valid (sum to 12 columns)\n */\nexport const isValidResize = (leftWidth: number, rightWidth: number): boolean => {\n return (\n leftWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n rightWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n leftWidth + rightWidth === WIDGET_SIZING.TOTAL_COLUMNS\n );\n};\n\n/**\n * Get bounding rects for all elements\n */\nexport const getElementRects = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n if (!leftElement || !rightElement || !containerElement) {\n return null;\n }\n\n return {\n leftRect: leftElement.getBoundingClientRect(),\n rightRect: rightElement.getBoundingClientRect(),\n containerRect: containerElement.getBoundingClientRect(),\n };\n};\n\n/**\n * Calculate resize handle position from DOM elements\n */\nexport const calculateResizeHandlePosition = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return { left: 0, top: 0, height: 0 };\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const left = leftRect.right - containerRect.left;\n const top = leftRect.top - containerRect.top;\n const height = Math.max(leftRect.height, rightRect.height);\n\n return { left, top, height };\n};\n\n/**\n * Calculate row bounds for resize indicator from DOM elements\n */\nexport const calculateRowBounds = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return null;\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const rowLeft = Math.min(leftRect.left, rightRect.left) - containerRect.left;\n const rowTop = leftRect.top - containerRect.top;\n const rowWidth =\n Math.max(leftRect.right, rightRect.right) - Math.min(leftRect.left, rightRect.left);\n const rowHeight = Math.max(leftRect.height, rightRect.height);\n\n return { left: rowLeft, top: rowTop, width: rowWidth, height: rowHeight };\n};\n\n/**\n * Calculates target widths for a resize operation based on delta movement\n */\nexport const calculateTargetWidths = (\n deltaColumns: number,\n startLeftWidth: number,\n startRightWidth: number\n): { targetLeftWidth: number; targetRightWidth: number } => {\n let targetLeftWidth = startLeftWidth + deltaColumns;\n let targetRightWidth = startRightWidth - deltaColumns;\n\n targetLeftWidth = snapToDiscreteSize(targetLeftWidth);\n targetRightWidth = snapToDiscreteSize(targetRightWidth);\n\n // Adjust to maintain total columns constraint\n const adjusted = adjustToTotalColumns(targetLeftWidth, targetRightWidth);\n return { targetLeftWidth: adjusted.leftWidth, targetRightWidth: adjusted.rightWidth };\n};\n\n/**\n * Determines if a resize operation should trigger based on value changes\n * Used for performance optimization to prevent unnecessary updates\n */\nexport const shouldTriggerResize = (\n leftWidth: number,\n rightWidth: number,\n lastResizeValues: { leftWidth: number; rightWidth: number }\n): boolean => {\n return leftWidth !== lastResizeValues.leftWidth || rightWidth !== lastResizeValues.rightWidth;\n};\n"],"names":["snapToDiscreteSize","width","WIDGET_SIZING","DISCRETE_SIZES","reduce","prev","curr","Math","abs","adjustToTotalColumns","leftWidth","rightWidth","totalWidth","TOTAL_COLUMNS","difference","isValidResize","MIN_WIDGET_WIDTH","getElementRects","leftElement","rightElement","containerElement","leftRect","getBoundingClientRect","rightRect","containerRect","calculateResizeHandlePosition","rects","left","top","height","right","max","calculateRowBounds","rowLeft","min","rowTop","rowWidth","rowHeight","calculateTargetWidths","deltaColumns","startLeftWidth","startRightWidth","targetLeftWidth","targetRightWidth","adjusted","shouldTriggerResize","lastResizeValues"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizeHandlers.mjs","sources":["../../../../../admin/src/utils/resizeHandlers.ts"],"sourcesContent":["/**\n * These functions handle DOM element positioning, bounding rect calculations, and resize-specific logic.\n */\n\nimport { WIDGET_SIZING } from './widgetLayout';\n\n/**\n * Snaps a width value to the nearest discrete size\n */\nexport const snapToDiscreteSize = (width: number): number => {\n return WIDGET_SIZING.DISCRETE_SIZES.reduce((prev, curr) =>\n Math.abs(curr - width) < Math.abs(prev - width) ? curr : prev\n );\n};\n\n/**\n * Ensures two widths sum to exactly 12 columns by adjusting the right width\n */\nexport const adjustToTotalColumns = (\n leftWidth: number,\n rightWidth: number\n): { leftWidth: number; rightWidth: number } => {\n const totalWidth = leftWidth + rightWidth;\n if (totalWidth !== WIDGET_SIZING.TOTAL_COLUMNS) {\n const difference = WIDGET_SIZING.TOTAL_COLUMNS - totalWidth;\n rightWidth += difference;\n }\n return { leftWidth, rightWidth };\n};\n\n/**\n * Validates if two widget widths together are valid (sum to 12 columns)\n */\nexport const isValidResize = (leftWidth: number, rightWidth: number): boolean => {\n return (\n leftWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n rightWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n leftWidth + rightWidth === WIDGET_SIZING.TOTAL_COLUMNS\n );\n};\n\n/**\n * Get bounding rects for all elements\n */\nexport const getElementRects = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n if (!leftElement || !rightElement || !containerElement) {\n return null;\n }\n\n return {\n leftRect: leftElement.getBoundingClientRect(),\n rightRect: rightElement.getBoundingClientRect(),\n containerRect: containerElement.getBoundingClientRect(),\n };\n};\n\n/**\n * Calculate resize handle position from DOM elements\n */\nexport const calculateResizeHandlePosition = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return { left: 0, top: 0, height: 0 };\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const left = leftRect.right - containerRect.left;\n const top = leftRect.top - containerRect.top;\n const height = Math.max(leftRect.height, rightRect.height);\n\n return { left, top, height };\n};\n\n/**\n * Calculate row bounds for resize indicator from DOM elements\n */\nexport const calculateRowBounds = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return null;\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const rowLeft = Math.min(leftRect.left, rightRect.left) - containerRect.left;\n const rowTop = leftRect.top - containerRect.top;\n const rowWidth =\n Math.max(leftRect.right, rightRect.right) - Math.min(leftRect.left, rightRect.left);\n const rowHeight = Math.max(leftRect.height, rightRect.height);\n\n return { left: rowLeft, top: rowTop, width: rowWidth, height: rowHeight };\n};\n\n/**\n * Calculates target widths for a resize operation based on delta movement\n */\nexport const calculateTargetWidths = (\n deltaColumns: number,\n startLeftWidth: number,\n startRightWidth: number\n): { targetLeftWidth: number; targetRightWidth: number } => {\n let targetLeftWidth = startLeftWidth + deltaColumns;\n let targetRightWidth = startRightWidth - deltaColumns;\n\n targetLeftWidth = snapToDiscreteSize(targetLeftWidth);\n targetRightWidth = snapToDiscreteSize(targetRightWidth);\n\n // Adjust to maintain total columns constraint\n const adjusted = adjustToTotalColumns(targetLeftWidth, targetRightWidth);\n return { targetLeftWidth: adjusted.leftWidth, targetRightWidth: adjusted.rightWidth };\n};\n\n/**\n * Determines if a resize operation should trigger based on value changes\n * Used for performance optimization to prevent unnecessary updates\n */\nexport const shouldTriggerResize = (\n leftWidth: number,\n rightWidth: number,\n lastResizeValues: { leftWidth: number; rightWidth: number }\n): boolean => {\n return leftWidth !== lastResizeValues.leftWidth || rightWidth !== lastResizeValues.rightWidth;\n};\n"],"names":["snapToDiscreteSize","width","WIDGET_SIZING","DISCRETE_SIZES","reduce","prev","curr","Math","abs","adjustToTotalColumns","leftWidth","rightWidth","totalWidth","TOTAL_COLUMNS","difference","isValidResize","MIN_WIDGET_WIDTH","getElementRects","leftElement","rightElement","containerElement","leftRect","getBoundingClientRect","rightRect","containerRect","calculateResizeHandlePosition","rects","left","top","height","right","max","calculateRowBounds","rowLeft","min","rowTop","rowWidth","rowHeight","calculateTargetWidths","deltaColumns","startLeftWidth","startRightWidth","targetLeftWidth","targetRightWidth","adjusted","shouldTriggerResize","lastResizeValues"],"mappings":";;AAMA;;
|
|
1
|
+
{"version":3,"file":"resizeHandlers.mjs","sources":["../../../../../admin/src/utils/resizeHandlers.ts"],"sourcesContent":["/**\n * These functions handle DOM element positioning, bounding rect calculations, and resize-specific logic.\n */\n\nimport { WIDGET_SIZING } from './widgetLayout';\n\n/**\n * Snaps a width value to the nearest discrete size\n */\nexport const snapToDiscreteSize = (width: number): number => {\n return WIDGET_SIZING.DISCRETE_SIZES.reduce((prev, curr) =>\n Math.abs(curr - width) < Math.abs(prev - width) ? curr : prev\n );\n};\n\n/**\n * Ensures two widths sum to exactly 12 columns by adjusting the right width\n */\nexport const adjustToTotalColumns = (\n leftWidth: number,\n rightWidth: number\n): { leftWidth: number; rightWidth: number } => {\n const totalWidth = leftWidth + rightWidth;\n if (totalWidth !== WIDGET_SIZING.TOTAL_COLUMNS) {\n const difference = WIDGET_SIZING.TOTAL_COLUMNS - totalWidth;\n rightWidth += difference;\n }\n return { leftWidth, rightWidth };\n};\n\n/**\n * Validates if two widget widths together are valid (sum to 12 columns)\n */\nexport const isValidResize = (leftWidth: number, rightWidth: number): boolean => {\n return (\n leftWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n rightWidth >= WIDGET_SIZING.MIN_WIDGET_WIDTH &&\n leftWidth + rightWidth === WIDGET_SIZING.TOTAL_COLUMNS\n );\n};\n\n/**\n * Get bounding rects for all elements\n */\nexport const getElementRects = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n if (!leftElement || !rightElement || !containerElement) {\n return null;\n }\n\n return {\n leftRect: leftElement.getBoundingClientRect(),\n rightRect: rightElement.getBoundingClientRect(),\n containerRect: containerElement.getBoundingClientRect(),\n };\n};\n\n/**\n * Calculate resize handle position from DOM elements\n */\nexport const calculateResizeHandlePosition = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return { left: 0, top: 0, height: 0 };\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const left = leftRect.right - containerRect.left;\n const top = leftRect.top - containerRect.top;\n const height = Math.max(leftRect.height, rightRect.height);\n\n return { left, top, height };\n};\n\n/**\n * Calculate row bounds for resize indicator from DOM elements\n */\nexport const calculateRowBounds = (\n leftElement: Element | null,\n rightElement: Element | null,\n containerElement: Element | null\n) => {\n const rects = getElementRects(leftElement, rightElement, containerElement);\n if (!rects) {\n return null;\n }\n\n const { leftRect, rightRect, containerRect } = rects;\n\n const rowLeft = Math.min(leftRect.left, rightRect.left) - containerRect.left;\n const rowTop = leftRect.top - containerRect.top;\n const rowWidth =\n Math.max(leftRect.right, rightRect.right) - Math.min(leftRect.left, rightRect.left);\n const rowHeight = Math.max(leftRect.height, rightRect.height);\n\n return { left: rowLeft, top: rowTop, width: rowWidth, height: rowHeight };\n};\n\n/**\n * Calculates target widths for a resize operation based on delta movement\n */\nexport const calculateTargetWidths = (\n deltaColumns: number,\n startLeftWidth: number,\n startRightWidth: number\n): { targetLeftWidth: number; targetRightWidth: number } => {\n let targetLeftWidth = startLeftWidth + deltaColumns;\n let targetRightWidth = startRightWidth - deltaColumns;\n\n targetLeftWidth = snapToDiscreteSize(targetLeftWidth);\n targetRightWidth = snapToDiscreteSize(targetRightWidth);\n\n // Adjust to maintain total columns constraint\n const adjusted = adjustToTotalColumns(targetLeftWidth, targetRightWidth);\n return { targetLeftWidth: adjusted.leftWidth, targetRightWidth: adjusted.rightWidth };\n};\n\n/**\n * Determines if a resize operation should trigger based on value changes\n * Used for performance optimization to prevent unnecessary updates\n */\nexport const shouldTriggerResize = (\n leftWidth: number,\n rightWidth: number,\n lastResizeValues: { leftWidth: number; rightWidth: number }\n): boolean => {\n return leftWidth !== lastResizeValues.leftWidth || rightWidth !== lastResizeValues.rightWidth;\n};\n"],"names":["snapToDiscreteSize","width","WIDGET_SIZING","DISCRETE_SIZES","reduce","prev","curr","Math","abs","adjustToTotalColumns","leftWidth","rightWidth","totalWidth","TOTAL_COLUMNS","difference","isValidResize","MIN_WIDGET_WIDTH","getElementRects","leftElement","rightElement","containerElement","leftRect","getBoundingClientRect","rightRect","containerRect","calculateResizeHandlePosition","rects","left","top","height","right","max","calculateRowBounds","rowLeft","min","rowTop","rowWidth","rowHeight","calculateTargetWidths","deltaColumns","startLeftWidth","startRightWidth","targetLeftWidth","targetRightWidth","adjusted","shouldTriggerResize","lastResizeValues"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulesEngine.js","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err: any) {\n throw new Error(`Invalid condition: ${err.message}`);\n }\n };\n\n return {\n generate,\n validate,\n evaluate,\n };\n}\n"],"names":["ConditionSchema","z","object","dependsOn","string","min","operator","enum","value","union","number","boolean","createRulesEngine","generate","condition","operatorsMap","is","isNot","Error","var","validate","parse","evaluate","data","jsonLogic","apply","err","message"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"rulesEngine.js","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err: any) {\n throw new Error(`Invalid condition: ${err.message}`);\n }\n };\n\n return {\n generate,\n validate,\n evaluate,\n };\n}\n"],"names":["ConditionSchema","z","object","dependsOn","string","min","operator","enum","value","union","number","boolean","createRulesEngine","generate","condition","operatorsMap","is","isNot","Error","var","validate","parse","evaluate","data","jsonLogic","apply","err","message"],"mappings":";;;;;AAGO,MAAMA,eAAAA,GAAkBC,KAAAA,CAAEC,MAAM,CAAC;AACtCC,IAAAA,SAAAA,EAAWF,KAAAA,CAAEG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IAC1BC,QAAAA,EAAUL,KAAAA,CAAEM,IAAI,CAAC;AAAC,QAAA,IAAA;AAAM,QAAA;AAAQ,KAAA,CAAA;IAChCC,KAAAA,EAAOP,KAAAA,CAAEQ,KAAK,CAAC;AAACR,QAAAA,KAAAA,CAAEG,MAAM,EAAA;AAAIH,QAAAA,KAAAA,CAAES,MAAM,EAAA;AAAIT,QAAAA,KAAAA,CAAEU,OAAO;AAAG,KAAA;AACtD,CAAA;AAUO,SAASC,iBAAAA,GAAAA;AACd;;;;;;;;;MAUA,MAAMC,WAAW,CAACC,SAAAA,GAAAA;AAChB,QAAA,MAAM,EAAEX,SAAS,EAAEG,QAAQ,EAAEE,KAAK,EAAE,GAAGM,SAAAA;AACvC,QAAA,MAAMC,YAAAA,GAAe;YACnBC,EAAAA,EAAI,IAAA;YACJC,KAAAA,EAAO;AACT,SAAA;AACA,QAAA,IAAI,CAACF,YAAY,CAACT,QAAAA,CAAS,EAAE;AAC3B,YAAA,MAAM,IAAIY,KAAAA,CAAM,CAAC,kBAAkB,EAAEZ,QAAAA,CAAAA,CAAU,CAAA;AACjD,QAAA;QACA,OAAO;AAAE,YAAA,CAACS,YAAY,CAACT,QAAAA,CAAS,GAAG;AAAC,gBAAA;oBAAEa,GAAAA,EAAKhB;AAAU,iBAAA;AAAGK,gBAAAA;AAAM;AAAC,SAAA;AACjE,IAAA,CAAA;AAEA;;;;;;;MAQA,MAAMY,WAAW,CAACN,SAAAA,GAAAA;AAChBd,QAAAA,eAAAA,CAAgBqB,KAAK,CAACP,SAAAA,CAAAA;AACxB,IAAA,CAAA;AAEA;;;MAIA,MAAMQ,QAAAA,GAAW,CACfR,SAAAA,EACAS,IAAAA,GAAAA;QAEA,IAAI;YACF,OAAOC,SAAAA,CAAUC,KAAK,CAACX,SAAAA,EAAWS,IAAAA,CAAAA;AACpC,QAAA,CAAA,CAAE,OAAOG,GAAAA,EAAU;AACjB,YAAA,MAAM,IAAIR,KAAAA,CAAM,CAAC,mBAAmB,EAAEQ,GAAAA,CAAIC,OAAO,CAAA,CAAE,CAAA;AACrD,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLd,QAAAA,QAAAA;AACAO,QAAAA,QAAAA;AACAE,QAAAA;AACF,KAAA;AACF;;;;;"}
|