@openedx/frontend-base 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (782) hide show
  1. package/README.md +27 -0
  2. package/{index.ts → dist/index.d.ts} +0 -3
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/runtime/analytics/MockAnalyticsService.d.ts +50 -0
  6. package/dist/runtime/analytics/MockAnalyticsService.js +64 -0
  7. package/dist/runtime/analytics/MockAnalyticsService.js.map +1 -0
  8. package/dist/runtime/analytics/SegmentAnalyticsService.d.ts +64 -0
  9. package/dist/runtime/analytics/SegmentAnalyticsService.js +218 -0
  10. package/dist/runtime/analytics/SegmentAnalyticsService.js.map +1 -0
  11. package/dist/runtime/analytics/index.d.ts +3 -0
  12. package/dist/runtime/analytics/index.js +4 -0
  13. package/dist/runtime/analytics/index.js.map +1 -0
  14. package/dist/runtime/analytics/interface.d.ts +53 -0
  15. package/{runtime → dist/runtime}/analytics/interface.js +26 -38
  16. package/dist/runtime/analytics/interface.js.map +1 -0
  17. package/dist/runtime/auth/AxiosCsrfTokenService.d.ts +10 -0
  18. package/dist/runtime/auth/AxiosCsrfTokenService.js +64 -0
  19. package/dist/runtime/auth/AxiosCsrfTokenService.js.map +1 -0
  20. package/dist/runtime/auth/AxiosJwtAuthService.d.ts +182 -0
  21. package/dist/runtime/auth/AxiosJwtAuthService.js +339 -0
  22. package/dist/runtime/auth/AxiosJwtAuthService.js.map +1 -0
  23. package/dist/runtime/auth/AxiosJwtTokenService.d.ts +16 -0
  24. package/dist/runtime/auth/AxiosJwtTokenService.js +130 -0
  25. package/dist/runtime/auth/AxiosJwtTokenService.js.map +1 -0
  26. package/dist/runtime/auth/LocalForageCache.d.ts +7 -0
  27. package/dist/runtime/auth/LocalForageCache.js +78 -0
  28. package/dist/runtime/auth/LocalForageCache.js.map +1 -0
  29. package/dist/runtime/auth/MockAuthService.d.ts +209 -0
  30. package/dist/runtime/auth/MockAuthService.js +256 -0
  31. package/dist/runtime/auth/MockAuthService.js.map +1 -0
  32. package/dist/runtime/auth/index.d.ts +3 -0
  33. package/dist/runtime/auth/index.js +4 -0
  34. package/dist/runtime/auth/index.js.map +1 -0
  35. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.d.ts +2 -0
  36. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +42 -0
  37. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -0
  38. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.d.ts +2 -0
  39. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +40 -0
  40. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -0
  41. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.d.ts +2 -0
  42. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +26 -0
  43. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -0
  44. package/dist/runtime/auth/interceptors/createRetryInterceptor.d.ts +3 -0
  45. package/dist/runtime/auth/interceptors/createRetryInterceptor.js +67 -0
  46. package/dist/runtime/auth/interceptors/createRetryInterceptor.js.map +1 -0
  47. package/dist/runtime/auth/interface.d.ts +133 -0
  48. package/{runtime → dist/runtime}/auth/interface.js +65 -72
  49. package/dist/runtime/auth/interface.js.map +1 -0
  50. package/dist/runtime/auth/utils.d.ts +13 -0
  51. package/dist/runtime/auth/utils.js +66 -0
  52. package/dist/runtime/auth/utils.js.map +1 -0
  53. package/dist/runtime/babel.config.d.ts +2 -0
  54. package/{runtime → dist/runtime}/babel.config.js +2 -1
  55. package/dist/runtime/babel.config.js.map +1 -0
  56. package/{runtime/config/index.ts → dist/runtime/config/index.d.ts} +28 -124
  57. package/dist/runtime/config/index.js +327 -0
  58. package/dist/runtime/config/index.js.map +1 -0
  59. package/dist/runtime/constants.d.ts +57 -0
  60. package/{runtime/constants.ts → dist/runtime/constants.js} +1 -11
  61. package/dist/runtime/constants.js.map +1 -0
  62. package/dist/runtime/i18n/index.d.ts +3 -0
  63. package/{runtime → dist/runtime}/i18n/index.js +4 -44
  64. package/dist/runtime/i18n/index.js.map +1 -0
  65. package/dist/runtime/i18n/injectIntlWithShim.d.ts +11 -0
  66. package/dist/runtime/i18n/injectIntlWithShim.js +45 -0
  67. package/dist/runtime/i18n/injectIntlWithShim.js.map +1 -0
  68. package/dist/runtime/i18n/lib.d.ts +119 -0
  69. package/dist/runtime/i18n/lib.js +236 -0
  70. package/dist/runtime/i18n/lib.js.map +1 -0
  71. package/dist/runtime/index.d.ts +13 -0
  72. package/dist/runtime/index.js +14 -0
  73. package/dist/runtime/index.js.map +1 -0
  74. package/dist/runtime/initialize.d.ts +91 -0
  75. package/dist/runtime/initialize.js +315 -0
  76. package/dist/runtime/initialize.js.map +1 -0
  77. package/dist/runtime/jest.config.d.ts +16 -0
  78. package/dist/runtime/jest.config.js +34 -0
  79. package/dist/runtime/jest.config.js.map +1 -0
  80. package/dist/runtime/logging/MockLoggingService.d.ts +28 -0
  81. package/dist/runtime/logging/MockLoggingService.js +31 -0
  82. package/dist/runtime/logging/MockLoggingService.js.map +1 -0
  83. package/dist/runtime/logging/NewRelicLoggingService.d.ts +67 -0
  84. package/dist/runtime/logging/NewRelicLoggingService.js +175 -0
  85. package/dist/runtime/logging/NewRelicLoggingService.js.map +1 -0
  86. package/{runtime/logging/index.ts → dist/runtime/logging/index.d.ts} +1 -7
  87. package/dist/runtime/logging/index.js +4 -0
  88. package/dist/runtime/logging/index.js.map +1 -0
  89. package/dist/runtime/logging/interface.d.ts +38 -0
  90. package/{runtime → dist/runtime}/logging/interface.js +16 -26
  91. package/dist/runtime/logging/interface.js.map +1 -0
  92. package/dist/runtime/logging/types.d.ts +4 -0
  93. package/dist/runtime/logging/types.js +2 -0
  94. package/dist/runtime/logging/types.js.map +1 -0
  95. package/dist/runtime/react/AuthenticatedPageRoute.d.ts +30 -0
  96. package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +13 -18
  97. package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
  98. package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
  99. package/dist/runtime/react/CombinedAppProvider.js +24 -0
  100. package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
  101. package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
  102. package/{runtime/react/CurrentAppContext.tsx → dist/runtime/react/CurrentAppContext.js} +3 -7
  103. package/dist/runtime/react/CurrentAppContext.js.map +1 -0
  104. package/dist/runtime/react/CurrentAppProvider.d.ts +23 -0
  105. package/dist/runtime/react/CurrentAppProvider.js +33 -0
  106. package/dist/runtime/react/CurrentAppProvider.js.map +1 -0
  107. package/dist/runtime/react/Divider.d.ts +1 -0
  108. package/dist/runtime/react/Divider.js +5 -0
  109. package/dist/runtime/react/Divider.js.map +1 -0
  110. package/dist/runtime/react/ErrorBoundary.d.ts +32 -0
  111. package/dist/runtime/react/ErrorBoundary.js +40 -0
  112. package/dist/runtime/react/ErrorBoundary.js.map +1 -0
  113. package/dist/runtime/react/ErrorPage.d.ts +17 -0
  114. package/dist/runtime/react/ErrorPage.js +29 -0
  115. package/dist/runtime/react/ErrorPage.js.map +1 -0
  116. package/dist/runtime/react/LoginRedirect.d.ts +8 -0
  117. package/{runtime/react/LoginRedirect.jsx → dist/runtime/react/LoginRedirect.js} +5 -5
  118. package/dist/runtime/react/LoginRedirect.js.map +1 -0
  119. package/dist/runtime/react/NotFoundPage.d.ts +2 -0
  120. package/dist/runtime/react/NotFoundPage.js +14 -0
  121. package/dist/runtime/react/NotFoundPage.js.map +1 -0
  122. package/dist/runtime/react/PageWrap.d.ts +8 -0
  123. package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
  124. package/dist/runtime/react/PageWrap.js.map +1 -0
  125. package/dist/runtime/react/SiteContext.d.ts +24 -0
  126. package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
  127. package/dist/runtime/react/SiteContext.js.map +1 -0
  128. package/dist/runtime/react/SiteProvider.d.ts +29 -0
  129. package/dist/runtime/react/SiteProvider.js +69 -0
  130. package/dist/runtime/react/SiteProvider.js.map +1 -0
  131. package/dist/runtime/react/constants.d.ts +3 -0
  132. package/dist/runtime/react/constants.js +4 -0
  133. package/dist/runtime/react/constants.js.map +1 -0
  134. package/dist/runtime/react/hooks/index.d.ts +7 -0
  135. package/dist/runtime/react/hooks/index.js +8 -0
  136. package/dist/runtime/react/hooks/index.js.map +1 -0
  137. package/dist/runtime/react/hooks/theme/index.d.ts +2 -0
  138. package/dist/runtime/react/hooks/theme/index.js +3 -0
  139. package/dist/runtime/react/hooks/theme/index.js.map +1 -0
  140. package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
  141. package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
  142. package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
  143. package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
  144. package/dist/runtime/react/hooks/theme/useThemeConfig.js +29 -0
  145. package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
  146. package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
  147. package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
  148. package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
  149. package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
  150. package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
  151. package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
  152. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
  153. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
  154. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
  155. package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
  156. package/dist/runtime/react/hooks/theme/utils.js +11 -0
  157. package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
  158. package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
  159. package/dist/runtime/react/hooks/useActiveRoles.js +13 -0
  160. package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
  161. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
  162. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
  163. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
  164. package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
  165. package/dist/runtime/react/hooks/useAppConfig.js +8 -0
  166. package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
  167. package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
  168. package/dist/runtime/react/hooks/useAuthenticatedUser.js +8 -0
  169. package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
  170. package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
  171. package/dist/runtime/react/hooks/useSiteConfig.js +8 -0
  172. package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
  173. package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
  174. package/dist/runtime/react/hooks/useSiteEvent.js +22 -0
  175. package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
  176. package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +1 -1
  177. package/dist/runtime/react/index.js +20 -0
  178. package/dist/runtime/react/index.js.map +1 -0
  179. package/dist/runtime/react/reducers.d.ts +11 -0
  180. package/dist/runtime/react/reducers.js +28 -0
  181. package/dist/runtime/react/reducers.js.map +1 -0
  182. package/dist/runtime/routing/authenticatedLoader.d.ts +2 -0
  183. package/dist/runtime/routing/authenticatedLoader.js +27 -0
  184. package/dist/runtime/routing/authenticatedLoader.js.map +1 -0
  185. package/dist/runtime/routing/index.d.ts +2 -0
  186. package/dist/runtime/routing/index.js +3 -0
  187. package/dist/runtime/routing/index.js.map +1 -0
  188. package/dist/runtime/routing/utils.d.ts +4 -0
  189. package/dist/runtime/routing/utils.js +43 -0
  190. package/dist/runtime/routing/utils.js.map +1 -0
  191. package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
  192. package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
  193. package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
  194. package/dist/runtime/scripts/index.js +2 -0
  195. package/dist/runtime/scripts/index.js.map +1 -0
  196. package/dist/runtime/setupTest.d.ts +1 -0
  197. package/dist/runtime/setupTest.js +12 -0
  198. package/dist/runtime/setupTest.js.map +1 -0
  199. package/dist/runtime/slots/Slot.d.ts +10 -0
  200. package/dist/runtime/slots/Slot.js +35 -0
  201. package/dist/runtime/slots/Slot.js.map +1 -0
  202. package/dist/runtime/slots/SlotContext.d.ts +8 -0
  203. package/dist/runtime/slots/SlotContext.js +7 -0
  204. package/dist/runtime/slots/SlotContext.js.map +1 -0
  205. package/dist/runtime/slots/hooks.d.ts +13 -0
  206. package/dist/runtime/slots/hooks.js +29 -0
  207. package/dist/runtime/slots/hooks.js.map +1 -0
  208. package/dist/runtime/slots/index.js +7 -0
  209. package/dist/runtime/slots/index.js.map +1 -0
  210. package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
  211. package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
  212. package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
  213. package/dist/runtime/slots/layout/hooks.d.ts +10 -0
  214. package/dist/runtime/slots/layout/hooks.js +57 -0
  215. package/dist/runtime/slots/layout/hooks.js.map +1 -0
  216. package/dist/runtime/slots/layout/index.js +5 -0
  217. package/dist/runtime/slots/layout/index.js.map +1 -0
  218. package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
  219. package/dist/runtime/slots/layout/types.js +12 -0
  220. package/dist/runtime/slots/layout/types.js.map +1 -0
  221. package/dist/runtime/slots/layout/utils.d.ts +5 -0
  222. package/dist/runtime/slots/layout/utils.js +11 -0
  223. package/dist/runtime/slots/layout/utils.js.map +1 -0
  224. package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
  225. package/dist/runtime/slots/types.js +7 -0
  226. package/dist/runtime/slots/types.js.map +1 -0
  227. package/dist/runtime/slots/utils.d.ts +3 -0
  228. package/dist/runtime/slots/utils.js +66 -0
  229. package/dist/runtime/slots/utils.js.map +1 -0
  230. package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
  231. package/dist/runtime/slots/widget/WidgetContext.js +8 -0
  232. package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
  233. package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
  234. package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
  235. package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
  236. package/dist/runtime/slots/widget/hooks.d.ts +13 -0
  237. package/dist/runtime/slots/widget/hooks.js +104 -0
  238. package/dist/runtime/slots/widget/hooks.js.map +1 -0
  239. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
  240. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
  241. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
  242. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
  243. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
  244. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
  245. package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
  246. package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
  247. package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
  248. package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
  249. package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
  250. package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
  251. package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
  252. package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
  253. package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
  254. package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
  255. package/dist/runtime/slots/widget/iframe/index.js +3 -0
  256. package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
  257. package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
  258. package/dist/runtime/slots/widget/iframe/types.js +3 -0
  259. package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
  260. package/dist/runtime/slots/widget/index.js +6 -0
  261. package/dist/runtime/slots/widget/index.js.map +1 -0
  262. package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +58 -84
  263. package/dist/runtime/slots/widget/types.js +41 -0
  264. package/dist/runtime/slots/widget/types.js.map +1 -0
  265. package/dist/runtime/slots/widget/utils.d.ts +22 -0
  266. package/dist/runtime/slots/widget/utils.js +184 -0
  267. package/dist/runtime/slots/widget/utils.js.map +1 -0
  268. package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
  269. package/dist/runtime/subscriptions.js +48 -0
  270. package/dist/runtime/subscriptions.js.map +1 -0
  271. package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
  272. package/dist/runtime/testing/index.js +9 -0
  273. package/dist/runtime/testing/index.js.map +1 -0
  274. package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
  275. package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -36
  276. package/dist/runtime/testing/initializeMockApp.js.map +1 -0
  277. package/dist/runtime/testing/mockMessages.d.ts +22 -0
  278. package/dist/runtime/testing/mockMessages.js +23 -0
  279. package/dist/runtime/testing/mockMessages.js.map +1 -0
  280. package/dist/runtime/utils.d.ts +95 -0
  281. package/{runtime → dist/runtime}/utils.js +55 -70
  282. package/dist/runtime/utils.js.map +1 -0
  283. package/dist/shell/DefaultLayout.d.ts +1 -0
  284. package/dist/shell/DefaultLayout.js +7 -0
  285. package/dist/shell/DefaultLayout.js.map +1 -0
  286. package/dist/shell/DefaultMain.d.ts +1 -0
  287. package/dist/shell/DefaultMain.js +6 -0
  288. package/dist/shell/DefaultMain.js.map +1 -0
  289. package/dist/shell/Logo.d.ts +6 -0
  290. package/dist/shell/Logo.js +14 -0
  291. package/dist/shell/Logo.js.map +1 -0
  292. package/dist/shell/Shell.d.ts +1 -0
  293. package/dist/shell/Shell.js +10 -0
  294. package/dist/shell/Shell.js.map +1 -0
  295. package/dist/shell/Shell.messages.d.ts +58 -0
  296. package/dist/shell/Shell.messages.js +60 -0
  297. package/dist/shell/Shell.messages.js.map +1 -0
  298. package/dist/shell/app.d.ts +3 -0
  299. package/dist/shell/app.js +35 -0
  300. package/dist/shell/app.js.map +1 -0
  301. package/{shell → dist/shell}/app.scss +2 -1
  302. package/dist/shell/babel.config.d.ts +2 -0
  303. package/{shell → dist/shell}/babel.config.js +2 -1
  304. package/dist/shell/babel.config.js.map +1 -0
  305. package/dist/shell/dev/devFooter/app.d.ts +3 -0
  306. package/dist/shell/dev/devFooter/app.js +36 -0
  307. package/dist/shell/dev/devFooter/app.js.map +1 -0
  308. package/dist/shell/dev/devFooter/index.js +2 -0
  309. package/dist/shell/dev/devFooter/index.js.map +1 -0
  310. package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
  311. package/dist/shell/dev/devHeader/BarContext.js +8 -0
  312. package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
  313. package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
  314. package/dist/shell/dev/devHeader/BarLink.js +10 -0
  315. package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
  316. package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
  317. package/dist/shell/dev/devHeader/BarProvider.js +16 -0
  318. package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
  319. package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
  320. package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
  321. package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
  322. package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
  323. package/dist/shell/dev/devHeader/FooContext.js +8 -0
  324. package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
  325. package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
  326. package/dist/shell/dev/devHeader/FooLink.js +10 -0
  327. package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
  328. package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
  329. package/dist/shell/dev/devHeader/FooProvider.js +16 -0
  330. package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
  331. package/dist/shell/dev/devHeader/app.d.ts +3 -0
  332. package/dist/shell/dev/devHeader/app.js +34 -0
  333. package/dist/shell/dev/devHeader/app.js.map +1 -0
  334. package/dist/shell/dev/devHeader/index.js +2 -0
  335. package/dist/shell/dev/devHeader/index.js.map +1 -0
  336. package/dist/shell/dev/devHeader/providers.d.ts +3 -0
  337. package/dist/shell/dev/devHeader/providers.js +8 -0
  338. package/dist/shell/dev/devHeader/providers.js.map +1 -0
  339. package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
  340. package/dist/shell/dev/devHome/HomePage.js +13 -0
  341. package/dist/shell/dev/devHome/HomePage.js.map +1 -0
  342. package/dist/shell/dev/devHome/app.d.ts +3 -0
  343. package/dist/shell/dev/devHome/app.js +16 -0
  344. package/dist/shell/dev/devHome/app.js.map +1 -0
  345. package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
  346. package/dist/shell/dev/devHome/i18n/index.js +28 -0
  347. package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
  348. package/dist/shell/dev/devHome/index.js +2 -0
  349. package/dist/shell/dev/devHome/index.js.map +1 -0
  350. package/dist/shell/dev/devHome/messages.d.ts +8 -0
  351. package/dist/shell/dev/devHome/messages.js +10 -0
  352. package/dist/shell/dev/devHome/messages.js.map +1 -0
  353. package/dist/shell/dev/devUser/app.d.ts +3 -0
  354. package/dist/shell/dev/devUser/app.js +22 -0
  355. package/dist/shell/dev/devUser/app.js.map +1 -0
  356. package/dist/shell/dev/devUser/index.js +2 -0
  357. package/dist/shell/dev/devUser/index.js.map +1 -0
  358. package/dist/shell/dev/index.js +6 -0
  359. package/dist/shell/dev/index.js.map +1 -0
  360. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
  361. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +8 -0
  362. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
  363. package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
  364. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
  365. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
  366. package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +2 -0
  367. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +17 -0
  368. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
  369. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.d.ts +1 -0
  370. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js +11 -0
  371. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js.map +1 -0
  372. package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
  373. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
  374. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
  375. package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
  376. package/dist/shell/dev/slotShowcase/app.js +372 -0
  377. package/dist/shell/dev/slotShowcase/app.js.map +1 -0
  378. package/dist/shell/dev/slotShowcase/index.js +2 -0
  379. package/dist/shell/dev/slotShowcase/index.js.map +1 -0
  380. package/dist/shell/footer/CenterLinks.d.ts +1 -0
  381. package/dist/shell/footer/CenterLinks.js +7 -0
  382. package/dist/shell/footer/CenterLinks.js.map +1 -0
  383. package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
  384. package/dist/shell/footer/CopyrightNotice.js +10 -0
  385. package/dist/shell/footer/CopyrightNotice.js.map +1 -0
  386. package/dist/shell/footer/Footer.d.ts +1 -0
  387. package/dist/shell/footer/Footer.js +12 -0
  388. package/dist/shell/footer/Footer.js.map +1 -0
  389. package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
  390. package/dist/shell/footer/LabeledLinkColumn.js +11 -0
  391. package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
  392. package/dist/shell/footer/LanguageMenu.d.ts +1 -0
  393. package/dist/shell/footer/LanguageMenu.js +16 -0
  394. package/dist/shell/footer/LanguageMenu.js.map +1 -0
  395. package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
  396. package/dist/shell/footer/LanguageMenuItem.js +11 -0
  397. package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
  398. package/dist/shell/footer/LeftLinks.d.ts +1 -0
  399. package/dist/shell/footer/LeftLinks.js +7 -0
  400. package/dist/shell/footer/LeftLinks.js.map +1 -0
  401. package/dist/shell/footer/LegalNotices.d.ts +1 -0
  402. package/dist/shell/footer/LegalNotices.js +10 -0
  403. package/dist/shell/footer/LegalNotices.js.map +1 -0
  404. package/dist/shell/footer/PoweredBy.d.ts +1 -0
  405. package/dist/shell/footer/PoweredBy.js +9 -0
  406. package/dist/shell/footer/PoweredBy.js.map +1 -0
  407. package/dist/shell/footer/RevealLinks.d.ts +1 -0
  408. package/dist/shell/footer/RevealLinks.js +16 -0
  409. package/dist/shell/footer/RevealLinks.js.map +1 -0
  410. package/dist/shell/footer/RightLinks.d.ts +1 -0
  411. package/dist/shell/footer/RightLinks.js +7 -0
  412. package/dist/shell/footer/RightLinks.js.map +1 -0
  413. package/dist/shell/footer/app.d.ts +3 -0
  414. package/dist/shell/footer/app.js +59 -0
  415. package/dist/shell/footer/app.js.map +1 -0
  416. package/dist/shell/footer/data/api.d.ts +1 -0
  417. package/dist/shell/footer/data/api.js +45 -0
  418. package/dist/shell/footer/data/api.js.map +1 -0
  419. package/dist/shell/footer/index.js +3 -0
  420. package/dist/shell/footer/index.js.map +1 -0
  421. package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
  422. package/dist/shell/header/AuthenticatedMenu.js +11 -0
  423. package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
  424. package/dist/shell/header/Header.d.ts +1 -0
  425. package/dist/shell/header/Header.js +8 -0
  426. package/dist/shell/header/Header.js.map +1 -0
  427. package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
  428. package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
  429. package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
  430. package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
  431. package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
  432. package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
  433. package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
  434. package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
  435. package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
  436. package/dist/shell/header/app.d.ts +3 -0
  437. package/dist/shell/header/app.js +119 -0
  438. package/dist/shell/header/app.js.map +1 -0
  439. package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
  440. package/dist/shell/header/desktop/DesktopLayout.js +9 -0
  441. package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
  442. package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
  443. package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
  444. package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
  445. package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
  446. package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
  447. package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
  448. package/dist/shell/header/index.js +3 -0
  449. package/dist/shell/header/index.js.map +1 -0
  450. package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
  451. package/dist/shell/header/mobile/MobileLayout.js +17 -0
  452. package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
  453. package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
  454. package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
  455. package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
  456. package/dist/shell/i18n/index.d.ts +25 -0
  457. package/dist/shell/i18n/index.js +26 -0
  458. package/dist/shell/i18n/index.js.map +1 -0
  459. package/dist/shell/index.js +8 -0
  460. package/dist/shell/index.js.map +1 -0
  461. package/dist/shell/jest.config.d.ts +15 -0
  462. package/{tools/dist/jest → dist/shell}/jest.config.js +12 -10
  463. package/dist/shell/jest.config.js.map +1 -0
  464. package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
  465. package/dist/shell/menus/LinkMenuItem.js +36 -0
  466. package/dist/shell/menus/LinkMenuItem.js.map +1 -0
  467. package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
  468. package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
  469. package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
  470. package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
  471. package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
  472. package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
  473. package/dist/shell/menus/data/utils.d.ts +4 -0
  474. package/dist/shell/menus/data/utils.js +13 -0
  475. package/dist/shell/menus/data/utils.js.map +1 -0
  476. package/dist/shell/router/createRouter.d.ts +1 -0
  477. package/dist/shell/router/createRouter.js +26 -0
  478. package/dist/shell/router/createRouter.js.map +1 -0
  479. package/dist/shell/router/getAppRoutes.d.ts +2 -0
  480. package/dist/shell/router/getAppRoutes.js +14 -0
  481. package/dist/shell/router/getAppRoutes.js.map +1 -0
  482. package/dist/shell/setupTest.d.ts +1 -0
  483. package/dist/shell/setupTest.js +12 -0
  484. package/dist/shell/setupTest.js.map +1 -0
  485. package/dist/shell/site.config.dev.d.ts +4 -0
  486. package/dist/shell/site.config.dev.js +43 -0
  487. package/dist/shell/site.config.dev.js.map +1 -0
  488. package/dist/shell/site.d.ts +1 -0
  489. package/dist/shell/site.js +35 -0
  490. package/dist/shell/site.js.map +1 -0
  491. package/dist/tools/babel/babel.config.d.ts +12 -0
  492. package/dist/tools/babel.config.d.ts +2 -0
  493. package/dist/tools/babel.config.js +3 -0
  494. package/dist/tools/cli/commands/serve.d.ts +1 -0
  495. package/dist/tools/cli/intl-imports.d.ts +7 -0
  496. package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
  497. package/dist/tools/cli/intl-imports.test.d.ts +1 -0
  498. package/dist/tools/cli/openedx.d.ts +2 -0
  499. package/{tools/dist → dist/tools}/cli/openedx.js +27 -8
  500. package/dist/tools/cli/transifex-utils.d.ts +2 -0
  501. package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
  502. package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
  503. package/dist/tools/cli/utils/formatter.d.ts +1 -0
  504. package/dist/tools/cli/utils/formatter.js +3 -0
  505. package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
  506. package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
  507. package/dist/tools/cli/utils/printUsage.d.ts +1 -0
  508. package/dist/tools/config-helpers/createConfig.d.ts +2 -0
  509. package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
  510. package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
  511. package/dist/tools/defaultConfigPaths.d.ts +8 -0
  512. package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
  513. package/{config → dist/tools}/eslint/base.eslint.config.js +5 -4
  514. package/dist/tools/eslint.config.d.ts +3 -0
  515. package/dist/tools/index.d.ts +3 -0
  516. package/dist/tools/jest/jest.config.d.ts +14 -0
  517. package/dist/tools/jest.config.d.ts +8 -0
  518. package/dist/tools/types.d.ts +18 -0
  519. package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
  520. package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
  521. package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
  522. package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
  523. package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
  524. package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +1 -1
  525. package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
  526. package/{tools/dist → dist/tools}/webpack/common-config/dev/getDevServer.js +3 -5
  527. package/dist/tools/webpack/common-config/index.d.ts +6 -0
  528. package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
  529. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +16 -0
  530. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
  531. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
  532. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
  533. package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
  534. package/{tools/dist → dist/tools}/webpack/utils/getPublicPath.js +1 -1
  535. package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
  536. package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
  537. package/{config → dist/tools}/webpack/webpack.config.build.js +8 -15
  538. package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
  539. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +12 -15
  540. package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
  541. package/{config → dist/tools}/webpack/webpack.config.dev.shell.js +4 -14
  542. package/dist/types.d.ts +84 -0
  543. package/dist/types.js +7 -0
  544. package/dist/types.js.map +1 -0
  545. package/package.json +28 -17
  546. package/config/tsconfig.json +0 -32
  547. package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  548. package/config/webpack/common-config/dev/getDevServer.js +0 -38
  549. package/config/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  550. package/config/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  551. package/config/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  552. package/config/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  553. package/config/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  554. package/config/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  555. package/config/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  556. package/config/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  557. package/config/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  558. package/config/webpack/types.js +0 -2
  559. package/config/webpack/utils/getLocalAliases.js +0 -65
  560. package/config/webpack/utils/getPublicPath.js +0 -6
  561. package/config/webpack/utils/paragonUtils.js +0 -138
  562. package/config/webpack/webpack.config.dev.js +0 -76
  563. package/runtime/__mocks__/file.js +0 -1
  564. package/runtime/__mocks__/svg.js +0 -1
  565. package/runtime/__mocks__/universal-cookie.js +0 -6
  566. package/runtime/analytics/MockAnalyticsService.js +0 -71
  567. package/runtime/analytics/SegmentAnalyticsService.js +0 -243
  568. package/runtime/analytics/index.ts +0 -12
  569. package/runtime/analytics/interface.test.js +0 -242
  570. package/runtime/auth/AxiosCsrfTokenService.js +0 -60
  571. package/runtime/auth/AxiosJwtAuthService.js +0 -363
  572. package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
  573. package/runtime/auth/AxiosJwtTokenService.js +0 -134
  574. package/runtime/auth/LocalForageCache.js +0 -76
  575. package/runtime/auth/MockAuthService.js +0 -278
  576. package/runtime/auth/index.ts +0 -19
  577. package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
  578. package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
  579. package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
  580. package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
  581. package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
  582. package/runtime/auth/utils.js +0 -105
  583. package/runtime/config/getExternalLinkUrl.test.js +0 -76
  584. package/runtime/i18n/injectIntlWithShim.jsx +0 -48
  585. package/runtime/i18n/lib.test.js +0 -230
  586. package/runtime/i18n/lib.ts +0 -272
  587. package/runtime/index.ts +0 -134
  588. package/runtime/initialize.async.function.config.test.js +0 -43
  589. package/runtime/initialize.const.config.test.js +0 -41
  590. package/runtime/initialize.function.config.test.js +0 -41
  591. package/runtime/initialize.js +0 -352
  592. package/runtime/initialize.test.js +0 -356
  593. package/runtime/jest.config.js +0 -32
  594. package/runtime/logging/MockLoggingService.js +0 -31
  595. package/runtime/logging/NewRelicLoggingService.js +0 -184
  596. package/runtime/logging/NewRelicLoggingService.test.js +0 -214
  597. package/runtime/logging/types.ts +0 -4
  598. package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
  599. package/runtime/react/CombinedAppProvider.tsx +0 -46
  600. package/runtime/react/CurrentAppProvider.tsx +0 -46
  601. package/runtime/react/Divider.tsx +0 -5
  602. package/runtime/react/ErrorBoundary.jsx +0 -47
  603. package/runtime/react/ErrorBoundary.test.jsx +0 -83
  604. package/runtime/react/ErrorPage.jsx +0 -72
  605. package/runtime/react/SiteProvider.test.jsx +0 -66
  606. package/runtime/react/SiteProvider.tsx +0 -78
  607. package/runtime/react/hooks.test.jsx +0 -104
  608. package/runtime/react/hooks.ts +0 -106
  609. package/runtime/routing/index.ts +0 -1
  610. package/runtime/routing/utils.test.ts +0 -7
  611. package/runtime/routing/utils.ts +0 -34
  612. package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
  613. package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
  614. package/runtime/setupTest.js +0 -49
  615. package/runtime/site.config.test.tsx +0 -33
  616. package/runtime/slots/Slot.test.tsx +0 -40
  617. package/runtime/slots/Slot.tsx +0 -32
  618. package/runtime/slots/SlotContext.tsx +0 -8
  619. package/runtime/slots/hooks.ts +0 -35
  620. package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
  621. package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
  622. package/runtime/slots/layout/hooks.test.tsx +0 -178
  623. package/runtime/slots/layout/hooks.ts +0 -65
  624. package/runtime/slots/layout/utils.test.ts +0 -67
  625. package/runtime/slots/layout/utils.ts +0 -14
  626. package/runtime/slots/utils.test.ts +0 -64
  627. package/runtime/slots/utils.ts +0 -78
  628. package/runtime/slots/widget/WidgetContext.tsx +0 -9
  629. package/runtime/slots/widget/WidgetProvider.tsx +0 -30
  630. package/runtime/slots/widget/hooks.ts +0 -105
  631. package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
  632. package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
  633. package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
  634. package/runtime/slots/widget/iframe/hooks.ts +0 -179
  635. package/runtime/slots/widget/utils.tsx +0 -201
  636. package/runtime/testing/initializeMockApp.test.ts +0 -66
  637. package/runtime/testing/mockMessages.ts +0 -23
  638. package/runtime/utils.test.js +0 -116
  639. package/shell/DefaultLayout.tsx +0 -18
  640. package/shell/DefaultMain.tsx +0 -7
  641. package/shell/Logo.test.tsx +0 -32
  642. package/shell/Logo.tsx +0 -28
  643. package/shell/Shell.messages.ts +0 -61
  644. package/shell/Shell.tsx +0 -18
  645. package/shell/__mocks__/file.js +0 -1
  646. package/shell/__mocks__/svg.js +0 -1
  647. package/shell/__mocks__/universal-cookie.js +0 -6
  648. package/shell/app.ts +0 -38
  649. package/shell/dev/devFooter/app.tsx +0 -43
  650. package/shell/dev/devHeader/BarContext.tsx +0 -13
  651. package/shell/dev/devHeader/BarLink.tsx +0 -16
  652. package/shell/dev/devHeader/BarProvider.tsx +0 -25
  653. package/shell/dev/devHeader/CoursesLink.tsx +0 -16
  654. package/shell/dev/devHeader/FooContext.tsx +0 -13
  655. package/shell/dev/devHeader/FooLink.tsx +0 -16
  656. package/shell/dev/devHeader/FooProvider.tsx +0 -25
  657. package/shell/dev/devHeader/app.tsx +0 -53
  658. package/shell/dev/devHeader/providers.tsx +0 -11
  659. package/shell/dev/devHome/HomePage.tsx +0 -28
  660. package/shell/dev/devHome/app.ts +0 -18
  661. package/shell/dev/devHome/i18n/index.ts +0 -27
  662. package/shell/dev/devHome/messages.ts +0 -11
  663. package/shell/dev/devUser/app.tsx +0 -24
  664. package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
  665. package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
  666. package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
  667. package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
  668. package/shell/dev/slotShowcase/app.tsx +0 -373
  669. package/shell/footer/CenterLinks.tsx +0 -11
  670. package/shell/footer/CopyrightNotice.tsx +0 -36
  671. package/shell/footer/Footer.tsx +0 -34
  672. package/shell/footer/LabeledLinkColumn.tsx +0 -19
  673. package/shell/footer/LanguageMenu.tsx +0 -35
  674. package/shell/footer/LanguageMenuItem.tsx +0 -23
  675. package/shell/footer/LeftLinks.tsx +0 -11
  676. package/shell/footer/LegalNotices.tsx +0 -17
  677. package/shell/footer/PoweredBy.tsx +0 -17
  678. package/shell/footer/RevealLinks.tsx +0 -43
  679. package/shell/footer/RightLinks.tsx +0 -11
  680. package/shell/footer/app.tsx +0 -73
  681. package/shell/footer/data/api.ts +0 -48
  682. package/shell/header/AuthenticatedMenu.tsx +0 -32
  683. package/shell/header/Header.tsx +0 -17
  684. package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
  685. package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
  686. package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
  687. package/shell/header/app.tsx +0 -142
  688. package/shell/header/desktop/DesktopLayout.tsx +0 -22
  689. package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
  690. package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
  691. package/shell/header/mobile/MobileLayout.tsx +0 -47
  692. package/shell/header/mobile/MobileNavLinks.tsx +0 -10
  693. package/shell/i18n/index.ts +0 -25
  694. package/shell/jest.config.js +0 -30
  695. package/shell/menus/LinkMenuItem.tsx +0 -64
  696. package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
  697. package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
  698. package/shell/menus/data/utils.ts +0 -19
  699. package/shell/public/index.html +0 -10
  700. package/shell/router/createRouter.test.tsx +0 -50
  701. package/shell/router/createRouter.ts +0 -17
  702. package/shell/router/getAppRoutes.test.tsx +0 -59
  703. package/shell/router/getAppRoutes.ts +0 -21
  704. package/shell/setupTest.js +0 -48
  705. package/shell/site.config.dev.tsx +0 -49
  706. package/shell/site.config.test.tsx +0 -16
  707. package/shell/site.tsx +0 -41
  708. package/tools/dist/babel/babel.config.js +0 -28
  709. package/tools/dist/cli/utils/formatter.js +0 -10
  710. package/tools/dist/config-helpers/createConfig.js +0 -13
  711. package/tools/dist/config-helpers/createLintConfig.js +0 -16
  712. package/tools/dist/config-helpers/getBaseConfig.js +0 -12
  713. package/tools/dist/defaultConfigPaths.js +0 -35
  714. package/tools/dist/eslint/base.eslint.config.js +0 -113
  715. package/tools/dist/index.js +0 -12
  716. package/tools/dist/types.js +0 -23
  717. package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
  718. package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
  719. package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  720. package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
  721. package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
  722. package/tools/dist/webpack/common-config/index.js +0 -18
  723. package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
  724. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
  725. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
  726. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  727. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
  728. package/tools/dist/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  729. package/tools/dist/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  730. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  731. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  732. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  733. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  734. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  735. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  736. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  737. package/tools/dist/webpack/types.js +0 -2
  738. package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
  739. package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
  740. package/tools/dist/webpack/utils/paragonUtils.js +0 -138
  741. package/tools/dist/webpack/webpack.config.build.js +0 -80
  742. package/tools/dist/webpack/webpack.config.dev.shell.js +0 -110
  743. package/types.ts +0 -99
  744. /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
  745. /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
  746. /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
  747. /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
  748. /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
  749. /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
  750. /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
  751. /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
  752. /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
  753. /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
  754. /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
  755. /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
  756. /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
  757. /package/{config → dist/tools}/babel/babel.config.js +0 -0
  758. /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
  759. /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
  760. /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
  761. /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
  762. /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
  763. /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
  764. /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
  765. /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
  766. /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
  767. /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
  768. /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
  769. /package/{config → dist/tools}/index.js +0 -0
  770. /package/{config → dist/tools}/jest/jest.config.js +0 -0
  771. /package/{tools/dist → dist/tools}/jest.config.js +0 -0
  772. /package/{config → dist/tools}/types.js +0 -0
  773. /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
  774. /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
  775. /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
  776. /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
  777. /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
  778. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
  779. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
  780. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
  781. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
  782. /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,315 @@
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, window.location.origin);
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
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
162
+ throw new TypeError('Runtime config must be a valid JSON object.');
163
+ }
164
+ mergeSiteConfig(data, { limitAppMergeToConfig: true });
165
+ }
166
+ }
167
+ catch (error) {
168
+ console.error('Error with config API:', error.message);
169
+ }
170
+ });
171
+ }
172
+ export function loadExternalScripts(externalScripts, data) {
173
+ externalScripts.forEach(ExternalScript => {
174
+ const script = new ExternalScript(data);
175
+ script.loadScript();
176
+ });
177
+ }
178
+ /**
179
+ * The default handler for the initialization lifecycle's `analytics` phase.
180
+ *
181
+ * The handler is responsible for identifying authenticated and anonymous users with the analytics
182
+ * service. This is a pre-requisite for sending analytics events, thus, we do it during the
183
+ * initialization sequence so that analytics is ready once the application's UI code starts to load.
184
+ *
185
+ */
186
+ export function analytics() {
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ const authenticatedUser = getAuthenticatedUser();
189
+ if (authenticatedUser === null || authenticatedUser === void 0 ? void 0 : authenticatedUser.userId) {
190
+ identifyAuthenticatedUser(authenticatedUser.userId);
191
+ }
192
+ else {
193
+ yield identifyAnonymousUser();
194
+ }
195
+ });
196
+ }
197
+ function applyOverrideHandlers(overrides) {
198
+ const noOp = () => __awaiter(this, void 0, void 0, function* () { });
199
+ return Object.assign({ pubSub: noOp, config: noOp, logging: noOp, auth,
200
+ analytics, i18n: noOp, ready: noOp, initError }, overrides);
201
+ }
202
+ /**
203
+ * Invokes the application initialization sequence.
204
+ *
205
+ * The sequence proceeds through a number of lifecycle phases, during which pertinent services are
206
+ * configured.
207
+ *
208
+ * Using the `handlers` option, lifecycle phase handlers can be overridden to perform custom
209
+ * functionality. Note that while these override handlers _do_ replace the default handler
210
+ * functionality for analytics, auth, and initError (the other phases have no default
211
+ * functionality), they do _not_ override the configuration of the actual services that those
212
+ * handlers leverage.
213
+ *
214
+ * Some services can be overridden via the loggingService and analyticsService options. The other
215
+ * services (auth and i18n) cannot currently be overridden.
216
+ *
217
+ * The following lifecycle phases exist:
218
+ *
219
+ * - pubSub: A no-op by default.
220
+ * - config: A no-op by default.
221
+ * - logging: A no-op by default.
222
+ * - auth: Uses the 'auth' handler defined above.
223
+ * - analytics: Uses the 'analytics' handler defined above.
224
+ * - i18n: A no-op by default.
225
+ * - ready: A no-op by default.
226
+ * - initError: Uses the 'initError' handler defined above.
227
+ *
228
+ * @param {Object} [options]
229
+ * @param {*} [options.loggingService=NewRelicLoggingService] The `LoggingService` implementation
230
+ * to use.
231
+ * @param {*} [options.analyticsService=SegmentAnalyticsService] The `AnalyticsService`
232
+ * implementation to use.
233
+ * @param {*} [options.authMiddleware=[]] An array of middleware to apply to http clients in the auth service.
234
+ * @param {*} [options.externalScripts=[GoogleAnalyticsLoader]] An array of externalScripts.
235
+ * By default added GoogleAnalyticsLoader.
236
+ * @param {*} [options.requireAuthenticatedUser=false] If true, turns on automatic login
237
+ * redirection for unauthenticated users. Defaults to false, meaning that by default the
238
+ * application will allow anonymous/unauthenticated sessions.
239
+ * @param {*} [options.hydrateAuthenticatedUser=false] If true, makes an API call to the user
240
+ * account endpoint (`${App.config.lmsBaseUrl}/api/user/v1/accounts/${username}`) to fetch
241
+ * detailed account information for the authenticated user. This data is merged into the return
242
+ * value of `getAuthenticatedUser`, overriding any duplicate keys that already exist. Defaults to
243
+ * false, meaning that no additional account information will be loaded.
244
+ * @param {*} [options.messages] A i18n-compatible messages object, or an array of such objects. If
245
+ * an array is provided, duplicate keys are resolved with the last-one-in winning.
246
+ * @param {*} [options.handlers={}] An optional object of handlers which can be used to replace the
247
+ * default behavior of any part of the startup sequence. It can also be used to add additional
248
+ * initialization behavior before or after the rest of the sequence.
249
+ */
250
+ export function initialize(_a) {
251
+ 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 = {}, }) {
252
+ var _b, _c, _d;
253
+ const handlers = applyOverrideHandlers(overrideHandlers);
254
+ try {
255
+ // Pub/Sub
256
+ yield handlers.pubSub();
257
+ publish(SITE_PUBSUB_INITIALIZED);
258
+ // Configuration
259
+ yield fileConfig();
260
+ yield handlers.config();
261
+ yield runtimeConfig();
262
+ publish(SITE_CONFIG_INITIALIZED);
263
+ loadExternalScripts(externalScripts, {
264
+ config: getSiteConfig(),
265
+ });
266
+ // This allows us to replace the implementations of the logging, analytics, and auth services
267
+ // based on keys in the SiteConfig. The JavaScript File Configuration method is the only
268
+ // one capable of supplying an alternate implementation since it can import other modules.
269
+ // If a service wasn't supplied we fall back to the default parameters on the initialize
270
+ // function signature.
271
+ const loggingServiceImpl = (_b = getSiteConfig().loggingService) !== null && _b !== void 0 ? _b : loggingService;
272
+ const analyticsServiceImpl = (_c = getSiteConfig().analyticsService) !== null && _c !== void 0 ? _c : analyticsService;
273
+ const authServiceImpl = (_d = getSiteConfig().authService) !== null && _d !== void 0 ? _d : authService;
274
+ // Logging
275
+ configureLogging(loggingServiceImpl, {
276
+ config: getSiteConfig(),
277
+ });
278
+ yield handlers.logging();
279
+ publish(SITE_LOGGING_INITIALIZED);
280
+ // Internationalization
281
+ configureI18n({
282
+ messages,
283
+ });
284
+ yield handlers.i18n();
285
+ publish(SITE_I18N_INITIALIZED);
286
+ // Authentication
287
+ configureAuth(authServiceImpl, {
288
+ loggingService: getLoggingService(),
289
+ config: getSiteConfig(),
290
+ middleware: authMiddleware,
291
+ });
292
+ yield handlers.auth(requireUser, hydrateUser);
293
+ publish(SITE_AUTH_INITIALIZED);
294
+ // Analytics
295
+ configureAnalytics(analyticsServiceImpl, {
296
+ config: getSiteConfig(),
297
+ loggingService: getLoggingService(),
298
+ httpClient: getAuthenticatedHttpClient(),
299
+ });
300
+ yield handlers.analytics();
301
+ publish(SITE_ANALYTICS_INITIALIZED);
302
+ // Application Ready
303
+ yield handlers.ready();
304
+ publish(SITE_READY);
305
+ }
306
+ catch (error) {
307
+ if (!error.isRedirecting) {
308
+ // Initialization Error
309
+ yield handlers.initError(error);
310
+ publish(SITE_INIT_ERROR, error);
311
+ }
312
+ }
313
+ });
314
+ }
315
+ //# 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, window.location.origin);\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 if (!data || typeof data !== 'object' || Array.isArray(data)) {\n throw new TypeError('Runtime config must be a valid JSON object.');\n }\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,16 @@
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
+ };
8
+ export let testEnvironment: string;
9
+ export namespace testEnvironmentOptions {
10
+ let url: string;
11
+ }
12
+ export let collectCoverageFrom: string[];
13
+ export let coveragePathIgnorePatterns: string[];
14
+ export let transformIgnorePatterns: string[];
15
+ export let modulePathIgnorePatterns: string[];
16
+ export let testPathIgnorePatterns: string[];
@@ -0,0 +1,34 @@
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
+ },
12
+ testEnvironment: 'jsdom',
13
+ testEnvironmentOptions: {
14
+ url: 'http://localhost/',
15
+ },
16
+ collectCoverageFrom: [
17
+ '<rootDir>/**/*.{js,jsx,ts,tsx}',
18
+ ],
19
+ coveragePathIgnorePatterns: [
20
+ '<rootDir>/setupTest.js',
21
+ ],
22
+ transformIgnorePatterns: [
23
+ '/node_modules/(?!(@openedx|@edx)/)',
24
+ ],
25
+ modulePathIgnorePatterns: [
26
+ '/dist/',
27
+ ],
28
+ testPathIgnorePatterns: [
29
+ '/site.config.test.tsx',
30
+ '/node_modules/',
31
+ '/dist/',
32
+ ],
33
+ };
34
+ //# 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;KAChD;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 },\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
+ }