@openedx/frontend-base 1.0.0-alpha.12 → 1.0.0-alpha.14

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 (755) hide show
  1. package/README.md +3 -3
  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/{shell → 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 -123
  57. package/dist/runtime/config/index.js +323 -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 +28 -0
  96. package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +11 -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/PageWrap.d.ts +8 -0
  120. package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
  121. package/dist/runtime/react/PageWrap.js.map +1 -0
  122. package/dist/runtime/react/SiteContext.d.ts +24 -0
  123. package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
  124. package/dist/runtime/react/SiteContext.js.map +1 -0
  125. package/dist/runtime/react/SiteProvider.d.ts +29 -0
  126. package/dist/runtime/react/SiteProvider.js +69 -0
  127. package/dist/runtime/react/SiteProvider.js.map +1 -0
  128. package/dist/runtime/react/constants.d.ts +3 -0
  129. package/{runtime/react/constants.ts → dist/runtime/react/constants.js} +1 -0
  130. package/dist/runtime/react/constants.js.map +1 -0
  131. package/{runtime/react/hooks/index.ts → dist/runtime/react/hooks/index.d.ts} +0 -1
  132. package/dist/runtime/react/hooks/index.js +8 -0
  133. package/dist/runtime/react/hooks/index.js.map +1 -0
  134. package/dist/runtime/react/hooks/theme/index.js +3 -0
  135. package/dist/runtime/react/hooks/theme/index.js.map +1 -0
  136. package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
  137. package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
  138. package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
  139. package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
  140. package/{runtime/react/hooks/theme/useThemeConfig.ts → dist/runtime/react/hooks/theme/useThemeConfig.js} +11 -16
  141. package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
  142. package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
  143. package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
  144. package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
  145. package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
  146. package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
  147. package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
  148. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
  149. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
  150. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
  151. package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
  152. package/{runtime/react/hooks/theme/utils.ts → dist/runtime/react/hooks/theme/utils.js} +4 -4
  153. package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
  154. package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
  155. package/{runtime/react/hooks/useActiveRoles.ts → dist/runtime/react/hooks/useActiveRoles.js} +6 -8
  156. package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
  157. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
  158. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
  159. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
  160. package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
  161. package/{runtime/react/hooks/useAppConfig.ts → dist/runtime/react/hooks/useAppConfig.js} +3 -4
  162. package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
  163. package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
  164. package/{runtime/react/hooks/useAuthenticatedUser.ts → dist/runtime/react/hooks/useAuthenticatedUser.js} +3 -4
  165. package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
  166. package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
  167. package/{runtime/react/hooks/useSiteConfig.ts → dist/runtime/react/hooks/useSiteConfig.js} +3 -4
  168. package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
  169. package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
  170. package/{runtime/react/hooks/useSiteEvent.ts → dist/runtime/react/hooks/useSiteEvent.js} +7 -9
  171. package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
  172. package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +0 -1
  173. package/dist/runtime/react/index.js +19 -0
  174. package/dist/runtime/react/index.js.map +1 -0
  175. package/dist/runtime/react/reducers.d.ts +11 -0
  176. package/dist/runtime/react/reducers.js +28 -0
  177. package/dist/runtime/react/reducers.js.map +1 -0
  178. package/dist/runtime/routing/index.js +2 -0
  179. package/dist/runtime/routing/index.js.map +1 -0
  180. package/dist/runtime/routing/utils.d.ts +4 -0
  181. package/dist/runtime/routing/utils.js +28 -0
  182. package/dist/runtime/routing/utils.js.map +1 -0
  183. package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
  184. package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
  185. package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
  186. package/dist/runtime/scripts/index.js +2 -0
  187. package/dist/runtime/scripts/index.js.map +1 -0
  188. package/dist/runtime/setupTest.d.ts +1 -0
  189. package/{runtime → dist/runtime}/setupTest.js +6 -8
  190. package/dist/runtime/setupTest.js.map +1 -0
  191. package/dist/runtime/slots/Slot.d.ts +10 -0
  192. package/dist/runtime/slots/Slot.js +35 -0
  193. package/dist/runtime/slots/Slot.js.map +1 -0
  194. package/dist/runtime/slots/SlotContext.d.ts +8 -0
  195. package/dist/runtime/slots/SlotContext.js +7 -0
  196. package/dist/runtime/slots/SlotContext.js.map +1 -0
  197. package/dist/runtime/slots/hooks.d.ts +13 -0
  198. package/dist/runtime/slots/hooks.js +29 -0
  199. package/dist/runtime/slots/hooks.js.map +1 -0
  200. package/dist/runtime/slots/index.js +7 -0
  201. package/dist/runtime/slots/index.js.map +1 -0
  202. package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
  203. package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
  204. package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
  205. package/dist/runtime/slots/layout/hooks.d.ts +10 -0
  206. package/dist/runtime/slots/layout/hooks.js +57 -0
  207. package/dist/runtime/slots/layout/hooks.js.map +1 -0
  208. package/dist/runtime/slots/layout/index.js +5 -0
  209. package/dist/runtime/slots/layout/index.js.map +1 -0
  210. package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
  211. package/dist/runtime/slots/layout/types.js +12 -0
  212. package/dist/runtime/slots/layout/types.js.map +1 -0
  213. package/dist/runtime/slots/layout/utils.d.ts +5 -0
  214. package/dist/runtime/slots/layout/utils.js +11 -0
  215. package/dist/runtime/slots/layout/utils.js.map +1 -0
  216. package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
  217. package/dist/runtime/slots/types.js +7 -0
  218. package/dist/runtime/slots/types.js.map +1 -0
  219. package/dist/runtime/slots/utils.d.ts +3 -0
  220. package/dist/runtime/slots/utils.js +66 -0
  221. package/dist/runtime/slots/utils.js.map +1 -0
  222. package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
  223. package/dist/runtime/slots/widget/WidgetContext.js +8 -0
  224. package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
  225. package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
  226. package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
  227. package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
  228. package/dist/runtime/slots/widget/hooks.d.ts +13 -0
  229. package/dist/runtime/slots/widget/hooks.js +104 -0
  230. package/dist/runtime/slots/widget/hooks.js.map +1 -0
  231. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
  232. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
  233. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
  234. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
  235. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
  236. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
  237. package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
  238. package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
  239. package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
  240. package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
  241. package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
  242. package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
  243. package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
  244. package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
  245. package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
  246. package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
  247. package/dist/runtime/slots/widget/iframe/index.js +3 -0
  248. package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
  249. package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
  250. package/dist/runtime/slots/widget/iframe/types.js +3 -0
  251. package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
  252. package/dist/runtime/slots/widget/index.js +6 -0
  253. package/dist/runtime/slots/widget/index.js.map +1 -0
  254. package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +50 -84
  255. package/dist/runtime/slots/widget/types.js +41 -0
  256. package/dist/runtime/slots/widget/types.js.map +1 -0
  257. package/dist/runtime/slots/widget/utils.d.ts +22 -0
  258. package/dist/runtime/slots/widget/utils.js +166 -0
  259. package/dist/runtime/slots/widget/utils.js.map +1 -0
  260. package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
  261. package/dist/runtime/subscriptions.js +48 -0
  262. package/dist/runtime/subscriptions.js.map +1 -0
  263. package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
  264. package/dist/runtime/testing/index.js +9 -0
  265. package/dist/runtime/testing/index.js.map +1 -0
  266. package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
  267. package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -41
  268. package/dist/runtime/testing/initializeMockApp.js.map +1 -0
  269. package/dist/runtime/testing/mockMessages.d.ts +22 -0
  270. package/dist/runtime/testing/mockMessages.js +23 -0
  271. package/dist/runtime/testing/mockMessages.js.map +1 -0
  272. package/dist/runtime/utils.d.ts +95 -0
  273. package/{runtime → dist/runtime}/utils.js +55 -70
  274. package/dist/runtime/utils.js.map +1 -0
  275. package/dist/shell/DefaultLayout.d.ts +1 -0
  276. package/dist/shell/DefaultLayout.js +7 -0
  277. package/dist/shell/DefaultLayout.js.map +1 -0
  278. package/dist/shell/DefaultMain.d.ts +1 -0
  279. package/dist/shell/DefaultMain.js +6 -0
  280. package/dist/shell/DefaultMain.js.map +1 -0
  281. package/dist/shell/Logo.d.ts +6 -0
  282. package/dist/shell/Logo.js +14 -0
  283. package/dist/shell/Logo.js.map +1 -0
  284. package/dist/shell/Shell.d.ts +1 -0
  285. package/dist/shell/Shell.js +10 -0
  286. package/dist/shell/Shell.js.map +1 -0
  287. package/dist/shell/Shell.messages.d.ts +58 -0
  288. package/dist/shell/Shell.messages.js +60 -0
  289. package/dist/shell/Shell.messages.js.map +1 -0
  290. package/dist/shell/app.d.ts +3 -0
  291. package/dist/shell/app.js +35 -0
  292. package/dist/shell/app.js.map +1 -0
  293. package/dist/shell/babel.config.d.ts +2 -0
  294. package/{runtime → dist/shell}/babel.config.js +2 -1
  295. package/dist/shell/babel.config.js.map +1 -0
  296. package/dist/shell/dev/devFooter/app.d.ts +3 -0
  297. package/dist/shell/dev/devFooter/app.js +36 -0
  298. package/dist/shell/dev/devFooter/app.js.map +1 -0
  299. package/dist/shell/dev/devFooter/index.js +2 -0
  300. package/dist/shell/dev/devFooter/index.js.map +1 -0
  301. package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
  302. package/dist/shell/dev/devHeader/BarContext.js +8 -0
  303. package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
  304. package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
  305. package/dist/shell/dev/devHeader/BarLink.js +10 -0
  306. package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
  307. package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
  308. package/dist/shell/dev/devHeader/BarProvider.js +16 -0
  309. package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
  310. package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
  311. package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
  312. package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
  313. package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
  314. package/dist/shell/dev/devHeader/FooContext.js +8 -0
  315. package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
  316. package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
  317. package/dist/shell/dev/devHeader/FooLink.js +10 -0
  318. package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
  319. package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
  320. package/dist/shell/dev/devHeader/FooProvider.js +16 -0
  321. package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
  322. package/dist/shell/dev/devHeader/app.d.ts +3 -0
  323. package/dist/shell/dev/devHeader/app.js +34 -0
  324. package/dist/shell/dev/devHeader/app.js.map +1 -0
  325. package/dist/shell/dev/devHeader/index.js +2 -0
  326. package/dist/shell/dev/devHeader/index.js.map +1 -0
  327. package/dist/shell/dev/devHeader/providers.d.ts +3 -0
  328. package/dist/shell/dev/devHeader/providers.js +8 -0
  329. package/dist/shell/dev/devHeader/providers.js.map +1 -0
  330. package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
  331. package/dist/shell/dev/devHome/HomePage.js +13 -0
  332. package/dist/shell/dev/devHome/HomePage.js.map +1 -0
  333. package/dist/shell/dev/devHome/app.d.ts +3 -0
  334. package/dist/shell/dev/devHome/app.js +16 -0
  335. package/dist/shell/dev/devHome/app.js.map +1 -0
  336. package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
  337. package/dist/shell/dev/devHome/i18n/index.js +28 -0
  338. package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
  339. package/dist/shell/dev/devHome/index.js +2 -0
  340. package/dist/shell/dev/devHome/index.js.map +1 -0
  341. package/dist/shell/dev/devHome/messages.d.ts +8 -0
  342. package/dist/shell/dev/devHome/messages.js +10 -0
  343. package/dist/shell/dev/devHome/messages.js.map +1 -0
  344. package/dist/shell/dev/devUser/app.d.ts +3 -0
  345. package/dist/shell/dev/devUser/app.js +22 -0
  346. package/dist/shell/dev/devUser/app.js.map +1 -0
  347. package/dist/shell/dev/devUser/index.js +2 -0
  348. package/dist/shell/dev/devUser/index.js.map +1 -0
  349. package/dist/shell/dev/index.js +6 -0
  350. package/dist/shell/dev/index.js.map +1 -0
  351. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
  352. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +7 -0
  353. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
  354. package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
  355. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
  356. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
  357. package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +1 -0
  358. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +8 -0
  359. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
  360. package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
  361. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
  362. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
  363. package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
  364. package/dist/shell/dev/slotShowcase/app.js +336 -0
  365. package/dist/shell/dev/slotShowcase/app.js.map +1 -0
  366. package/dist/shell/dev/slotShowcase/index.js +2 -0
  367. package/dist/shell/dev/slotShowcase/index.js.map +1 -0
  368. package/dist/shell/footer/CenterLinks.d.ts +1 -0
  369. package/dist/shell/footer/CenterLinks.js +7 -0
  370. package/dist/shell/footer/CenterLinks.js.map +1 -0
  371. package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
  372. package/dist/shell/footer/CopyrightNotice.js +10 -0
  373. package/dist/shell/footer/CopyrightNotice.js.map +1 -0
  374. package/dist/shell/footer/Footer.d.ts +1 -0
  375. package/dist/shell/footer/Footer.js +12 -0
  376. package/dist/shell/footer/Footer.js.map +1 -0
  377. package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
  378. package/dist/shell/footer/LabeledLinkColumn.js +11 -0
  379. package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
  380. package/dist/shell/footer/LanguageMenu.d.ts +1 -0
  381. package/dist/shell/footer/LanguageMenu.js +16 -0
  382. package/dist/shell/footer/LanguageMenu.js.map +1 -0
  383. package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
  384. package/dist/shell/footer/LanguageMenuItem.js +11 -0
  385. package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
  386. package/dist/shell/footer/LeftLinks.d.ts +1 -0
  387. package/dist/shell/footer/LeftLinks.js +7 -0
  388. package/dist/shell/footer/LeftLinks.js.map +1 -0
  389. package/dist/shell/footer/LegalNotices.d.ts +1 -0
  390. package/dist/shell/footer/LegalNotices.js +10 -0
  391. package/dist/shell/footer/LegalNotices.js.map +1 -0
  392. package/dist/shell/footer/PoweredBy.d.ts +1 -0
  393. package/dist/shell/footer/PoweredBy.js +9 -0
  394. package/dist/shell/footer/PoweredBy.js.map +1 -0
  395. package/dist/shell/footer/RevealLinks.d.ts +1 -0
  396. package/dist/shell/footer/RevealLinks.js +16 -0
  397. package/dist/shell/footer/RevealLinks.js.map +1 -0
  398. package/dist/shell/footer/RightLinks.d.ts +1 -0
  399. package/dist/shell/footer/RightLinks.js +7 -0
  400. package/dist/shell/footer/RightLinks.js.map +1 -0
  401. package/dist/shell/footer/app.d.ts +3 -0
  402. package/dist/shell/footer/app.js +59 -0
  403. package/dist/shell/footer/app.js.map +1 -0
  404. package/dist/shell/footer/data/api.d.ts +1 -0
  405. package/dist/shell/footer/data/api.js +45 -0
  406. package/dist/shell/footer/data/api.js.map +1 -0
  407. package/dist/shell/footer/index.js +3 -0
  408. package/dist/shell/footer/index.js.map +1 -0
  409. package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
  410. package/dist/shell/header/AuthenticatedMenu.js +13 -0
  411. package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
  412. package/dist/shell/header/Header.d.ts +1 -0
  413. package/dist/shell/header/Header.js +8 -0
  414. package/dist/shell/header/Header.js.map +1 -0
  415. package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
  416. package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
  417. package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
  418. package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
  419. package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
  420. package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
  421. package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
  422. package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
  423. package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
  424. package/dist/shell/header/app.d.ts +3 -0
  425. package/dist/shell/header/app.js +119 -0
  426. package/dist/shell/header/app.js.map +1 -0
  427. package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
  428. package/dist/shell/header/desktop/DesktopLayout.js +9 -0
  429. package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
  430. package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
  431. package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
  432. package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
  433. package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
  434. package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
  435. package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
  436. package/dist/shell/header/index.js +3 -0
  437. package/dist/shell/header/index.js.map +1 -0
  438. package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
  439. package/dist/shell/header/mobile/MobileLayout.js +17 -0
  440. package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
  441. package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
  442. package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
  443. package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
  444. package/dist/shell/i18n/index.d.ts +25 -0
  445. package/dist/shell/i18n/index.js +26 -0
  446. package/dist/shell/i18n/index.js.map +1 -0
  447. package/dist/shell/index.js +8 -0
  448. package/dist/shell/index.js.map +1 -0
  449. package/dist/shell/jest.config.d.ts +15 -0
  450. package/{config/jest → dist/shell}/jest.config.js +12 -11
  451. package/dist/shell/jest.config.js.map +1 -0
  452. package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
  453. package/dist/shell/menus/LinkMenuItem.js +36 -0
  454. package/dist/shell/menus/LinkMenuItem.js.map +1 -0
  455. package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
  456. package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
  457. package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
  458. package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
  459. package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
  460. package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
  461. package/dist/shell/menus/data/utils.d.ts +4 -0
  462. package/dist/shell/menus/data/utils.js +13 -0
  463. package/dist/shell/menus/data/utils.js.map +1 -0
  464. package/dist/shell/router/createRouter.d.ts +1 -0
  465. package/{shell/router/createRouter.ts → dist/shell/router/createRouter.js} +9 -11
  466. package/dist/shell/router/createRouter.js.map +1 -0
  467. package/dist/shell/router/getAppRoutes.d.ts +2 -0
  468. package/dist/shell/router/getAppRoutes.js +14 -0
  469. package/dist/shell/router/getAppRoutes.js.map +1 -0
  470. package/dist/shell/setupTest.d.ts +1 -0
  471. package/{shell → dist/shell}/setupTest.js +6 -7
  472. package/dist/shell/setupTest.js.map +1 -0
  473. package/dist/shell/site.config.dev.d.ts +4 -0
  474. package/dist/shell/site.config.dev.js +43 -0
  475. package/dist/shell/site.config.dev.js.map +1 -0
  476. package/dist/shell/site.d.ts +1 -0
  477. package/dist/shell/site.js +35 -0
  478. package/dist/shell/site.js.map +1 -0
  479. package/dist/tools/babel/babel.config.d.ts +12 -0
  480. package/dist/tools/cli/commands/serve.d.ts +1 -0
  481. package/dist/tools/cli/intl-imports.d.ts +7 -0
  482. package/dist/tools/cli/intl-imports.test.d.ts +1 -0
  483. package/dist/tools/cli/openedx.d.ts +2 -0
  484. package/{tools/dist → dist/tools}/cli/openedx.js +1 -1
  485. package/dist/tools/cli/transifex-utils.d.ts +2 -0
  486. package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
  487. package/dist/tools/cli/utils/formatter.d.ts +1 -0
  488. package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
  489. package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
  490. package/dist/tools/cli/utils/printUsage.d.ts +1 -0
  491. package/dist/tools/config-helpers/createConfig.d.ts +2 -0
  492. package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
  493. package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
  494. package/dist/tools/defaultConfigPaths.d.ts +8 -0
  495. package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
  496. package/dist/tools/eslint.config.d.ts +3 -0
  497. package/dist/tools/index.d.ts +3 -0
  498. package/dist/tools/jest/jest.config.d.ts +14 -0
  499. package/{tools/dist → dist/tools}/jest/jest.config.js +0 -1
  500. package/dist/tools/jest.config.d.ts +8 -0
  501. package/dist/tools/types.d.ts +18 -0
  502. package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
  503. package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
  504. package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
  505. package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
  506. package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
  507. package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
  508. package/dist/tools/webpack/common-config/index.d.ts +6 -0
  509. package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
  510. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +18 -0
  511. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
  512. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
  513. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
  514. package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
  515. package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
  516. package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
  517. package/{config → dist/tools}/webpack/webpack.config.build.js +8 -5
  518. package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
  519. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +8 -5
  520. package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
  521. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.shell.js +0 -4
  522. package/dist/types.d.ts +83 -0
  523. package/dist/types.js +7 -0
  524. package/dist/types.js.map +1 -0
  525. package/package.json +21 -16
  526. package/config/tsconfig.json +0 -32
  527. package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  528. package/config/webpack/utils/getLocalAliases.js +0 -65
  529. package/config/webpack/webpack.config.dev.js +0 -70
  530. package/config/webpack/webpack.config.dev.shell.js +0 -104
  531. package/runtime/__mocks__/file.js +0 -1
  532. package/runtime/__mocks__/svg.js +0 -1
  533. package/runtime/__mocks__/universal-cookie.js +0 -6
  534. package/runtime/analytics/MockAnalyticsService.js +0 -71
  535. package/runtime/analytics/SegmentAnalyticsService.js +0 -243
  536. package/runtime/analytics/index.ts +0 -12
  537. package/runtime/analytics/interface.test.js +0 -242
  538. package/runtime/auth/AxiosCsrfTokenService.js +0 -60
  539. package/runtime/auth/AxiosJwtAuthService.js +0 -363
  540. package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
  541. package/runtime/auth/AxiosJwtTokenService.js +0 -134
  542. package/runtime/auth/LocalForageCache.js +0 -76
  543. package/runtime/auth/MockAuthService.js +0 -278
  544. package/runtime/auth/index.ts +0 -19
  545. package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
  546. package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
  547. package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
  548. package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
  549. package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
  550. package/runtime/auth/utils.js +0 -105
  551. package/runtime/config/getExternalLinkUrl.test.js +0 -76
  552. package/runtime/i18n/injectIntlWithShim.jsx +0 -48
  553. package/runtime/i18n/lib.test.js +0 -230
  554. package/runtime/i18n/lib.ts +0 -272
  555. package/runtime/index.ts +0 -139
  556. package/runtime/initialize.async.function.config.test.js +0 -43
  557. package/runtime/initialize.const.config.test.js +0 -41
  558. package/runtime/initialize.function.config.test.js +0 -41
  559. package/runtime/initialize.js +0 -352
  560. package/runtime/initialize.test.js +0 -356
  561. package/runtime/jest.config.js +0 -33
  562. package/runtime/logging/MockLoggingService.js +0 -31
  563. package/runtime/logging/NewRelicLoggingService.js +0 -184
  564. package/runtime/logging/NewRelicLoggingService.test.js +0 -214
  565. package/runtime/logging/types.ts +0 -4
  566. package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
  567. package/runtime/react/CombinedAppProvider.tsx +0 -46
  568. package/runtime/react/CurrentAppProvider.tsx +0 -46
  569. package/runtime/react/Divider.tsx +0 -5
  570. package/runtime/react/ErrorBoundary.jsx +0 -47
  571. package/runtime/react/ErrorBoundary.test.jsx +0 -83
  572. package/runtime/react/ErrorPage.jsx +0 -72
  573. package/runtime/react/SiteProvider.test.jsx +0 -66
  574. package/runtime/react/SiteProvider.tsx +0 -101
  575. package/runtime/react/hooks/theme/useTheme.test.ts +0 -221
  576. package/runtime/react/hooks/theme/useTheme.ts +0 -179
  577. package/runtime/react/hooks/theme/useThemeConfig.test.ts +0 -107
  578. package/runtime/react/hooks/theme/useThemeCore.test.ts +0 -65
  579. package/runtime/react/hooks/theme/useThemeCore.ts +0 -52
  580. package/runtime/react/hooks/theme/useThemeVariants.test.ts +0 -97
  581. package/runtime/react/hooks/theme/useThemeVariants.ts +0 -116
  582. package/runtime/react/hooks/theme/useTrackColorSchemeChoice.test.ts +0 -54
  583. package/runtime/react/hooks/theme/useTrackColorSchemeChoice.ts +0 -30
  584. package/runtime/react/hooks/useActiveRouteRoleWatcher.ts +0 -31
  585. package/runtime/react/hooks/useAuthenticatedUser.test.tsx +0 -41
  586. package/runtime/react/hooks/useSiteConfig.test.tsx +0 -13
  587. package/runtime/react/reducers.ts +0 -40
  588. package/runtime/routing/utils.test.ts +0 -7
  589. package/runtime/routing/utils.ts +0 -34
  590. package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
  591. package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
  592. package/runtime/site.config.test.tsx +0 -33
  593. package/runtime/slots/Slot.test.tsx +0 -40
  594. package/runtime/slots/Slot.tsx +0 -32
  595. package/runtime/slots/SlotContext.tsx +0 -8
  596. package/runtime/slots/hooks.ts +0 -35
  597. package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
  598. package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
  599. package/runtime/slots/layout/hooks.test.tsx +0 -178
  600. package/runtime/slots/layout/hooks.ts +0 -65
  601. package/runtime/slots/layout/utils.test.ts +0 -67
  602. package/runtime/slots/layout/utils.ts +0 -14
  603. package/runtime/slots/utils.test.ts +0 -64
  604. package/runtime/slots/utils.ts +0 -78
  605. package/runtime/slots/widget/WidgetContext.tsx +0 -9
  606. package/runtime/slots/widget/WidgetProvider.tsx +0 -30
  607. package/runtime/slots/widget/hooks.ts +0 -105
  608. package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
  609. package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
  610. package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
  611. package/runtime/slots/widget/iframe/hooks.ts +0 -179
  612. package/runtime/slots/widget/utils.tsx +0 -201
  613. package/runtime/testing/initializeMockApp.test.ts +0 -66
  614. package/runtime/testing/mockMessages.ts +0 -23
  615. package/runtime/utils.test.js +0 -116
  616. package/shell/DefaultLayout.tsx +0 -18
  617. package/shell/DefaultMain.tsx +0 -7
  618. package/shell/Logo.test.tsx +0 -32
  619. package/shell/Logo.tsx +0 -28
  620. package/shell/Shell.messages.ts +0 -61
  621. package/shell/Shell.tsx +0 -18
  622. package/shell/__mocks__/file.js +0 -1
  623. package/shell/__mocks__/svg.js +0 -1
  624. package/shell/__mocks__/universal-cookie.js +0 -6
  625. package/shell/app.ts +0 -38
  626. package/shell/dev/devFooter/app.tsx +0 -43
  627. package/shell/dev/devHeader/BarContext.tsx +0 -13
  628. package/shell/dev/devHeader/BarLink.tsx +0 -16
  629. package/shell/dev/devHeader/BarProvider.tsx +0 -25
  630. package/shell/dev/devHeader/CoursesLink.tsx +0 -16
  631. package/shell/dev/devHeader/FooContext.tsx +0 -13
  632. package/shell/dev/devHeader/FooLink.tsx +0 -16
  633. package/shell/dev/devHeader/FooProvider.tsx +0 -25
  634. package/shell/dev/devHeader/app.tsx +0 -53
  635. package/shell/dev/devHeader/providers.tsx +0 -11
  636. package/shell/dev/devHome/HomePage.tsx +0 -28
  637. package/shell/dev/devHome/app.ts +0 -18
  638. package/shell/dev/devHome/i18n/index.ts +0 -27
  639. package/shell/dev/devHome/messages.ts +0 -11
  640. package/shell/dev/devUser/app.tsx +0 -24
  641. package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
  642. package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
  643. package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
  644. package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
  645. package/shell/dev/slotShowcase/app.tsx +0 -373
  646. package/shell/footer/CenterLinks.tsx +0 -11
  647. package/shell/footer/CopyrightNotice.tsx +0 -36
  648. package/shell/footer/Footer.tsx +0 -34
  649. package/shell/footer/LabeledLinkColumn.tsx +0 -19
  650. package/shell/footer/LanguageMenu.tsx +0 -35
  651. package/shell/footer/LanguageMenuItem.tsx +0 -23
  652. package/shell/footer/LeftLinks.tsx +0 -11
  653. package/shell/footer/LegalNotices.tsx +0 -17
  654. package/shell/footer/PoweredBy.tsx +0 -17
  655. package/shell/footer/RevealLinks.tsx +0 -43
  656. package/shell/footer/RightLinks.tsx +0 -11
  657. package/shell/footer/app.tsx +0 -73
  658. package/shell/footer/data/api.ts +0 -48
  659. package/shell/header/AuthenticatedMenu.tsx +0 -32
  660. package/shell/header/Header.tsx +0 -17
  661. package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
  662. package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
  663. package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
  664. package/shell/header/app.tsx +0 -142
  665. package/shell/header/desktop/DesktopLayout.tsx +0 -22
  666. package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
  667. package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
  668. package/shell/header/mobile/MobileLayout.tsx +0 -47
  669. package/shell/header/mobile/MobileNavLinks.tsx +0 -10
  670. package/shell/i18n/index.ts +0 -25
  671. package/shell/jest.config.js +0 -31
  672. package/shell/menus/LinkMenuItem.tsx +0 -64
  673. package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
  674. package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
  675. package/shell/menus/data/utils.ts +0 -19
  676. package/shell/public/index.html +0 -10
  677. package/shell/router/createRouter.test.tsx +0 -50
  678. package/shell/router/getAppRoutes.test.tsx +0 -59
  679. package/shell/router/getAppRoutes.ts +0 -21
  680. package/shell/site.config.dev.tsx +0 -49
  681. package/shell/site.config.test.tsx +0 -16
  682. package/shell/site.tsx +0 -41
  683. package/tools/dist/babel/babel.config.js +0 -28
  684. package/tools/dist/config-helpers/createConfig.js +0 -13
  685. package/tools/dist/config-helpers/createLintConfig.js +0 -16
  686. package/tools/dist/config-helpers/getBaseConfig.js +0 -12
  687. package/tools/dist/defaultConfigPaths.js +0 -35
  688. package/tools/dist/eslint/base.eslint.config.js +0 -113
  689. package/tools/dist/index.js +0 -12
  690. package/tools/dist/types.js +0 -23
  691. package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
  692. package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
  693. package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  694. package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
  695. package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
  696. package/tools/dist/webpack/common-config/dev/getDevServer.js +0 -38
  697. package/tools/dist/webpack/common-config/index.js +0 -18
  698. package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
  699. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
  700. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
  701. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  702. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
  703. package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
  704. package/tools/dist/webpack/utils/getPublicPath.js +0 -6
  705. package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
  706. package/tools/dist/webpack/webpack.config.build.js +0 -70
  707. package/types.ts +0 -119
  708. /package/{runtime/react/hooks/theme/index.ts → dist/runtime/react/hooks/theme/index.d.ts} +0 -0
  709. /package/{runtime/routing/index.ts → dist/runtime/routing/index.d.ts} +0 -0
  710. /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
  711. /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
  712. /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
  713. /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
  714. /package/{shell → dist/shell}/app.scss +0 -0
  715. /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
  716. /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
  717. /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
  718. /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
  719. /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
  720. /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
  721. /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
  722. /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
  723. /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
  724. /package/{config → dist/tools}/babel/babel.config.js +0 -0
  725. /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
  726. /package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
  727. /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
  728. /package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
  729. /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
  730. /package/{tools/dist → dist/tools}/cli/utils/formatter.js +0 -0
  731. /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
  732. /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
  733. /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
  734. /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
  735. /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
  736. /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
  737. /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
  738. /package/{config → dist/tools}/eslint/base.eslint.config.js +0 -0
  739. /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
  740. /package/{config → dist/tools}/index.js +0 -0
  741. /package/{tools/dist → dist/tools}/jest.config.js +0 -0
  742. /package/{config → dist/tools}/types.js +0 -0
  743. /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
  744. /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
  745. /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
  746. /package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +0 -0
  747. /package/{config → dist/tools}/webpack/common-config/dev/getDevServer.js +0 -0
  748. /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
  749. /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
  750. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
  751. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
  752. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
  753. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
  754. /package/{config → dist/tools}/webpack/utils/getPublicPath.js +0 -0
  755. /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
@@ -0,0 +1,209 @@
1
+ export default MockAuthService;
2
+ /**
3
+ * The MockAuthService class mocks authenticated user-fetching logic and allows for manually
4
+ * setting user data. It is compatible with axios-mock-adapter to wrap its HttpClients so that
5
+ * they can be mocked for testing.
6
+ *
7
+ * It wraps all methods of the service with Jest mock functions (jest.fn()). This allows test code
8
+ * to assert expectations on all functions of the service while preserving sensible behaviors. For
9
+ * instance, the login/logout methods related to redirecting maintain their real behavior.
10
+ *
11
+ * This service is NOT suitable for use in an application itself - only tests. It depends on Jest,
12
+ * which should only be a dev dependency of your project. You don't want to pull the entire suite
13
+ * of test dependencies into your application at runtime, probably even in your dev server.
14
+ *
15
+ * In a test where you would like to mock out API requests - perhaps from a redux-thunk function -
16
+ * you could do the following to set up a MockAuthService for your test:
17
+ *
18
+ * ```
19
+ * import { getSiteConfig, mergeSiteConfig, configureAuth, MockAuthService } from '@openedx/frontend-base';
20
+ * import MockAdapter from 'axios-mock-adapter';
21
+ *
22
+ * const mockLoggingService = {
23
+ * logInfo: jest.fn(),
24
+ * logError: jest.fn(),
25
+ * };
26
+ * mergeSiteConfig({
27
+ * authenticatedUser: {
28
+ * userId: 'abc123',
29
+ * username: 'Mock User',
30
+ * roles: [],
31
+ * administrator: false,
32
+ * },
33
+ * });
34
+ * configureAuth(MockAuthService, { config: getSiteConfig(), loggingService: mockLoggingService });
35
+ * const mockAdapter = new MockAdapter(getAuthenticatedHttpClient());
36
+ * // Mock calls for your tests. This configuration can be done in any sort of test setup.
37
+ * mockAdapter.onGet(...);
38
+ * ```
39
+ *
40
+ * Also see the `initializeMockApp` function which also automatically uses mock services for
41
+ * Logging and Analytics.
42
+ *
43
+ * @implements {AuthService}
44
+ * @memberof module:Auth
45
+ */
46
+ declare class MockAuthService implements AuthService {
47
+ /**
48
+ * @param {Object} options
49
+ * @param {Object} options.config
50
+ * @param {string} options.config.baseUrl
51
+ * @param {string} options.config.lmsBaseUrl
52
+ * @param {string} options.config.loginUrl
53
+ * @param {string} options.config.logoutUrl
54
+ * @param {string} options.config.refreshAccessTokenApiPath
55
+ * @param {string} options.config.accessTokenCookieName
56
+ * @param {string} options.config.csrfTokenApiPath
57
+ * @param {Object} options.loggingService requires logError and logInfo methods
58
+ */
59
+ constructor(options: {
60
+ config: {
61
+ baseUrl: string;
62
+ lmsBaseUrl: string;
63
+ loginUrl: string;
64
+ logoutUrl: string;
65
+ refreshAccessTokenApiPath: string;
66
+ accessTokenCookieName: string;
67
+ csrfTokenApiPath: string;
68
+ };
69
+ loggingService: any;
70
+ });
71
+ authenticatedHttpClient: import("axios").AxiosInstance;
72
+ httpClient: import("axios").AxiosInstance;
73
+ config: {
74
+ baseUrl: string;
75
+ lmsBaseUrl: string;
76
+ loginUrl: string;
77
+ logoutUrl: string;
78
+ refreshAccessTokenApiPath: string;
79
+ accessTokenCookieName: string;
80
+ csrfTokenApiPath: string;
81
+ };
82
+ loggingService: any;
83
+ authenticatedUser: any;
84
+ hydratedAuthenticatedUser: {};
85
+ /**
86
+ * A Jest mock function (jest.fn())
87
+ *
88
+ * Applies middleware to the axios instances in this service.
89
+ *
90
+ * @param {Array} middleware Middleware to apply.
91
+ */
92
+ applyMiddleware(middleware?: any[]): void;
93
+ /**
94
+ * A Jest mock function (jest.fn())
95
+ *
96
+ * Gets the authenticated HTTP client instance, which is an axios client wrapped in
97
+ * MockAdapter from axios-mock-adapter.
98
+ *
99
+ * @returns {HttpClient} An HttpClient wrapped in MockAdapter.
100
+ */
101
+ getAuthenticatedHttpClient: jest.Mock<import("axios").AxiosInstance, [], any>;
102
+ /**
103
+ * A Jest mock function (jest.fn())
104
+ *
105
+ * Gets the unauthenticated HTTP client instance, which is an axios client wrapped in
106
+ * MockAdapter from axios-mock-adapter.
107
+ *
108
+ * @returns {HttpClient} An HttpClient wrapped in MockAdapter.
109
+ */
110
+ getHttpClient: jest.Mock<import("axios").AxiosInstance, [], any>;
111
+ /**
112
+ * A Jest mock function (jest.fn())
113
+ *
114
+ * Builds a URL to the login page with a post-login redirect URL attached as a query parameter.
115
+ *
116
+ * ```
117
+ * const url = getLoginRedirectUrl('http://localhost/mypage');
118
+ * console.log(url); // http://localhost/login?next=http%3A%2F%2Flocalhost%2Fmypage
119
+ * ```
120
+ *
121
+ * @param {string} redirectUrl The URL the user should be redirected to after logging in.
122
+ */
123
+ getLoginRedirectUrl: jest.Mock<string, [redirectUrl?: any], any>;
124
+ /**
125
+ * A Jest mock function (jest.fn())
126
+ *
127
+ * Redirects the user to the logout page in the real implementation. Is a no-op here.
128
+ *
129
+ * @param {string} redirectUrl The URL the user should be redirected to after logging in.
130
+ */
131
+ redirectToLogin: jest.Mock<void, [redirectUrl?: any], any>;
132
+ /**
133
+ * A Jest mock function (jest.fn())
134
+ *
135
+ * Builds a URL to the logout page with a post-logout redirect URL attached as a query parameter.
136
+ *
137
+ * ```
138
+ * const url = getLogoutRedirectUrl('http://localhost/mypage');
139
+ * console.log(url); // http://localhost/logout?next=http%3A%2F%2Flocalhost%2Fmypage
140
+ * ```
141
+ *
142
+ * @param {string} redirectUrl The URL the user should be redirected to after logging out.
143
+ */
144
+ getLogoutRedirectUrl: jest.Mock<string, [redirectUrl?: any], any>;
145
+ /**
146
+ * A Jest mock function (jest.fn())
147
+ *
148
+ * Redirects the user to the logout page in the real implementation. Is a no-op here.
149
+ *
150
+ * @param {string} redirectUrl The URL the user should be redirected to after logging out.
151
+ */
152
+ redirectToLogout: jest.Mock<void, [redirectUrl?: any], any>;
153
+ /**
154
+ * A Jest mock function (jest.fn())
155
+ *
156
+ * If it exists, returns the user data representing the currently authenticated user. If the
157
+ * user is anonymous, returns null.
158
+ *
159
+ * @returns {UserData|null}
160
+ */
161
+ getAuthenticatedUser: jest.Mock<any, [], any>;
162
+ /**
163
+ * A Jest mock function (jest.fn())
164
+ *
165
+ * Sets the authenticated user to the provided value.
166
+ *
167
+ * @param {UserData} authUser
168
+ */
169
+ setAuthenticatedUser: jest.Mock<void, [authUser: any], any>;
170
+ /**
171
+ * A Jest mock function (jest.fn())
172
+ *
173
+ * Returns the current authenticated user details, as supplied in the `authenticatedUser` field
174
+ * of the config options. Resolves to null if the user is unauthenticated / the config option
175
+ * has not been set.
176
+ *
177
+ * @returns {UserData|null} Resolves to the user's access token if they are
178
+ * logged in.
179
+ */
180
+ fetchAuthenticatedUser: jest.Mock<any, [], any>;
181
+ /**
182
+ * A Jest mock function (jest.fn())
183
+ *
184
+ * Ensures a user is authenticated. It will redirect to login when not authenticated.
185
+ *
186
+ * @param {string} [redirectUrl=config.baseUrl] to return user after login when not
187
+ * authenticated.
188
+ * @returns {UserData|null} Resolves to the user's access token if they are
189
+ * logged in.
190
+ */
191
+ ensureAuthenticatedUser: jest.Mock<any, [redirectUrl?: any], any>;
192
+ /**
193
+ * A Jest mock function (jest.fn())
194
+ *
195
+ * Adds the user data supplied in the `hydratedAuthenticatedUser` config option into the object
196
+ * returned by `getAuthenticatedUser`. This emulates the behavior of a real auth service which
197
+ * would make a request to fetch this data prior to merging it in.
198
+ *
199
+ * ```
200
+ * console.log(authenticatedUser); // Will be sparse and only contain basic information.
201
+ * await hydrateAuthenticatedUser()
202
+ * const authenticatedUser = getAuthenticatedUser();
203
+ * console.log(authenticatedUser); // Will contain additional user information
204
+ * ```
205
+ *
206
+ * @returns {Promise<null>}
207
+ */
208
+ hydrateAuthenticatedUser: jest.Mock<void, [], any>;
209
+ }
@@ -0,0 +1,256 @@
1
+ import axios from 'axios';
2
+ import PropTypes from 'prop-types';
3
+ const userPropTypes = PropTypes.shape({
4
+ userId: PropTypes.string.isRequired,
5
+ username: PropTypes.string.isRequired,
6
+ roles: PropTypes.arrayOf(PropTypes.string),
7
+ administrator: PropTypes.boolean,
8
+ });
9
+ const optionsPropTypes = {
10
+ config: PropTypes.shape({
11
+ baseUrl: PropTypes.string.isRequired,
12
+ lmsBaseUrl: PropTypes.string.isRequired,
13
+ loginUrl: PropTypes.string.isRequired,
14
+ logoutUrl: PropTypes.string.isRequired,
15
+ refreshAccessTokenApiPath: PropTypes.string.isRequired,
16
+ accessTokenCookieName: PropTypes.string.isRequired,
17
+ csrfTokenApiPath: PropTypes.string.isRequired,
18
+ }).isRequired,
19
+ loggingService: PropTypes.shape({
20
+ logError: PropTypes.func.isRequired,
21
+ logInfo: PropTypes.func.isRequired,
22
+ }).isRequired,
23
+ // The absence of authenticatedUser means the user is anonymous.
24
+ authenticatedUser: userPropTypes,
25
+ // Must be at least a valid user, but may have other fields.
26
+ hydratedAuthenticatedUser: userPropTypes,
27
+ };
28
+ /**
29
+ * The MockAuthService class mocks authenticated user-fetching logic and allows for manually
30
+ * setting user data. It is compatible with axios-mock-adapter to wrap its HttpClients so that
31
+ * they can be mocked for testing.
32
+ *
33
+ * It wraps all methods of the service with Jest mock functions (jest.fn()). This allows test code
34
+ * to assert expectations on all functions of the service while preserving sensible behaviors. For
35
+ * instance, the login/logout methods related to redirecting maintain their real behavior.
36
+ *
37
+ * This service is NOT suitable for use in an application itself - only tests. It depends on Jest,
38
+ * which should only be a dev dependency of your project. You don't want to pull the entire suite
39
+ * of test dependencies into your application at runtime, probably even in your dev server.
40
+ *
41
+ * In a test where you would like to mock out API requests - perhaps from a redux-thunk function -
42
+ * you could do the following to set up a MockAuthService for your test:
43
+ *
44
+ * ```
45
+ * import { getSiteConfig, mergeSiteConfig, configureAuth, MockAuthService } from '@openedx/frontend-base';
46
+ * import MockAdapter from 'axios-mock-adapter';
47
+ *
48
+ * const mockLoggingService = {
49
+ * logInfo: jest.fn(),
50
+ * logError: jest.fn(),
51
+ * };
52
+ * mergeSiteConfig({
53
+ * authenticatedUser: {
54
+ * userId: 'abc123',
55
+ * username: 'Mock User',
56
+ * roles: [],
57
+ * administrator: false,
58
+ * },
59
+ * });
60
+ * configureAuth(MockAuthService, { config: getSiteConfig(), loggingService: mockLoggingService });
61
+ * const mockAdapter = new MockAdapter(getAuthenticatedHttpClient());
62
+ * // Mock calls for your tests. This configuration can be done in any sort of test setup.
63
+ * mockAdapter.onGet(...);
64
+ * ```
65
+ *
66
+ * Also see the `initializeMockApp` function which also automatically uses mock services for
67
+ * Logging and Analytics.
68
+ *
69
+ * @implements {AuthService}
70
+ * @memberof module:Auth
71
+ */
72
+ class MockAuthService {
73
+ /**
74
+ * @param {Object} options
75
+ * @param {Object} options.config
76
+ * @param {string} options.config.baseUrl
77
+ * @param {string} options.config.lmsBaseUrl
78
+ * @param {string} options.config.loginUrl
79
+ * @param {string} options.config.logoutUrl
80
+ * @param {string} options.config.refreshAccessTokenApiPath
81
+ * @param {string} options.config.accessTokenCookieName
82
+ * @param {string} options.config.csrfTokenApiPath
83
+ * @param {Object} options.loggingService requires logError and logInfo methods
84
+ */
85
+ constructor(options) {
86
+ /**
87
+ * A Jest mock function (jest.fn())
88
+ *
89
+ * Gets the authenticated HTTP client instance, which is an axios client wrapped in
90
+ * MockAdapter from axios-mock-adapter.
91
+ *
92
+ * @returns {HttpClient} An HttpClient wrapped in MockAdapter.
93
+ */
94
+ this.getAuthenticatedHttpClient = jest.fn(() => this.authenticatedHttpClient);
95
+ /**
96
+ * A Jest mock function (jest.fn())
97
+ *
98
+ * Gets the unauthenticated HTTP client instance, which is an axios client wrapped in
99
+ * MockAdapter from axios-mock-adapter.
100
+ *
101
+ * @returns {HttpClient} An HttpClient wrapped in MockAdapter.
102
+ */
103
+ this.getHttpClient = jest.fn(() => this.httpClient);
104
+ /**
105
+ * A Jest mock function (jest.fn())
106
+ *
107
+ * Builds a URL to the login page with a post-login redirect URL attached as a query parameter.
108
+ *
109
+ * ```
110
+ * const url = getLoginRedirectUrl('http://localhost/mypage');
111
+ * console.log(url); // http://localhost/login?next=http%3A%2F%2Flocalhost%2Fmypage
112
+ * ```
113
+ *
114
+ * @param {string} redirectUrl The URL the user should be redirected to after logging in.
115
+ */
116
+ this.getLoginRedirectUrl = jest.fn((redirectUrl = this.config.baseUrl) => `${this.config.loginUrl}?next=${encodeURIComponent(redirectUrl)}`);
117
+ /**
118
+ * A Jest mock function (jest.fn())
119
+ *
120
+ * Redirects the user to the logout page in the real implementation. Is a no-op here.
121
+ *
122
+ * @param {string} redirectUrl The URL the user should be redirected to after logging in.
123
+ */
124
+ this.redirectToLogin = jest.fn((redirectUrl = this.config.baseUrl) => {
125
+ // Do nothing after getting the URL - this preserves the calls properly, but doesn't redirect.
126
+ this.getLoginRedirectUrl(redirectUrl);
127
+ });
128
+ /**
129
+ * A Jest mock function (jest.fn())
130
+ *
131
+ * Builds a URL to the logout page with a post-logout redirect URL attached as a query parameter.
132
+ *
133
+ * ```
134
+ * const url = getLogoutRedirectUrl('http://localhost/mypage');
135
+ * console.log(url); // http://localhost/logout?next=http%3A%2F%2Flocalhost%2Fmypage
136
+ * ```
137
+ *
138
+ * @param {string} redirectUrl The URL the user should be redirected to after logging out.
139
+ */
140
+ this.getLogoutRedirectUrl = jest.fn((redirectUrl = this.config.baseUrl) => `${this.config.logoutUrl}?redirect_url=${encodeURIComponent(redirectUrl)}`);
141
+ /**
142
+ * A Jest mock function (jest.fn())
143
+ *
144
+ * Redirects the user to the logout page in the real implementation. Is a no-op here.
145
+ *
146
+ * @param {string} redirectUrl The URL the user should be redirected to after logging out.
147
+ */
148
+ this.redirectToLogout = jest.fn((redirectUrl = this.config.baseUrl) => {
149
+ // Do nothing after getting the URL - this preserves the calls properly, but doesn't redirect.
150
+ this.getLogoutRedirectUrl(redirectUrl);
151
+ });
152
+ /**
153
+ * A Jest mock function (jest.fn())
154
+ *
155
+ * If it exists, returns the user data representing the currently authenticated user. If the
156
+ * user is anonymous, returns null.
157
+ *
158
+ * @returns {UserData|null}
159
+ */
160
+ this.getAuthenticatedUser = jest.fn(() => this.authenticatedUser);
161
+ /**
162
+ * A Jest mock function (jest.fn())
163
+ *
164
+ * Sets the authenticated user to the provided value.
165
+ *
166
+ * @param {UserData} authUser
167
+ */
168
+ this.setAuthenticatedUser = jest.fn((authUser) => {
169
+ this.authenticatedUser = authUser;
170
+ });
171
+ /**
172
+ * A Jest mock function (jest.fn())
173
+ *
174
+ * Returns the current authenticated user details, as supplied in the `authenticatedUser` field
175
+ * of the config options. Resolves to null if the user is unauthenticated / the config option
176
+ * has not been set.
177
+ *
178
+ * @returns {UserData|null} Resolves to the user's access token if they are
179
+ * logged in.
180
+ */
181
+ this.fetchAuthenticatedUser = jest.fn(() => this.getAuthenticatedUser());
182
+ /**
183
+ * A Jest mock function (jest.fn())
184
+ *
185
+ * Ensures a user is authenticated. It will redirect to login when not authenticated.
186
+ *
187
+ * @param {string} [redirectUrl=config.baseUrl] to return user after login when not
188
+ * authenticated.
189
+ * @returns {UserData|null} Resolves to the user's access token if they are
190
+ * logged in.
191
+ */
192
+ this.ensureAuthenticatedUser = jest.fn((redirectUrl = this.config.baseUrl) => {
193
+ this.fetchAuthenticatedUser();
194
+ if (this.getAuthenticatedUser() === null) {
195
+ // The user is not authenticated, send them to the login page.
196
+ this.redirectToLogin(redirectUrl);
197
+ }
198
+ return this.getAuthenticatedUser();
199
+ });
200
+ /**
201
+ * A Jest mock function (jest.fn())
202
+ *
203
+ * Adds the user data supplied in the `hydratedAuthenticatedUser` config option into the object
204
+ * returned by `getAuthenticatedUser`. This emulates the behavior of a real auth service which
205
+ * would make a request to fetch this data prior to merging it in.
206
+ *
207
+ * ```
208
+ * console.log(authenticatedUser); // Will be sparse and only contain basic information.
209
+ * await hydrateAuthenticatedUser()
210
+ * const authenticatedUser = getAuthenticatedUser();
211
+ * console.log(authenticatedUser); // Will contain additional user information
212
+ * ```
213
+ *
214
+ * @returns {Promise<null>}
215
+ */
216
+ this.hydrateAuthenticatedUser = jest.fn(() => {
217
+ const user = this.getAuthenticatedUser();
218
+ if (user !== null) {
219
+ this.setAuthenticatedUser(Object.assign(Object.assign({}, user), this.hydratedAuthenticatedUser));
220
+ }
221
+ });
222
+ this.authenticatedHttpClient = null;
223
+ this.httpClient = null;
224
+ PropTypes.checkPropTypes(optionsPropTypes, options, 'options', 'AuthService');
225
+ this.config = options.config;
226
+ this.loggingService = options.loggingService;
227
+ // Mock user
228
+ this.authenticatedUser = null;
229
+ this.hydratedAuthenticatedUser = {};
230
+ this.authenticatedHttpClient = axios.create();
231
+ this.httpClient = axios.create();
232
+ }
233
+ /**
234
+ * A Jest mock function (jest.fn())
235
+ *
236
+ * Applies middleware to the axios instances in this service.
237
+ *
238
+ * @param {Array} middleware Middleware to apply.
239
+ */
240
+ applyMiddleware(middleware = []) {
241
+ const clients = [
242
+ this.authenticatedHttpClient, this.httpClient,
243
+ this.cachedAuthenticatedHttpClient, this.cachedHttpClient,
244
+ ];
245
+ try {
246
+ (middleware).forEach((middlewareFn) => {
247
+ clients.forEach((client) => client && middlewareFn(client));
248
+ });
249
+ }
250
+ catch (error) {
251
+ throw new Error(`Failed to apply middleware: ${error.message}.`);
252
+ }
253
+ }
254
+ }
255
+ export default MockAuthService;
256
+ //# sourceMappingURL=MockAuthService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockAuthService.js","sourceRoot":"","sources":["../../../runtime/auth/MockAuthService.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC;IACpC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACnC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IACrC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;IAC1C,aAAa,EAAE,SAAS,CAAC,OAAO;CACjC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;QACtB,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACpC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACvC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACrC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACtC,yBAAyB,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QACtD,qBAAqB,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;QAClD,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;KAC9C,CAAC,CAAC,UAAU;IACb,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;QACnC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;KACnC,CAAC,CAAC,UAAU;IACb,gEAAgE;IAChE,iBAAiB,EAAE,aAAa;IAChC,4DAA4D;IAC5D,yBAAyB,EAAE,aAAa;CACzC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,eAAe;IACnB;;;;;;;;;;;OAWG;IACH,YAAY,OAAO;QAsCnB;;;;;;;WAOG;QACH,+BAA0B,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEzE;;;;;;;WAOG;QACH,kBAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/C;;;;;;;;;;;WAWG;QACH,wBAAmB,GAAG,IAAI,CAAC,EAAE,CAC3B,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,SAAS,kBAAkB,CAAC,WAAW,CAAC,EAAE,CACzG,CAAC;QAEF;;;;;;WAMG;QACH,oBAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YAC9D,8FAA8F;YAC9F,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH;;;;;;;;;;;WAWG;QACH,yBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,iBAAiB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAElJ;;;;;;WAMG;QACH,qBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YAC/D,8FAA8F;YAC9F,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH;;;;;;;WAOG;QACH,yBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7D;;;;;;WAMG;QACH,yBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1C,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH;;;;;;;;;WASG;QACH,2BAAsB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAEpE;;;;;;;;;WASG;QACH,4BAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YACtE,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE,CAAC;gBACzC,8DAA8D;gBAC9D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YAED,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH;;;;;;;;;;;;;;;WAeG;QACH,6BAAwB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,oBAAoB,iCAAM,IAAI,GAAK,IAAI,CAAC,yBAAyB,EAAG,CAAC;YAC5E,CAAC;QACH,CAAC,CAAC,CAAC;QA1LD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,SAAS,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAE9E,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAE7C,YAAY;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QAEpC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,UAAU,GAAG,EAAE;QAC7B,MAAM,OAAO,GAAG;YACd,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,UAAU;YAC7C,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,gBAAgB;SAC1D,CAAC;QACF,IAAI,CAAC;YACH,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBACpC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CAwJF;AAED,eAAe,eAAe,CAAC","sourcesContent":["import axios from 'axios';\nimport PropTypes from 'prop-types';\n\nconst userPropTypes = PropTypes.shape({\n userId: PropTypes.string.isRequired,\n username: PropTypes.string.isRequired,\n roles: PropTypes.arrayOf(PropTypes.string),\n administrator: PropTypes.boolean,\n});\n\nconst optionsPropTypes = {\n config: PropTypes.shape({\n baseUrl: PropTypes.string.isRequired,\n lmsBaseUrl: PropTypes.string.isRequired,\n loginUrl: PropTypes.string.isRequired,\n logoutUrl: PropTypes.string.isRequired,\n refreshAccessTokenApiPath: PropTypes.string.isRequired,\n accessTokenCookieName: PropTypes.string.isRequired,\n csrfTokenApiPath: PropTypes.string.isRequired,\n }).isRequired,\n loggingService: PropTypes.shape({\n logError: PropTypes.func.isRequired,\n logInfo: PropTypes.func.isRequired,\n }).isRequired,\n // The absence of authenticatedUser means the user is anonymous.\n authenticatedUser: userPropTypes,\n // Must be at least a valid user, but may have other fields.\n hydratedAuthenticatedUser: userPropTypes,\n};\n\n/**\n * The MockAuthService class mocks authenticated user-fetching logic and allows for manually\n * setting user data. It is compatible with axios-mock-adapter to wrap its HttpClients so that\n * they can be mocked for testing.\n *\n * It wraps all methods of the service with Jest mock functions (jest.fn()). This allows test code\n * to assert expectations on all functions of the service while preserving sensible behaviors. For\n * instance, the login/logout methods related to redirecting maintain their real behavior.\n *\n * This service is NOT suitable for use in an application itself - only tests. It depends on Jest,\n * which should only be a dev dependency of your project. You don't want to pull the entire suite\n * of test dependencies into your application at runtime, probably even in your dev server.\n *\n * In a test where you would like to mock out API requests - perhaps from a redux-thunk function -\n * you could do the following to set up a MockAuthService for your test:\n *\n * ```\n * import { getSiteConfig, mergeSiteConfig, configureAuth, MockAuthService } from '@openedx/frontend-base';\n * import MockAdapter from 'axios-mock-adapter';\n *\n * const mockLoggingService = {\n * logInfo: jest.fn(),\n * logError: jest.fn(),\n * };\n * mergeSiteConfig({\n * authenticatedUser: {\n * userId: 'abc123',\n * username: 'Mock User',\n * roles: [],\n * administrator: false,\n * },\n * });\n * configureAuth(MockAuthService, { config: getSiteConfig(), loggingService: mockLoggingService });\n * const mockAdapter = new MockAdapter(getAuthenticatedHttpClient());\n * // Mock calls for your tests. This configuration can be done in any sort of test setup.\n * mockAdapter.onGet(...);\n * ```\n *\n * Also see the `initializeMockApp` function which also automatically uses mock services for\n * Logging and Analytics.\n *\n * @implements {AuthService}\n * @memberof module:Auth\n */\nclass MockAuthService {\n /**\n * @param {Object} options\n * @param {Object} options.config\n * @param {string} options.config.baseUrl\n * @param {string} options.config.lmsBaseUrl\n * @param {string} options.config.loginUrl\n * @param {string} options.config.logoutUrl\n * @param {string} options.config.refreshAccessTokenApiPath\n * @param {string} options.config.accessTokenCookieName\n * @param {string} options.config.csrfTokenApiPath\n * @param {Object} options.loggingService requires logError and logInfo methods\n */\n constructor(options) {\n this.authenticatedHttpClient = null;\n this.httpClient = null;\n\n PropTypes.checkPropTypes(optionsPropTypes, options, 'options', 'AuthService');\n\n this.config = options.config;\n this.loggingService = options.loggingService;\n\n // Mock user\n this.authenticatedUser = null;\n this.hydratedAuthenticatedUser = {};\n\n this.authenticatedHttpClient = axios.create();\n this.httpClient = axios.create();\n }\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Applies middleware to the axios instances in this service.\n *\n * @param {Array} middleware Middleware to apply.\n */\n applyMiddleware(middleware = []) {\n const clients = [\n this.authenticatedHttpClient, this.httpClient,\n this.cachedAuthenticatedHttpClient, this.cachedHttpClient,\n ];\n try {\n (middleware).forEach((middlewareFn) => {\n clients.forEach((client) => client && middlewareFn(client));\n });\n } catch (error) {\n throw new Error(`Failed to apply middleware: ${error.message}.`);\n }\n }\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Gets the authenticated HTTP client instance, which is an axios client wrapped in\n * MockAdapter from axios-mock-adapter.\n *\n * @returns {HttpClient} An HttpClient wrapped in MockAdapter.\n */\n getAuthenticatedHttpClient = jest.fn(() => this.authenticatedHttpClient);\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Gets the unauthenticated HTTP client instance, which is an axios client wrapped in\n * MockAdapter from axios-mock-adapter.\n *\n * @returns {HttpClient} An HttpClient wrapped in MockAdapter.\n */\n getHttpClient = jest.fn(() => this.httpClient);\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Builds a URL to the login page with a post-login redirect URL attached as a query parameter.\n *\n * ```\n * const url = getLoginRedirectUrl('http://localhost/mypage');\n * console.log(url); // http://localhost/login?next=http%3A%2F%2Flocalhost%2Fmypage\n * ```\n *\n * @param {string} redirectUrl The URL the user should be redirected to after logging in.\n */\n getLoginRedirectUrl = jest.fn(\n (redirectUrl = this.config.baseUrl) => `${this.config.loginUrl}?next=${encodeURIComponent(redirectUrl)}`,\n );\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Redirects the user to the logout page in the real implementation. Is a no-op here.\n *\n * @param {string} redirectUrl The URL the user should be redirected to after logging in.\n */\n redirectToLogin = jest.fn((redirectUrl = this.config.baseUrl) => {\n // Do nothing after getting the URL - this preserves the calls properly, but doesn't redirect.\n this.getLoginRedirectUrl(redirectUrl);\n });\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Builds a URL to the logout page with a post-logout redirect URL attached as a query parameter.\n *\n * ```\n * const url = getLogoutRedirectUrl('http://localhost/mypage');\n * console.log(url); // http://localhost/logout?next=http%3A%2F%2Flocalhost%2Fmypage\n * ```\n *\n * @param {string} redirectUrl The URL the user should be redirected to after logging out.\n */\n getLogoutRedirectUrl = jest.fn((redirectUrl = this.config.baseUrl) => `${this.config.logoutUrl}?redirect_url=${encodeURIComponent(redirectUrl)}`);\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Redirects the user to the logout page in the real implementation. Is a no-op here.\n *\n * @param {string} redirectUrl The URL the user should be redirected to after logging out.\n */\n redirectToLogout = jest.fn((redirectUrl = this.config.baseUrl) => {\n // Do nothing after getting the URL - this preserves the calls properly, but doesn't redirect.\n this.getLogoutRedirectUrl(redirectUrl);\n });\n\n /**\n * A Jest mock function (jest.fn())\n *\n * If it exists, returns the user data representing the currently authenticated user. If the\n * user is anonymous, returns null.\n *\n * @returns {UserData|null}\n */\n getAuthenticatedUser = jest.fn(() => this.authenticatedUser);\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Sets the authenticated user to the provided value.\n *\n * @param {UserData} authUser\n */\n setAuthenticatedUser = jest.fn((authUser) => {\n this.authenticatedUser = authUser;\n });\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Returns the current authenticated user details, as supplied in the `authenticatedUser` field\n * of the config options. Resolves to null if the user is unauthenticated / the config option\n * has not been set.\n *\n * @returns {UserData|null} Resolves to the user's access token if they are\n * logged in.\n */\n fetchAuthenticatedUser = jest.fn(() => this.getAuthenticatedUser());\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Ensures a user is authenticated. It will redirect to login when not authenticated.\n *\n * @param {string} [redirectUrl=config.baseUrl] to return user after login when not\n * authenticated.\n * @returns {UserData|null} Resolves to the user's access token if they are\n * logged in.\n */\n ensureAuthenticatedUser = jest.fn((redirectUrl = this.config.baseUrl) => {\n this.fetchAuthenticatedUser();\n\n if (this.getAuthenticatedUser() === null) {\n // The user is not authenticated, send them to the login page.\n this.redirectToLogin(redirectUrl);\n }\n\n return this.getAuthenticatedUser();\n });\n\n /**\n * A Jest mock function (jest.fn())\n *\n * Adds the user data supplied in the `hydratedAuthenticatedUser` config option into the object\n * returned by `getAuthenticatedUser`. This emulates the behavior of a real auth service which\n * would make a request to fetch this data prior to merging it in.\n *\n * ```\n * console.log(authenticatedUser); // Will be sparse and only contain basic information.\n * await hydrateAuthenticatedUser()\n * const authenticatedUser = getAuthenticatedUser();\n * console.log(authenticatedUser); // Will contain additional user information\n * ```\n *\n * @returns {Promise<null>}\n */\n hydrateAuthenticatedUser = jest.fn(() => {\n const user = this.getAuthenticatedUser();\n if (user !== null) {\n this.setAuthenticatedUser({ ...user, ...this.hydratedAuthenticatedUser });\n }\n });\n}\n\nexport default MockAuthService;\n"]}
@@ -0,0 +1,3 @@
1
+ export { default as AxiosJwtAuthService } from './AxiosJwtAuthService';
2
+ export { AUTHENTICATED_USER_CHANGED, AUTHENTICATED_USER_TOPIC, configureAuth, ensureAuthenticatedUser, fetchAuthenticatedUser, getAuthenticatedHttpClient, getAuthenticatedUser, getAuthService, getHttpClient, getLoginRedirectUrl, getLogoutRedirectUrl, hydrateAuthenticatedUser, redirectToLogin, redirectToLogout, setAuthenticatedUser } from './interface';
3
+ export { default as MockAuthService } from './MockAuthService';
@@ -0,0 +1,4 @@
1
+ export { default as AxiosJwtAuthService } from './AxiosJwtAuthService';
2
+ export { AUTHENTICATED_USER_CHANGED, AUTHENTICATED_USER_TOPIC, configureAuth, ensureAuthenticatedUser, fetchAuthenticatedUser, getAuthenticatedHttpClient, getAuthenticatedUser, getAuthService, getHttpClient, getLoginRedirectUrl, getLogoutRedirectUrl, hydrateAuthenticatedUser, redirectToLogin, redirectToLogout, setAuthenticatedUser } from './interface';
3
+ export { default as MockAuthService } from './MockAuthService';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { default as AxiosJwtAuthService } from './AxiosJwtAuthService';\nexport {\n AUTHENTICATED_USER_CHANGED,\n AUTHENTICATED_USER_TOPIC,\n configureAuth,\n ensureAuthenticatedUser,\n fetchAuthenticatedUser,\n getAuthenticatedHttpClient,\n getAuthenticatedUser,\n getAuthService,\n getHttpClient,\n getLoginRedirectUrl,\n getLogoutRedirectUrl,\n hydrateAuthenticatedUser,\n redirectToLogin,\n redirectToLogout,\n setAuthenticatedUser\n} from './interface';\nexport { default as MockAuthService } from './MockAuthService';\n"]}
@@ -0,0 +1,2 @@
1
+ export default createCsrfTokenProviderInterceptor;
2
+ declare function createCsrfTokenProviderInterceptor(options: any): (axiosRequestConfig: any) => Promise<any>;
@@ -0,0 +1,42 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ const createCsrfTokenProviderInterceptor = (options) => {
11
+ const { csrfTokenService, csrfTokenApiPath, shouldSkip } = options;
12
+ // Creating the interceptor inside this closure to
13
+ // maintain reference to the options supplied.
14
+ const interceptor = (axiosRequestConfig) => __awaiter(void 0, void 0, void 0, function* () {
15
+ if (shouldSkip(axiosRequestConfig)) {
16
+ return axiosRequestConfig;
17
+ }
18
+ const { url } = axiosRequestConfig;
19
+ let csrfToken;
20
+ // Important: the job of this interceptor is to get a csrf token and update
21
+ // the original request configuration. Errors thrown getting the csrf token
22
+ // should contain the original request config. This allows other interceptors
23
+ // (namely our retry request interceptor below) to access the original request
24
+ // and handle it appropriately
25
+ try {
26
+ csrfToken = yield csrfTokenService.getCsrfToken(url, csrfTokenApiPath);
27
+ }
28
+ catch (error) {
29
+ const requestError = Object.create(error);
30
+ requestError.message = `[getCsrfToken] ${requestError.message}`;
31
+ // Important: return the original axios request config
32
+ requestError.config = axiosRequestConfig;
33
+ return Promise.reject(requestError);
34
+ }
35
+ const CSRF_HEADER_NAME = 'X-CSRFToken';
36
+ axiosRequestConfig.headers[CSRF_HEADER_NAME] = csrfToken;
37
+ return axiosRequestConfig;
38
+ });
39
+ return interceptor;
40
+ };
41
+ export default createCsrfTokenProviderInterceptor;
42
+ //# sourceMappingURL=createCsrfTokenProviderInterceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCsrfTokenProviderInterceptor.js","sourceRoot":"","sources":["../../../../runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,kCAAkC,GAAG,CAAC,OAAO,EAAE,EAAE;IACrD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEnE,kDAAkD;IAClD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,CAAO,kBAAkB,EAAE,EAAE;QAC/C,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAC;QACnC,IAAI,SAAS,CAAC;QAEd,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,8EAA8E;QAC9E,8BAA8B;QAC9B,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,GAAG,kBAAkB,YAAY,CAAC,OAAO,EAAE,CAAC;YAChE,sDAAsD;YACtD,YAAY,CAAC,MAAM,GAAG,kBAAkB,CAAC;YACzC,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,gBAAgB,GAAG,aAAa,CAAC;QACvC,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;QACzD,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAA,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,kCAAkC,CAAC","sourcesContent":["const createCsrfTokenProviderInterceptor = (options) => {\n const { csrfTokenService, csrfTokenApiPath, shouldSkip } = options;\n\n // Creating the interceptor inside this closure to\n // maintain reference to the options supplied.\n const interceptor = async (axiosRequestConfig) => {\n if (shouldSkip(axiosRequestConfig)) {\n return axiosRequestConfig;\n }\n const { url } = axiosRequestConfig;\n let csrfToken;\n\n // Important: the job of this interceptor is to get a csrf token and update\n // the original request configuration. Errors thrown getting the csrf token\n // should contain the original request config. This allows other interceptors\n // (namely our retry request interceptor below) to access the original request\n // and handle it appropriately\n try {\n csrfToken = await csrfTokenService.getCsrfToken(url, csrfTokenApiPath);\n } catch (error) {\n const requestError = Object.create(error);\n requestError.message = `[getCsrfToken] ${requestError.message}`;\n // Important: return the original axios request config\n requestError.config = axiosRequestConfig;\n return Promise.reject(requestError);\n }\n\n const CSRF_HEADER_NAME = 'X-CSRFToken';\n axiosRequestConfig.headers[CSRF_HEADER_NAME] = csrfToken;\n return axiosRequestConfig;\n };\n\n return interceptor;\n};\n\nexport default createCsrfTokenProviderInterceptor;\n"]}
@@ -0,0 +1,2 @@
1
+ export default createJwtTokenProviderInterceptor;
2
+ declare function createJwtTokenProviderInterceptor(options: any): (axiosRequestConfig: any) => Promise<any>;
@@ -0,0 +1,40 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ const createJwtTokenProviderInterceptor = (options) => {
11
+ const { jwtTokenService, shouldSkip, } = options;
12
+ // Creating the interceptor inside this closure to
13
+ // maintain reference to the options supplied.
14
+ const interceptor = (axiosRequestConfig) => __awaiter(void 0, void 0, void 0, function* () {
15
+ if (shouldSkip(axiosRequestConfig)) {
16
+ return axiosRequestConfig;
17
+ }
18
+ // Important: the job of this interceptor is to refresh a jwt token and update
19
+ // the original request configuration. Errors thrown from fetching the jwt
20
+ // should contain the original request config. This allows other interceptors
21
+ // (namely our retry request interceptor below) to access the original request
22
+ // and handle it appropriately
23
+ try {
24
+ yield jwtTokenService.getJwtToken();
25
+ }
26
+ catch (error) {
27
+ const requestError = Object.create(error);
28
+ requestError.message = `[getJwtToken] ${requestError.message}`;
29
+ // Important: return the original axios request config
30
+ requestError.config = axiosRequestConfig;
31
+ return Promise.reject(requestError);
32
+ }
33
+ // Add the proper headers to tell the server to look for the jwt cookie
34
+ axiosRequestConfig.headers['USE-JWT-COOKIE'] = true;
35
+ return axiosRequestConfig;
36
+ });
37
+ return interceptor;
38
+ };
39
+ export default createJwtTokenProviderInterceptor;
40
+ //# sourceMappingURL=createJwtTokenProviderInterceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createJwtTokenProviderInterceptor.js","sourceRoot":"","sources":["../../../../runtime/auth/interceptors/createJwtTokenProviderInterceptor.js"],"names":[],"mappings":";;;;;;;;;AAAA,MAAM,iCAAiC,GAAG,CAAC,OAAO,EAAE,EAAE;IACpD,MAAM,EACJ,eAAe,EACf,UAAU,GACX,GAAG,OAAO,CAAC;IAEZ,kDAAkD;IAClD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,CAAO,kBAAkB,EAAE,EAAE;QAC/C,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,8EAA8E;QAC9E,0EAA0E;QAC1E,6EAA6E;QAC7E,8EAA8E;QAC9E,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,GAAG,iBAAiB,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/D,sDAAsD;YACtD,YAAY,CAAC,MAAM,GAAG,kBAAkB,CAAC;YACzC,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,uEAAuE;QACvE,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;QACpD,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAA,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,iCAAiC,CAAC","sourcesContent":["const createJwtTokenProviderInterceptor = (options) => {\n const {\n jwtTokenService,\n shouldSkip,\n } = options;\n\n // Creating the interceptor inside this closure to\n // maintain reference to the options supplied.\n const interceptor = async (axiosRequestConfig) => {\n if (shouldSkip(axiosRequestConfig)) {\n return axiosRequestConfig;\n }\n\n // Important: the job of this interceptor is to refresh a jwt token and update\n // the original request configuration. Errors thrown from fetching the jwt\n // should contain the original request config. This allows other interceptors\n // (namely our retry request interceptor below) to access the original request\n // and handle it appropriately\n try {\n await jwtTokenService.getJwtToken();\n } catch (error) {\n const requestError = Object.create(error);\n requestError.message = `[getJwtToken] ${requestError.message}`;\n // Important: return the original axios request config\n requestError.config = axiosRequestConfig;\n return Promise.reject(requestError);\n }\n\n // Add the proper headers to tell the server to look for the jwt cookie\n axiosRequestConfig.headers['USE-JWT-COOKIE'] = true;\n return axiosRequestConfig;\n };\n\n return interceptor;\n};\n\nexport default createJwtTokenProviderInterceptor;\n"]}
@@ -0,0 +1,2 @@
1
+ export default createProcessAxiosRequestErrorInterceptor;
2
+ declare function createProcessAxiosRequestErrorInterceptor(options: any): (error: any) => Promise<never>;
@@ -0,0 +1,26 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { processAxiosError } from '../utils';
11
+ const createProcessAxiosRequestErrorInterceptor = (options) => {
12
+ const { loggingService } = options;
13
+ // Creating the interceptor inside this closure to
14
+ // maintain reference to the options supplied.
15
+ const interceptor = (error) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const processedError = processAxiosError(error);
17
+ const { httpErrorStatus } = processedError.customAttributes;
18
+ if (httpErrorStatus === 401 || httpErrorStatus === 403) {
19
+ loggingService.logInfo(processedError.message, processedError.customAttributes);
20
+ }
21
+ return Promise.reject(processedError);
22
+ });
23
+ return interceptor;
24
+ };
25
+ export default createProcessAxiosRequestErrorInterceptor;
26
+ //# sourceMappingURL=createProcessAxiosRequestErrorInterceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProcessAxiosRequestErrorInterceptor.js","sourceRoot":"","sources":["../../../../runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,yCAAyC,GAAG,CAAC,OAAO,EAAE,EAAE;IAC5D,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAEnC,kDAAkD;IAClD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,CAAO,KAAK,EAAE,EAAE;QAClC,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC;QAC5D,IAAI,eAAe,KAAK,GAAG,IAAI,eAAe,KAAK,GAAG,EAAE,CAAC;YACvD,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAA,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,eAAe,yCAAyC,CAAC","sourcesContent":["import { processAxiosError } from '../utils';\n\nconst createProcessAxiosRequestErrorInterceptor = (options) => {\n const { loggingService } = options;\n\n // Creating the interceptor inside this closure to\n // maintain reference to the options supplied.\n const interceptor = async (error) => {\n const processedError = processAxiosError(error);\n const { httpErrorStatus } = processedError.customAttributes;\n if (httpErrorStatus === 401 || httpErrorStatus === 403) {\n loggingService.logInfo(processedError.message, processedError.customAttributes);\n }\n return Promise.reject(processedError);\n };\n\n return interceptor;\n};\n\nexport default createProcessAxiosRequestErrorInterceptor;\n"]}