@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.
Files changed (754) hide show
  1. package/{index.ts → dist/index.d.ts} +0 -3
  2. package/dist/index.js +4 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/runtime/analytics/MockAnalyticsService.d.ts +50 -0
  5. package/dist/runtime/analytics/MockAnalyticsService.js +64 -0
  6. package/dist/runtime/analytics/MockAnalyticsService.js.map +1 -0
  7. package/dist/runtime/analytics/SegmentAnalyticsService.d.ts +64 -0
  8. package/dist/runtime/analytics/SegmentAnalyticsService.js +218 -0
  9. package/dist/runtime/analytics/SegmentAnalyticsService.js.map +1 -0
  10. package/dist/runtime/analytics/index.d.ts +3 -0
  11. package/dist/runtime/analytics/index.js +4 -0
  12. package/dist/runtime/analytics/index.js.map +1 -0
  13. package/dist/runtime/analytics/interface.d.ts +53 -0
  14. package/{runtime → dist/runtime}/analytics/interface.js +26 -38
  15. package/dist/runtime/analytics/interface.js.map +1 -0
  16. package/dist/runtime/auth/AxiosCsrfTokenService.d.ts +10 -0
  17. package/dist/runtime/auth/AxiosCsrfTokenService.js +64 -0
  18. package/dist/runtime/auth/AxiosCsrfTokenService.js.map +1 -0
  19. package/dist/runtime/auth/AxiosJwtAuthService.d.ts +182 -0
  20. package/dist/runtime/auth/AxiosJwtAuthService.js +339 -0
  21. package/dist/runtime/auth/AxiosJwtAuthService.js.map +1 -0
  22. package/dist/runtime/auth/AxiosJwtTokenService.d.ts +16 -0
  23. package/dist/runtime/auth/AxiosJwtTokenService.js +130 -0
  24. package/dist/runtime/auth/AxiosJwtTokenService.js.map +1 -0
  25. package/dist/runtime/auth/LocalForageCache.d.ts +7 -0
  26. package/dist/runtime/auth/LocalForageCache.js +78 -0
  27. package/dist/runtime/auth/LocalForageCache.js.map +1 -0
  28. package/dist/runtime/auth/MockAuthService.d.ts +209 -0
  29. package/dist/runtime/auth/MockAuthService.js +256 -0
  30. package/dist/runtime/auth/MockAuthService.js.map +1 -0
  31. package/dist/runtime/auth/index.d.ts +3 -0
  32. package/dist/runtime/auth/index.js +4 -0
  33. package/dist/runtime/auth/index.js.map +1 -0
  34. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.d.ts +2 -0
  35. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +42 -0
  36. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -0
  37. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.d.ts +2 -0
  38. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +40 -0
  39. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -0
  40. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.d.ts +2 -0
  41. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +26 -0
  42. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -0
  43. package/dist/runtime/auth/interceptors/createRetryInterceptor.d.ts +3 -0
  44. package/dist/runtime/auth/interceptors/createRetryInterceptor.js +67 -0
  45. package/dist/runtime/auth/interceptors/createRetryInterceptor.js.map +1 -0
  46. package/dist/runtime/auth/interface.d.ts +133 -0
  47. package/{runtime → dist/runtime}/auth/interface.js +65 -72
  48. package/dist/runtime/auth/interface.js.map +1 -0
  49. package/dist/runtime/auth/utils.d.ts +13 -0
  50. package/dist/runtime/auth/utils.js +66 -0
  51. package/dist/runtime/auth/utils.js.map +1 -0
  52. package/dist/runtime/babel.config.d.ts +2 -0
  53. package/{shell → dist/runtime}/babel.config.js +2 -1
  54. package/dist/runtime/babel.config.js.map +1 -0
  55. package/{runtime/config/index.ts → dist/runtime/config/index.d.ts} +28 -123
  56. package/dist/runtime/config/index.js +323 -0
  57. package/dist/runtime/config/index.js.map +1 -0
  58. package/dist/runtime/constants.d.ts +57 -0
  59. package/{runtime/constants.ts → dist/runtime/constants.js} +1 -11
  60. package/dist/runtime/constants.js.map +1 -0
  61. package/dist/runtime/i18n/index.d.ts +3 -0
  62. package/{runtime → dist/runtime}/i18n/index.js +4 -44
  63. package/dist/runtime/i18n/index.js.map +1 -0
  64. package/dist/runtime/i18n/injectIntlWithShim.d.ts +11 -0
  65. package/dist/runtime/i18n/injectIntlWithShim.js +45 -0
  66. package/dist/runtime/i18n/injectIntlWithShim.js.map +1 -0
  67. package/dist/runtime/i18n/lib.d.ts +119 -0
  68. package/dist/runtime/i18n/lib.js +236 -0
  69. package/dist/runtime/i18n/lib.js.map +1 -0
  70. package/dist/runtime/index.d.ts +13 -0
  71. package/dist/runtime/index.js +14 -0
  72. package/dist/runtime/index.js.map +1 -0
  73. package/dist/runtime/initialize.d.ts +91 -0
  74. package/dist/runtime/initialize.js +312 -0
  75. package/dist/runtime/initialize.js.map +1 -0
  76. package/dist/runtime/jest.config.d.ts +17 -0
  77. package/dist/runtime/jest.config.js +35 -0
  78. package/dist/runtime/jest.config.js.map +1 -0
  79. package/dist/runtime/logging/MockLoggingService.d.ts +28 -0
  80. package/dist/runtime/logging/MockLoggingService.js +31 -0
  81. package/dist/runtime/logging/MockLoggingService.js.map +1 -0
  82. package/dist/runtime/logging/NewRelicLoggingService.d.ts +67 -0
  83. package/dist/runtime/logging/NewRelicLoggingService.js +175 -0
  84. package/dist/runtime/logging/NewRelicLoggingService.js.map +1 -0
  85. package/{runtime/logging/index.ts → dist/runtime/logging/index.d.ts} +1 -7
  86. package/dist/runtime/logging/index.js +4 -0
  87. package/dist/runtime/logging/index.js.map +1 -0
  88. package/dist/runtime/logging/interface.d.ts +38 -0
  89. package/{runtime → dist/runtime}/logging/interface.js +16 -26
  90. package/dist/runtime/logging/interface.js.map +1 -0
  91. package/dist/runtime/logging/types.d.ts +4 -0
  92. package/dist/runtime/logging/types.js +2 -0
  93. package/dist/runtime/logging/types.js.map +1 -0
  94. package/dist/runtime/react/AuthenticatedPageRoute.d.ts +28 -0
  95. package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +11 -18
  96. package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
  97. package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
  98. package/dist/runtime/react/CombinedAppProvider.js +24 -0
  99. package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
  100. package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
  101. package/{runtime/react/CurrentAppContext.tsx → dist/runtime/react/CurrentAppContext.js} +3 -7
  102. package/dist/runtime/react/CurrentAppContext.js.map +1 -0
  103. package/dist/runtime/react/CurrentAppProvider.d.ts +23 -0
  104. package/dist/runtime/react/CurrentAppProvider.js +33 -0
  105. package/dist/runtime/react/CurrentAppProvider.js.map +1 -0
  106. package/dist/runtime/react/Divider.d.ts +1 -0
  107. package/dist/runtime/react/Divider.js +5 -0
  108. package/dist/runtime/react/Divider.js.map +1 -0
  109. package/dist/runtime/react/ErrorBoundary.d.ts +32 -0
  110. package/dist/runtime/react/ErrorBoundary.js +40 -0
  111. package/dist/runtime/react/ErrorBoundary.js.map +1 -0
  112. package/dist/runtime/react/ErrorPage.d.ts +17 -0
  113. package/dist/runtime/react/ErrorPage.js +29 -0
  114. package/dist/runtime/react/ErrorPage.js.map +1 -0
  115. package/dist/runtime/react/LoginRedirect.d.ts +8 -0
  116. package/{runtime/react/LoginRedirect.jsx → dist/runtime/react/LoginRedirect.js} +5 -5
  117. package/dist/runtime/react/LoginRedirect.js.map +1 -0
  118. package/dist/runtime/react/PageWrap.d.ts +8 -0
  119. package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
  120. package/dist/runtime/react/PageWrap.js.map +1 -0
  121. package/dist/runtime/react/SiteContext.d.ts +24 -0
  122. package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
  123. package/dist/runtime/react/SiteContext.js.map +1 -0
  124. package/dist/runtime/react/SiteProvider.d.ts +29 -0
  125. package/dist/runtime/react/SiteProvider.js +69 -0
  126. package/dist/runtime/react/SiteProvider.js.map +1 -0
  127. package/dist/runtime/react/constants.d.ts +3 -0
  128. package/{runtime/react/constants.ts → dist/runtime/react/constants.js} +1 -0
  129. package/dist/runtime/react/constants.js.map +1 -0
  130. package/{runtime/react/hooks/index.ts → dist/runtime/react/hooks/index.d.ts} +0 -1
  131. package/dist/runtime/react/hooks/index.js +8 -0
  132. package/dist/runtime/react/hooks/index.js.map +1 -0
  133. package/dist/runtime/react/hooks/theme/index.js +3 -0
  134. package/dist/runtime/react/hooks/theme/index.js.map +1 -0
  135. package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
  136. package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
  137. package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
  138. package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
  139. package/{runtime/react/hooks/theme/useThemeConfig.ts → dist/runtime/react/hooks/theme/useThemeConfig.js} +11 -16
  140. package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
  141. package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
  142. package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
  143. package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
  144. package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
  145. package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
  146. package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
  147. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
  148. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
  149. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
  150. package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
  151. package/{runtime/react/hooks/theme/utils.ts → dist/runtime/react/hooks/theme/utils.js} +4 -4
  152. package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
  153. package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
  154. package/{runtime/react/hooks/useActiveRoles.ts → dist/runtime/react/hooks/useActiveRoles.js} +6 -8
  155. package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
  156. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
  157. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
  158. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
  159. package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
  160. package/{runtime/react/hooks/useAppConfig.ts → dist/runtime/react/hooks/useAppConfig.js} +3 -4
  161. package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
  162. package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
  163. package/{runtime/react/hooks/useAuthenticatedUser.ts → dist/runtime/react/hooks/useAuthenticatedUser.js} +3 -4
  164. package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
  165. package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
  166. package/{runtime/react/hooks/useSiteConfig.ts → dist/runtime/react/hooks/useSiteConfig.js} +3 -4
  167. package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
  168. package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
  169. package/{runtime/react/hooks/useSiteEvent.ts → dist/runtime/react/hooks/useSiteEvent.js} +7 -9
  170. package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
  171. package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +0 -1
  172. package/dist/runtime/react/index.js +19 -0
  173. package/dist/runtime/react/index.js.map +1 -0
  174. package/dist/runtime/react/reducers.d.ts +11 -0
  175. package/dist/runtime/react/reducers.js +28 -0
  176. package/dist/runtime/react/reducers.js.map +1 -0
  177. package/dist/runtime/routing/index.js +2 -0
  178. package/dist/runtime/routing/index.js.map +1 -0
  179. package/dist/runtime/routing/utils.d.ts +4 -0
  180. package/dist/runtime/routing/utils.js +28 -0
  181. package/dist/runtime/routing/utils.js.map +1 -0
  182. package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
  183. package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
  184. package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
  185. package/dist/runtime/scripts/index.js +2 -0
  186. package/dist/runtime/scripts/index.js.map +1 -0
  187. package/dist/runtime/setupTest.d.ts +1 -0
  188. package/{runtime → dist/runtime}/setupTest.js +6 -8
  189. package/dist/runtime/setupTest.js.map +1 -0
  190. package/dist/runtime/slots/Slot.d.ts +9 -0
  191. package/dist/runtime/slots/Slot.js +30 -0
  192. package/dist/runtime/slots/Slot.js.map +1 -0
  193. package/dist/runtime/slots/SlotContext.d.ts +7 -0
  194. package/dist/runtime/slots/SlotContext.js +7 -0
  195. package/dist/runtime/slots/SlotContext.js.map +1 -0
  196. package/dist/runtime/slots/hooks.d.ts +12 -0
  197. package/dist/runtime/slots/hooks.js +29 -0
  198. package/dist/runtime/slots/hooks.js.map +1 -0
  199. package/dist/runtime/slots/index.js +7 -0
  200. package/dist/runtime/slots/index.js.map +1 -0
  201. package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
  202. package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
  203. package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
  204. package/dist/runtime/slots/layout/hooks.d.ts +10 -0
  205. package/dist/runtime/slots/layout/hooks.js +57 -0
  206. package/dist/runtime/slots/layout/hooks.js.map +1 -0
  207. package/dist/runtime/slots/layout/index.js +5 -0
  208. package/dist/runtime/slots/layout/index.js.map +1 -0
  209. package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
  210. package/dist/runtime/slots/layout/types.js +12 -0
  211. package/dist/runtime/slots/layout/types.js.map +1 -0
  212. package/dist/runtime/slots/layout/utils.d.ts +5 -0
  213. package/dist/runtime/slots/layout/utils.js +11 -0
  214. package/dist/runtime/slots/layout/utils.js.map +1 -0
  215. package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
  216. package/dist/runtime/slots/types.js +7 -0
  217. package/dist/runtime/slots/types.js.map +1 -0
  218. package/dist/runtime/slots/utils.d.ts +3 -0
  219. package/dist/runtime/slots/utils.js +66 -0
  220. package/dist/runtime/slots/utils.js.map +1 -0
  221. package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
  222. package/dist/runtime/slots/widget/WidgetContext.js +8 -0
  223. package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
  224. package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
  225. package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
  226. package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
  227. package/dist/runtime/slots/widget/hooks.d.ts +13 -0
  228. package/dist/runtime/slots/widget/hooks.js +104 -0
  229. package/dist/runtime/slots/widget/hooks.js.map +1 -0
  230. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
  231. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
  232. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
  233. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
  234. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
  235. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
  236. package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
  237. package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
  238. package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
  239. package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
  240. package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
  241. package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
  242. package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
  243. package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
  244. package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
  245. package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
  246. package/dist/runtime/slots/widget/iframe/index.js +3 -0
  247. package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
  248. package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
  249. package/dist/runtime/slots/widget/iframe/types.js +3 -0
  250. package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
  251. package/dist/runtime/slots/widget/index.js +6 -0
  252. package/dist/runtime/slots/widget/index.js.map +1 -0
  253. package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +50 -84
  254. package/dist/runtime/slots/widget/types.js +41 -0
  255. package/dist/runtime/slots/widget/types.js.map +1 -0
  256. package/dist/runtime/slots/widget/utils.d.ts +22 -0
  257. package/dist/runtime/slots/widget/utils.js +166 -0
  258. package/dist/runtime/slots/widget/utils.js.map +1 -0
  259. package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
  260. package/dist/runtime/subscriptions.js +48 -0
  261. package/dist/runtime/subscriptions.js.map +1 -0
  262. package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
  263. package/dist/runtime/testing/index.js +9 -0
  264. package/dist/runtime/testing/index.js.map +1 -0
  265. package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
  266. package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -41
  267. package/dist/runtime/testing/initializeMockApp.js.map +1 -0
  268. package/dist/runtime/testing/mockMessages.d.ts +22 -0
  269. package/dist/runtime/testing/mockMessages.js +23 -0
  270. package/dist/runtime/testing/mockMessages.js.map +1 -0
  271. package/dist/runtime/utils.d.ts +95 -0
  272. package/{runtime → dist/runtime}/utils.js +55 -70
  273. package/dist/runtime/utils.js.map +1 -0
  274. package/dist/shell/DefaultLayout.d.ts +1 -0
  275. package/dist/shell/DefaultLayout.js +7 -0
  276. package/dist/shell/DefaultLayout.js.map +1 -0
  277. package/dist/shell/DefaultMain.d.ts +1 -0
  278. package/dist/shell/DefaultMain.js +6 -0
  279. package/dist/shell/DefaultMain.js.map +1 -0
  280. package/dist/shell/Logo.d.ts +6 -0
  281. package/dist/shell/Logo.js +11 -0
  282. package/dist/shell/Logo.js.map +1 -0
  283. package/dist/shell/Shell.d.ts +1 -0
  284. package/dist/shell/Shell.js +10 -0
  285. package/dist/shell/Shell.js.map +1 -0
  286. package/dist/shell/Shell.messages.d.ts +58 -0
  287. package/dist/shell/Shell.messages.js +60 -0
  288. package/dist/shell/Shell.messages.js.map +1 -0
  289. package/dist/shell/app.d.ts +3 -0
  290. package/dist/shell/app.js +35 -0
  291. package/dist/shell/app.js.map +1 -0
  292. package/dist/shell/babel.config.d.ts +2 -0
  293. package/{runtime → dist/shell}/babel.config.js +2 -1
  294. package/dist/shell/babel.config.js.map +1 -0
  295. package/dist/shell/dev/devFooter/app.d.ts +3 -0
  296. package/dist/shell/dev/devFooter/app.js +36 -0
  297. package/dist/shell/dev/devFooter/app.js.map +1 -0
  298. package/dist/shell/dev/devFooter/index.js +2 -0
  299. package/dist/shell/dev/devFooter/index.js.map +1 -0
  300. package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
  301. package/dist/shell/dev/devHeader/BarContext.js +8 -0
  302. package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
  303. package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
  304. package/dist/shell/dev/devHeader/BarLink.js +10 -0
  305. package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
  306. package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
  307. package/dist/shell/dev/devHeader/BarProvider.js +16 -0
  308. package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
  309. package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
  310. package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
  311. package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
  312. package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
  313. package/dist/shell/dev/devHeader/FooContext.js +8 -0
  314. package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
  315. package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
  316. package/dist/shell/dev/devHeader/FooLink.js +10 -0
  317. package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
  318. package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
  319. package/dist/shell/dev/devHeader/FooProvider.js +16 -0
  320. package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
  321. package/dist/shell/dev/devHeader/app.d.ts +3 -0
  322. package/dist/shell/dev/devHeader/app.js +34 -0
  323. package/dist/shell/dev/devHeader/app.js.map +1 -0
  324. package/dist/shell/dev/devHeader/index.js +2 -0
  325. package/dist/shell/dev/devHeader/index.js.map +1 -0
  326. package/dist/shell/dev/devHeader/providers.d.ts +3 -0
  327. package/dist/shell/dev/devHeader/providers.js +8 -0
  328. package/dist/shell/dev/devHeader/providers.js.map +1 -0
  329. package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
  330. package/dist/shell/dev/devHome/HomePage.js +13 -0
  331. package/dist/shell/dev/devHome/HomePage.js.map +1 -0
  332. package/dist/shell/dev/devHome/app.d.ts +3 -0
  333. package/dist/shell/dev/devHome/app.js +16 -0
  334. package/dist/shell/dev/devHome/app.js.map +1 -0
  335. package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
  336. package/dist/shell/dev/devHome/i18n/index.js +28 -0
  337. package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
  338. package/dist/shell/dev/devHome/index.js +2 -0
  339. package/dist/shell/dev/devHome/index.js.map +1 -0
  340. package/dist/shell/dev/devHome/messages.d.ts +8 -0
  341. package/dist/shell/dev/devHome/messages.js +10 -0
  342. package/dist/shell/dev/devHome/messages.js.map +1 -0
  343. package/dist/shell/dev/devUser/app.d.ts +3 -0
  344. package/dist/shell/dev/devUser/app.js +22 -0
  345. package/dist/shell/dev/devUser/app.js.map +1 -0
  346. package/dist/shell/dev/devUser/index.js +2 -0
  347. package/dist/shell/dev/devUser/index.js.map +1 -0
  348. package/dist/shell/dev/index.js +6 -0
  349. package/dist/shell/dev/index.js.map +1 -0
  350. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
  351. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +7 -0
  352. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
  353. package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
  354. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
  355. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
  356. package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +1 -0
  357. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +8 -0
  358. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
  359. package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
  360. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
  361. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
  362. package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
  363. package/dist/shell/dev/slotShowcase/app.js +336 -0
  364. package/dist/shell/dev/slotShowcase/app.js.map +1 -0
  365. package/dist/shell/dev/slotShowcase/index.js +2 -0
  366. package/dist/shell/dev/slotShowcase/index.js.map +1 -0
  367. package/dist/shell/footer/CenterLinks.d.ts +1 -0
  368. package/dist/shell/footer/CenterLinks.js +7 -0
  369. package/dist/shell/footer/CenterLinks.js.map +1 -0
  370. package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
  371. package/dist/shell/footer/CopyrightNotice.js +10 -0
  372. package/dist/shell/footer/CopyrightNotice.js.map +1 -0
  373. package/dist/shell/footer/Footer.d.ts +1 -0
  374. package/dist/shell/footer/Footer.js +12 -0
  375. package/dist/shell/footer/Footer.js.map +1 -0
  376. package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
  377. package/dist/shell/footer/LabeledLinkColumn.js +11 -0
  378. package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
  379. package/dist/shell/footer/LanguageMenu.d.ts +1 -0
  380. package/dist/shell/footer/LanguageMenu.js +16 -0
  381. package/dist/shell/footer/LanguageMenu.js.map +1 -0
  382. package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
  383. package/dist/shell/footer/LanguageMenuItem.js +11 -0
  384. package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
  385. package/dist/shell/footer/LeftLinks.d.ts +1 -0
  386. package/dist/shell/footer/LeftLinks.js +7 -0
  387. package/dist/shell/footer/LeftLinks.js.map +1 -0
  388. package/dist/shell/footer/LegalNotices.d.ts +1 -0
  389. package/dist/shell/footer/LegalNotices.js +10 -0
  390. package/dist/shell/footer/LegalNotices.js.map +1 -0
  391. package/dist/shell/footer/PoweredBy.d.ts +1 -0
  392. package/dist/shell/footer/PoweredBy.js +9 -0
  393. package/dist/shell/footer/PoweredBy.js.map +1 -0
  394. package/dist/shell/footer/RevealLinks.d.ts +1 -0
  395. package/dist/shell/footer/RevealLinks.js +16 -0
  396. package/dist/shell/footer/RevealLinks.js.map +1 -0
  397. package/dist/shell/footer/RightLinks.d.ts +1 -0
  398. package/dist/shell/footer/RightLinks.js +7 -0
  399. package/dist/shell/footer/RightLinks.js.map +1 -0
  400. package/dist/shell/footer/app.d.ts +3 -0
  401. package/dist/shell/footer/app.js +59 -0
  402. package/dist/shell/footer/app.js.map +1 -0
  403. package/dist/shell/footer/data/api.d.ts +1 -0
  404. package/dist/shell/footer/data/api.js +45 -0
  405. package/dist/shell/footer/data/api.js.map +1 -0
  406. package/dist/shell/footer/index.js +3 -0
  407. package/dist/shell/footer/index.js.map +1 -0
  408. package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
  409. package/dist/shell/header/AuthenticatedMenu.js +13 -0
  410. package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
  411. package/dist/shell/header/Header.d.ts +1 -0
  412. package/dist/shell/header/Header.js +8 -0
  413. package/dist/shell/header/Header.js.map +1 -0
  414. package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
  415. package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
  416. package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
  417. package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
  418. package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
  419. package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
  420. package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
  421. package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
  422. package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
  423. package/dist/shell/header/app.d.ts +3 -0
  424. package/dist/shell/header/app.js +119 -0
  425. package/dist/shell/header/app.js.map +1 -0
  426. package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
  427. package/dist/shell/header/desktop/DesktopLayout.js +9 -0
  428. package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
  429. package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
  430. package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
  431. package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
  432. package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
  433. package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
  434. package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
  435. package/dist/shell/header/index.js +3 -0
  436. package/dist/shell/header/index.js.map +1 -0
  437. package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
  438. package/dist/shell/header/mobile/MobileLayout.js +17 -0
  439. package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
  440. package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
  441. package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
  442. package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
  443. package/dist/shell/i18n/index.d.ts +25 -0
  444. package/dist/shell/i18n/index.js +26 -0
  445. package/dist/shell/i18n/index.js.map +1 -0
  446. package/dist/shell/index.js +8 -0
  447. package/dist/shell/index.js.map +1 -0
  448. package/dist/shell/jest.config.d.ts +16 -0
  449. package/{tools/dist/jest → dist/shell}/jest.config.js +13 -11
  450. package/dist/shell/jest.config.js.map +1 -0
  451. package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
  452. package/dist/shell/menus/LinkMenuItem.js +36 -0
  453. package/dist/shell/menus/LinkMenuItem.js.map +1 -0
  454. package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
  455. package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
  456. package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
  457. package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
  458. package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
  459. package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
  460. package/dist/shell/menus/data/utils.d.ts +4 -0
  461. package/dist/shell/menus/data/utils.js +13 -0
  462. package/dist/shell/menus/data/utils.js.map +1 -0
  463. package/dist/shell/router/createRouter.d.ts +1 -0
  464. package/{shell/router/createRouter.ts → dist/shell/router/createRouter.js} +9 -11
  465. package/dist/shell/router/createRouter.js.map +1 -0
  466. package/dist/shell/router/getAppRoutes.d.ts +2 -0
  467. package/dist/shell/router/getAppRoutes.js +14 -0
  468. package/dist/shell/router/getAppRoutes.js.map +1 -0
  469. package/dist/shell/setupTest.d.ts +1 -0
  470. package/{shell → dist/shell}/setupTest.js +6 -7
  471. package/dist/shell/setupTest.js.map +1 -0
  472. package/dist/shell/site.config.dev.d.ts +4 -0
  473. package/dist/shell/site.config.dev.js +43 -0
  474. package/dist/shell/site.config.dev.js.map +1 -0
  475. package/dist/shell/site.d.ts +1 -0
  476. package/dist/shell/site.js +35 -0
  477. package/dist/shell/site.js.map +1 -0
  478. package/dist/tools/babel/babel.config.d.ts +12 -0
  479. package/dist/tools/cli/commands/serve.d.ts +1 -0
  480. package/dist/tools/cli/intl-imports.d.ts +7 -0
  481. package/dist/tools/cli/intl-imports.test.d.ts +1 -0
  482. package/dist/tools/cli/openedx.d.ts +2 -0
  483. package/{tools/dist → dist/tools}/cli/openedx.js +1 -1
  484. package/dist/tools/cli/transifex-utils.d.ts +2 -0
  485. package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
  486. package/dist/tools/cli/utils/formatter.d.ts +1 -0
  487. package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
  488. package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
  489. package/dist/tools/cli/utils/printUsage.d.ts +1 -0
  490. package/dist/tools/config-helpers/createConfig.d.ts +2 -0
  491. package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
  492. package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
  493. package/dist/tools/defaultConfigPaths.d.ts +8 -0
  494. package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
  495. package/dist/tools/eslint.config.d.ts +3 -0
  496. package/dist/tools/index.d.ts +3 -0
  497. package/dist/tools/jest/jest.config.d.ts +15 -0
  498. package/dist/tools/jest.config.d.ts +8 -0
  499. package/dist/tools/types.d.ts +18 -0
  500. package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
  501. package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
  502. package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
  503. package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
  504. package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
  505. package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
  506. package/dist/tools/webpack/common-config/index.d.ts +6 -0
  507. package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
  508. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +18 -0
  509. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
  510. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
  511. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
  512. package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
  513. package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
  514. package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
  515. package/{config → dist/tools}/webpack/webpack.config.build.js +8 -5
  516. package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
  517. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +8 -5
  518. package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
  519. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.shell.js +0 -4
  520. package/dist/types.d.ts +82 -0
  521. package/dist/types.js +7 -0
  522. package/dist/types.js.map +1 -0
  523. package/package.json +21 -16
  524. package/config/tsconfig.json +0 -32
  525. package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  526. package/config/webpack/utils/getLocalAliases.js +0 -65
  527. package/config/webpack/webpack.config.dev.js +0 -70
  528. package/config/webpack/webpack.config.dev.shell.js +0 -104
  529. package/runtime/__mocks__/file.js +0 -1
  530. package/runtime/__mocks__/svg.js +0 -1
  531. package/runtime/__mocks__/universal-cookie.js +0 -6
  532. package/runtime/analytics/MockAnalyticsService.js +0 -71
  533. package/runtime/analytics/SegmentAnalyticsService.js +0 -243
  534. package/runtime/analytics/index.ts +0 -12
  535. package/runtime/analytics/interface.test.js +0 -242
  536. package/runtime/auth/AxiosCsrfTokenService.js +0 -60
  537. package/runtime/auth/AxiosJwtAuthService.js +0 -363
  538. package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
  539. package/runtime/auth/AxiosJwtTokenService.js +0 -134
  540. package/runtime/auth/LocalForageCache.js +0 -76
  541. package/runtime/auth/MockAuthService.js +0 -278
  542. package/runtime/auth/index.ts +0 -19
  543. package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
  544. package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
  545. package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
  546. package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
  547. package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
  548. package/runtime/auth/utils.js +0 -105
  549. package/runtime/config/getExternalLinkUrl.test.js +0 -76
  550. package/runtime/i18n/injectIntlWithShim.jsx +0 -48
  551. package/runtime/i18n/lib.test.js +0 -230
  552. package/runtime/i18n/lib.ts +0 -272
  553. package/runtime/index.ts +0 -139
  554. package/runtime/initialize.async.function.config.test.js +0 -43
  555. package/runtime/initialize.const.config.test.js +0 -41
  556. package/runtime/initialize.function.config.test.js +0 -41
  557. package/runtime/initialize.js +0 -352
  558. package/runtime/initialize.test.js +0 -356
  559. package/runtime/jest.config.js +0 -33
  560. package/runtime/logging/MockLoggingService.js +0 -31
  561. package/runtime/logging/NewRelicLoggingService.js +0 -184
  562. package/runtime/logging/NewRelicLoggingService.test.js +0 -214
  563. package/runtime/logging/types.ts +0 -4
  564. package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
  565. package/runtime/react/CombinedAppProvider.tsx +0 -46
  566. package/runtime/react/CurrentAppProvider.tsx +0 -46
  567. package/runtime/react/Divider.tsx +0 -5
  568. package/runtime/react/ErrorBoundary.jsx +0 -47
  569. package/runtime/react/ErrorBoundary.test.jsx +0 -83
  570. package/runtime/react/ErrorPage.jsx +0 -72
  571. package/runtime/react/SiteProvider.test.jsx +0 -66
  572. package/runtime/react/SiteProvider.tsx +0 -101
  573. package/runtime/react/hooks/theme/useTheme.test.ts +0 -221
  574. package/runtime/react/hooks/theme/useTheme.ts +0 -179
  575. package/runtime/react/hooks/theme/useThemeConfig.test.ts +0 -107
  576. package/runtime/react/hooks/theme/useThemeCore.test.ts +0 -65
  577. package/runtime/react/hooks/theme/useThemeCore.ts +0 -52
  578. package/runtime/react/hooks/theme/useThemeVariants.test.ts +0 -97
  579. package/runtime/react/hooks/theme/useThemeVariants.ts +0 -116
  580. package/runtime/react/hooks/theme/useTrackColorSchemeChoice.test.ts +0 -54
  581. package/runtime/react/hooks/theme/useTrackColorSchemeChoice.ts +0 -30
  582. package/runtime/react/hooks/useActiveRouteRoleWatcher.ts +0 -31
  583. package/runtime/react/hooks/useAuthenticatedUser.test.tsx +0 -41
  584. package/runtime/react/hooks/useSiteConfig.test.tsx +0 -13
  585. package/runtime/react/reducers.ts +0 -40
  586. package/runtime/routing/utils.test.ts +0 -7
  587. package/runtime/routing/utils.ts +0 -34
  588. package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
  589. package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
  590. package/runtime/site.config.test.tsx +0 -33
  591. package/runtime/slots/Slot.test.tsx +0 -40
  592. package/runtime/slots/Slot.tsx +0 -32
  593. package/runtime/slots/SlotContext.tsx +0 -8
  594. package/runtime/slots/hooks.ts +0 -35
  595. package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
  596. package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
  597. package/runtime/slots/layout/hooks.test.tsx +0 -178
  598. package/runtime/slots/layout/hooks.ts +0 -65
  599. package/runtime/slots/layout/utils.test.ts +0 -67
  600. package/runtime/slots/layout/utils.ts +0 -14
  601. package/runtime/slots/utils.test.ts +0 -64
  602. package/runtime/slots/utils.ts +0 -78
  603. package/runtime/slots/widget/WidgetContext.tsx +0 -9
  604. package/runtime/slots/widget/WidgetProvider.tsx +0 -30
  605. package/runtime/slots/widget/hooks.ts +0 -105
  606. package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
  607. package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
  608. package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
  609. package/runtime/slots/widget/iframe/hooks.ts +0 -179
  610. package/runtime/slots/widget/utils.tsx +0 -201
  611. package/runtime/testing/initializeMockApp.test.ts +0 -66
  612. package/runtime/testing/mockMessages.ts +0 -23
  613. package/runtime/utils.test.js +0 -116
  614. package/shell/DefaultLayout.tsx +0 -18
  615. package/shell/DefaultMain.tsx +0 -7
  616. package/shell/Logo.test.tsx +0 -32
  617. package/shell/Logo.tsx +0 -28
  618. package/shell/Shell.messages.ts +0 -61
  619. package/shell/Shell.tsx +0 -18
  620. package/shell/__mocks__/file.js +0 -1
  621. package/shell/__mocks__/svg.js +0 -1
  622. package/shell/__mocks__/universal-cookie.js +0 -6
  623. package/shell/app.ts +0 -38
  624. package/shell/dev/devFooter/app.tsx +0 -43
  625. package/shell/dev/devHeader/BarContext.tsx +0 -13
  626. package/shell/dev/devHeader/BarLink.tsx +0 -16
  627. package/shell/dev/devHeader/BarProvider.tsx +0 -25
  628. package/shell/dev/devHeader/CoursesLink.tsx +0 -16
  629. package/shell/dev/devHeader/FooContext.tsx +0 -13
  630. package/shell/dev/devHeader/FooLink.tsx +0 -16
  631. package/shell/dev/devHeader/FooProvider.tsx +0 -25
  632. package/shell/dev/devHeader/app.tsx +0 -53
  633. package/shell/dev/devHeader/providers.tsx +0 -11
  634. package/shell/dev/devHome/HomePage.tsx +0 -28
  635. package/shell/dev/devHome/app.ts +0 -18
  636. package/shell/dev/devHome/i18n/index.ts +0 -27
  637. package/shell/dev/devHome/messages.ts +0 -11
  638. package/shell/dev/devUser/app.tsx +0 -24
  639. package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
  640. package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
  641. package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
  642. package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
  643. package/shell/dev/slotShowcase/app.tsx +0 -373
  644. package/shell/footer/CenterLinks.tsx +0 -11
  645. package/shell/footer/CopyrightNotice.tsx +0 -36
  646. package/shell/footer/Footer.tsx +0 -34
  647. package/shell/footer/LabeledLinkColumn.tsx +0 -19
  648. package/shell/footer/LanguageMenu.tsx +0 -35
  649. package/shell/footer/LanguageMenuItem.tsx +0 -23
  650. package/shell/footer/LeftLinks.tsx +0 -11
  651. package/shell/footer/LegalNotices.tsx +0 -17
  652. package/shell/footer/PoweredBy.tsx +0 -17
  653. package/shell/footer/RevealLinks.tsx +0 -43
  654. package/shell/footer/RightLinks.tsx +0 -11
  655. package/shell/footer/app.tsx +0 -73
  656. package/shell/footer/data/api.ts +0 -48
  657. package/shell/header/AuthenticatedMenu.tsx +0 -32
  658. package/shell/header/Header.tsx +0 -17
  659. package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
  660. package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
  661. package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
  662. package/shell/header/app.tsx +0 -142
  663. package/shell/header/desktop/DesktopLayout.tsx +0 -22
  664. package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
  665. package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
  666. package/shell/header/mobile/MobileLayout.tsx +0 -47
  667. package/shell/header/mobile/MobileNavLinks.tsx +0 -10
  668. package/shell/i18n/index.ts +0 -25
  669. package/shell/jest.config.js +0 -31
  670. package/shell/menus/LinkMenuItem.tsx +0 -64
  671. package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
  672. package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
  673. package/shell/menus/data/utils.ts +0 -19
  674. package/shell/public/index.html +0 -10
  675. package/shell/router/createRouter.test.tsx +0 -50
  676. package/shell/router/getAppRoutes.test.tsx +0 -59
  677. package/shell/router/getAppRoutes.ts +0 -21
  678. package/shell/site.config.dev.tsx +0 -49
  679. package/shell/site.config.test.tsx +0 -16
  680. package/shell/site.tsx +0 -41
  681. package/tools/dist/babel/babel.config.js +0 -28
  682. package/tools/dist/config-helpers/createConfig.js +0 -13
  683. package/tools/dist/config-helpers/createLintConfig.js +0 -16
  684. package/tools/dist/config-helpers/getBaseConfig.js +0 -12
  685. package/tools/dist/defaultConfigPaths.js +0 -35
  686. package/tools/dist/eslint/base.eslint.config.js +0 -113
  687. package/tools/dist/index.js +0 -12
  688. package/tools/dist/types.js +0 -23
  689. package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
  690. package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
  691. package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  692. package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
  693. package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
  694. package/tools/dist/webpack/common-config/dev/getDevServer.js +0 -38
  695. package/tools/dist/webpack/common-config/index.js +0 -18
  696. package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
  697. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
  698. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
  699. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  700. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
  701. package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
  702. package/tools/dist/webpack/utils/getPublicPath.js +0 -6
  703. package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
  704. package/tools/dist/webpack/webpack.config.build.js +0 -70
  705. package/types.ts +0 -119
  706. /package/{runtime/react/hooks/theme/index.ts → dist/runtime/react/hooks/theme/index.d.ts} +0 -0
  707. /package/{runtime/routing/index.ts → dist/runtime/routing/index.d.ts} +0 -0
  708. /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
  709. /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
  710. /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
  711. /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
  712. /package/{shell → dist/shell}/app.scss +0 -0
  713. /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
  714. /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
  715. /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
  716. /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
  717. /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
  718. /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
  719. /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
  720. /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
  721. /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
  722. /package/{config → dist/tools}/babel/babel.config.js +0 -0
  723. /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
  724. /package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
  725. /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
  726. /package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
  727. /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
  728. /package/{tools/dist → dist/tools}/cli/utils/formatter.js +0 -0
  729. /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
  730. /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
  731. /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
  732. /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
  733. /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
  734. /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
  735. /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
  736. /package/{config → dist/tools}/eslint/base.eslint.config.js +0 -0
  737. /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
  738. /package/{config → dist/tools}/index.js +0 -0
  739. /package/{config → dist/tools}/jest/jest.config.js +0 -0
  740. /package/{tools/dist → dist/tools}/jest.config.js +0 -0
  741. /package/{config → dist/tools}/types.js +0 -0
  742. /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
  743. /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
  744. /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
  745. /package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +0 -0
  746. /package/{config → dist/tools}/webpack/common-config/dev/getDevServer.js +0 -0
  747. /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
  748. /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
  749. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
  750. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
  751. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
  752. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
  753. /package/{config → dist/tools}/webpack/utils/getPublicPath.js +0 -0
  754. /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * The default handler for the initialization lifecycle's `initError` phase. Logs the error to the
