@openedx/frontend-base 1.0.0-alpha.12 → 1.0.0-alpha.13
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/{index.ts → dist/index.d.ts} +0 -3
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/analytics/MockAnalyticsService.d.ts +50 -0
- package/dist/runtime/analytics/MockAnalyticsService.js +64 -0
- package/dist/runtime/analytics/MockAnalyticsService.js.map +1 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.d.ts +64 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.js +218 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.js.map +1 -0
- package/dist/runtime/analytics/index.d.ts +3 -0
- package/dist/runtime/analytics/index.js +4 -0
- package/dist/runtime/analytics/index.js.map +1 -0
- package/dist/runtime/analytics/interface.d.ts +53 -0
- package/{runtime → dist/runtime}/analytics/interface.js +26 -38
- package/dist/runtime/analytics/interface.js.map +1 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.d.ts +10 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.js +64 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.js.map +1 -0
- package/dist/runtime/auth/AxiosJwtAuthService.d.ts +182 -0
- package/dist/runtime/auth/AxiosJwtAuthService.js +339 -0
- package/dist/runtime/auth/AxiosJwtAuthService.js.map +1 -0
- package/dist/runtime/auth/AxiosJwtTokenService.d.ts +16 -0
- package/dist/runtime/auth/AxiosJwtTokenService.js +130 -0
- package/dist/runtime/auth/AxiosJwtTokenService.js.map +1 -0
- package/dist/runtime/auth/LocalForageCache.d.ts +7 -0
- package/dist/runtime/auth/LocalForageCache.js +78 -0
- package/dist/runtime/auth/LocalForageCache.js.map +1 -0
- package/dist/runtime/auth/MockAuthService.d.ts +209 -0
- package/dist/runtime/auth/MockAuthService.js +256 -0
- package/dist/runtime/auth/MockAuthService.js.map +1 -0
- package/dist/runtime/auth/index.d.ts +3 -0
- package/dist/runtime/auth/index.js +4 -0
- package/dist/runtime/auth/index.js.map +1 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +42 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +40 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +26 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.d.ts +3 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.js +67 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.js.map +1 -0
- package/dist/runtime/auth/interface.d.ts +133 -0
- package/{runtime → dist/runtime}/auth/interface.js +65 -72
- package/dist/runtime/auth/interface.js.map +1 -0
- package/dist/runtime/auth/utils.d.ts +13 -0
- package/dist/runtime/auth/utils.js +66 -0
- package/dist/runtime/auth/utils.js.map +1 -0
- package/dist/runtime/babel.config.d.ts +2 -0
- package/{shell → dist/runtime}/babel.config.js +2 -1
- package/dist/runtime/babel.config.js.map +1 -0
- package/{runtime/config/index.ts → dist/runtime/config/index.d.ts} +28 -123
- package/dist/runtime/config/index.js +323 -0
- package/dist/runtime/config/index.js.map +1 -0
- package/dist/runtime/constants.d.ts +57 -0
- package/{runtime/constants.ts → dist/runtime/constants.js} +1 -11
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/i18n/index.d.ts +3 -0
- package/{runtime → dist/runtime}/i18n/index.js +4 -44
- package/dist/runtime/i18n/index.js.map +1 -0
- package/dist/runtime/i18n/injectIntlWithShim.d.ts +11 -0
- package/dist/runtime/i18n/injectIntlWithShim.js +45 -0
- package/dist/runtime/i18n/injectIntlWithShim.js.map +1 -0
- package/dist/runtime/i18n/lib.d.ts +119 -0
- package/dist/runtime/i18n/lib.js +236 -0
- package/dist/runtime/i18n/lib.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.js +14 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/initialize.d.ts +91 -0
- package/dist/runtime/initialize.js +312 -0
- package/dist/runtime/initialize.js.map +1 -0
- package/dist/runtime/jest.config.d.ts +17 -0
- package/dist/runtime/jest.config.js +35 -0
- package/dist/runtime/jest.config.js.map +1 -0
- package/dist/runtime/logging/MockLoggingService.d.ts +28 -0
- package/dist/runtime/logging/MockLoggingService.js +31 -0
- package/dist/runtime/logging/MockLoggingService.js.map +1 -0
- package/dist/runtime/logging/NewRelicLoggingService.d.ts +67 -0
- package/dist/runtime/logging/NewRelicLoggingService.js +175 -0
- package/dist/runtime/logging/NewRelicLoggingService.js.map +1 -0
- package/{runtime/logging/index.ts → dist/runtime/logging/index.d.ts} +1 -7
- package/dist/runtime/logging/index.js +4 -0
- package/dist/runtime/logging/index.js.map +1 -0
- package/dist/runtime/logging/interface.d.ts +38 -0
- package/{runtime → dist/runtime}/logging/interface.js +16 -26
- package/dist/runtime/logging/interface.js.map +1 -0
- package/dist/runtime/logging/types.d.ts +4 -0
- package/dist/runtime/logging/types.js +2 -0
- package/dist/runtime/logging/types.js.map +1 -0
- package/dist/runtime/react/AuthenticatedPageRoute.d.ts +28 -0
- package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +11 -18
- package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
- package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
- package/dist/runtime/react/CombinedAppProvider.js +24 -0
- package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
- package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
- package/{runtime/react/CurrentAppContext.tsx → dist/runtime/react/CurrentAppContext.js} +3 -7
- package/dist/runtime/react/CurrentAppContext.js.map +1 -0
- package/dist/runtime/react/CurrentAppProvider.d.ts +23 -0
- package/dist/runtime/react/CurrentAppProvider.js +33 -0
- package/dist/runtime/react/CurrentAppProvider.js.map +1 -0
- package/dist/runtime/react/Divider.d.ts +1 -0
- package/dist/runtime/react/Divider.js +5 -0
- package/dist/runtime/react/Divider.js.map +1 -0
- package/dist/runtime/react/ErrorBoundary.d.ts +32 -0
- package/dist/runtime/react/ErrorBoundary.js +40 -0
- package/dist/runtime/react/ErrorBoundary.js.map +1 -0
- package/dist/runtime/react/ErrorPage.d.ts +17 -0
- package/dist/runtime/react/ErrorPage.js +29 -0
- package/dist/runtime/react/ErrorPage.js.map +1 -0
- package/dist/runtime/react/LoginRedirect.d.ts +8 -0
- package/{runtime/react/LoginRedirect.jsx → dist/runtime/react/LoginRedirect.js} +5 -5
- package/dist/runtime/react/LoginRedirect.js.map +1 -0
- package/dist/runtime/react/PageWrap.d.ts +8 -0
- package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
- package/dist/runtime/react/PageWrap.js.map +1 -0
- package/dist/runtime/react/SiteContext.d.ts +24 -0
- package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
- package/dist/runtime/react/SiteContext.js.map +1 -0
- package/dist/runtime/react/SiteProvider.d.ts +29 -0
- package/dist/runtime/react/SiteProvider.js +69 -0
- package/dist/runtime/react/SiteProvider.js.map +1 -0
- package/dist/runtime/react/constants.d.ts +3 -0
- package/{runtime/react/constants.ts → dist/runtime/react/constants.js} +1 -0
- package/dist/runtime/react/constants.js.map +1 -0
- package/{runtime/react/hooks/index.ts → dist/runtime/react/hooks/index.d.ts} +0 -1
- package/dist/runtime/react/hooks/index.js +8 -0
- package/dist/runtime/react/hooks/index.js.map +1 -0
- package/dist/runtime/react/hooks/theme/index.js +3 -0
- package/dist/runtime/react/hooks/theme/index.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
- package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
- package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
- package/{runtime/react/hooks/theme/useThemeConfig.ts → dist/runtime/react/hooks/theme/useThemeConfig.js} +11 -16
- package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
- package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
- package/{runtime/react/hooks/theme/utils.ts → dist/runtime/react/hooks/theme/utils.js} +4 -4
- package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
- package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
- package/{runtime/react/hooks/useActiveRoles.ts → dist/runtime/react/hooks/useActiveRoles.js} +6 -8
- package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
- package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
- package/{runtime/react/hooks/useAppConfig.ts → dist/runtime/react/hooks/useAppConfig.js} +3 -4
- package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
- package/{runtime/react/hooks/useAuthenticatedUser.ts → dist/runtime/react/hooks/useAuthenticatedUser.js} +3 -4
- package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
- package/{runtime/react/hooks/useSiteConfig.ts → dist/runtime/react/hooks/useSiteConfig.js} +3 -4
- package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
- package/{runtime/react/hooks/useSiteEvent.ts → dist/runtime/react/hooks/useSiteEvent.js} +7 -9
- package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
- package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +0 -1
- package/dist/runtime/react/index.js +19 -0
- package/dist/runtime/react/index.js.map +1 -0
- package/dist/runtime/react/reducers.d.ts +11 -0
- package/dist/runtime/react/reducers.js +28 -0
- package/dist/runtime/react/reducers.js.map +1 -0
- package/dist/runtime/routing/index.js +2 -0
- package/dist/runtime/routing/index.js.map +1 -0
- package/dist/runtime/routing/utils.d.ts +4 -0
- package/dist/runtime/routing/utils.js +28 -0
- package/dist/runtime/routing/utils.js.map +1 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
- package/dist/runtime/scripts/index.js +2 -0
- package/dist/runtime/scripts/index.js.map +1 -0
- package/dist/runtime/setupTest.d.ts +1 -0
- package/{runtime → dist/runtime}/setupTest.js +6 -8
- package/dist/runtime/setupTest.js.map +1 -0
- package/dist/runtime/slots/Slot.d.ts +9 -0
- package/dist/runtime/slots/Slot.js +30 -0
- package/dist/runtime/slots/Slot.js.map +1 -0
- package/dist/runtime/slots/SlotContext.d.ts +7 -0
- package/dist/runtime/slots/SlotContext.js +7 -0
- package/dist/runtime/slots/SlotContext.js.map +1 -0
- package/dist/runtime/slots/hooks.d.ts +12 -0
- package/dist/runtime/slots/hooks.js +29 -0
- package/dist/runtime/slots/hooks.js.map +1 -0
- package/dist/runtime/slots/index.js +7 -0
- package/dist/runtime/slots/index.js.map +1 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
- package/dist/runtime/slots/layout/hooks.d.ts +10 -0
- package/dist/runtime/slots/layout/hooks.js +57 -0
- package/dist/runtime/slots/layout/hooks.js.map +1 -0
- package/dist/runtime/slots/layout/index.js +5 -0
- package/dist/runtime/slots/layout/index.js.map +1 -0
- package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
- package/dist/runtime/slots/layout/types.js +12 -0
- package/dist/runtime/slots/layout/types.js.map +1 -0
- package/dist/runtime/slots/layout/utils.d.ts +5 -0
- package/dist/runtime/slots/layout/utils.js +11 -0
- package/dist/runtime/slots/layout/utils.js.map +1 -0
- package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
- package/dist/runtime/slots/types.js +7 -0
- package/dist/runtime/slots/types.js.map +1 -0
- package/dist/runtime/slots/utils.d.ts +3 -0
- package/dist/runtime/slots/utils.js +66 -0
- package/dist/runtime/slots/utils.js.map +1 -0
- package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
- package/dist/runtime/slots/widget/WidgetContext.js +8 -0
- package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
- package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
- package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
- package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
- package/dist/runtime/slots/widget/hooks.d.ts +13 -0
- package/dist/runtime/slots/widget/hooks.js +104 -0
- package/dist/runtime/slots/widget/hooks.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
- package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
- package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
- package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
- package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
- package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
- package/dist/runtime/slots/widget/iframe/index.js +3 -0
- package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
- package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
- package/dist/runtime/slots/widget/iframe/types.js +3 -0
- package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
- package/dist/runtime/slots/widget/index.js +6 -0
- package/dist/runtime/slots/widget/index.js.map +1 -0
- package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +50 -84
- package/dist/runtime/slots/widget/types.js +41 -0
- package/dist/runtime/slots/widget/types.js.map +1 -0
- package/dist/runtime/slots/widget/utils.d.ts +22 -0
- package/dist/runtime/slots/widget/utils.js +166 -0
- package/dist/runtime/slots/widget/utils.js.map +1 -0
- package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
- package/dist/runtime/subscriptions.js +48 -0
- package/dist/runtime/subscriptions.js.map +1 -0
- package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
- package/dist/runtime/testing/index.js +9 -0
- package/dist/runtime/testing/index.js.map +1 -0
- package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
- package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -41
- package/dist/runtime/testing/initializeMockApp.js.map +1 -0
- package/dist/runtime/testing/mockMessages.d.ts +22 -0
- package/dist/runtime/testing/mockMessages.js +23 -0
- package/dist/runtime/testing/mockMessages.js.map +1 -0
- package/dist/runtime/utils.d.ts +95 -0
- package/{runtime → dist/runtime}/utils.js +55 -70
- package/dist/runtime/utils.js.map +1 -0
- package/dist/shell/DefaultLayout.d.ts +1 -0
- package/dist/shell/DefaultLayout.js +7 -0
- package/dist/shell/DefaultLayout.js.map +1 -0
- package/dist/shell/DefaultMain.d.ts +1 -0
- package/dist/shell/DefaultMain.js +6 -0
- package/dist/shell/DefaultMain.js.map +1 -0
- package/dist/shell/Logo.d.ts +6 -0
- package/dist/shell/Logo.js +11 -0
- package/dist/shell/Logo.js.map +1 -0
- package/dist/shell/Shell.d.ts +1 -0
- package/dist/shell/Shell.js +10 -0
- package/dist/shell/Shell.js.map +1 -0
- package/dist/shell/Shell.messages.d.ts +58 -0
- package/dist/shell/Shell.messages.js +60 -0
- package/dist/shell/Shell.messages.js.map +1 -0
- package/dist/shell/app.d.ts +3 -0
- package/dist/shell/app.js +35 -0
- package/dist/shell/app.js.map +1 -0
- package/dist/shell/babel.config.d.ts +2 -0
- package/{runtime → dist/shell}/babel.config.js +2 -1
- package/dist/shell/babel.config.js.map +1 -0
- package/dist/shell/dev/devFooter/app.d.ts +3 -0
- package/dist/shell/dev/devFooter/app.js +36 -0
- package/dist/shell/dev/devFooter/app.js.map +1 -0
- package/dist/shell/dev/devFooter/index.js +2 -0
- package/dist/shell/dev/devFooter/index.js.map +1 -0
- package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
- package/dist/shell/dev/devHeader/BarContext.js +8 -0
- package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
- package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/BarLink.js +10 -0
- package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
- package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
- package/dist/shell/dev/devHeader/BarProvider.js +16 -0
- package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
- package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
- package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
- package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
- package/dist/shell/dev/devHeader/FooContext.js +8 -0
- package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
- package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/FooLink.js +10 -0
- package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
- package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
- package/dist/shell/dev/devHeader/FooProvider.js +16 -0
- package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
- package/dist/shell/dev/devHeader/app.d.ts +3 -0
- package/dist/shell/dev/devHeader/app.js +34 -0
- package/dist/shell/dev/devHeader/app.js.map +1 -0
- package/dist/shell/dev/devHeader/index.js +2 -0
- package/dist/shell/dev/devHeader/index.js.map +1 -0
- package/dist/shell/dev/devHeader/providers.d.ts +3 -0
- package/dist/shell/dev/devHeader/providers.js +8 -0
- package/dist/shell/dev/devHeader/providers.js.map +1 -0
- package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
- package/dist/shell/dev/devHome/HomePage.js +13 -0
- package/dist/shell/dev/devHome/HomePage.js.map +1 -0
- package/dist/shell/dev/devHome/app.d.ts +3 -0
- package/dist/shell/dev/devHome/app.js +16 -0
- package/dist/shell/dev/devHome/app.js.map +1 -0
- package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
- package/dist/shell/dev/devHome/i18n/index.js +28 -0
- package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
- package/dist/shell/dev/devHome/index.js +2 -0
- package/dist/shell/dev/devHome/index.js.map +1 -0
- package/dist/shell/dev/devHome/messages.d.ts +8 -0
- package/dist/shell/dev/devHome/messages.js +10 -0
- package/dist/shell/dev/devHome/messages.js.map +1 -0
- package/dist/shell/dev/devUser/app.d.ts +3 -0
- package/dist/shell/dev/devUser/app.js +22 -0
- package/dist/shell/dev/devUser/app.js.map +1 -0
- package/dist/shell/dev/devUser/index.js +2 -0
- package/dist/shell/dev/devUser/index.js.map +1 -0
- package/dist/shell/dev/index.js +6 -0
- package/dist/shell/dev/index.js.map +1 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +7 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +8 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
- package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
- package/dist/shell/dev/slotShowcase/app.js +336 -0
- package/dist/shell/dev/slotShowcase/app.js.map +1 -0
- package/dist/shell/dev/slotShowcase/index.js +2 -0
- package/dist/shell/dev/slotShowcase/index.js.map +1 -0
- package/dist/shell/footer/CenterLinks.d.ts +1 -0
- package/dist/shell/footer/CenterLinks.js +7 -0
- package/dist/shell/footer/CenterLinks.js.map +1 -0
- package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
- package/dist/shell/footer/CopyrightNotice.js +10 -0
- package/dist/shell/footer/CopyrightNotice.js.map +1 -0
- package/dist/shell/footer/Footer.d.ts +1 -0
- package/dist/shell/footer/Footer.js +12 -0
- package/dist/shell/footer/Footer.js.map +1 -0
- package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
- package/dist/shell/footer/LabeledLinkColumn.js +11 -0
- package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
- package/dist/shell/footer/LanguageMenu.d.ts +1 -0
- package/dist/shell/footer/LanguageMenu.js +16 -0
- package/dist/shell/footer/LanguageMenu.js.map +1 -0
- package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
- package/dist/shell/footer/LanguageMenuItem.js +11 -0
- package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
- package/dist/shell/footer/LeftLinks.d.ts +1 -0
- package/dist/shell/footer/LeftLinks.js +7 -0
- package/dist/shell/footer/LeftLinks.js.map +1 -0
- package/dist/shell/footer/LegalNotices.d.ts +1 -0
- package/dist/shell/footer/LegalNotices.js +10 -0
- package/dist/shell/footer/LegalNotices.js.map +1 -0
- package/dist/shell/footer/PoweredBy.d.ts +1 -0
- package/dist/shell/footer/PoweredBy.js +9 -0
- package/dist/shell/footer/PoweredBy.js.map +1 -0
- package/dist/shell/footer/RevealLinks.d.ts +1 -0
- package/dist/shell/footer/RevealLinks.js +16 -0
- package/dist/shell/footer/RevealLinks.js.map +1 -0
- package/dist/shell/footer/RightLinks.d.ts +1 -0
- package/dist/shell/footer/RightLinks.js +7 -0
- package/dist/shell/footer/RightLinks.js.map +1 -0
- package/dist/shell/footer/app.d.ts +3 -0
- package/dist/shell/footer/app.js +59 -0
- package/dist/shell/footer/app.js.map +1 -0
- package/dist/shell/footer/data/api.d.ts +1 -0
- package/dist/shell/footer/data/api.js +45 -0
- package/dist/shell/footer/data/api.js.map +1 -0
- package/dist/shell/footer/index.js +3 -0
- package/dist/shell/footer/index.js.map +1 -0
- package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
- package/dist/shell/header/AuthenticatedMenu.js +13 -0
- package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
- package/dist/shell/header/Header.d.ts +1 -0
- package/dist/shell/header/Header.js +8 -0
- package/dist/shell/header/Header.js.map +1 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
- package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
- package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
- package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
- package/dist/shell/header/app.d.ts +3 -0
- package/dist/shell/header/app.js +119 -0
- package/dist/shell/header/app.js.map +1 -0
- package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
- package/dist/shell/header/desktop/DesktopLayout.js +9 -0
- package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
- package/dist/shell/header/index.js +3 -0
- package/dist/shell/header/index.js.map +1 -0
- package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
- package/dist/shell/header/mobile/MobileLayout.js +17 -0
- package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
- package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
- package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
- package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
- package/dist/shell/i18n/index.d.ts +25 -0
- package/dist/shell/i18n/index.js +26 -0
- package/dist/shell/i18n/index.js.map +1 -0
- package/dist/shell/index.js +8 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/jest.config.d.ts +16 -0
- package/{tools/dist/jest → dist/shell}/jest.config.js +13 -11
- package/dist/shell/jest.config.js.map +1 -0
- package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
- package/dist/shell/menus/LinkMenuItem.js +36 -0
- package/dist/shell/menus/LinkMenuItem.js.map +1 -0
- package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
- package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
- package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
- package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
- package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
- package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
- package/dist/shell/menus/data/utils.d.ts +4 -0
- package/dist/shell/menus/data/utils.js +13 -0
- package/dist/shell/menus/data/utils.js.map +1 -0
- package/dist/shell/router/createRouter.d.ts +1 -0
- package/{shell/router/createRouter.ts → dist/shell/router/createRouter.js} +9 -11
- package/dist/shell/router/createRouter.js.map +1 -0
- package/dist/shell/router/getAppRoutes.d.ts +2 -0
- package/dist/shell/router/getAppRoutes.js +14 -0
- package/dist/shell/router/getAppRoutes.js.map +1 -0
- package/dist/shell/setupTest.d.ts +1 -0
- package/{shell → dist/shell}/setupTest.js +6 -7
- package/dist/shell/setupTest.js.map +1 -0
- package/dist/shell/site.config.dev.d.ts +4 -0
- package/dist/shell/site.config.dev.js +43 -0
- package/dist/shell/site.config.dev.js.map +1 -0
- package/dist/shell/site.d.ts +1 -0
- package/dist/shell/site.js +35 -0
- package/dist/shell/site.js.map +1 -0
- package/dist/tools/babel/babel.config.d.ts +12 -0
- package/dist/tools/cli/commands/serve.d.ts +1 -0
- package/dist/tools/cli/intl-imports.d.ts +7 -0
- package/dist/tools/cli/intl-imports.test.d.ts +1 -0
- package/dist/tools/cli/openedx.d.ts +2 -0
- package/{tools/dist → dist/tools}/cli/openedx.js +1 -1
- package/dist/tools/cli/transifex-utils.d.ts +2 -0
- package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
- package/dist/tools/cli/utils/formatter.d.ts +1 -0
- package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
- package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
- package/dist/tools/cli/utils/printUsage.d.ts +1 -0
- package/dist/tools/config-helpers/createConfig.d.ts +2 -0
- package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
- package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
- package/dist/tools/defaultConfigPaths.d.ts +8 -0
- package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
- package/dist/tools/eslint.config.d.ts +3 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/jest/jest.config.d.ts +15 -0
- package/dist/tools/jest.config.d.ts +8 -0
- package/dist/tools/types.d.ts +18 -0
- package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
- package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
- package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
- package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
- package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
- package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
- package/dist/tools/webpack/common-config/index.d.ts +6 -0
- package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +18 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
- package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
- package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
- package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
- package/{config → dist/tools}/webpack/webpack.config.build.js +8 -5
- package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
- package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +8 -5
- package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
- package/{tools/dist → dist/tools}/webpack/webpack.config.dev.shell.js +0 -4
- package/dist/types.d.ts +82 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +21 -16
- package/config/tsconfig.json +0 -32
- package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
- package/config/webpack/utils/getLocalAliases.js +0 -65
- package/config/webpack/webpack.config.dev.js +0 -70
- package/config/webpack/webpack.config.dev.shell.js +0 -104
- package/runtime/__mocks__/file.js +0 -1
- package/runtime/__mocks__/svg.js +0 -1
- package/runtime/__mocks__/universal-cookie.js +0 -6
- package/runtime/analytics/MockAnalyticsService.js +0 -71
- package/runtime/analytics/SegmentAnalyticsService.js +0 -243
- package/runtime/analytics/index.ts +0 -12
- package/runtime/analytics/interface.test.js +0 -242
- package/runtime/auth/AxiosCsrfTokenService.js +0 -60
- package/runtime/auth/AxiosJwtAuthService.js +0 -363
- package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
- package/runtime/auth/AxiosJwtTokenService.js +0 -134
- package/runtime/auth/LocalForageCache.js +0 -76
- package/runtime/auth/MockAuthService.js +0 -278
- package/runtime/auth/index.ts +0 -19
- package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
- package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
- package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
- package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
- package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
- package/runtime/auth/utils.js +0 -105
- package/runtime/config/getExternalLinkUrl.test.js +0 -76
- package/runtime/i18n/injectIntlWithShim.jsx +0 -48
- package/runtime/i18n/lib.test.js +0 -230
- package/runtime/i18n/lib.ts +0 -272
- package/runtime/index.ts +0 -139
- package/runtime/initialize.async.function.config.test.js +0 -43
- package/runtime/initialize.const.config.test.js +0 -41
- package/runtime/initialize.function.config.test.js +0 -41
- package/runtime/initialize.js +0 -352
- package/runtime/initialize.test.js +0 -356
- package/runtime/jest.config.js +0 -33
- package/runtime/logging/MockLoggingService.js +0 -31
- package/runtime/logging/NewRelicLoggingService.js +0 -184
- package/runtime/logging/NewRelicLoggingService.test.js +0 -214
- package/runtime/logging/types.ts +0 -4
- package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
- package/runtime/react/CombinedAppProvider.tsx +0 -46
- package/runtime/react/CurrentAppProvider.tsx +0 -46
- package/runtime/react/Divider.tsx +0 -5
- package/runtime/react/ErrorBoundary.jsx +0 -47
- package/runtime/react/ErrorBoundary.test.jsx +0 -83
- package/runtime/react/ErrorPage.jsx +0 -72
- package/runtime/react/SiteProvider.test.jsx +0 -66
- package/runtime/react/SiteProvider.tsx +0 -101
- package/runtime/react/hooks/theme/useTheme.test.ts +0 -221
- package/runtime/react/hooks/theme/useTheme.ts +0 -179
- package/runtime/react/hooks/theme/useThemeConfig.test.ts +0 -107
- package/runtime/react/hooks/theme/useThemeCore.test.ts +0 -65
- package/runtime/react/hooks/theme/useThemeCore.ts +0 -52
- package/runtime/react/hooks/theme/useThemeVariants.test.ts +0 -97
- package/runtime/react/hooks/theme/useThemeVariants.ts +0 -116
- package/runtime/react/hooks/theme/useTrackColorSchemeChoice.test.ts +0 -54
- package/runtime/react/hooks/theme/useTrackColorSchemeChoice.ts +0 -30
- package/runtime/react/hooks/useActiveRouteRoleWatcher.ts +0 -31
- package/runtime/react/hooks/useAuthenticatedUser.test.tsx +0 -41
- package/runtime/react/hooks/useSiteConfig.test.tsx +0 -13
- package/runtime/react/reducers.ts +0 -40
- package/runtime/routing/utils.test.ts +0 -7
- package/runtime/routing/utils.ts +0 -34
- package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
- package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
- package/runtime/site.config.test.tsx +0 -33
- package/runtime/slots/Slot.test.tsx +0 -40
- package/runtime/slots/Slot.tsx +0 -32
- package/runtime/slots/SlotContext.tsx +0 -8
- package/runtime/slots/hooks.ts +0 -35
- package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
- package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
- package/runtime/slots/layout/hooks.test.tsx +0 -178
- package/runtime/slots/layout/hooks.ts +0 -65
- package/runtime/slots/layout/utils.test.ts +0 -67
- package/runtime/slots/layout/utils.ts +0 -14
- package/runtime/slots/utils.test.ts +0 -64
- package/runtime/slots/utils.ts +0 -78
- package/runtime/slots/widget/WidgetContext.tsx +0 -9
- package/runtime/slots/widget/WidgetProvider.tsx +0 -30
- package/runtime/slots/widget/hooks.ts +0 -105
- package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
- package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
- package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
- package/runtime/slots/widget/iframe/hooks.ts +0 -179
- package/runtime/slots/widget/utils.tsx +0 -201
- package/runtime/testing/initializeMockApp.test.ts +0 -66
- package/runtime/testing/mockMessages.ts +0 -23
- package/runtime/utils.test.js +0 -116
- package/shell/DefaultLayout.tsx +0 -18
- package/shell/DefaultMain.tsx +0 -7
- package/shell/Logo.test.tsx +0 -32
- package/shell/Logo.tsx +0 -28
- package/shell/Shell.messages.ts +0 -61
- package/shell/Shell.tsx +0 -18
- package/shell/__mocks__/file.js +0 -1
- package/shell/__mocks__/svg.js +0 -1
- package/shell/__mocks__/universal-cookie.js +0 -6
- package/shell/app.ts +0 -38
- package/shell/dev/devFooter/app.tsx +0 -43
- package/shell/dev/devHeader/BarContext.tsx +0 -13
- package/shell/dev/devHeader/BarLink.tsx +0 -16
- package/shell/dev/devHeader/BarProvider.tsx +0 -25
- package/shell/dev/devHeader/CoursesLink.tsx +0 -16
- package/shell/dev/devHeader/FooContext.tsx +0 -13
- package/shell/dev/devHeader/FooLink.tsx +0 -16
- package/shell/dev/devHeader/FooProvider.tsx +0 -25
- package/shell/dev/devHeader/app.tsx +0 -53
- package/shell/dev/devHeader/providers.tsx +0 -11
- package/shell/dev/devHome/HomePage.tsx +0 -28
- package/shell/dev/devHome/app.ts +0 -18
- package/shell/dev/devHome/i18n/index.ts +0 -27
- package/shell/dev/devHome/messages.ts +0 -11
- package/shell/dev/devUser/app.tsx +0 -24
- package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
- package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
- package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
- package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
- package/shell/dev/slotShowcase/app.tsx +0 -373
- package/shell/footer/CenterLinks.tsx +0 -11
- package/shell/footer/CopyrightNotice.tsx +0 -36
- package/shell/footer/Footer.tsx +0 -34
- package/shell/footer/LabeledLinkColumn.tsx +0 -19
- package/shell/footer/LanguageMenu.tsx +0 -35
- package/shell/footer/LanguageMenuItem.tsx +0 -23
- package/shell/footer/LeftLinks.tsx +0 -11
- package/shell/footer/LegalNotices.tsx +0 -17
- package/shell/footer/PoweredBy.tsx +0 -17
- package/shell/footer/RevealLinks.tsx +0 -43
- package/shell/footer/RightLinks.tsx +0 -11
- package/shell/footer/app.tsx +0 -73
- package/shell/footer/data/api.ts +0 -48
- package/shell/header/AuthenticatedMenu.tsx +0 -32
- package/shell/header/Header.tsx +0 -17
- package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
- package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
- package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
- package/shell/header/app.tsx +0 -142
- package/shell/header/desktop/DesktopLayout.tsx +0 -22
- package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
- package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
- package/shell/header/mobile/MobileLayout.tsx +0 -47
- package/shell/header/mobile/MobileNavLinks.tsx +0 -10
- package/shell/i18n/index.ts +0 -25
- package/shell/jest.config.js +0 -31
- package/shell/menus/LinkMenuItem.tsx +0 -64
- package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
- package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
- package/shell/menus/data/utils.ts +0 -19
- package/shell/public/index.html +0 -10
- package/shell/router/createRouter.test.tsx +0 -50
- package/shell/router/getAppRoutes.test.tsx +0 -59
- package/shell/router/getAppRoutes.ts +0 -21
- package/shell/site.config.dev.tsx +0 -49
- package/shell/site.config.test.tsx +0 -16
- package/shell/site.tsx +0 -41
- package/tools/dist/babel/babel.config.js +0 -28
- package/tools/dist/config-helpers/createConfig.js +0 -13
- package/tools/dist/config-helpers/createLintConfig.js +0 -16
- package/tools/dist/config-helpers/getBaseConfig.js +0 -12
- package/tools/dist/defaultConfigPaths.js +0 -35
- package/tools/dist/eslint/base.eslint.config.js +0 -113
- package/tools/dist/index.js +0 -12
- package/tools/dist/types.js +0 -23
- package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
- package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
- package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
- package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
- package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
- package/tools/dist/webpack/common-config/dev/getDevServer.js +0 -38
- package/tools/dist/webpack/common-config/index.js +0 -18
- package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
- package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
- package/tools/dist/webpack/utils/getPublicPath.js +0 -6
- package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
- package/tools/dist/webpack/webpack.config.build.js +0 -70
- package/types.ts +0 -119
- /package/{runtime/react/hooks/theme/index.ts → dist/runtime/react/hooks/theme/index.d.ts} +0 -0
- /package/{runtime/routing/index.ts → dist/runtime/routing/index.d.ts} +0 -0
- /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
- /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
- /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
- /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
- /package/{shell → dist/shell}/app.scss +0 -0
- /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
- /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
- /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
- /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
- /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
- /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
- /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
- /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
- /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
- /package/{config → dist/tools}/babel/babel.config.js +0 -0
- /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
- /package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
- /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
- /package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/formatter.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
- /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
- /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
- /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
- /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
- /package/{config → dist/tools}/eslint/base.eslint.config.js +0 -0
- /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
- /package/{config → dist/tools}/index.js +0 -0
- /package/{config → dist/tools}/jest/jest.config.js +0 -0
- /package/{tools/dist → dist/tools}/jest.config.js +0 -0
- /package/{config → dist/tools}/types.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/dev/getDevServer.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
- /package/{config → dist/tools}/webpack/utils/getPublicPath.js +0 -0
- /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
*
|
|
89
89
|
* https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/mfe_config_api/docs/decisions/0001-mfe-config-api.rst
|
|
90
90
|
*
|
|
91
|
-
* The runtime configuration method can be enabled by supplying a
|
|
91
|
+
* The runtime configuration method can be enabled by supplying a runtimeConfigJsonUrl via one of the other
|
|
92
92
|
* two configuration methods above.
|
|
93
93
|
*
|
|
94
94
|
* Runtime configuration is particularly useful if you need to supply different configurations to
|
|
@@ -99,41 +99,7 @@
|
|
|
99
99
|
*
|
|
100
100
|
* @module Config
|
|
101
101
|
*/
|
|
102
|
-
|
|
103
|
-
import merge from 'lodash.merge';
|
|
104
|
-
import {
|
|
105
|
-
AppConfig,
|
|
106
|
-
EnvironmentTypes,
|
|
107
|
-
SiteConfig
|
|
108
|
-
} from '../../types';
|
|
109
|
-
import { ACTIVE_ROLES_CHANGED, CONFIG_CHANGED } from '../constants';
|
|
110
|
-
import { publish } from '../subscriptions';
|
|
111
|
-
|
|
112
|
-
let siteConfig: SiteConfig = {
|
|
113
|
-
// Required
|
|
114
|
-
siteId: '',
|
|
115
|
-
baseUrl: '',
|
|
116
|
-
siteName: '',
|
|
117
|
-
loginUrl: '',
|
|
118
|
-
logoutUrl: '',
|
|
119
|
-
lmsBaseUrl: '',
|
|
120
|
-
|
|
121
|
-
// Optional
|
|
122
|
-
environment: EnvironmentTypes.PRODUCTION,
|
|
123
|
-
apps: [],
|
|
124
|
-
externalRoutes: [],
|
|
125
|
-
externalLinkUrlOverrides: [],
|
|
126
|
-
mfeConfigApiUrl: null,
|
|
127
|
-
theme: {},
|
|
128
|
-
accessTokenCookieName: 'edx-jwt-cookie-header-payload',
|
|
129
|
-
csrfTokenApiPath: '/csrf/api/v1/token',
|
|
130
|
-
ignoredErrorRegex: null,
|
|
131
|
-
languagePreferenceCookieName: 'openedx-language-preference',
|
|
132
|
-
refreshAccessTokenApiPath: '/login_refresh',
|
|
133
|
-
userInfoCookieName: 'edx-user-info',
|
|
134
|
-
segmentKey: null,
|
|
135
|
-
};
|
|
136
|
-
|
|
102
|
+
import { AppConfig, SiteConfig } from '../../types';
|
|
137
103
|
/**
|
|
138
104
|
* Getter for the application configuration document. This is synchronous and merely returns a
|
|
139
105
|
* reference to an existing object, and is thus safe to call as often as desired.
|
|
@@ -150,10 +116,7 @@ let siteConfig: SiteConfig = {
|
|
|
150
116
|
*
|
|
151
117
|
* @returns {SiteConfig}
|
|
152
118
|
*/
|
|
153
|
-
export function getSiteConfig()
|
|
154
|
-
return siteConfig;
|
|
155
|
-
}
|
|
156
|
-
|
|
119
|
+
export declare function getSiteConfig(): SiteConfig;
|
|
157
120
|
/**
|
|
158
121
|
* Replaces the existing SiteConfig. This is not commonly used, but can be helpful for tests.
|
|
159
122
|
*
|
|
@@ -169,11 +132,10 @@ export function getSiteConfig() {
|
|
|
169
132
|
*
|
|
170
133
|
* @param newConfig A replacement SiteConfig which will completely override the current SiteConfig.
|
|
171
134
|
*/
|
|
172
|
-
export function setSiteConfig(newSiteConfig: SiteConfig)
|
|
173
|
-
|
|
174
|
-
|
|
135
|
+
export declare function setSiteConfig(newSiteConfig: SiteConfig): void;
|
|
136
|
+
interface MergeSiteConfigOptions {
|
|
137
|
+
limitAppMergeToConfig?: boolean;
|
|
175
138
|
}
|
|
176
|
-
|
|
177
139
|
/**
|
|
178
140
|
* Merges additional configuration values into the site config returned by `getSiteConfig`. Will
|
|
179
141
|
* override any values that exist with the same keys.
|
|
@@ -188,83 +150,33 @@ export function setSiteConfig(newSiteConfig: SiteConfig) {
|
|
|
188
150
|
* which means they will be merged recursively. See https://lodash.com/docs/latest#merge for
|
|
189
151
|
* documentation on the exact behavior.
|
|
190
152
|
*
|
|
153
|
+
* Apps are merged by appId rather than array index. By default, apps in the incoming config
|
|
154
|
+
* that don't exist in the current config will be added.
|
|
155
|
+
*
|
|
156
|
+
* When `limitAppMergeToConfig` is true:
|
|
157
|
+
* - All non-app parts of the config are still merged normally
|
|
158
|
+
* - Only the `config` property of each existing app is merged
|
|
159
|
+
* - Apps in the incoming config that don't exist in the current config are ignored
|
|
160
|
+
*
|
|
191
161
|
* @param {Object} newSiteConfig
|
|
162
|
+
* @param {Object} options
|
|
163
|
+
* @param {boolean} options.limitAppMergeToConfig - Limit app merging to only the config property of existing apps
|
|
192
164
|
*/
|
|
193
|
-
export function mergeSiteConfig(newSiteConfig: Partial<SiteConfig
|
|
194
|
-
siteConfig = merge(siteConfig, newSiteConfig);
|
|
195
|
-
publish(CONFIG_CHANGED);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
const appConfigs: Record<string, AppConfig> = {};
|
|
199
|
-
|
|
165
|
+
export declare function mergeSiteConfig(newSiteConfig: Partial<SiteConfig>, options?: MergeSiteConfigOptions): void;
|
|
200
166
|
/**
|
|
201
167
|
* addAppConfigs finds any AppConfig objects in the apps in SiteConfig and makes their config
|
|
202
168
|
* available to be used by Apps via getAppConfig(appId) or useAppConfig() functions. This is
|
|
203
169
|
* used at initialization time to process any AppConfigs bundled with the site.
|
|
204
170
|
*/
|
|
205
|
-
export function addAppConfigs()
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
publish(CONFIG_CHANGED);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export function getAppConfig(id: string) {
|
|
220
|
-
return appConfigs[id];
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
export function mergeAppConfig(id: string, newAppConfig: AppConfig) {
|
|
224
|
-
appConfigs[id] = merge(appConfigs[id], newAppConfig);
|
|
225
|
-
publish(CONFIG_CHANGED);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
let activeRouteRoles: string[] = [];
|
|
229
|
-
|
|
230
|
-
export function setActiveRouteRoles(roles: string[]) {
|
|
231
|
-
activeRouteRoles = roles;
|
|
232
|
-
publish(ACTIVE_ROLES_CHANGED);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export function getActiveRouteRoles() {
|
|
236
|
-
return activeRouteRoles;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
const activeWidgetRoles: Record<string, number> = {};
|
|
240
|
-
|
|
241
|
-
export function addActiveWidgetRole(role: string) {
|
|
242
|
-
activeWidgetRoles[role] ??= 0;
|
|
243
|
-
activeWidgetRoles[role] += 1;
|
|
244
|
-
publish(ACTIVE_ROLES_CHANGED);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export function removeActiveWidgetRole(role: string) {
|
|
248
|
-
if (activeWidgetRoles[role] !== undefined) {
|
|
249
|
-
activeWidgetRoles[role] -= 1;
|
|
250
|
-
}
|
|
251
|
-
if (activeWidgetRoles[role] < 1) {
|
|
252
|
-
delete activeWidgetRoles[role];
|
|
253
|
-
}
|
|
254
|
-
publish(ACTIVE_ROLES_CHANGED);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
export function getActiveWidgetRoles() {
|
|
258
|
-
return Object.entries(activeWidgetRoles)
|
|
259
|
-
.filter(([, count]: [role: string, count: number]) => count !== undefined && count > 0)
|
|
260
|
-
.map(([role]: [role: string, count: number]) => role);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Gets all active roles from the route roles and widget roles.
|
|
264
|
-
export function getActiveRoles() {
|
|
265
|
-
return [...getActiveRouteRoles(), ...getActiveWidgetRoles()];
|
|
266
|
-
}
|
|
267
|
-
|
|
171
|
+
export declare function addAppConfigs(): void;
|
|
172
|
+
export declare function getAppConfig(id: string): AppConfig;
|
|
173
|
+
export declare function mergeAppConfig(id: string, newAppConfig: AppConfig): void;
|
|
174
|
+
export declare function setActiveRouteRoles(roles: string[]): void;
|
|
175
|
+
export declare function getActiveRouteRoles(): string[];
|
|
176
|
+
export declare function addActiveWidgetRole(role: string): void;
|
|
177
|
+
export declare function removeActiveWidgetRole(role: string): void;
|
|
178
|
+
export declare function getActiveWidgetRoles(): string[];
|
|
179
|
+
export declare function getActiveRoles(): string[];
|
|
268
180
|
/**
|
|
269
181
|
* Get an external link URL based on the URL provided. If the passed in URL is overridden in the
|
|
270
182
|
* `externalLinkUrlOverrides` object, it will return the overridden URL. Otherwise, it will return
|
|
@@ -283,12 +195,5 @@ export function getActiveRoles() {
|
|
|
283
195
|
* target="_blank"
|
|
284
196
|
* >
|
|
285
197
|
*/
|
|
286
|
-
export function getExternalLinkUrl(url: string): string
|
|
287
|
-
|
|
288
|
-
if (typeof url !== 'string' || !url.trim()) {
|
|
289
|
-
return '#';
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
const overriddenLinkUrls = getSiteConfig().externalLinkUrlOverrides ?? {};
|
|
293
|
-
return overriddenLinkUrls[url] ?? url;
|
|
294
|
-
}
|
|
198
|
+
export declare function getExternalLinkUrl(url: string): string;
|
|
199
|
+
export {};
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #### Import members from **@edx/frontend-base**
|
|
3
|
+
*
|
|
4
|
+
* The configuration module provides utilities for working with an application's configuration
|
|
5
|
+
* document (SiteConfig). Configuration variables can be supplied to the
|
|
6
|
+
* application in three different ways. They are applied in the following order:
|
|
7
|
+
*
|
|
8
|
+
* - Site Configuration File (site.config.tsx)
|
|
9
|
+
* - Initialization Config Handler
|
|
10
|
+
* - Runtime Configuration
|
|
11
|
+
*
|
|
12
|
+
* Last one in wins, and are deep merged together. Variables with the same name defined via the
|
|
13
|
+
* later methods will override any defined using an earlier method. i.e., if a variable is defined
|
|
14
|
+
* in Runtime Configuration, that will override the same variable defined in either of the earlier
|
|
15
|
+
* methods. Configuration defined in a JS file will override any default values below.
|
|
16
|
+
*
|
|
17
|
+
* ##### Site Configuration File
|
|
18
|
+
*
|
|
19
|
+
* Configuration variables can be supplied in a file named site.config.tsx. This file must
|
|
20
|
+
* export either an Object containing configuration variables or a function. The function must
|
|
21
|
+
* return an Object containing configuration variables or, alternately, a promise which resolves to
|
|
22
|
+
* an Object.
|
|
23
|
+
*
|
|
24
|
+
* Using a function or async function allows the configuration to be resolved at runtime (because
|
|
25
|
+
* the function will be executed at runtime). This is not common, and the capability is included
|
|
26
|
+
* for the sake of flexibility.
|
|
27
|
+
*
|
|
28
|
+
* The Site Configuration File is well-suited to extensibility use cases or component overrides,
|
|
29
|
+
* in that the configuration file can depend on any installed JavaScript module. It is also the
|
|
30
|
+
* preferred way of doing build-time configuration if runtime configuration isn't used by your
|
|
31
|
+
* deployment of the platform.
|
|
32
|
+
*
|
|
33
|
+
* Exporting a config object:
|
|
34
|
+
* ```
|
|
35
|
+
* const siteConfig = {
|
|
36
|
+
* lmsBaseUrl: 'http://localhost:18000'
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* export default siteConfig;
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* Exporting a function that returns an object:
|
|
43
|
+
* ```
|
|
44
|
+
* function getSiteConfig() {
|
|
45
|
+
* return {
|
|
46
|
+
* lmsBaseUrl: 'http://localhost:18000'
|
|
47
|
+
* };
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* Exporting a function that returns a promise that resolves to an object:
|
|
52
|
+
* ```
|
|
53
|
+
* function getAsyncSiteConfig() {
|
|
54
|
+
* return new Promise((resolve, reject) => {
|
|
55
|
+
* resolve({
|
|
56
|
+
* lmsBaseUrl: 'http://localhost:18000'
|
|
57
|
+
* });
|
|
58
|
+
* });
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* export default getAsyncSiteConfig;
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* ##### Initialization Config Handler
|
|
65
|
+
*
|
|
66
|
+
* The configuration document can be extended by
|
|
67
|
+
* applications at run-time using a `config` initialization handler. Please see the Initialization
|
|
68
|
+
* documentation for more information on handlers and initialization phases.
|
|
69
|
+
*
|
|
70
|
+
* ```
|
|
71
|
+
* initialize({
|
|
72
|
+
* handlers: {
|
|
73
|
+
* config: () => {
|
|
74
|
+
* mergeSiteConfig({
|
|
75
|
+
* CUSTOM_VARIABLE: 'custom value',
|
|
76
|
+
* lmsBaseUrl: 'http://localhost:18001' // You can override variables, but this is uncommon.
|
|
77
|
+
* }, 'App config override handler');
|
|
78
|
+
* },
|
|
79
|
+
* },
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* ##### Runtime Configuration
|
|
84
|
+
*
|
|
85
|
+
* Configuration variables can also be supplied using the "runtime configuration" method, taking
|
|
86
|
+
* advantage of the Micro-frontend Config API in edx-platform. More information on this API can be
|
|
87
|
+
* found in the ADR which introduced it:
|
|
88
|
+
*
|
|
89
|
+
* https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/mfe_config_api/docs/decisions/0001-mfe-config-api.rst
|
|
90
|
+
*
|
|
91
|
+
* The runtime configuration method can be enabled by supplying a runtimeConfigJsonUrl via one of the other
|
|
92
|
+
* two configuration methods above.
|
|
93
|
+
*
|
|
94
|
+
* Runtime configuration is particularly useful if you need to supply different configurations to
|
|
95
|
+
* a single deployment of a micro-frontend, for instance. It is also a perfectly valid alternative
|
|
96
|
+
* to build-time configuration, though it introduces an additional API call to edx-platform on MFE
|
|
97
|
+
* initialization.
|
|
98
|
+
*
|
|
99
|
+
*
|
|
100
|
+
* @module Config
|
|
101
|
+
*/
|
|
102
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
103
|
+
var t = {};
|
|
104
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
105
|
+
t[p] = s[p];
|
|
106
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
107
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
108
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
109
|
+
t[p[i]] = s[p[i]];
|
|
110
|
+
}
|
|
111
|
+
return t;
|
|
112
|
+
};
|
|
113
|
+
import keyBy from 'lodash.keyby';
|
|
114
|
+
import merge from 'lodash.merge';
|
|
115
|
+
import { EnvironmentTypes } from '../../types';
|
|
116
|
+
import { ACTIVE_ROLES_CHANGED, CONFIG_CHANGED } from '../constants';
|
|
117
|
+
import { publish } from '../subscriptions';
|
|
118
|
+
let siteConfig = {
|
|
119
|
+
// Required
|
|
120
|
+
siteId: '',
|
|
121
|
+
baseUrl: '',
|
|
122
|
+
siteName: '',
|
|
123
|
+
loginUrl: '',
|
|
124
|
+
logoutUrl: '',
|
|
125
|
+
lmsBaseUrl: '',
|
|
126
|
+
// Optional
|
|
127
|
+
environment: EnvironmentTypes.PRODUCTION,
|
|
128
|
+
apps: [],
|
|
129
|
+
externalRoutes: [],
|
|
130
|
+
externalLinkUrlOverrides: [],
|
|
131
|
+
runtimeConfigJsonUrl: null,
|
|
132
|
+
theme: {},
|
|
133
|
+
accessTokenCookieName: 'edx-jwt-cookie-header-payload',
|
|
134
|
+
csrfTokenApiPath: '/csrf/api/v1/token',
|
|
135
|
+
ignoredErrorRegex: null,
|
|
136
|
+
languagePreferenceCookieName: 'openedx-language-preference',
|
|
137
|
+
refreshAccessTokenApiPath: '/login_refresh',
|
|
138
|
+
userInfoCookieName: 'edx-user-info',
|
|
139
|
+
segmentKey: null,
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Getter for the application configuration document. This is synchronous and merely returns a
|
|
143
|
+
* reference to an existing object, and is thus safe to call as often as desired.
|
|
144
|
+
*
|
|
145
|
+
* Example:
|
|
146
|
+
*
|
|
147
|
+
* ```
|
|
148
|
+
* import { getSiteConfig } from '@openedx/frontend-base';
|
|
149
|
+
*
|
|
150
|
+
* const {
|
|
151
|
+
* lmsBaseUrl,
|
|
152
|
+
* } = getSiteConfig();
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @returns {SiteConfig}
|
|
156
|
+
*/
|
|
157
|
+
export function getSiteConfig() {
|
|
158
|
+
return siteConfig;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Replaces the existing SiteConfig. This is not commonly used, but can be helpful for tests.
|
|
162
|
+
*
|
|
163
|
+
* Example:
|
|
164
|
+
*
|
|
165
|
+
* ```
|
|
166
|
+
* import { setSiteConfig } from '@openedx/frontend-base';
|
|
167
|
+
*
|
|
168
|
+
* setSiteConfig({
|
|
169
|
+
* lmsBaseUrl, // This is overriding the ENTIRE document - this is not merged in!
|
|
170
|
+
* });
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* @param newConfig A replacement SiteConfig which will completely override the current SiteConfig.
|
|
174
|
+
*/
|
|
175
|
+
export function setSiteConfig(newSiteConfig) {
|
|
176
|
+
siteConfig = newSiteConfig;
|
|
177
|
+
publish(CONFIG_CHANGED);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Merges additional configuration values into the site config returned by `getSiteConfig`. Will
|
|
181
|
+
* override any values that exist with the same keys.
|
|
182
|
+
*
|
|
183
|
+
* ```
|
|
184
|
+
* mergeSiteConfig({
|
|
185
|
+
* NEW_KEY: 'new value',
|
|
186
|
+
* OTHER_NEW_KEY: 'other new value',
|
|
187
|
+
* });
|
|
188
|
+
*
|
|
189
|
+
* This function uses lodash.merge internally to merge configuration objects
|
|
190
|
+
* which means they will be merged recursively. See https://lodash.com/docs/latest#merge for
|
|
191
|
+
* documentation on the exact behavior.
|
|
192
|
+
*
|
|
193
|
+
* Apps are merged by appId rather than array index. By default, apps in the incoming config
|
|
194
|
+
* that don't exist in the current config will be added.
|
|
195
|
+
*
|
|
196
|
+
* When `limitAppMergeToConfig` is true:
|
|
197
|
+
* - All non-app parts of the config are still merged normally
|
|
198
|
+
* - Only the `config` property of each existing app is merged
|
|
199
|
+
* - Apps in the incoming config that don't exist in the current config are ignored
|
|
200
|
+
*
|
|
201
|
+
* @param {Object} newSiteConfig
|
|
202
|
+
* @param {Object} options
|
|
203
|
+
* @param {boolean} options.limitAppMergeToConfig - Limit app merging to only the config property of existing apps
|
|
204
|
+
*/
|
|
205
|
+
export function mergeSiteConfig(newSiteConfig, options = {}) {
|
|
206
|
+
var _a;
|
|
207
|
+
const { limitAppMergeToConfig = false } = options;
|
|
208
|
+
const { apps: newApps } = newSiteConfig, restOfNewConfig = __rest(newSiteConfig, ["apps"]);
|
|
209
|
+
// lodash merge the top-level (non-app) part
|
|
210
|
+
siteConfig = merge(siteConfig, restOfNewConfig);
|
|
211
|
+
// if we don't have new apps, we're done
|
|
212
|
+
if (!(newApps === null || newApps === void 0 ? void 0 : newApps.length)) {
|
|
213
|
+
publish(CONFIG_CHANGED);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// if we're doing a full merge, merge the objects
|
|
217
|
+
if (!limitAppMergeToConfig) {
|
|
218
|
+
siteConfig.apps = Object.values(merge(keyBy(siteConfig.apps || [], 'appId'), keyBy(newApps, 'appId')));
|
|
219
|
+
publish(CONFIG_CHANGED);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// we're doing a config-only merge, if we don't
|
|
223
|
+
// have apps already, we can't update their configs
|
|
224
|
+
if (!((_a = siteConfig.apps) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
225
|
+
publish(CONFIG_CHANGED);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// handle config-only merging
|
|
229
|
+
const newAppsById = keyBy(newApps, 'appId');
|
|
230
|
+
for (const app of siteConfig.apps) {
|
|
231
|
+
const newApp = newAppsById[app.appId];
|
|
232
|
+
if (newApp === null || newApp === void 0 ? void 0 : newApp.config) {
|
|
233
|
+
app.config = merge(app.config, newApp.config);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
publish(CONFIG_CHANGED);
|
|
237
|
+
}
|
|
238
|
+
const appConfigs = {};
|
|
239
|
+
/**
|
|
240
|
+
* addAppConfigs finds any AppConfig objects in the apps in SiteConfig and makes their config
|
|
241
|
+
* available to be used by Apps via getAppConfig(appId) or useAppConfig() functions. This is
|
|
242
|
+
* used at initialization time to process any AppConfigs bundled with the site.
|
|
243
|
+
*/
|
|
244
|
+
export function addAppConfigs() {
|
|
245
|
+
const { apps } = getSiteConfig();
|
|
246
|
+
if (!apps)
|
|
247
|
+
return;
|
|
248
|
+
for (const app of apps) {
|
|
249
|
+
const { appId, config } = app;
|
|
250
|
+
if (config !== undefined) {
|
|
251
|
+
appConfigs[appId] = config;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
publish(CONFIG_CHANGED);
|
|
255
|
+
}
|
|
256
|
+
export function getAppConfig(id) {
|
|
257
|
+
return appConfigs[id];
|
|
258
|
+
}
|
|
259
|
+
export function mergeAppConfig(id, newAppConfig) {
|
|
260
|
+
appConfigs[id] = merge(appConfigs[id], newAppConfig);
|
|
261
|
+
publish(CONFIG_CHANGED);
|
|
262
|
+
}
|
|
263
|
+
let activeRouteRoles = [];
|
|
264
|
+
export function setActiveRouteRoles(roles) {
|
|
265
|
+
activeRouteRoles = roles;
|
|
266
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
267
|
+
}
|
|
268
|
+
export function getActiveRouteRoles() {
|
|
269
|
+
return activeRouteRoles;
|
|
270
|
+
}
|
|
271
|
+
const activeWidgetRoles = {};
|
|
272
|
+
export function addActiveWidgetRole(role) {
|
|
273
|
+
var _a;
|
|
274
|
+
(_a = activeWidgetRoles[role]) !== null && _a !== void 0 ? _a : (activeWidgetRoles[role] = 0);
|
|
275
|
+
activeWidgetRoles[role] += 1;
|
|
276
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
277
|
+
}
|
|
278
|
+
export function removeActiveWidgetRole(role) {
|
|
279
|
+
if (activeWidgetRoles[role] !== undefined) {
|
|
280
|
+
activeWidgetRoles[role] -= 1;
|
|
281
|
+
}
|
|
282
|
+
if (activeWidgetRoles[role] < 1) {
|
|
283
|
+
delete activeWidgetRoles[role];
|
|
284
|
+
}
|
|
285
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
286
|
+
}
|
|
287
|
+
export function getActiveWidgetRoles() {
|
|
288
|
+
return Object.entries(activeWidgetRoles)
|
|
289
|
+
.filter(([, count]) => count !== undefined && count > 0)
|
|
290
|
+
.map(([role]) => role);
|
|
291
|
+
}
|
|
292
|
+
// Gets all active roles from the route roles and widget roles.
|
|
293
|
+
export function getActiveRoles() {
|
|
294
|
+
return [...getActiveRouteRoles(), ...getActiveWidgetRoles()];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get an external link URL based on the URL provided. If the passed in URL is overridden in the
|
|
298
|
+
* `externalLinkUrlOverrides` object, it will return the overridden URL. Otherwise, it will return
|
|
299
|
+
* the provided URL.
|
|
300
|
+
*
|
|
301
|
+
*
|
|
302
|
+
* @param {string} url - The default URL.
|
|
303
|
+
* @returns {string} - The external link URL. Defaults to the input URL if not found in the
|
|
304
|
+
* `externalLinkUrlOverrides` object. If the input URL is invalid, '#' is returned.
|
|
305
|
+
*
|
|
306
|
+
* @example
|
|
307
|
+
* import { getExternalLinkUrl } from '@openedx/frontend-base';
|
|
308
|
+
*
|
|
309
|
+
* <Hyperlink
|
|
310
|
+
* destination={getExternalLinkUrl(data.helpLink)}
|
|
311
|
+
* target="_blank"
|
|
312
|
+
* >
|
|
313
|
+
*/
|
|
314
|
+
export function getExternalLinkUrl(url) {
|
|
315
|
+
var _a, _b;
|
|
316
|
+
// Guard against whitespace-only strings
|
|
317
|
+
if (typeof url !== 'string' || !url.trim()) {
|
|
318
|
+
return '#';
|
|
319
|
+
}
|
|
320
|
+
const overriddenLinkUrls = (_a = getSiteConfig().externalLinkUrlOverrides) !== null && _a !== void 0 ? _a : {};
|
|
321
|
+
return (_b = overriddenLinkUrls[url]) !== null && _b !== void 0 ? _b : url;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/config/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * #### Import members from **@edx/frontend-base**\n *\n * The configuration module provides utilities for working with an application's configuration\n * document (SiteConfig). Configuration variables can be supplied to the\n * application in three different ways. They are applied in the following order:\n *\n * - Site Configuration File (site.config.tsx)\n * - Initialization Config Handler\n * - Runtime Configuration\n *\n * Last one in wins, and are deep merged together. Variables with the same name defined via the\n * later methods will override any defined using an earlier method. i.e., if a variable is defined\n * in Runtime Configuration, that will override the same variable defined in either of the earlier\n * methods. Configuration defined in a JS file will override any default values below.\n *\n * ##### Site Configuration File\n *\n * Configuration variables can be supplied in a file named site.config.tsx. This file must\n * export either an Object containing configuration variables or a function. The function must\n * return an Object containing configuration variables or, alternately, a promise which resolves to\n * an Object.\n *\n * Using a function or async function allows the configuration to be resolved at runtime (because\n * the function will be executed at runtime). This is not common, and the capability is included\n * for the sake of flexibility.\n *\n * The Site Configuration File is well-suited to extensibility use cases or component overrides,\n * in that the configuration file can depend on any installed JavaScript module. It is also the\n * preferred way of doing build-time configuration if runtime configuration isn't used by your\n * deployment of the platform.\n *\n * Exporting a config object:\n * ```\n * const siteConfig = {\n * lmsBaseUrl: 'http://localhost:18000'\n * };\n *\n * export default siteConfig;\n * ```\n *\n * Exporting a function that returns an object:\n * ```\n * function getSiteConfig() {\n * return {\n * lmsBaseUrl: 'http://localhost:18000'\n * };\n * }\n * ```\n *\n * Exporting a function that returns a promise that resolves to an object:\n * ```\n * function getAsyncSiteConfig() {\n * return new Promise((resolve, reject) => {\n * resolve({\n * lmsBaseUrl: 'http://localhost:18000'\n * });\n * });\n * }\n *\n * export default getAsyncSiteConfig;\n * ```\n *\n * ##### Initialization Config Handler\n *\n * The configuration document can be extended by\n * applications at run-time using a `config` initialization handler. Please see the Initialization\n * documentation for more information on handlers and initialization phases.\n *\n * ```\n * initialize({\n * handlers: {\n * config: () => {\n * mergeSiteConfig({\n * CUSTOM_VARIABLE: 'custom value',\n * lmsBaseUrl: 'http://localhost:18001' // You can override variables, but this is uncommon.\n * }, 'App config override handler');\n * },\n * },\n * });\n * ```\n *\n * ##### Runtime Configuration\n *\n * Configuration variables can also be supplied using the \"runtime configuration\" method, taking\n * advantage of the Micro-frontend Config API in edx-platform. More information on this API can be\n * found in the ADR which introduced it:\n *\n * https://github.com/openedx/edx-platform/blob/master/lms/djangoapps/mfe_config_api/docs/decisions/0001-mfe-config-api.rst\n *\n * The runtime configuration method can be enabled by supplying a runtimeConfigJsonUrl via one of the other\n * two configuration methods above.\n *\n * Runtime configuration is particularly useful if you need to supply different configurations to\n * a single deployment of a micro-frontend, for instance. It is also a perfectly valid alternative\n * to build-time configuration, though it introduces an additional API call to edx-platform on MFE\n * initialization.\n *\n *\n * @module Config\n */\n\nimport keyBy from 'lodash.keyby';\nimport merge from 'lodash.merge';\nimport {\n AppConfig,\n EnvironmentTypes,\n SiteConfig\n} from '../../types';\nimport { ACTIVE_ROLES_CHANGED, CONFIG_CHANGED } from '../constants';\nimport { publish } from '../subscriptions';\n\nlet siteConfig: SiteConfig = {\n // Required\n siteId: '',\n baseUrl: '',\n siteName: '',\n loginUrl: '',\n logoutUrl: '',\n lmsBaseUrl: '',\n\n // Optional\n environment: EnvironmentTypes.PRODUCTION,\n apps: [],\n externalRoutes: [],\n externalLinkUrlOverrides: [],\n runtimeConfigJsonUrl: null,\n theme: {},\n accessTokenCookieName: 'edx-jwt-cookie-header-payload',\n csrfTokenApiPath: '/csrf/api/v1/token',\n ignoredErrorRegex: null,\n languagePreferenceCookieName: 'openedx-language-preference',\n refreshAccessTokenApiPath: '/login_refresh',\n userInfoCookieName: 'edx-user-info',\n segmentKey: null,\n};\n\n/**\n * Getter for the application configuration document. This is synchronous and merely returns a\n * reference to an existing object, and is thus safe to call as often as desired.\n *\n * Example:\n *\n * ```\n * import { getSiteConfig } from '@openedx/frontend-base';\n *\n * const {\n * lmsBaseUrl,\n * } = getSiteConfig();\n * ```\n *\n * @returns {SiteConfig}\n */\nexport function getSiteConfig() {\n return siteConfig;\n}\n\n/**\n * Replaces the existing SiteConfig. This is not commonly used, but can be helpful for tests.\n *\n * Example:\n *\n * ```\n * import { setSiteConfig } from '@openedx/frontend-base';\n *\n * setSiteConfig({\n * lmsBaseUrl, // This is overriding the ENTIRE document - this is not merged in!\n * });\n * ```\n *\n * @param newConfig A replacement SiteConfig which will completely override the current SiteConfig.\n */\nexport function setSiteConfig(newSiteConfig: SiteConfig) {\n siteConfig = newSiteConfig;\n publish(CONFIG_CHANGED);\n}\n\ninterface MergeSiteConfigOptions {\n limitAppMergeToConfig?: boolean,\n}\n\n/**\n * Merges additional configuration values into the site config returned by `getSiteConfig`. Will\n * override any values that exist with the same keys.\n *\n * ```\n * mergeSiteConfig({\n * NEW_KEY: 'new value',\n * OTHER_NEW_KEY: 'other new value',\n * });\n *\n * This function uses lodash.merge internally to merge configuration objects\n * which means they will be merged recursively. See https://lodash.com/docs/latest#merge for\n * documentation on the exact behavior.\n *\n * Apps are merged by appId rather than array index. By default, apps in the incoming config\n * that don't exist in the current config will be added.\n *\n * When `limitAppMergeToConfig` is true:\n * - All non-app parts of the config are still merged normally\n * - Only the `config` property of each existing app is merged\n * - Apps in the incoming config that don't exist in the current config are ignored\n *\n * @param {Object} newSiteConfig\n * @param {Object} options\n * @param {boolean} options.limitAppMergeToConfig - Limit app merging to only the config property of existing apps\n */\nexport function mergeSiteConfig(\n newSiteConfig: Partial<SiteConfig>,\n options: MergeSiteConfigOptions = {}\n) {\n const { limitAppMergeToConfig = false } = options;\n const { apps: newApps, ...restOfNewConfig } = newSiteConfig;\n\n // lodash merge the top-level (non-app) part\n siteConfig = merge(siteConfig, restOfNewConfig);\n\n // if we don't have new apps, we're done\n if (!newApps?.length) {\n publish(CONFIG_CHANGED);\n return;\n }\n\n // if we're doing a full merge, merge the objects\n if (!limitAppMergeToConfig) {\n siteConfig.apps = Object.values(merge(\n keyBy(siteConfig.apps || [], 'appId'),\n keyBy(newApps, 'appId')\n ));\n publish(CONFIG_CHANGED);\n return;\n }\n\n // we're doing a config-only merge, if we don't\n // have apps already, we can't update their configs\n if (!siteConfig.apps?.length) {\n publish(CONFIG_CHANGED);\n return;\n }\n\n // handle config-only merging\n const newAppsById = keyBy(newApps, 'appId');\n for (const app of siteConfig.apps) {\n const newApp = newAppsById[app.appId];\n if (newApp?.config) {\n app.config = merge(app.config, newApp.config);\n }\n }\n\n publish(CONFIG_CHANGED);\n}\n\nconst appConfigs: Record<string, AppConfig> = {};\n\n/**\n * addAppConfigs finds any AppConfig objects in the apps in SiteConfig and makes their config\n * available to be used by Apps via getAppConfig(appId) or useAppConfig() functions. This is\n * used at initialization time to process any AppConfigs bundled with the site.\n */\nexport function addAppConfigs() {\n const { apps } = getSiteConfig();\n if (!apps) return;\n\n for (const app of apps) {\n const { appId, config } = app;\n if (config !== undefined) {\n appConfigs[appId] = config;\n }\n }\n\n publish(CONFIG_CHANGED);\n}\n\nexport function getAppConfig(id: string) {\n return appConfigs[id];\n}\n\nexport function mergeAppConfig(id: string, newAppConfig: AppConfig) {\n appConfigs[id] = merge(appConfigs[id], newAppConfig);\n publish(CONFIG_CHANGED);\n}\n\nlet activeRouteRoles: string[] = [];\n\nexport function setActiveRouteRoles(roles: string[]) {\n activeRouteRoles = roles;\n publish(ACTIVE_ROLES_CHANGED);\n}\n\nexport function getActiveRouteRoles() {\n return activeRouteRoles;\n}\n\nconst activeWidgetRoles: Record<string, number> = {};\n\nexport function addActiveWidgetRole(role: string) {\n activeWidgetRoles[role] ??= 0;\n activeWidgetRoles[role] += 1;\n publish(ACTIVE_ROLES_CHANGED);\n}\n\nexport function removeActiveWidgetRole(role: string) {\n if (activeWidgetRoles[role] !== undefined) {\n activeWidgetRoles[role] -= 1;\n }\n if (activeWidgetRoles[role] < 1) {\n delete activeWidgetRoles[role];\n }\n publish(ACTIVE_ROLES_CHANGED);\n}\n\nexport function getActiveWidgetRoles() {\n return Object.entries(activeWidgetRoles)\n .filter(([, count]: [role: string, count: number]) => count !== undefined && count > 0)\n .map(([role]: [role: string, count: number]) => role);\n}\n\n// Gets all active roles from the route roles and widget roles.\nexport function getActiveRoles() {\n return [...getActiveRouteRoles(), ...getActiveWidgetRoles()];\n}\n\n/**\n * Get an external link URL based on the URL provided. If the passed in URL is overridden in the\n * `externalLinkUrlOverrides` object, it will return the overridden URL. Otherwise, it will return\n * the provided URL.\n *\n *\n * @param {string} url - The default URL.\n * @returns {string} - The external link URL. Defaults to the input URL if not found in the\n * `externalLinkUrlOverrides` object. If the input URL is invalid, '#' is returned.\n *\n * @example\n * import { getExternalLinkUrl } from '@openedx/frontend-base';\n *\n * <Hyperlink\n * destination={getExternalLinkUrl(data.helpLink)}\n * target=\"_blank\"\n * >\n */\nexport function getExternalLinkUrl(url: string): string {\n // Guard against whitespace-only strings\n if (typeof url !== 'string' || !url.trim()) {\n return '#';\n }\n\n const overriddenLinkUrls = getSiteConfig().externalLinkUrlOverrides ?? {};\n return overriddenLinkUrls[url] ?? url;\n}\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** @constant */
|
|
2
|
+
export declare const SITE_TOPIC = "APP";
|
|
3
|
+
export declare const SITE_PUBSUB_INITIALIZED = "APP.PUBSUB_INITIALIZED";
|
|
4
|
+
/**
|
|
5
|
+
* Event published when the application initialization sequence has finished loading any dynamic
|
|
6
|
+
* configuration setup in a custom config handler.
|
|
7
|
+
*
|
|
8
|
+
* @event
|
|
9
|
+
*/
|
|
10
|
+
export declare const SITE_CONFIG_INITIALIZED = "APP.CONFIG_INITIALIZED";
|
|
11
|
+
/**
|
|
12
|
+
* Event published when the application initialization sequence has finished determining the user's
|
|
13
|
+
* authentication state, creating an authenticated API client, and executing auth handlers.
|
|
14
|
+
*
|
|
15
|
+
* @event
|
|
16
|
+
*/
|
|
17
|
+
export declare const SITE_AUTH_INITIALIZED = "APP.AUTH_INITIALIZED";
|
|
18
|
+
/**
|
|
19
|
+
* Event published when the application initialization sequence has finished initializing
|
|
20
|
+
* internationalization and executing any i18n handlers.
|
|
21
|
+
*
|
|
22
|
+
* @event
|
|
23
|
+
*/
|
|
24
|
+
export declare const SITE_I18N_INITIALIZED = "APP.I18N_INITIALIZED";
|
|
25
|
+
/**
|
|
26
|
+
* Event published when the application initialization sequence has finished initializing the
|
|
27
|
+
* logging service and executing any logging handlers.
|
|
28
|
+
*
|
|
29
|
+
* @event
|
|
30
|
+
*/
|
|
31
|
+
export declare const SITE_LOGGING_INITIALIZED = "APP.LOGGING_INITIALIZED";
|
|
32
|
+
/**
|
|
33
|
+
* Event published when the application initialization sequence has finished initializing the
|
|
34
|
+
* analytics service and executing any analytics handlers.
|
|
35
|
+
*
|
|
36
|
+
* @event
|
|
37
|
+
*/
|
|
38
|
+
export declare const SITE_ANALYTICS_INITIALIZED = "APP.ANALYTICS_INITIALIZED";
|
|
39
|
+
/**
|
|
40
|
+
* Event published when the application initialization sequence has finished. Applications should
|
|
41
|
+
* subscribe to this event and start rendering the UI when it has fired.
|
|
42
|
+
*
|
|
43
|
+
* @event
|
|
44
|
+
*/
|
|
45
|
+
export declare const SITE_READY = "APP.READY";
|
|
46
|
+
/**
|
|
47
|
+
* Event published when the application initialization sequence has aborted. This is frequently
|
|
48
|
+
* used to show an error page when an initialization error has occurred.
|
|
49
|
+
*
|
|
50
|
+
* @see {@link module:React~ErrorPage}
|
|
51
|
+
* @event
|
|
52
|
+
*/
|
|
53
|
+
export declare const SITE_INIT_ERROR = "APP.INIT_ERROR";
|
|
54
|
+
/** @constant */
|
|
55
|
+
export declare const CONFIG_TOPIC = "CONFIG";
|
|
56
|
+
export declare const CONFIG_CHANGED = "CONFIG.CHANGED";
|
|
57
|
+
export declare const ACTIVE_ROLES_CHANGED = "ACTIVE_ROLES_CHANGED";
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/** @constant */
|
|
2
2
|
export const SITE_TOPIC = 'APP';
|
|
3
|
-
|
|
4
3
|
export const SITE_PUBSUB_INITIALIZED = `${SITE_TOPIC}.PUBSUB_INITIALIZED`;
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Event published when the application initialization sequence has finished loading any dynamic
|
|
8
6
|
* configuration setup in a custom config handler.
|
|
@@ -10,7 +8,6 @@ export const SITE_PUBSUB_INITIALIZED = `${SITE_TOPIC}.PUBSUB_INITIALIZED`;
|
|
|
10
8
|
* @event
|
|
11
9
|
*/
|
|
12
10
|
export const SITE_CONFIG_INITIALIZED = `${SITE_TOPIC}.CONFIG_INITIALIZED`;
|
|
13
|
-
|
|
14
11
|
/**
|
|
15
12
|
* Event published when the application initialization sequence has finished determining the user's
|
|
16
13
|
* authentication state, creating an authenticated API client, and executing auth handlers.
|
|
@@ -18,7 +15,6 @@ export const SITE_CONFIG_INITIALIZED = `${SITE_TOPIC}.CONFIG_INITIALIZED`;
|
|
|
18
15
|
* @event
|
|
19
16
|
*/
|
|
20
17
|
export const SITE_AUTH_INITIALIZED = `${SITE_TOPIC}.AUTH_INITIALIZED`;
|
|
21
|
-
|
|
22
18
|
/**
|
|
23
19
|
* Event published when the application initialization sequence has finished initializing
|
|
24
20
|
* internationalization and executing any i18n handlers.
|
|
@@ -26,7 +22,6 @@ export const SITE_AUTH_INITIALIZED = `${SITE_TOPIC}.AUTH_INITIALIZED`;
|
|
|
26
22
|
* @event
|
|
27
23
|
*/
|
|
28
24
|
export const SITE_I18N_INITIALIZED = `${SITE_TOPIC}.I18N_INITIALIZED`;
|
|
29
|
-
|
|
30
25
|
/**
|
|
31
26
|
* Event published when the application initialization sequence has finished initializing the
|
|
32
27
|
* logging service and executing any logging handlers.
|
|
@@ -34,7 +29,6 @@ export const SITE_I18N_INITIALIZED = `${SITE_TOPIC}.I18N_INITIALIZED`;
|
|
|
34
29
|
* @event
|
|
35
30
|
*/
|
|
36
31
|
export const SITE_LOGGING_INITIALIZED = `${SITE_TOPIC}.LOGGING_INITIALIZED`;
|
|
37
|
-
|
|
38
32
|
/**
|
|
39
33
|
* Event published when the application initialization sequence has finished initializing the
|
|
40
34
|
* analytics service and executing any analytics handlers.
|
|
@@ -42,7 +36,6 @@ export const SITE_LOGGING_INITIALIZED = `${SITE_TOPIC}.LOGGING_INITIALIZED`;
|
|
|
42
36
|
* @event
|
|
43
37
|
*/
|
|
44
38
|
export const SITE_ANALYTICS_INITIALIZED = `${SITE_TOPIC}.ANALYTICS_INITIALIZED`;
|
|
45
|
-
|
|
46
39
|
/**
|
|
47
40
|
* Event published when the application initialization sequence has finished. Applications should
|
|
48
41
|
* subscribe to this event and start rendering the UI when it has fired.
|
|
@@ -50,7 +43,6 @@ export const SITE_ANALYTICS_INITIALIZED = `${SITE_TOPIC}.ANALYTICS_INITIALIZED`;
|
|
|
50
43
|
* @event
|
|
51
44
|
*/
|
|
52
45
|
export const SITE_READY = `${SITE_TOPIC}.READY`;
|
|
53
|
-
|
|
54
46
|
/**
|
|
55
47
|
* Event published when the application initialization sequence has aborted. This is frequently
|
|
56
48
|
* used to show an error page when an initialization error has occurred.
|
|
@@ -59,10 +51,8 @@ export const SITE_READY = `${SITE_TOPIC}.READY`;
|
|
|
59
51
|
* @event
|
|
60
52
|
*/
|
|
61
53
|
export const SITE_INIT_ERROR = `${SITE_TOPIC}.INIT_ERROR`;
|
|
62
|
-
|
|
63
54
|
/** @constant */
|
|
64
55
|
export const CONFIG_TOPIC = 'CONFIG';
|
|
65
|
-
|
|
66
56
|
export const CONFIG_CHANGED = `${CONFIG_TOPIC}.CHANGED`;
|
|
67
|
-
|
|
68
57
|
export const ACTIVE_ROLES_CHANGED = 'ACTIVE_ROLES_CHANGED';
|
|
58
|
+
//# sourceMappingURL=constants.js.map
|