@openedx/frontend-base 1.0.0-alpha.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -0
- package/dist/index.d.ts +4 -0
- 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/dist/runtime/analytics/interface.js +133 -0
- 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/dist/runtime/auth/interface.js +302 -0
- 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/dist/runtime/babel.config.js +4 -0
- package/dist/runtime/babel.config.js.map +1 -0
- package/dist/runtime/config/index.d.ts +216 -0
- package/dist/runtime/config/index.js +428 -0
- package/dist/runtime/config/index.js.map +1 -0
- package/dist/runtime/constants.d.ts +57 -0
- package/dist/runtime/constants.js +58 -0
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/i18n/index.d.ts +3 -0
- package/dist/runtime/i18n/index.js +78 -0
- 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 +113 -0
- package/dist/runtime/i18n/lib.js +223 -0
- package/dist/runtime/i18n/lib.js.map +1 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.js +15 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/initialize.d.ts +87 -0
- package/dist/runtime/initialize.js +305 -0
- package/dist/runtime/initialize.js.map +1 -0
- package/dist/runtime/jest.config.d.ts +16 -0
- package/dist/runtime/jest.config.js +34 -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/dist/runtime/logging/index.d.ts +3 -0
- 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/dist/runtime/logging/interface.js +99 -0
- 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 +30 -0
- package/dist/runtime/react/AuthenticatedPageRoute.js +38 -0
- package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
- package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
- package/dist/runtime/react/CombinedAppProvider.js +20 -0
- package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
- package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
- package/dist/runtime/react/CurrentAppContext.js +21 -0
- 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/dist/runtime/react/LoginRedirect.js +16 -0
- package/dist/runtime/react/LoginRedirect.js.map +1 -0
- package/dist/runtime/react/NotFoundPage.d.ts +2 -0
- package/dist/runtime/react/NotFoundPage.js +14 -0
- package/dist/runtime/react/NotFoundPage.js.map +1 -0
- package/dist/runtime/react/PageWrap.d.ts +8 -0
- package/dist/runtime/react/PageWrap.js +21 -0
- package/dist/runtime/react/PageWrap.js.map +1 -0
- package/dist/runtime/react/SiteContext.d.ts +24 -0
- package/dist/runtime/react/SiteContext.js +26 -0
- 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/dist/runtime/react/constants.js +4 -0
- package/dist/runtime/react/constants.js.map +1 -0
- package/dist/runtime/react/hooks/index.d.ts +7 -0
- 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/dist/runtime/react/hooks/theme/useThemeConfig.js +29 -0
- 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 +48 -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/dist/runtime/react/hooks/theme/utils.js +11 -0
- package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
- package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
- package/dist/runtime/react/hooks/useActiveRoles.js +16 -0
- 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 +22 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
- package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
- package/dist/runtime/react/hooks/useAppConfig.js +8 -0
- package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
- package/dist/runtime/react/hooks/useAuthenticatedUser.js +8 -0
- package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
- package/dist/runtime/react/hooks/useSiteConfig.js +8 -0
- package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
- package/dist/runtime/react/hooks/useSiteEvent.js +22 -0
- package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
- package/dist/runtime/react/index.d.ts +19 -0
- package/dist/runtime/react/index.js +20 -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/authenticatedLoader.d.ts +2 -0
- package/dist/runtime/routing/authenticatedLoader.js +27 -0
- package/dist/runtime/routing/authenticatedLoader.js.map +1 -0
- package/dist/runtime/routing/index.d.ts +2 -0
- package/dist/runtime/routing/index.js +3 -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 +43 -0
- package/dist/runtime/routing/utils.js.map +1 -0
- package/dist/runtime/scripts/index.d.ts +1 -0
- package/dist/runtime/scripts/index.js +14 -0
- package/dist/runtime/scripts/index.js.map +1 -0
- package/dist/runtime/setupTest.d.ts +1 -0
- package/dist/runtime/setupTest.js +12 -0
- package/dist/runtime/setupTest.js.map +1 -0
- package/dist/runtime/slots/Slot.d.ts +11 -0
- package/dist/runtime/slots/Slot.js +37 -0
- package/dist/runtime/slots/Slot.js.map +1 -0
- package/dist/runtime/slots/SlotContext.d.ts +8 -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 +11 -0
- package/dist/runtime/slots/hooks.js +19 -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 +9 -0
- package/dist/runtime/slots/layout/hooks.js +52 -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/dist/runtime/slots/layout/types.d.ts +30 -0
- 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/dist/runtime/slots/types.d.ts +18 -0
- 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 +65 -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 +12 -0
- package/dist/runtime/slots/widget/hooks.js +84 -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/dist/runtime/slots/widget/iframe/constants.js +17 -0
- 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/dist/runtime/slots/widget/iframe/index.d.ts +3 -0
- package/dist/runtime/slots/widget/iframe/index.js +3 -0
- package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/types.d.ts +5 -0
- 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/dist/runtime/slots/widget/types.d.ts +108 -0
- 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 +181 -0
- package/dist/runtime/slots/widget/utils.js.map +1 -0
- package/dist/runtime/subscriptions.d.ts +24 -0
- package/dist/runtime/subscriptions.js +48 -0
- package/dist/runtime/subscriptions.js.map +1 -0
- package/dist/runtime/testing/index.d.ts +8 -0
- 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/dist/runtime/testing/initializeMockApp.js +71 -0
- 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/dist/runtime/utils.js +163 -0
- 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 +16 -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 +63 -0
- package/dist/shell/Shell.messages.js +65 -0
- package/dist/shell/Shell.messages.js.map +1 -0
- package/dist/shell/app.d.ts +3 -0
- package/dist/shell/app.js +43 -0
- package/dist/shell/app.js.map +1 -0
- package/dist/shell/babel.config.d.ts +2 -0
- package/dist/shell/babel.config.js +4 -0
- package/dist/shell/babel.config.js.map +1 -0
- package/dist/shell/constants.d.ts +2 -0
- package/dist/shell/constants.js +3 -0
- package/dist/shell/constants.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 +14 -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 +15 -0
- package/dist/shell/dev/devHome/app.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/index.d.ts +4 -0
- package/dist/shell/dev/index.js +5 -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 +8 -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/SlotShowcase.scss +50 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +2 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +17 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
- package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js +11 -0
- package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.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 +372 -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/DesktopFooterLayout.d.ts +1 -0
- package/dist/shell/footer/DesktopFooterLayout.js +12 -0
- package/dist/shell/footer/DesktopFooterLayout.js.map +1 -0
- package/dist/shell/footer/Footer.d.ts +1 -0
- package/dist/shell/footer/Footer.js +6 -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 +67 -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 +9 -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/HelpButton.d.ts +5 -0
- package/dist/shell/header/HelpButton.js +10 -0
- package/dist/shell/header/HelpButton.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 +4 -0
- package/dist/shell/header/app.js +157 -0
- package/dist/shell/header/app.js.map +1 -0
- package/dist/shell/header/app.scss +20 -0
- package/dist/shell/header/constants.d.ts +3 -0
- package/dist/shell/header/constants.js +4 -0
- package/dist/shell/header/constants.js.map +1 -0
- package/dist/shell/header/course-bar/data/service.d.ts +11 -0
- package/dist/shell/header/course-bar/data/service.js +49 -0
- package/dist/shell/header/course-bar/data/service.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeBar.d.ts +1 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeBar.js +22 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeBar.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeContext.d.ts +3 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeContext.js +10 -0
- package/dist/shell/header/course-bar/masquerade/MasqueradeContext.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/StudioLink.d.ts +6 -0
- package/dist/shell/header/course-bar/masquerade/StudioLink.js +27 -0
- package/dist/shell/header/course-bar/masquerade/StudioLink.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/data/api.d.ts +29 -0
- package/dist/shell/header/course-bar/masquerade/data/api.js +33 -0
- package/dist/shell/header/course-bar/masquerade/data/api.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/hooks.d.ts +20 -0
- package/dist/shell/header/course-bar/masquerade/hooks.js +203 -0
- package/dist/shell/header/course-bar/masquerade/hooks.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/index.d.ts +1 -0
- package/dist/shell/header/course-bar/masquerade/index.js +2 -0
- package/dist/shell/header/course-bar/masquerade/index.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeUserNameInput.d.ts +7 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeUserNameInput.js +18 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeUserNameInput.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidget.d.ts +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidget.js +16 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidget.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidgetOption.d.ts +6 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidgetOption.js +18 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/MasqueradeWidgetOption.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/index.d.ts +2 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/index.js +3 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/index.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/messages.d.ts +28 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/messages.js +30 -0
- package/dist/shell/header/course-bar/masquerade/masquerade-widget/messages.js.map +1 -0
- package/dist/shell/header/course-bar/masquerade/messages.d.ts +28 -0
- package/dist/shell/header/course-bar/masquerade/messages.js +30 -0
- package/dist/shell/header/course-bar/masquerade/messages.js.map +1 -0
- package/dist/shell/header/course-bar/navigation/CourseTabsNavigation.d.ts +3 -0
- package/dist/shell/header/course-bar/navigation/CourseTabsNavigation.js +39 -0
- package/dist/shell/header/course-bar/navigation/CourseTabsNavigation.js.map +1 -0
- package/dist/shell/header/course-bar/navigation/course-tabs-navigation.scss +7 -0
- package/dist/shell/header/course-bar/navigation/messages.d.ts +8 -0
- package/dist/shell/header/course-bar/navigation/messages.js +10 -0
- package/dist/shell/header/course-bar/navigation/messages.js.map +1 -0
- package/dist/shell/header/course-bar/utils.d.ts +3 -0
- package/dist/shell/header/course-bar/utils.js +54 -0
- package/dist/shell/header/course-bar/utils.js.map +1 -0
- package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
- package/dist/shell/header/desktop/DesktopLayout.js +10 -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/helpButtonSlotOperation.d.ts +6 -0
- package/dist/shell/header/helpButtonSlotOperation.js +14 -0
- package/dist/shell/header/helpButtonSlotOperation.js.map +1 -0
- package/dist/shell/header/index.d.ts +5 -0
- package/dist/shell/header/index.js +6 -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/index.d.ts +8 -0
- package/dist/shell/index.js +9 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/jest.config.d.ts +15 -0
- package/dist/shell/jest.config.js +32 -0
- package/dist/shell/jest.config.js.map +1 -0
- package/dist/shell/layer-order.scss +1 -0
- package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
- package/dist/shell/menus/LinkMenuItem.js +38 -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/dist/shell/router/createRouter.js +26 -0
- package/dist/shell/router/createRouter.js.map +1 -0
- package/dist/shell/router/getAppRoutes.d.ts +2 -0
- package/dist/shell/router/getAppRoutes.js +27 -0
- package/dist/shell/router/getAppRoutes.js.map +1 -0
- package/dist/shell/setupTest.d.ts +1 -0
- package/dist/shell/setupTest.js +12 -0
- 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 +45 -0
- package/dist/shell/site.js.map +1 -0
- package/dist/shell/style.d.ts +3 -0
- package/dist/shell/style.js +10 -0
- package/dist/shell/style.js.map +1 -0
- package/dist/shell/style.scss +147 -0
- package/dist/tools/babel/babel.config.d.ts +12 -0
- package/dist/tools/babel.config.d.ts +2 -0
- package/dist/tools/babel.config.js +3 -0
- package/dist/tools/cli/commands/serve.d.ts +1 -0
- package/dist/tools/cli/commands/translations.d.ts +2 -0
- package/dist/tools/cli/commands/translations.js +20 -0
- package/dist/tools/cli/openedx.d.ts +2 -0
- package/dist/tools/cli/openedx.js +111 -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/formatter.js +3 -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/cli/utils/printUsage.js +47 -0
- package/dist/tools/cli/utils/translations/index.d.ts +2 -0
- package/dist/tools/cli/utils/translations/index.js +7 -0
- package/dist/tools/cli/utils/translations/messagesObject.d.ts +26 -0
- package/dist/tools/cli/utils/translations/messagesObject.js +66 -0
- package/dist/tools/cli/utils/translations/prepare.d.ts +5 -0
- package/dist/tools/cli/utils/translations/prepare.js +98 -0
- package/dist/tools/cli/utils/translations/pull.d.ts +6 -0
- package/dist/tools/cli/utils/translations/pull.js +102 -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/base.eslint.config.js +114 -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 +14 -0
- package/dist/tools/jest.config.d.ts +8 -0
- package/dist/tools/types.d.ts +20 -0
- package/dist/tools/types.js +25 -0
- package/dist/tools/typescript/tsconfig.json +33 -0
- 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 +12 -0
- package/dist/tools/webpack/common-config/all/getStylesheetRule.js +150 -0
- package/dist/tools/webpack/common-config/all/postcssWrapLayer.d.ts +4 -0
- package/dist/tools/webpack/common-config/all/postcssWrapLayer.js +32 -0
- package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
- package/dist/tools/webpack/common-config/dev/getDevServer.js +36 -0
- package/dist/tools/webpack/common-config/index.d.ts +7 -0
- package/dist/tools/webpack/common-config/index.js +20 -0
- package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
- package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.js +24 -0
- package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/emptyI18n.d.ts +2 -0
- package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/emptyI18n.js +3 -0
- package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/index.d.ts +2 -0
- package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/index.js +26 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +16 -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/fixtures/entry.d.ts +1 -0
- package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
- package/dist/tools/webpack/utils/getPublicPath.js +6 -0
- package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
- package/dist/tools/webpack/utils/getResolvedSiteI18nPath.d.ts +1 -0
- package/dist/tools/webpack/utils/getResolvedSiteI18nPath.js +25 -0
- package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
- package/dist/tools/webpack/webpack.config.build.js +78 -0
- package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
- package/dist/tools/webpack/webpack.config.dev.js +78 -0
- package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
- package/dist/tools/webpack/webpack.config.dev.shell.js +105 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -32
- package/config/eslint/base.eslint.config.js +0 -113
- package/config/tsconfig.json +0 -32
- package/config/types.js +0 -23
- package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
- package/config/webpack/common-config/all/getStylesheetRule.js +0 -112
- package/config/webpack/common-config/dev/getDevServer.js +0 -38
- package/config/webpack/common-config/index.js +0 -18
- package/config/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
- package/config/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
- package/config/webpack/utils/getLocalAliases.js +0 -65
- package/config/webpack/utils/getPublicPath.js +0 -6
- package/config/webpack/webpack.config.build.js +0 -69
- package/config/webpack/webpack.config.dev.js +0 -69
- package/config/webpack/webpack.config.dev.shell.js +0 -103
- package/index.ts +0 -7
- 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.js +0 -145
- 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/interface.js +0 -309
- package/runtime/auth/utils.js +0 -105
- package/runtime/babel.config.js +0 -3
- package/runtime/config/getExternalLinkUrl.test.js +0 -76
- package/runtime/config/index.ts +0 -294
- package/runtime/constants.ts +0 -68
- package/runtime/i18n/index.js +0 -118
- 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/index.ts +0 -9
- package/runtime/logging/interface.js +0 -109
- package/runtime/logging/types.ts +0 -4
- package/runtime/react/AuthenticatedPageRoute.jsx +0 -43
- package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
- package/runtime/react/CombinedAppProvider.tsx +0 -46
- package/runtime/react/CurrentAppContext.tsx +0 -25
- 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/LoginRedirect.jsx +0 -16
- package/runtime/react/PageWrap.jsx +0 -24
- package/runtime/react/SiteContext.tsx +0 -32
- package/runtime/react/SiteProvider.test.jsx +0 -66
- package/runtime/react/SiteProvider.tsx +0 -101
- package/runtime/react/constants.ts +0 -3
- package/runtime/react/hooks/index.ts +0 -8
- 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/useThemeConfig.ts +0 -34
- 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/theme/utils.ts +0 -11
- package/runtime/react/hooks/useActiveRoles.ts +0 -15
- package/runtime/react/hooks/useActiveRouteRoleWatcher.ts +0 -31
- package/runtime/react/hooks/useAppConfig.ts +0 -9
- package/runtime/react/hooks/useAuthenticatedUser.test.tsx +0 -41
- package/runtime/react/hooks/useAuthenticatedUser.ts +0 -9
- package/runtime/react/hooks/useSiteConfig.test.tsx +0 -13
- package/runtime/react/hooks/useSiteConfig.ts +0 -9
- package/runtime/react/hooks/useSiteEvent.ts +0 -24
- package/runtime/react/index.ts +0 -19
- package/runtime/react/reducers.ts +0 -40
- package/runtime/routing/index.ts +0 -1
- 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/scripts/index.ts +0 -1
- package/runtime/setupTest.js +0 -14
- 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/types.ts +0 -45
- package/runtime/slots/layout/utils.test.ts +0 -67
- package/runtime/slots/layout/utils.ts +0 -14
- package/runtime/slots/types.ts +0 -24
- 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/constants.ts +0 -19
- package/runtime/slots/widget/iframe/hooks.ts +0 -179
- package/runtime/slots/widget/iframe/index.ts +0 -6
- package/runtime/slots/widget/iframe/types.ts +0 -7
- package/runtime/slots/widget/types.ts +0 -134
- package/runtime/slots/widget/utils.tsx +0 -201
- package/runtime/subscriptions.ts +0 -60
- package/runtime/testing/index.ts +0 -9
- package/runtime/testing/initializeMockApp.test.ts +0 -66
- package/runtime/testing/initializeMockApp.ts +0 -86
- package/runtime/testing/mockMessages.ts +0 -23
- package/runtime/utils.js +0 -178
- 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.scss +0 -150
- package/shell/app.ts +0 -38
- package/shell/babel.config.js +0 -3
- 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/devUser/index.ts +0 -1
- package/shell/dev/index.ts +0 -5
- 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/index.ts +0 -2
- 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/index.ts +0 -7
- 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/createRouter.ts +0 -17
- package/shell/router/getAppRoutes.test.tsx +0 -59
- package/shell/router/getAppRoutes.ts +0 -21
- package/shell/setupTest.js +0 -13
- 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/cli/intl-imports.js +0 -233
- package/tools/dist/cli/intl-imports.test.js +0 -146
- package/tools/dist/cli/openedx.js +0 -86
- package/tools/dist/cli/transifex-utils.js +0 -68
- package/tools/dist/cli/utils/formatter.js +0 -10
- package/tools/dist/cli/utils/printUsage.js +0 -39
- 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/jest/jest.config.js +0 -30
- package/tools/dist/types.js +0 -23
- package/tools/dist/typescript/tsconfig.json +0 -32
- 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 -69
- package/tools/dist/webpack/webpack.config.dev.js +0 -69
- package/tools/dist/webpack/webpack.config.dev.shell.js +0 -103
- package/types.ts +0 -119
- /package/{runtime/react/hooks/theme/index.ts → dist/runtime/react/hooks/theme/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/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/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/{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/utils/ensureConfigFilenameOption.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/{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/{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}/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/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/fixtures/entry.js +0 -0
- /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
|
@@ -0,0 +1,216 @@
|
|
|
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
|
+
import { AppConfig, SiteConfig } from '../../types';
|
|
103
|
+
/**
|
|
104
|
+
* Getter for the application configuration document. This is synchronous and merely returns a
|
|
105
|
+
* reference to an existing object, and is thus safe to call as often as desired.
|
|
106
|
+
*
|
|
107
|
+
* Example:
|
|
108
|
+
*
|
|
109
|
+
* ```
|
|
110
|
+
* import { getSiteConfig } from '@openedx/frontend-base';
|
|
111
|
+
*
|
|
112
|
+
* const {
|
|
113
|
+
* lmsBaseUrl,
|
|
114
|
+
* } = getSiteConfig();
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @returns {SiteConfig}
|
|
118
|
+
*/
|
|
119
|
+
export declare function getSiteConfig(): SiteConfig;
|
|
120
|
+
/**
|
|
121
|
+
* Replaces the existing SiteConfig. This is not commonly used, but can be helpful for tests.
|
|
122
|
+
*
|
|
123
|
+
* Example:
|
|
124
|
+
*
|
|
125
|
+
* ```
|
|
126
|
+
* import { setSiteConfig } from '@openedx/frontend-base';
|
|
127
|
+
*
|
|
128
|
+
* setSiteConfig({
|
|
129
|
+
* lmsBaseUrl, // This is overriding the ENTIRE document - this is not merged in!
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @param newConfig A replacement SiteConfig which will completely override the current SiteConfig.
|
|
134
|
+
*/
|
|
135
|
+
export declare function setSiteConfig(newSiteConfig: SiteConfig): void;
|
|
136
|
+
interface MergeSiteConfigOptions {
|
|
137
|
+
limitAppMergeToConfig?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Merges additional configuration values into the site config returned by `getSiteConfig`. Will
|
|
141
|
+
* override any values that exist with the same keys.
|
|
142
|
+
*
|
|
143
|
+
* ```
|
|
144
|
+
* mergeSiteConfig({
|
|
145
|
+
* NEW_KEY: 'new value',
|
|
146
|
+
* OTHER_NEW_KEY: 'other new value',
|
|
147
|
+
* });
|
|
148
|
+
*
|
|
149
|
+
* This function uses lodash.merge internally to merge configuration objects
|
|
150
|
+
* which means they will be merged recursively. See https://lodash.com/docs/latest#merge for
|
|
151
|
+
* documentation on the exact behavior.
|
|
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
|
+
*
|
|
161
|
+
* @param {Object} newSiteConfig
|
|
162
|
+
* @param {Object} options
|
|
163
|
+
* @param {boolean} options.limitAppMergeToConfig - Limit app merging to only the config property of existing apps
|
|
164
|
+
*/
|
|
165
|
+
export declare function mergeSiteConfig(newSiteConfig: Partial<SiteConfig>, options?: MergeSiteConfigOptions): void;
|
|
166
|
+
/**
|
|
167
|
+
* addAppConfigs finds any AppConfig objects in the apps in SiteConfig and makes their config
|
|
168
|
+
* available to be used by Apps via getAppConfig(appId) or useAppConfig() functions. This is
|
|
169
|
+
* used at initialization time to process any AppConfigs bundled with the site.
|
|
170
|
+
*/
|
|
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[];
|
|
180
|
+
/**
|
|
181
|
+
* Collects all `provides` entries from registered apps that match the given identifier.
|
|
182
|
+
* This enables inter-app data sharing without frontend-base needing to understand the data shape.
|
|
183
|
+
*
|
|
184
|
+
* @param id - The namespaced provides identifier.
|
|
185
|
+
* @returns An array of provided data from all apps that declared data for this identifier.
|
|
186
|
+
*/
|
|
187
|
+
export declare function getProvides(id: string): unknown[];
|
|
188
|
+
/**
|
|
189
|
+
* Collects and flattens all `provides` entries for the given identifier
|
|
190
|
+
* as strings. Each entry can be a single string or a string array; entries
|
|
191
|
+
* of other types are silently skipped.
|
|
192
|
+
*
|
|
193
|
+
* @param id - The namespaced provides identifier.
|
|
194
|
+
* @returns A flat array of strings from all apps that declared data for this identifier.
|
|
195
|
+
*/
|
|
196
|
+
export declare function getProvidesAsStrings(id: string): string[];
|
|
197
|
+
/**
|
|
198
|
+
* Get an external link URL based on the URL provided. If the passed in URL is overridden in the
|
|
199
|
+
* `externalLinkUrlOverrides` object, it will return the overridden URL. Otherwise, it will return
|
|
200
|
+
* the provided URL.
|
|
201
|
+
*
|
|
202
|
+
*
|
|
203
|
+
* @param {string} url - The default URL.
|
|
204
|
+
* @returns {string} - The external link URL. Defaults to the input URL if not found in the
|
|
205
|
+
* `externalLinkUrlOverrides` object. If the input URL is invalid, '#' is returned.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* import { getExternalLinkUrl } from '@openedx/frontend-base';
|
|
209
|
+
*
|
|
210
|
+
* <Hyperlink
|
|
211
|
+
* destination={getExternalLinkUrl(data.helpLink)}
|
|
212
|
+
* target="_blank"
|
|
213
|
+
* >
|
|
214
|
+
*/
|
|
215
|
+
export declare function getExternalLinkUrl(url: string): string;
|
|
216
|
+
export {};
|
|
@@ -0,0 +1,428 @@
|
|
|
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 isEqual from 'lodash/isEqual';
|
|
114
|
+
import keyBy from 'lodash/keyBy';
|
|
115
|
+
import merge from 'lodash/merge';
|
|
116
|
+
import { EnvironmentTypes } from '../../types';
|
|
117
|
+
import { ACTIVE_ROLES_CHANGED, CONFIG_CHANGED } from '../constants';
|
|
118
|
+
import { publish } from '../subscriptions';
|
|
119
|
+
let siteConfig = {
|
|
120
|
+
// Required
|
|
121
|
+
siteId: '',
|
|
122
|
+
baseUrl: '',
|
|
123
|
+
siteName: '',
|
|
124
|
+
loginUrl: '',
|
|
125
|
+
logoutUrl: '',
|
|
126
|
+
lmsBaseUrl: '',
|
|
127
|
+
// Optional
|
|
128
|
+
environment: EnvironmentTypes.PRODUCTION,
|
|
129
|
+
cmsBaseUrl: '',
|
|
130
|
+
apps: [],
|
|
131
|
+
externalRoutes: [],
|
|
132
|
+
externalLinkUrlOverrides: [],
|
|
133
|
+
runtimeConfigJsonUrl: null,
|
|
134
|
+
theme: {},
|
|
135
|
+
accessTokenCookieName: 'edx-jwt-cookie-header-payload',
|
|
136
|
+
csrfTokenApiPath: '/csrf/api/v1/token',
|
|
137
|
+
ignoredErrorRegex: null,
|
|
138
|
+
languagePreferenceCookieName: 'openedx-language-preference',
|
|
139
|
+
refreshAccessTokenApiPath: '/login_refresh',
|
|
140
|
+
userInfoCookieName: 'edx-user-info',
|
|
141
|
+
segmentKey: null,
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Getter for the application configuration document. This is synchronous and merely returns a
|
|
145
|
+
* reference to an existing object, and is thus safe to call as often as desired.
|
|
146
|
+
*
|
|
147
|
+
* Example:
|
|
148
|
+
*
|
|
149
|
+
* ```
|
|
150
|
+
* import { getSiteConfig } from '@openedx/frontend-base';
|
|
151
|
+
*
|
|
152
|
+
* const {
|
|
153
|
+
* lmsBaseUrl,
|
|
154
|
+
* } = getSiteConfig();
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @returns {SiteConfig}
|
|
158
|
+
*/
|
|
159
|
+
export function getSiteConfig() {
|
|
160
|
+
return siteConfig;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Replaces the existing SiteConfig. This is not commonly used, but can be helpful for tests.
|
|
164
|
+
*
|
|
165
|
+
* Example:
|
|
166
|
+
*
|
|
167
|
+
* ```
|
|
168
|
+
* import { setSiteConfig } from '@openedx/frontend-base';
|
|
169
|
+
*
|
|
170
|
+
* setSiteConfig({
|
|
171
|
+
* lmsBaseUrl, // This is overriding the ENTIRE document - this is not merged in!
|
|
172
|
+
* });
|
|
173
|
+
* ```
|
|
174
|
+
*
|
|
175
|
+
* @param newConfig A replacement SiteConfig which will completely override the current SiteConfig.
|
|
176
|
+
*/
|
|
177
|
+
export function setSiteConfig(newSiteConfig) {
|
|
178
|
+
siteConfig = newSiteConfig;
|
|
179
|
+
publish(CONFIG_CHANGED);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Merges additional configuration values into the site config returned by `getSiteConfig`. Will
|
|
183
|
+
* override any values that exist with the same keys.
|
|
184
|
+
*
|
|
185
|
+
* ```
|
|
186
|
+
* mergeSiteConfig({
|
|
187
|
+
* NEW_KEY: 'new value',
|
|
188
|
+
* OTHER_NEW_KEY: 'other new value',
|
|
189
|
+
* });
|
|
190
|
+
*
|
|
191
|
+
* This function uses lodash.merge internally to merge configuration objects
|
|
192
|
+
* which means they will be merged recursively. See https://lodash.com/docs/latest#merge for
|
|
193
|
+
* documentation on the exact behavior.
|
|
194
|
+
*
|
|
195
|
+
* Apps are merged by appId rather than array index. By default, apps in the incoming config
|
|
196
|
+
* that don't exist in the current config will be added.
|
|
197
|
+
*
|
|
198
|
+
* When `limitAppMergeToConfig` is true:
|
|
199
|
+
* - All non-app parts of the config are still merged normally
|
|
200
|
+
* - Only the `config` property of each existing app is merged
|
|
201
|
+
* - Apps in the incoming config that don't exist in the current config are ignored
|
|
202
|
+
*
|
|
203
|
+
* @param {Object} newSiteConfig
|
|
204
|
+
* @param {Object} options
|
|
205
|
+
* @param {boolean} options.limitAppMergeToConfig - Limit app merging to only the config property of existing apps
|
|
206
|
+
*/
|
|
207
|
+
export function mergeSiteConfig(newSiteConfig, options = {}) {
|
|
208
|
+
var _a;
|
|
209
|
+
const { limitAppMergeToConfig = false } = options;
|
|
210
|
+
const { apps: newApps } = newSiteConfig, restOfNewConfig = __rest(newSiteConfig, ["apps"]);
|
|
211
|
+
/* `merge({}, ...)` deep-clones into the fresh target, so the new `siteConfig`
|
|
212
|
+
is a brand-new reference and the previous one is never mutated. This is what
|
|
213
|
+
lets React consumers detect that CONFIG_CHANGED actually changed something. */
|
|
214
|
+
siteConfig = merge({}, siteConfig, restOfNewConfig);
|
|
215
|
+
// if we don't have new apps, we're done
|
|
216
|
+
if (!(newApps === null || newApps === void 0 ? void 0 : newApps.length)) {
|
|
217
|
+
publish(CONFIG_CHANGED);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
// if we're doing a full merge, merge the objects
|
|
221
|
+
if (!limitAppMergeToConfig) {
|
|
222
|
+
siteConfig.apps = mergeApps(siteConfig.apps || [], newApps);
|
|
223
|
+
publish(CONFIG_CHANGED);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
// we're doing a config-only merge, if we don't
|
|
227
|
+
// have apps already, we can't update their configs
|
|
228
|
+
if (!((_a = siteConfig.apps) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
229
|
+
publish(CONFIG_CHANGED);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
// handle config-only merging
|
|
233
|
+
siteConfig.apps = mergeApps(siteConfig.apps, newApps, { configOnly: true });
|
|
234
|
+
publish(CONFIG_CHANGED);
|
|
235
|
+
}
|
|
236
|
+
/*
|
|
237
|
+
* Merge two App[] by appId. Existing apps stay in their original positions
|
|
238
|
+
* (with their pair-merged counterpart from `newApps` substituted in when
|
|
239
|
+
* present); apps in `newApps` not already in `oldApps` append at the end.
|
|
240
|
+
* With `{ configOnly: true }`, no apps are added and apps not appearing in
|
|
241
|
+
* `newApps` pass through unchanged. Per-pair merging is delegated to
|
|
242
|
+
* `mergeApp`.
|
|
243
|
+
*/
|
|
244
|
+
function mergeApps(oldApps, newApps, options = {}) {
|
|
245
|
+
const incomingByAppId = keyBy(newApps, 'appId');
|
|
246
|
+
// Phase 1: walk existing apps in their original order, pair-merging any
|
|
247
|
+
// that have a counterpart in newApps.
|
|
248
|
+
const updatedExisting = oldApps.map((oldApp) => {
|
|
249
|
+
const newApp = incomingByAppId[oldApp.appId];
|
|
250
|
+
return newApp ? mergeApp(oldApp, newApp, options) : oldApp;
|
|
251
|
+
});
|
|
252
|
+
// configOnly mode never adds apps, so we're done.
|
|
253
|
+
if (options.configOnly) {
|
|
254
|
+
return updatedExisting;
|
|
255
|
+
}
|
|
256
|
+
// Phase 2: append apps from newApps that weren't already in oldApps.
|
|
257
|
+
const existingIds = new Set(oldApps.map((a) => a.appId));
|
|
258
|
+
const additions = newApps.filter((a) => !existingIds.has(a.appId));
|
|
259
|
+
return [...updatedExisting, ...additions];
|
|
260
|
+
}
|
|
261
|
+
/*
|
|
262
|
+
* Merge a pair of Apps with the same appId. Deep-merges `config` (and, in the
|
|
263
|
+
* full-merge case, `provides`); other fields take `newApp`'s value verbatim.
|
|
264
|
+
* The result is built via `Object.getOwnPropertyDescriptors` so any lazy
|
|
265
|
+
* getters survive: a snapshot via `lodash.merge` or spread would invoke the
|
|
266
|
+
* getter at merge time and freeze its return value, which is typically empty
|
|
267
|
+
* mid-init. Per-field replacement is also the only sensible behavior for the
|
|
268
|
+
* array fields (`slots`/`routes`/`providers`/`externalScripts`), which don't
|
|
269
|
+
* survive element-wise merging anyway.
|
|
270
|
+
*/
|
|
271
|
+
function mergeApp(oldApp, newApp, options = {}) {
|
|
272
|
+
// configOnly mode: preserve `oldApp` (identity, slots, etc.) and deep-merge
|
|
273
|
+
// only `newApp.config` on top.
|
|
274
|
+
if (options.configOnly) {
|
|
275
|
+
if (!newApp.config) {
|
|
276
|
+
return oldApp;
|
|
277
|
+
}
|
|
278
|
+
return cloneAppDescriptors(oldApp, {
|
|
279
|
+
config: merge({}, oldApp.config, newApp.config),
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
// Full mode: take `newApp` (identity, slots, etc.) and deep-merge `config`
|
|
283
|
+
// and `provides` from `oldApp`. Other fields take `newApp`'s value verbatim.
|
|
284
|
+
const deepMerged = {};
|
|
285
|
+
if (oldApp.config !== undefined || newApp.config !== undefined) {
|
|
286
|
+
deepMerged.config = merge({}, oldApp.config, newApp.config);
|
|
287
|
+
}
|
|
288
|
+
if (oldApp.provides !== undefined || newApp.provides !== undefined) {
|
|
289
|
+
deepMerged.provides = merge({}, oldApp.provides, newApp.provides);
|
|
290
|
+
}
|
|
291
|
+
return cloneAppDescriptors(newApp, deepMerged);
|
|
292
|
+
}
|
|
293
|
+
function cloneAppDescriptors(source, overrides) {
|
|
294
|
+
const descriptors = Object.getOwnPropertyDescriptors(source);
|
|
295
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
296
|
+
descriptors[key] = { value, writable: true, enumerable: true, configurable: true };
|
|
297
|
+
}
|
|
298
|
+
return Object.create(Object.getPrototypeOf(source), descriptors);
|
|
299
|
+
}
|
|
300
|
+
const appConfigs = {};
|
|
301
|
+
/**
|
|
302
|
+
* addAppConfigs finds any AppConfig objects in the apps in SiteConfig and makes their config
|
|
303
|
+
* available to be used by Apps via getAppConfig(appId) or useAppConfig() functions. This is
|
|
304
|
+
* used at initialization time to process any AppConfigs bundled with the site.
|
|
305
|
+
*/
|
|
306
|
+
export function addAppConfigs() {
|
|
307
|
+
const { apps } = getSiteConfig();
|
|
308
|
+
if (!apps)
|
|
309
|
+
return;
|
|
310
|
+
for (const app of apps) {
|
|
311
|
+
const { appId, config } = app;
|
|
312
|
+
if (config !== undefined) {
|
|
313
|
+
appConfigs[appId] = config;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
publish(CONFIG_CHANGED);
|
|
317
|
+
}
|
|
318
|
+
export function getAppConfig(id) {
|
|
319
|
+
const { commonAppConfig } = getSiteConfig();
|
|
320
|
+
if (commonAppConfig === undefined) {
|
|
321
|
+
return appConfigs[id];
|
|
322
|
+
}
|
|
323
|
+
return merge({}, commonAppConfig, appConfigs[id]);
|
|
324
|
+
}
|
|
325
|
+
export function mergeAppConfig(id, newAppConfig) {
|
|
326
|
+
// Non-mutating: produce a fresh entry so consumers holding a reference to
|
|
327
|
+
// the previous one don't observe the change underneath them.
|
|
328
|
+
appConfigs[id] = merge({}, appConfigs[id], newAppConfig);
|
|
329
|
+
publish(CONFIG_CHANGED);
|
|
330
|
+
}
|
|
331
|
+
let activeRouteRoles = [];
|
|
332
|
+
export function setActiveRouteRoles(roles) {
|
|
333
|
+
if (isEqual(activeRouteRoles, roles))
|
|
334
|
+
return;
|
|
335
|
+
activeRouteRoles = roles;
|
|
336
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
337
|
+
}
|
|
338
|
+
export function getActiveRouteRoles() {
|
|
339
|
+
return activeRouteRoles;
|
|
340
|
+
}
|
|
341
|
+
const activeWidgetRoles = {};
|
|
342
|
+
export function addActiveWidgetRole(role) {
|
|
343
|
+
var _a, _b;
|
|
344
|
+
// Only publish when the role transitions from absent to present.
|
|
345
|
+
const wasPresent = ((_a = activeWidgetRoles[role]) !== null && _a !== void 0 ? _a : 0) > 0;
|
|
346
|
+
activeWidgetRoles[role] = ((_b = activeWidgetRoles[role]) !== null && _b !== void 0 ? _b : 0) + 1;
|
|
347
|
+
if (!wasPresent)
|
|
348
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
349
|
+
}
|
|
350
|
+
export function removeActiveWidgetRole(role) {
|
|
351
|
+
if (activeWidgetRoles[role] === undefined)
|
|
352
|
+
return;
|
|
353
|
+
activeWidgetRoles[role] -= 1;
|
|
354
|
+
if (activeWidgetRoles[role] < 1) {
|
|
355
|
+
delete activeWidgetRoles[role];
|
|
356
|
+
// Only publish when the role transitions from present to absent.
|
|
357
|
+
publish(ACTIVE_ROLES_CHANGED);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
export function getActiveWidgetRoles() {
|
|
361
|
+
return Object.entries(activeWidgetRoles)
|
|
362
|
+
.filter(([, count]) => count !== undefined && count > 0)
|
|
363
|
+
.map(([role]) => role);
|
|
364
|
+
}
|
|
365
|
+
// Gets all active roles from the route roles and widget roles.
|
|
366
|
+
export function getActiveRoles() {
|
|
367
|
+
return [...getActiveRouteRoles(), ...getActiveWidgetRoles()];
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Collects all `provides` entries from registered apps that match the given identifier.
|
|
371
|
+
* This enables inter-app data sharing without frontend-base needing to understand the data shape.
|
|
372
|
+
*
|
|
373
|
+
* @param id - The namespaced provides identifier.
|
|
374
|
+
* @returns An array of provided data from all apps that declared data for this identifier.
|
|
375
|
+
*/
|
|
376
|
+
export function getProvides(id) {
|
|
377
|
+
const { apps } = getSiteConfig();
|
|
378
|
+
if (!apps)
|
|
379
|
+
return [];
|
|
380
|
+
const results = [];
|
|
381
|
+
for (const app of apps) {
|
|
382
|
+
if (app.provides && app.provides[id] !== undefined) {
|
|
383
|
+
results.push(app.provides[id]);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return results;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Collects and flattens all `provides` entries for the given identifier
|
|
390
|
+
* as strings. Each entry can be a single string or a string array; entries
|
|
391
|
+
* of other types are silently skipped.
|
|
392
|
+
*
|
|
393
|
+
* @param id - The namespaced provides identifier.
|
|
394
|
+
* @returns A flat array of strings from all apps that declared data for this identifier.
|
|
395
|
+
*/
|
|
396
|
+
export function getProvidesAsStrings(id) {
|
|
397
|
+
return getProvides(id)
|
|
398
|
+
.filter((data) => typeof data === 'string' || Array.isArray(data))
|
|
399
|
+
.flat();
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Get an external link URL based on the URL provided. If the passed in URL is overridden in the
|
|
403
|
+
* `externalLinkUrlOverrides` object, it will return the overridden URL. Otherwise, it will return
|
|
404
|
+
* the provided URL.
|
|
405
|
+
*
|
|
406
|
+
*
|
|
407
|
+
* @param {string} url - The default URL.
|
|
408
|
+
* @returns {string} - The external link URL. Defaults to the input URL if not found in the
|
|
409
|
+
* `externalLinkUrlOverrides` object. If the input URL is invalid, '#' is returned.
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* import { getExternalLinkUrl } from '@openedx/frontend-base';
|
|
413
|
+
*
|
|
414
|
+
* <Hyperlink
|
|
415
|
+
* destination={getExternalLinkUrl(data.helpLink)}
|
|
416
|
+
* target="_blank"
|
|
417
|
+
* >
|
|
418
|
+
*/
|
|
419
|
+
export function getExternalLinkUrl(url) {
|
|
420
|
+
var _a, _b;
|
|
421
|
+
// Guard against whitespace-only strings
|
|
422
|
+
if (typeof url !== 'string' || !url.trim()) {
|
|
423
|
+
return '#';
|
|
424
|
+
}
|
|
425
|
+
const overriddenLinkUrls = (_a = getSiteConfig().externalLinkUrlOverrides) !== null && _a !== void 0 ? _a : {};
|
|
426
|
+
return (_b = overriddenLinkUrls[url]) !== null && _b !== void 0 ? _b : url;
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=index.js.map
|