3
+ * LoggingService using `logError`
4
+ *
5
+ * @see {@link module:frontend-base~logError}
6
+ * @param {*} error
7
+ */
8
+ export function initError(error: any): Promise<void>;
9
+ /**
10
+ * The default handler for the initialization lifecycle's `auth` phase.
11
+ *
12
+ * The handler has several responsibilities:
13
+ * - Determining the user's authentication state (authenticated or anonymous)
14
+ * - Optionally redirecting to login if the application requires an authenticated user.
15
+ * - Optionally loading additional user information via the application's user account data
16
+ * endpoint.
17
+ *
18
+ * @param {boolean} requireUser Whether or not we should redirect to login if a user is not
19
+ * authenticated.
20
+ * @param {boolean} hydrateUser Whether or not we should fetch additional user account data.
21
+ */
22
+ export function auth(requireUser: boolean, hydrateUser: boolean): Promise<void>;
23
+ export function loadExternalScripts(externalScripts: any, data: any): void;
24
+ /**
25
+ * The default handler for the initialization lifecycle's `analytics` phase.
26
+ *
27
+ * The handler is responsible for identifying authenticated and anonymous users with the analytics
28
+ * service. This is a pre-requisite for sending analytics events, thus, we do it during the
29
+ * initialization sequence so that analytics is ready once the application's UI code starts to load.
30
+ *
31
+ */
32
+ export function analytics(): Promise<void>;
33
+ /**
34
+ * Invokes the application initialization sequence.
35
+ *
36
+ * The sequence proceeds through a number of lifecycle phases, during which pertinent services are
37
+ * configured.
38
+ *
39
+ * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom
40
+ * functionality. Note that while these override handlers _do_ replace the default handler
41
+ * functionality for analytics, auth, and initError (the other phases have no default
42
+ * functionality), they do _not_ override the configuration of the actual services that those
43
+ * handlers leverage.
44
+ *
45
+ * Some services can be overridden via the loggingService and analyticsService options. The other
46
+ * services (auth and i18n) cannot currently be overridden.
47
+ *
48
+ * The following lifecycle phases exist:
49
+ *
50
+ * - pubSub: A no-op by default.
51
+ * - config: A no-op by default.
52
+ * - logging: A no-op by default.
53
+ * - auth: Uses the 'auth' handler defined above.
54
+ * - analytics: Uses the 'analytics' handler defined above.
55
+ * - i18n: A no-op by default.
56
+ * - ready: A no-op by default.
57
+ * - initError: Uses the 'initError' handler defined above.
58
+ *
59
+ * @param {Object} [options]
60
+ * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation
61
+ * to use.
62
+ * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`
63
+ * implementation to use.
64
+ * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.
65
+ * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.
66
+ * By default added GoogleAnalyticsLoader.
67
+ * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login
68
+ * redirection for unauthenticated users. Defaults to false, meaning that by default the
69
+ * application will allow anonymous/unauthenticated sessions.
70
+ * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user
71
+ * account endpoint (`${App.config.lmsBaseUrl}/api/user/v1/accounts/${username}`) to fetch
72
+ * detailed account information for the authenticated user. This data is merged into the return
73
+ * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to
74
+ * false, meaning that no additional account information will be loaded.
75
+ * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If
76
+ * an array is provided, duplicate keys are resolved with the last-one-in winning.
77
+ * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the
78
+ * default behavior of any part of the startup sequence. It can also be used to add additional
79
+ * initialization behavior before or after the rest of the sequence.
80
+ */
81
+ export function initialize({ loggingService, analyticsService, authService, authMiddleware, externalScripts, requireAuthenticatedUser: requireUser, hydrateAuthenticatedUser: hydrateUser, messages, handlers: overrideHandlers, }?: {
82
+ loggingService?: any;
83
+ analyticsService?: any;
84
+ authMiddleware?: any;
85
+ externalScripts?: any;
86
+ requireAuthenticatedUser?: any;
87
+ hydrateAuthenticatedUser?: any;
88
+ messages?: any;
89
+ handlers?: any;
90
+ }): Promise<void>;
91
+ export function getBasename(): string | undefined;
@@ -0,0 +1,312 @@
1
+ /**
2
+ * #### Import members from **@openedx/frontend-base**
3
+ *
4
+ * The initialization module provides a function for managing an application's initialization
5
+ * lifecycle. It also provides constants and default handler implementations.
6
+ *
7
+ * ```
8
+ * import {
9
+ * initialize,
10
+ * SITE_INIT_ERROR,
11
+ * SITE_READY,
12
+ * subscribe,
13
+ * SiteProvider,
14
+ * ErrorPage,
15
+ * PageWrap
16
+ * } from '@openedx/frontend-base';
17
+ * import React from 'react';
18
+ * import ReactDOM from 'react-dom';
19
+ * import { Routes, Route } from 'react-router-dom';
20
+ *
21
+ * subscribe(SITE_READY, () => {
22
+ * ReactDOM.render(
23
+ * <SiteProvider>
24
+ * <Header />
25
+ * <main>
26
+ * <Routes>
27
+ * <Route path="/" element={<PageWrap><PaymentPage /></PageWrap>} />
28
+ * </Routes>
29
+ * </main>
30
+ * <Footer />
31
+ * </SiteProvider>,
32
+ * document.getElementById('root'),
33
+ * );
34
+ * });
35
+ *
36
+ * subscribe(SITE_INIT_ERROR, (error) => {
37
+ * ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));
38
+ * });
39
+ *
40
+ * initialize({
41
+ * messages: [appMessages],
42
+ * requireAuthenticatedUser: true,
43
+ * hydrateAuthenticatedUser: true,
44
+ * });
45
+
46
+ ```
47
+ * @module Initialization
48
+ */
49
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
50
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
51
+ return new (P || (P = Promise))(function (resolve, reject) {
52
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
53
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
54
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
55
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
56
+ });
57
+ };
58
+ /*
59
+ This 'site.config' package is a special 'magic' alias in our webpack configuration in the `config`
60
+ folder. It points at an `site.config.tsx` file in the root of a site's repository.
61
+ */
62
+ import siteConfig from 'site.config';
63
+ import { configureAnalytics, identifyAnonymousUser, identifyAuthenticatedUser, SegmentAnalyticsService, } from './analytics';
64
+ import { AxiosJwtAuthService, configureAuth, ensureAuthenticatedUser, fetchAuthenticatedUser, getAuthenticatedHttpClient, getAuthenticatedUser, hydrateAuthenticatedUser, } from './auth';
65
+ import configureCache from './auth/LocalForageCache';
66
+ import { getSiteConfig, mergeSiteConfig, } from './config';
67
+ import { SITE_ANALYTICS_INITIALIZED, SITE_AUTH_INITIALIZED, SITE_CONFIG_INITIALIZED, SITE_I18N_INITIALIZED, SITE_INIT_ERROR, SITE_LOGGING_INITIALIZED, SITE_PUBSUB_INITIALIZED, SITE_READY, } from './constants';
68
+ import { configureI18n } from './i18n';
69
+ import { configureLogging, getLoggingService, logError, NewRelicLoggingService, } from './logging';
70
+ import { GoogleAnalyticsLoader } from './scripts';
71
+ import { publish } from './subscriptions';
72
+ import { EnvironmentTypes } from '../types';
73
+ /**
74
+ * If set in configuration, a basename will be prepended to all relative routes under BrowserRouter.
75
+ *
76
+ * Unlike webpack's publicPath, the basename cannot be auto-discovered, so when publicPath is set
77
+ * (or when it's set to 'auto' and the site is being served from a path other than '/') this
78
+ * needs to be configured.
79
+ */
80
+ export const getBasename = () => getSiteConfig().basename;
81
+ /**
82
+ * The default handler for the initialization lifecycle's `initError` phase. Logs the error to the
83
+ * LoggingService using `logError`
84
+ *
85
+ * @see {@link module:frontend-base~logError}
86
+ * @param {*} error
87
+ */
88
+ export function initError(error) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ logError(error);
91
+ });
92
+ }
93
+ /**
94
+ * The default handler for the initialization lifecycle's `auth` phase.
95
+ *
96
+ * The handler has several responsibilities:
97
+ * - Determining the user's authentication state (authenticated or anonymous)
98
+ * - Optionally redirecting to login if the application requires an authenticated user.
99
+ * - Optionally loading additional user information via the application's user account data
100
+ * endpoint.
101
+ *
102
+ * @param {boolean} requireUser Whether or not we should redirect to login if a user is not
103
+ * authenticated.
104
+ * @param {boolean} hydrateUser Whether or not we should fetch additional user account data.
105
+ */
106
+ export function auth(requireUser, hydrateUser) {
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ if (requireUser) {
109
+ yield ensureAuthenticatedUser(globalThis.location.href);
110
+ }
111
+ else {
112
+ yield fetchAuthenticatedUser();
113
+ }
114
+ if (hydrateUser && getAuthenticatedUser() !== null) {
115
+ // We intentionally do not await the promise returned by hydrateAuthenticatedUser. All the
116
+ // critical data is returned as part of fetch/ensureAuthenticatedUser above, and anything else
117
+ // is a nice-to-have for application code.
118
+ hydrateAuthenticatedUser();
119
+ }
120
+ });
121
+ }
122
+ /**
123
+ * Set or overrides configuration via an site.config.tsx file in the consuming application.
124
+ * This site.config.tsx is loaded at runtime and must export one of two things:
125
+ *
126
+ * - An object which will be merged into the application config via `mergeSiteConfig`.
127
+ * - A function which returns an object which will be merged into the application config via
128
+ * `mergeSiteConfig`. This function can return a promise.
129
+ */
130
+ function fileConfig() {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ let config = {};
133
+ if (typeof siteConfig === 'function') {
134
+ config = yield siteConfig();
135
+ }
136
+ else {
137
+ config = siteConfig;
138
+ }
139
+ mergeSiteConfig(config);
140
+ });
141
+ }
142
+ /*
143
+ * Set or overrides configuration through an API.
144
+ * This method allows runtime configuration.
145
+ * Set a basic configuration when an error happen and allow initError and display the ErrorPage.
146
+ */
147
+ function runtimeConfig() {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ try {
150
+ const { runtimeConfigJsonUrl, environment } = getSiteConfig();
151
+ if (runtimeConfigJsonUrl) {
152
+ const apiConfig = { headers: { accept: 'application/json' } };
153
+ const apiService = yield configureCache();
154
+ const runtimeConfigUrl = new URL(runtimeConfigJsonUrl);
155
+ // In development mode, add a timestamp as a cache buster
156
+ // to support live-editing runtime config JSON
157
+ if (environment === EnvironmentTypes.DEVELOPMENT) {
158
+ runtimeConfigUrl.searchParams.set('timestamp', Date.now());
159
+ }
160
+ const { data } = yield apiService.get(runtimeConfigUrl.toString(), apiConfig);
161
+ mergeSiteConfig(data, { limitAppMergeToConfig: true });
162
+ }
163
+ }
164
+ catch (error) {
165
+ console.error('Error with config API', error.message);
166
+ }
167
+ });
168
+ }
169
+ export function loadExternalScripts(externalScripts, data) {
170
+ externalScripts.forEach(ExternalScript => {
171
+ const script = new ExternalScript(data);
172
+ script.loadScript();
173
+ });
174
+ }
175
+ /**
176
+ * The default handler for the initialization lifecycle's `analytics` phase.
177
+ *
178
+ * The handler is responsible for identifying authenticated and anonymous users with the analytics
179
+ * service. This is a pre-requisite for sending analytics events, thus, we do it during the
180
+ * initialization sequence so that analytics is ready once the application's UI code starts to load.
181
+ *
182
+ */
183
+ export function analytics() {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ const authenticatedUser = getAuthenticatedUser();
186
+ if (authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.userId) {
187
+ identifyAuthenticatedUser(authenticatedUser.userId);
188
+ }
189
+ else {
190
+ yield identifyAnonymousUser();
191
+ }
192
+ });
193
+ }
194
+ function applyOverrideHandlers(overrides) {
195
+ const noOp = () => __awaiter(this, void 0, void 0, function* () { });
196
+ return Object.assign({ pubSub: noOp, config: noOp, logging: noOp, auth,
197
+ analytics, i18n: noOp, ready: noOp, initError }, overrides);
198
+ }
199
+ /**
200
+ * Invokes the application initialization sequence.
201
+ *
202
+ * The sequence proceeds through a number of lifecycle phases, during which pertinent services are
203
+ * configured.
204
+ *
205
+ * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom
206
+ * functionality. Note that while these override handlers _do_ replace the default handler
207
+ * functionality for analytics, auth, and initError (the other phases have no default
208
+ * functionality), they do _not_ override the configuration of the actual services that those
209
+ * handlers leverage.
210
+ *
211
+ * Some services can be overridden via the loggingService and analyticsService options. The other
212
+ * services (auth and i18n) cannot currently be overridden.
213
+ *
214
+ * The following lifecycle phases exist:
215
+ *
216
+ * - pubSub: A no-op by default.
217
+ * - config: A no-op by default.
218
+ * - logging: A no-op by default.
219
+ * - auth: Uses the 'auth' handler defined above.
220
+ * - analytics: Uses the 'analytics' handler defined above.
221
+ * - i18n: A no-op by default.
222
+ * - ready: A no-op by default.
223
+ * - initError: Uses the 'initError' handler defined above.
224
+ *
225
+ * @param {Object} [options]
226
+ * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation
227
+ * to use.
228
+ * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`
229
+ * implementation to use.
230
+ * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.
231
+ * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.
232
+ * By default added GoogleAnalyticsLoader.
233
+ * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login
234
+ * redirection for unauthenticated users. Defaults to false, meaning that by default the
235
+ * application will allow anonymous/unauthenticated sessions.
236
+ * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user
237
+ * account endpoint (`${App.config.lmsBaseUrl}/api/user/v1/accounts/${username}`) to fetch
238
+ * detailed account information for the authenticated user. This data is merged into the return
239
+ * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to
240
+ * false, meaning that no additional account information will be loaded.
241
+ * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If
242
+ * an array is provided, duplicate keys are resolved with the last-one-in winning.
243
+ * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the
244
+ * default behavior of any part of the startup sequence. It can also be used to add additional
245
+ * initialization behavior before or after the rest of the sequence.
246
+ */
247
+ export function initialize(_a) {
248
+ return __awaiter(this, arguments, void 0, function* ({ loggingService = NewRelicLoggingService, analyticsService = SegmentAnalyticsService, authService = AxiosJwtAuthService, authMiddleware = [], externalScripts = [GoogleAnalyticsLoader], requireAuthenticatedUser: requireUser = false, hydrateAuthenticatedUser: hydrateUser = false, messages, handlers: overrideHandlers = {}, }) {
249
+ var _b, _c, _d;
250
+ const handlers = applyOverrideHandlers(overrideHandlers);
251
+ try {
252
+ // Pub/Sub
253
+ yield handlers.pubSub();
254
+ publish(SITE_PUBSUB_INITIALIZED);
255
+ // Configuration
256
+ yield fileConfig();
257
+ yield handlers.config();
258
+ yield runtimeConfig();
259
+ publish(SITE_CONFIG_INITIALIZED);
260
+ loadExternalScripts(externalScripts, {
261
+ config: getSiteConfig(),
262
+ });
263
+ // This allows us to replace the implementations of the logging, analytics, and auth services
264
+ // based on keys in the SiteConfig. The JavaScript File Configuration method is the only
265
+ // one capable of supplying an alternate implementation since it can import other modules.
266
+ // If a service wasn't supplied we fall back to the default parameters on the initialize
267
+ // function signature.
268
+ const loggingServiceImpl = (_b = getSiteConfig().loggingService) !== null && _b !== void 0 ? _b : loggingService;
269
+ const analyticsServiceImpl = (_c = getSiteConfig().analyticsService) !== null && _c !== void 0 ? _c : analyticsService;
270
+ const authServiceImpl = (_d = getSiteConfig().authService) !== null && _d !== void 0 ? _d : authService;
271
+ // Logging
272
+ configureLogging(loggingServiceImpl, {
273
+ config: getSiteConfig(),
274
+ });
275
+ yield handlers.logging();
276
+ publish(SITE_LOGGING_INITIALIZED);
277
+ // Internationalization
278
+ configureI18n({
279
+ messages,
280
+ });
281
+ yield handlers.i18n();
282
+ publish(SITE_I18N_INITIALIZED);
283
+ // Authentication
284
+ configureAuth(authServiceImpl, {
285
+ loggingService: getLoggingService(),
286
+ config: getSiteConfig(),
287
+ middleware: authMiddleware,
288
+ });
289
+ yield handlers.auth(requireUser, hydrateUser);
290
+ publish(SITE_AUTH_INITIALIZED);
291
+ // Analytics
292
+ configureAnalytics(analyticsServiceImpl, {
293
+ config: getSiteConfig(),
294
+ loggingService: getLoggingService(),
295
+ httpClient: getAuthenticatedHttpClient(),
296
+ });
297
+ yield handlers.analytics();
298
+ publish(SITE_ANALYTICS_INITIALIZED);
299
+ // Application Ready
300
+ yield handlers.ready();
301
+ publish(SITE_READY);
302
+ }
303
+ catch (error) {
304
+ if (!error.isRedirecting) {
305
+ // Initialization Error
306
+ yield handlers.initError(error);
307
+ publish(SITE_INIT_ERROR, error);
308
+ }
309
+ }
310
+ });
311
+ }
312
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../runtime/initialize.js"],"names":[],"mappings":"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","sourcesContent":["/**\n * #### Import members from **@openedx/frontend-base**\n *\n * The initialization module provides a function for managing an application's initialization\n * lifecycle. It also provides constants and default handler implementations.\n *\n * ```\n * import {\n * initialize,\n * SITE_INIT_ERROR,\n * SITE_READY,\n * subscribe,\n * SiteProvider,\n * ErrorPage,\n * PageWrap\n * } from '@openedx/frontend-base';\n * import React from 'react';\n * import ReactDOM from 'react-dom';\n * import { Routes, Route } from 'react-router-dom';\n *\n * subscribe(SITE_READY, () => {\n * ReactDOM.render(\n * <SiteProvider>\n * <Header />\n * <main>\n * <Routes>\n * <Route path=\"/\" element={<PageWrap><PaymentPage /></PageWrap>} />\n * </Routes>\n * </main>\n * <Footer />\n * </SiteProvider>,\n * document.getElementById('root'),\n * );\n * });\n *\n * subscribe(SITE_INIT_ERROR, (error) => {\n * ReactDOM.render(<ErrorPage message={error.message} />, document.getElementById('root'));\n * });\n *\n * initialize({\n * messages: [appMessages],\n * requireAuthenticatedUser: true,\n * hydrateAuthenticatedUser: true,\n * });\n\n```\n * @module Initialization\n */\n\n/*\nThis 'site.config' package is a special 'magic' alias in our webpack configuration in the `config`\nfolder. It points at an `site.config.tsx` file in the root of a site's repository.\n*/\nimport siteConfig from 'site.config';\nimport {\n configureAnalytics,\n identifyAnonymousUser,\n identifyAuthenticatedUser,\n SegmentAnalyticsService,\n} from './analytics';\nimport {\n AxiosJwtAuthService,\n configureAuth,\n ensureAuthenticatedUser,\n fetchAuthenticatedUser,\n getAuthenticatedHttpClient,\n getAuthenticatedUser,\n hydrateAuthenticatedUser,\n} from './auth';\nimport configureCache from './auth/LocalForageCache';\nimport {\n getSiteConfig, mergeSiteConfig,\n} from './config';\nimport {\n SITE_ANALYTICS_INITIALIZED,\n SITE_AUTH_INITIALIZED,\n SITE_CONFIG_INITIALIZED,\n SITE_I18N_INITIALIZED,\n SITE_INIT_ERROR,\n SITE_LOGGING_INITIALIZED,\n SITE_PUBSUB_INITIALIZED,\n SITE_READY,\n} from './constants';\nimport { configureI18n } from './i18n';\nimport {\n configureLogging,\n getLoggingService,\n logError,\n NewRelicLoggingService,\n} from './logging';\nimport { GoogleAnalyticsLoader } from './scripts';\nimport { publish } from './subscriptions';\nimport { EnvironmentTypes } from '../types';\n\n/**\n * If set in configuration, a basename will be prepended to all relative routes under BrowserRouter.\n *\n * Unlike webpack's publicPath, the basename cannot be auto-discovered, so when publicPath is set\n * (or when it's set to 'auto' and the site is being served from a path other than '/') this\n * needs to be configured.\n */\nexport const getBasename = () => getSiteConfig().basename;\n\n/**\n * The default handler for the initialization lifecycle's `initError` phase. Logs the error to the\n * LoggingService using `logError`\n *\n * @see {@link module:frontend-base~logError}\n * @param {*} error\n */\nexport async function initError(error) {\n logError(error);\n}\n\n/**\n * The default handler for the initialization lifecycle's `auth` phase.\n *\n * The handler has several responsibilities:\n * - Determining the user's authentication state (authenticated or anonymous)\n * - Optionally redirecting to login if the application requires an authenticated user.\n * - Optionally loading additional user information via the application's user account data\n * endpoint.\n *\n * @param {boolean} requireUser Whether or not we should redirect to login if a user is not\n * authenticated.\n * @param {boolean} hydrateUser Whether or not we should fetch additional user account data.\n */\nexport async function auth(requireUser, hydrateUser) {\n if (requireUser) {\n await ensureAuthenticatedUser(globalThis.location.href);\n } else {\n await fetchAuthenticatedUser();\n }\n\n if (hydrateUser && getAuthenticatedUser() !== null) {\n // We intentionally do not await the promise returned by hydrateAuthenticatedUser. All the\n // critical data is returned as part of fetch/ensureAuthenticatedUser above, and anything else\n // is a nice-to-have for application code.\n hydrateAuthenticatedUser();\n }\n}\n\n/**\n * Set or overrides configuration via an site.config.tsx file in the consuming application.\n * This site.config.tsx is loaded at runtime and must export one of two things:\n *\n * - An object which will be merged into the application config via `mergeSiteConfig`.\n * - A function which returns an object which will be merged into the application config via\n * `mergeSiteConfig`. This function can return a promise.\n */\nasync function fileConfig() {\n let config = {};\n if (typeof siteConfig === 'function') {\n config = await siteConfig();\n } else {\n config = siteConfig;\n }\n\n mergeSiteConfig(config);\n}\n\n/*\n * Set or overrides configuration through an API.\n * This method allows runtime configuration.\n * Set a basic configuration when an error happen and allow initError and display the ErrorPage.\n */\nasync function runtimeConfig() {\n try {\n const { runtimeConfigJsonUrl, environment } = getSiteConfig();\n\n if (runtimeConfigJsonUrl) {\n const apiConfig = { headers: { accept: 'application/json' } };\n const apiService = await configureCache();\n\n const runtimeConfigUrl = new URL(runtimeConfigJsonUrl);\n\n // In development mode, add a timestamp as a cache buster\n // to support live-editing runtime config JSON\n if (environment === EnvironmentTypes.DEVELOPMENT) {\n runtimeConfigUrl.searchParams.set('timestamp', Date.now());\n }\n\n const { data } = await apiService.get(runtimeConfigUrl.toString(), apiConfig);\n mergeSiteConfig(data, { limitAppMergeToConfig: true });\n }\n } catch (error) {\n console.error('Error with config API', error.message);\n }\n}\n\nexport function loadExternalScripts(externalScripts, data) {\n externalScripts.forEach(ExternalScript => {\n const script = new ExternalScript(data);\n script.loadScript();\n });\n}\n\n/**\n * The default handler for the initialization lifecycle's `analytics` phase.\n *\n * The handler is responsible for identifying authenticated and anonymous users with the analytics\n * service. This is a pre-requisite for sending analytics events, thus, we do it during the\n * initialization sequence so that analytics is ready once the application's UI code starts to load.\n *\n */\nexport async function analytics() {\n const authenticatedUser = getAuthenticatedUser();\n if (authenticatedUser?.userId) {\n identifyAuthenticatedUser(authenticatedUser.userId);\n } else {\n await identifyAnonymousUser();\n }\n}\n\nfunction applyOverrideHandlers(overrides) {\n const noOp = async () => { };\n return {\n pubSub: noOp,\n config: noOp,\n logging: noOp,\n auth,\n analytics,\n i18n: noOp,\n ready: noOp,\n initError,\n ...overrides, // This will override any same-keyed handlers from above.\n };\n}\n\n/**\n * Invokes the application initialization sequence.\n *\n * The sequence proceeds through a number of lifecycle phases, during which pertinent services are\n * configured.\n *\n * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom\n * functionality. Note that while these override handlers _do_ replace the default handler\n * functionality for analytics, auth, and initError (the other phases have no default\n * functionality), they do _not_ override the configuration of the actual services that those\n * handlers leverage.\n *\n * Some services can be overridden via the loggingService and analyticsService options. The other\n * services (auth and i18n) cannot currently be overridden.\n *\n * The following lifecycle phases exist:\n *\n * - pubSub: A no-op by default.\n * - config: A no-op by default.\n * - logging: A no-op by default.\n * - auth: Uses the 'auth' handler defined above.\n * - analytics: Uses the 'analytics' handler defined above.\n * - i18n: A no-op by default.\n * - ready: A no-op by default.\n * - initError: Uses the 'initError' handler defined above.\n *\n * @param {Object} [options]\n * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation\n * to use.\n * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`\n * implementation to use.\n * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.\n * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.\n * By default added GoogleAnalyticsLoader.\n * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login\n * redirection for unauthenticated users. Defaults to false, meaning that by default the\n * application will allow anonymous/unauthenticated sessions.\n * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user\n * account endpoint (`${App.config.lmsBaseUrl}/api/user/v1/accounts/${username}`) to fetch\n * detailed account information for the authenticated user. This data is merged into the return\n * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to\n * false, meaning that no additional account information will be loaded.\n * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If\n * an array is provided, duplicate keys are resolved with the last-one-in winning.\n * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the\n * default behavior of any part of the startup sequence. It can also be used to add additional\n * initialization behavior before or after the rest of the sequence.\n */\nexport async function initialize({\n loggingService = NewRelicLoggingService,\n analyticsService = SegmentAnalyticsService,\n authService = AxiosJwtAuthService,\n authMiddleware = [],\n externalScripts = [GoogleAnalyticsLoader],\n requireAuthenticatedUser: requireUser = false,\n hydrateAuthenticatedUser: hydrateUser = false,\n messages,\n handlers: overrideHandlers = {},\n}) {\n const handlers = applyOverrideHandlers(overrideHandlers);\n try {\n // Pub/Sub\n await handlers.pubSub();\n publish(SITE_PUBSUB_INITIALIZED);\n\n // Configuration\n await fileConfig();\n await handlers.config();\n await runtimeConfig();\n publish(SITE_CONFIG_INITIALIZED);\n\n loadExternalScripts(externalScripts, {\n config: getSiteConfig(),\n });\n\n // This allows us to replace the implementations of the logging, analytics, and auth services\n // based on keys in the SiteConfig. The JavaScript File Configuration method is the only\n // one capable of supplying an alternate implementation since it can import other modules.\n // If a service wasn't supplied we fall back to the default parameters on the initialize\n // function signature.\n const loggingServiceImpl = getSiteConfig().loggingService ?? loggingService;\n const analyticsServiceImpl = getSiteConfig().analyticsService ?? analyticsService;\n const authServiceImpl = getSiteConfig().authService ?? authService;\n\n // Logging\n configureLogging(loggingServiceImpl, {\n config: getSiteConfig(),\n });\n await handlers.logging();\n publish(SITE_LOGGING_INITIALIZED);\n\n // Internationalization\n configureI18n({\n messages,\n });\n await handlers.i18n();\n publish(SITE_I18N_INITIALIZED);\n\n // Authentication\n configureAuth(authServiceImpl, {\n loggingService: getLoggingService(),\n config: getSiteConfig(),\n middleware: authMiddleware,\n });\n\n await handlers.auth(requireUser, hydrateUser);\n publish(SITE_AUTH_INITIALIZED);\n\n // Analytics\n configureAnalytics(analyticsServiceImpl, {\n config: getSiteConfig(),\n loggingService: getLoggingService(),\n httpClient: getAuthenticatedHttpClient(),\n });\n await handlers.analytics();\n publish(SITE_ANALYTICS_INITIALIZED);\n\n // Application Ready\n await handlers.ready();\n publish(SITE_READY);\n } catch (error) {\n if (!error.isRedirecting) {\n // Initialization Error\n await handlers.initError(error);\n publish(SITE_INIT_ERROR, error);\n }\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ export let setupFilesAfterEnv: string[];
2
+ export let moduleNameMapper: {
3
+ '\\.svg$': string;
4
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': string;
5
+ '\\.(css|scss)$': string;
6
+ 'site.config': string;
7
+ '^@src/(.*)$': string;
8
+ };
9
+ export let testEnvironment: string;
10
+ export namespace testEnvironmentOptions {
11
+ let url: string;
12
+ }
13
+ export let collectCoverageFrom: string[];
14
+ export let coveragePathIgnorePatterns: string[];
15
+ export let transformIgnorePatterns: string[];
16
+ export let modulePathIgnorePatterns: string[];
17
+ export let testPathIgnorePatterns: string[];
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ module.exports = {
3
+ setupFilesAfterEnv: [
4
+ '<rootDir>/setupTest.js',
5
+ ],
6
+ moduleNameMapper: {
7
+ '\\.svg$': '<rootDir>/__mocks__/svg.js',
8
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir/__mocks__/file.js',
9
+ '\\.(css|scss)$': require.resolve('identity-obj-proxy'),
10
+ 'site.config': '<rootDir>/site.config.test.tsx',
11
+ '^@src/(.*)$': '<rootDir>/src/$1',
12
+ },
13
+ testEnvironment: 'jsdom',
14
+ testEnvironmentOptions: {
15
+ url: 'http://localhost/',
16
+ },
17
+ collectCoverageFrom: [
18
+ '<rootDir>/**/*.{js,jsx,ts,tsx}',
19
+ ],
20
+ coveragePathIgnorePatterns: [
21
+ '<rootDir>/setupTest.js',
22
+ ],
23
+ transformIgnorePatterns: [
24
+ '/node_modules/(?!(@openedx|@edx)/)',
25
+ ],
26
+ modulePathIgnorePatterns: [
27
+ '/dist/',
28
+ ],
29
+ testPathIgnorePatterns: [
30
+ '/site.config.test.tsx',
31
+ '/node_modules/',
32
+ '/dist/',
33
+ ],
34
+ };
35
+ //# sourceMappingURL=jest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../../runtime/jest.config.js"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,GAAG;IACf,kBAAkB,EAAE;QAClB,wBAAwB;KACzB;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,4BAA4B;QACvC,iFAAiF,EAAE,4BAA4B;QAC/G,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACvD,aAAa,EAAE,gCAAgC;QAC/C,aAAa,EAAE,kBAAkB;KAClC;IACD,eAAe,EAAE,OAAO;IACxB,sBAAsB,EAAE;QACtB,GAAG,EAAE,mBAAmB;KACzB;IACD,mBAAmB,EAAE;QACnB,gCAAgC;KACjC;IACD,0BAA0B,EAAE;QAC1B,wBAAwB;KACzB;IACD,uBAAuB,EAAE;QACvB,oCAAoC;KACrC;IACD,wBAAwB,EAAE;QACxB,QAAQ;KACT;IACD,sBAAsB,EAAE;QACtB,uBAAuB;QACvB,gBAAgB;QAChB,QAAQ;KACT;CACF,CAAC","sourcesContent":["module.exports = {\n setupFilesAfterEnv: [\n '<rootDir>/setupTest.js',\n ],\n moduleNameMapper: {\n '\\\\.svg$': '<rootDir>/__mocks__/svg.js',\n '\\\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir/__mocks__/file.js',\n '\\\\.(css|scss)$': require.resolve('identity-obj-proxy'),\n 'site.config': '<rootDir>/site.config.test.tsx',\n '^@src/(.*)$': '<rootDir>/src/$1',\n },\n testEnvironment: 'jsdom',\n testEnvironmentOptions: {\n url: 'http://localhost/',\n },\n collectCoverageFrom: [\n '<rootDir>/**/*.{js,jsx,ts,tsx}',\n ],\n coveragePathIgnorePatterns: [\n '<rootDir>/setupTest.js',\n ],\n transformIgnorePatterns: [\n '/node_modules/(?!(@openedx|@edx)/)',\n ],\n modulePathIgnorePatterns: [\n '/dist/',\n ],\n testPathIgnorePatterns: [\n '/site.config.test.tsx',\n '/node_modules/',\n '/dist/',\n ],\n};\n"]}
@@ -0,0 +1,28 @@
1
+ export default MockLoggingService;
2
+ /**
3
+ * The MockLoggingService implements both logInfo and logError as jest mock functions via
4
+ * jest.fn(). It has no other functionality.
5
+ *
6
+ * @implements {LoggingService}
7
+ * @memberof module:Logging
8
+ */
9
+ declare class MockLoggingService implements LoggingService {
10
+ /**
11
+ * Implemented as a jest.fn()
12
+ *
13
+ * @memberof MockLoggingService
14
+ */
15
+ logInfo: jest.Mock<any, any, any>;
16
+ /**
17
+ * Implemented as a jest.fn()
18
+ *
19
+ * @memberof MockLoggingService
20
+ */
21
+ logError: jest.Mock<any, any, any>;
22
+ /**
23
+ * Implemented as a jest.fn()
24
+ *
25
+ * @memberof MockLoggingService
26
+ */
27
+ setCustomAttribute: jest.Mock<any, any, any>;
28
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The MockLoggingService implements both logInfo and logError as jest mock functions via
3
+ * jest.fn(). It has no other functionality.
4
+ *
5
+ * @implements {LoggingService}
6
+ * @memberof module:Logging
7
+ */
8
+ class MockLoggingService {
9
+ constructor() {
10
+ /**
11
+ * Implemented as a jest.fn()
12
+ *
13
+ * @memberof MockLoggingService
14
+ */
15
+ this.logInfo = jest.fn();
16
+ /**
17
+ * Implemented as a jest.fn()
18
+ *
19
+ * @memberof MockLoggingService
20
+ */
21
+ this.logError = jest.fn();
22
+ /**
23
+ * Implemented as a jest.fn()
24
+ *
25
+ * @memberof MockLoggingService
26
+ */
27
+ this.setCustomAttribute = jest.fn();
28
+ }
29
+ }
30
+ export default MockLoggingService;
31
+ //# sourceMappingURL=MockLoggingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockLoggingService.js","sourceRoot":"","sources":["../../../runtime/logging/MockLoggingService.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,kBAAkB;IAAxB;QACE;;;;WAIG;QACH,YAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAEpB;;;;WAIG;QACH,aAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErB;;;;WAIG;QACH,uBAAkB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACjC,CAAC;CAAA;AAED,eAAe,kBAAkB,CAAC","sourcesContent":["/**\n * The MockLoggingService implements both logInfo and logError as jest mock functions via\n * jest.fn(). It has no other functionality.\n *\n * @implements {LoggingService}\n * @memberof module:Logging\n */\nclass MockLoggingService {\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logInfo = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n logError = jest.fn();\n\n /**\n * Implemented as a jest.fn()\n *\n * @memberof MockLoggingService\n */\n setCustomAttribute = jest.fn();\n}\n\nexport default MockLoggingService;\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * NewRelic will not log an error if it is too long.
3
+ *
4
+ * @ignore
5
+ */
6
+ export const MAX_ERROR_LENGTH: 4000;
7
+ /**
8
+ * The NewRelicLoggingService is a concrete implementation of the logging service interface that
9
+ * sends messages to NewRelic that can be seen in NewRelic Browser and NewRelic Insights. When in
10
+ * development mode, all messages will instead be sent to the console.
11
+ *
12
+ * When you use `logError`, your errors will be checked to see if they're ignored *or* not.
13
+ * Not-ignored errors will appear under "JS errors" for your Browser application.
14
+ *
15
+ * ```
16
+ * SELECT * from JavaScriptError WHERE errorStatus is not null SINCE 10 days ago
17
+ * ```
18
+ *
19
+ * Ignored errors will appear in New Relic Insights as page actions, which can be queried:
20
+ *
21
+ * ```
22
+ * SELECT * from PageAction WHERE actionName = 'IGNORED_ERROR' SINCE 1 hour ago
23
+ * ```
24
+ *
25
+ * When using `logInfo`, these only appear in New Relic Insights when querying for page actions as
26
+ * follows:
27
+ *
28
+ * ```
29
+ * SELECT * from PageAction WHERE actionName = 'INFO' SINCE 1 hour ago
30
+ * ```
31
+ *
32
+ * You can also add your own custom metrics as an additional argument, or see the code to find
33
+ * other standard custom attributes. By default, userId is added (via setCustomAttribute) for logged
34
+ * in users via the auth service (AuthAxiosJwtService).
35
+ *
36
+ * Requires the NewRelic Browser JavaScript snippet.
37
+ *
38
+ * @implements {LoggingService}
39
+ * @memberof module:Logging
40
+ */
41
+ export default class NewRelicLoggingService implements LoggingService {
42
+ constructor(options: any);
43
+ ignoredErrorRegexes: any;
44
+ /**
45
+ *
46
+ *
47
+ * @param {*} infoStringOrErrorObject
48
+ * @param {*} [customAttributes={}]
49
+ * @memberof NewRelicLoggingService
50
+ */
51
+ logInfo(infoStringOrErrorObject: any, customAttributes?: any): void;
52
+ /**
53
+ *
54
+ *
55
+ * @param {*} errorStringOrObject
56
+ * @param {*} [customAttributes={}]
57
+ * @memberof NewRelicLoggingService
58
+ */
59
+ logError(errorStringOrObject: any, customAttributes?: any): void;
60
+ /**
61
+ * Sets a custom attribute that will be included with all subsequent log messages.
62
+ *
63
+ * @param {string} name
64
+ * @param {string|number|null} value
65
+ */
66
+ setCustomAttribute(name: string, value: string | number | null): void;
67
+ }