@civic/auth 0.3.6 → 0.3.7

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 (767) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/cjs/browser/storage.d.ts +10 -0
  3. package/dist/cjs/browser/storage.d.ts.map +1 -0
  4. package/dist/cjs/browser/storage.js +24 -0
  5. package/dist/cjs/browser/storage.js.map +1 -0
  6. package/dist/cjs/config.d.ts +3 -0
  7. package/dist/cjs/config.d.ts.map +1 -0
  8. package/dist/cjs/config.js +8 -0
  9. package/dist/cjs/config.js.map +1 -0
  10. package/dist/cjs/constants.d.ts +15 -0
  11. package/dist/cjs/constants.d.ts.map +1 -0
  12. package/dist/cjs/constants.js +44 -0
  13. package/dist/cjs/constants.js.map +1 -0
  14. package/dist/cjs/index.d.ts +8 -0
  15. package/dist/cjs/index.d.ts.map +1 -0
  16. package/dist/cjs/index.js +11 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/lib/cookies.d.ts +7 -0
  19. package/dist/cjs/lib/cookies.d.ts.map +1 -0
  20. package/dist/cjs/lib/cookies.js +29 -0
  21. package/dist/cjs/lib/cookies.js.map +1 -0
  22. package/dist/cjs/lib/jwt.d.ts +3 -0
  23. package/dist/cjs/lib/jwt.d.ts.map +1 -0
  24. package/dist/cjs/lib/jwt.js +13 -0
  25. package/dist/cjs/lib/jwt.js.map +1 -0
  26. package/dist/cjs/lib/logger.d.ts +26 -0
  27. package/dist/cjs/lib/logger.d.ts.map +1 -0
  28. package/dist/cjs/lib/logger.js +62 -0
  29. package/dist/cjs/lib/logger.js.map +1 -0
  30. package/dist/cjs/lib/oauth.d.ts +19 -0
  31. package/dist/cjs/lib/oauth.d.ts.map +1 -0
  32. package/dist/cjs/lib/oauth.js +74 -0
  33. package/dist/cjs/lib/oauth.js.map +1 -0
  34. package/dist/cjs/lib/obj.d.ts +3 -0
  35. package/dist/cjs/lib/obj.d.ts.map +1 -0
  36. package/dist/cjs/lib/obj.js +21 -0
  37. package/dist/cjs/lib/obj.js.map +1 -0
  38. package/dist/cjs/lib/postMessage.d.ts +4 -0
  39. package/dist/cjs/lib/postMessage.d.ts.map +1 -0
  40. package/dist/cjs/lib/postMessage.js +16 -0
  41. package/dist/cjs/lib/postMessage.js.map +1 -0
  42. package/dist/cjs/lib/windowUtil.d.ts +4 -0
  43. package/dist/cjs/lib/windowUtil.d.ts.map +1 -0
  44. package/dist/cjs/lib/windowUtil.js +35 -0
  45. package/dist/cjs/lib/windowUtil.js.map +1 -0
  46. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts +9 -0
  47. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
  48. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js +26 -0
  49. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
  50. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts +11 -0
  51. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
  52. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js +21 -0
  53. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
  54. package/dist/cjs/nextjs/config.d.ts +209 -0
  55. package/dist/cjs/nextjs/config.d.ts.map +1 -0
  56. package/dist/cjs/nextjs/config.js +191 -0
  57. package/dist/cjs/nextjs/config.js.map +1 -0
  58. package/dist/cjs/nextjs/cookies.d.ts +16 -0
  59. package/dist/cjs/nextjs/cookies.d.ts.map +1 -0
  60. package/dist/cjs/nextjs/cookies.js +44 -0
  61. package/dist/cjs/nextjs/cookies.js.map +1 -0
  62. package/dist/cjs/nextjs/hooks/index.d.ts +2 -0
  63. package/dist/cjs/nextjs/hooks/index.d.ts.map +1 -0
  64. package/dist/cjs/nextjs/hooks/index.js +6 -0
  65. package/dist/cjs/nextjs/hooks/index.js.map +1 -0
  66. package/dist/cjs/nextjs/hooks/usePrevious.d.ts +2 -0
  67. package/dist/cjs/nextjs/hooks/usePrevious.d.ts.map +1 -0
  68. package/dist/cjs/nextjs/hooks/usePrevious.js +12 -0
  69. package/dist/cjs/nextjs/hooks/usePrevious.js.map +1 -0
  70. package/dist/cjs/nextjs/hooks/useRefresh.d.ts +4 -0
  71. package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +1 -0
  72. package/dist/cjs/nextjs/hooks/useRefresh.js +43 -0
  73. package/dist/cjs/nextjs/hooks/useRefresh.js.map +1 -0
  74. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts +8 -0
  75. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  76. package/dist/cjs/nextjs/hooks/useUserCookie.js +93 -0
  77. package/dist/cjs/nextjs/hooks/useUserCookie.js.map +1 -0
  78. package/dist/cjs/nextjs/index.d.ts +9 -0
  79. package/dist/cjs/nextjs/index.d.ts.map +1 -0
  80. package/dist/cjs/nextjs/index.js +27 -0
  81. package/dist/cjs/nextjs/index.js.map +1 -0
  82. package/dist/cjs/nextjs/middleware/index.d.ts +2 -0
  83. package/dist/cjs/nextjs/middleware/index.d.ts.map +1 -0
  84. package/dist/cjs/nextjs/middleware/index.js +10 -0
  85. package/dist/cjs/nextjs/middleware/index.js.map +1 -0
  86. package/dist/cjs/nextjs/middleware.d.ts +57 -0
  87. package/dist/cjs/nextjs/middleware.d.ts.map +1 -0
  88. package/dist/cjs/nextjs/middleware.js +110 -0
  89. package/dist/cjs/nextjs/middleware.js.map +1 -0
  90. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts +9 -0
  91. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  92. package/dist/cjs/nextjs/providers/NextAuthProvider.js +102 -0
  93. package/dist/cjs/nextjs/providers/NextAuthProvider.js.map +1 -0
  94. package/dist/cjs/nextjs/routeHandler.d.ts +19 -0
  95. package/dist/cjs/nextjs/routeHandler.d.ts.map +1 -0
  96. package/dist/cjs/nextjs/routeHandler.js +318 -0
  97. package/dist/cjs/nextjs/routeHandler.js.map +1 -0
  98. package/dist/cjs/nextjs/utils.d.ts +3 -0
  99. package/dist/cjs/nextjs/utils.d.ts.map +1 -0
  100. package/dist/cjs/nextjs/utils.js +9 -0
  101. package/dist/cjs/nextjs/utils.js.map +1 -0
  102. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
  103. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
  104. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js +40 -0
  105. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js.map +1 -0
  106. package/dist/cjs/reactjs/components/SignInButton.d.ts +9 -0
  107. package/dist/cjs/reactjs/components/SignInButton.d.ts.map +1 -0
  108. package/dist/cjs/reactjs/components/SignInButton.js +31 -0
  109. package/dist/cjs/reactjs/components/SignInButton.js.map +1 -0
  110. package/dist/cjs/reactjs/components/SignOutButton.d.ts +7 -0
  111. package/dist/cjs/reactjs/components/SignOutButton.d.ts.map +1 -0
  112. package/dist/cjs/reactjs/components/SignOutButton.js +27 -0
  113. package/dist/cjs/reactjs/components/SignOutButton.js.map +1 -0
  114. package/dist/cjs/reactjs/components/UserButton.d.ts +9 -0
  115. package/dist/cjs/reactjs/components/UserButton.d.ts.map +1 -0
  116. package/dist/cjs/reactjs/components/UserButton.js +145 -0
  117. package/dist/cjs/reactjs/components/UserButton.js.map +1 -0
  118. package/dist/cjs/reactjs/components/index.d.ts +6 -0
  119. package/dist/cjs/reactjs/components/index.d.ts.map +1 -0
  120. package/dist/cjs/reactjs/components/index.js +14 -0
  121. package/dist/cjs/reactjs/components/index.js.map +1 -0
  122. package/dist/cjs/reactjs/components/utils.d.ts +13 -0
  123. package/dist/cjs/reactjs/components/utils.d.ts.map +1 -0
  124. package/dist/cjs/reactjs/components/utils.js +31 -0
  125. package/dist/cjs/reactjs/components/utils.js.map +1 -0
  126. package/dist/cjs/reactjs/hooks/index.d.ts +3 -0
  127. package/dist/cjs/reactjs/hooks/index.d.ts.map +1 -0
  128. package/dist/cjs/reactjs/hooks/index.js +8 -0
  129. package/dist/cjs/reactjs/hooks/index.js.map +1 -0
  130. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
  131. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  132. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js +16 -0
  133. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
  134. package/dist/cjs/reactjs/hooks/useUser.d.ts +4 -0
  135. package/dist/cjs/reactjs/hooks/useUser.d.ts.map +1 -0
  136. package/dist/cjs/reactjs/hooks/useUser.js +15 -0
  137. package/dist/cjs/reactjs/hooks/useUser.js.map +1 -0
  138. package/dist/cjs/reactjs/index.d.ts +6 -0
  139. package/dist/cjs/reactjs/index.d.ts.map +1 -0
  140. package/dist/cjs/reactjs/index.js +32 -0
  141. package/dist/cjs/reactjs/index.js.map +1 -0
  142. package/dist/cjs/reactjs/providers/AuthProvider.d.ts +10 -0
  143. package/dist/cjs/reactjs/providers/AuthProvider.d.ts.map +1 -0
  144. package/dist/cjs/reactjs/providers/AuthProvider.js +91 -0
  145. package/dist/cjs/reactjs/providers/AuthProvider.js.map +1 -0
  146. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts +5 -0
  147. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
  148. package/dist/cjs/reactjs/providers/CivicAuthProvider.js +29 -0
  149. package/dist/cjs/reactjs/providers/CivicAuthProvider.js.map +1 -0
  150. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  151. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  152. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js +147 -0
  153. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  154. package/dist/cjs/reactjs/providers/index.d.ts +8 -0
  155. package/dist/cjs/reactjs/providers/index.d.ts.map +1 -0
  156. package/dist/cjs/reactjs/providers/index.js +19 -0
  157. package/dist/cjs/reactjs/providers/index.js.map +1 -0
  158. package/dist/cjs/server/ServerAuthenticationResolver.d.ts +20 -0
  159. package/dist/cjs/server/ServerAuthenticationResolver.d.ts.map +1 -0
  160. package/dist/cjs/server/ServerAuthenticationResolver.js +71 -0
  161. package/dist/cjs/server/ServerAuthenticationResolver.js.map +1 -0
  162. package/dist/cjs/server/config.d.ts +11 -0
  163. package/dist/cjs/server/config.d.ts.map +1 -0
  164. package/dist/cjs/server/config.js +3 -0
  165. package/dist/cjs/server/config.js.map +1 -0
  166. package/dist/cjs/server/index.d.ts +9 -0
  167. package/dist/cjs/server/index.d.ts.map +1 -0
  168. package/dist/cjs/server/index.js +21 -0
  169. package/dist/cjs/server/index.js.map +1 -0
  170. package/dist/cjs/server/login.d.ts +17 -0
  171. package/dist/cjs/server/login.d.ts.map +1 -0
  172. package/dist/cjs/server/login.js +42 -0
  173. package/dist/cjs/server/login.js.map +1 -0
  174. package/dist/cjs/server/logout.d.ts +7 -0
  175. package/dist/cjs/server/logout.d.ts.map +1 -0
  176. package/dist/cjs/server/logout.js +26 -0
  177. package/dist/cjs/server/logout.js.map +1 -0
  178. package/dist/cjs/server/refresh.d.ts +7 -0
  179. package/dist/cjs/server/refresh.d.ts.map +1 -0
  180. package/dist/cjs/server/refresh.js +16 -0
  181. package/dist/cjs/server/refresh.js.map +1 -0
  182. package/dist/cjs/services/AuthenticationService.d.ts +93 -0
  183. package/dist/cjs/services/AuthenticationService.d.ts.map +1 -0
  184. package/dist/cjs/services/AuthenticationService.js +372 -0
  185. package/dist/cjs/services/AuthenticationService.js.map +1 -0
  186. package/dist/cjs/services/PKCE.d.ts +20 -0
  187. package/dist/cjs/services/PKCE.d.ts.map +1 -0
  188. package/dist/cjs/services/PKCE.js +50 -0
  189. package/dist/cjs/services/PKCE.js.map +1 -0
  190. package/dist/cjs/services/types.d.ts +24 -0
  191. package/dist/cjs/services/types.d.ts.map +1 -0
  192. package/dist/cjs/services/types.js +11 -0
  193. package/dist/cjs/services/types.js.map +1 -0
  194. package/dist/cjs/shared/components/BlockDisplay.d.ts +6 -0
  195. package/dist/cjs/shared/components/BlockDisplay.d.ts.map +1 -0
  196. package/dist/cjs/shared/components/BlockDisplay.js +32 -0
  197. package/dist/cjs/shared/components/BlockDisplay.js.map +1 -0
  198. package/dist/cjs/shared/components/CivicAuthIframe.d.ts +9 -0
  199. package/dist/cjs/shared/components/CivicAuthIframe.d.ts.map +1 -0
  200. package/dist/cjs/shared/components/CivicAuthIframe.js +66 -0
  201. package/dist/cjs/shared/components/CivicAuthIframe.js.map +1 -0
  202. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts +14 -0
  203. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  204. package/dist/cjs/shared/components/CivicAuthIframeContainer.js +158 -0
  205. package/dist/cjs/shared/components/CivicAuthIframeContainer.js.map +1 -0
  206. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
  207. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
  208. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js +21 -0
  209. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
  210. package/dist/cjs/shared/components/CloseIcon.d.ts +3 -0
  211. package/dist/cjs/shared/components/CloseIcon.d.ts.map +1 -0
  212. package/dist/cjs/shared/components/CloseIcon.js +7 -0
  213. package/dist/cjs/shared/components/CloseIcon.js.map +1 -0
  214. package/dist/cjs/shared/components/IFrameAndLoading.d.ts +7 -0
  215. package/dist/cjs/shared/components/IFrameAndLoading.d.ts.map +1 -0
  216. package/dist/cjs/shared/components/IFrameAndLoading.js +39 -0
  217. package/dist/cjs/shared/components/IFrameAndLoading.js.map +1 -0
  218. package/dist/cjs/shared/components/LoadingIcon.d.ts +6 -0
  219. package/dist/cjs/shared/components/LoadingIcon.d.ts.map +1 -0
  220. package/dist/cjs/shared/components/LoadingIcon.js +28 -0
  221. package/dist/cjs/shared/components/LoadingIcon.js.map +1 -0
  222. package/dist/cjs/shared/components/SVGLoading.d.ts +4 -0
  223. package/dist/cjs/shared/components/SVGLoading.d.ts.map +1 -0
  224. package/dist/cjs/shared/components/SVGLoading.js +30 -0
  225. package/dist/cjs/shared/components/SVGLoading.js.map +1 -0
  226. package/dist/cjs/shared/hooks/index.d.ts +11 -0
  227. package/dist/cjs/shared/hooks/index.d.ts.map +1 -0
  228. package/dist/cjs/shared/hooks/index.js +24 -0
  229. package/dist/cjs/shared/hooks/index.js.map +1 -0
  230. package/dist/cjs/shared/hooks/useAuth.d.ts +3 -0
  231. package/dist/cjs/shared/hooks/useAuth.d.ts.map +1 -0
  232. package/dist/cjs/shared/hooks/useAuth.js +15 -0
  233. package/dist/cjs/shared/hooks/useAuth.js.map +1 -0
  234. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts +3 -0
  235. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
  236. package/dist/cjs/shared/hooks/useCivicAuthConfig.js +13 -0
  237. package/dist/cjs/shared/hooks/useCivicAuthConfig.js.map +1 -0
  238. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts +3 -0
  239. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts.map +1 -0
  240. package/dist/cjs/shared/hooks/useCurrentUrl.js +27 -0
  241. package/dist/cjs/shared/hooks/useCurrentUrl.js.map +1 -0
  242. package/dist/cjs/shared/hooks/useIframe.d.ts +3 -0
  243. package/dist/cjs/shared/hooks/useIframe.d.ts.map +1 -0
  244. package/dist/cjs/shared/hooks/useIframe.js +16 -0
  245. package/dist/cjs/shared/hooks/useIframe.js.map +1 -0
  246. package/dist/cjs/shared/hooks/useIsInIframe.d.ts +3 -0
  247. package/dist/cjs/shared/hooks/useIsInIframe.d.ts.map +1 -0
  248. package/dist/cjs/shared/hooks/useIsInIframe.js +17 -0
  249. package/dist/cjs/shared/hooks/useIsInIframe.js.map +1 -0
  250. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts +4 -0
  251. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
  252. package/dist/cjs/shared/hooks/useOAuthEndpoints.js +17 -0
  253. package/dist/cjs/shared/hooks/useOAuthEndpoints.js.map +1 -0
  254. package/dist/cjs/shared/hooks/useRefresh.d.ts +4 -0
  255. package/dist/cjs/shared/hooks/useRefresh.d.ts.map +1 -0
  256. package/dist/cjs/shared/hooks/useRefresh.js +41 -0
  257. package/dist/cjs/shared/hooks/useRefresh.js.map +1 -0
  258. package/dist/cjs/shared/hooks/useSession.d.ts +3 -0
  259. package/dist/cjs/shared/hooks/useSession.d.ts.map +1 -0
  260. package/dist/cjs/shared/hooks/useSession.js +16 -0
  261. package/dist/cjs/shared/hooks/useSession.js.map +1 -0
  262. package/dist/cjs/shared/hooks/useSignIn.d.ts +17 -0
  263. package/dist/cjs/shared/hooks/useSignIn.d.ts.map +1 -0
  264. package/dist/cjs/shared/hooks/useSignIn.js +171 -0
  265. package/dist/cjs/shared/hooks/useSignIn.js.map +1 -0
  266. package/dist/cjs/shared/hooks/useToken.d.ts +3 -0
  267. package/dist/cjs/shared/hooks/useToken.d.ts.map +1 -0
  268. package/dist/cjs/shared/hooks/useToken.js +15 -0
  269. package/dist/cjs/shared/hooks/useToken.js.map +1 -0
  270. package/dist/cjs/shared/hooks/useWindowFocused.d.ts +5 -0
  271. package/dist/cjs/shared/hooks/useWindowFocused.d.ts.map +1 -0
  272. package/dist/cjs/shared/hooks/useWindowFocused.js +24 -0
  273. package/dist/cjs/shared/hooks/useWindowFocused.js.map +1 -0
  274. package/dist/cjs/shared/index.d.ts +7 -0
  275. package/dist/cjs/shared/index.d.ts.map +1 -0
  276. package/dist/cjs/shared/index.js +25 -0
  277. package/dist/cjs/shared/index.js.map +1 -0
  278. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
  279. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
  280. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js +52 -0
  281. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
  282. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts +9 -0
  283. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
  284. package/dist/cjs/shared/lib/BrowserCookieStorage.js +60 -0
  285. package/dist/cjs/shared/lib/BrowserCookieStorage.js.map +1 -0
  286. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts +16 -0
  287. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  288. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js +65 -0
  289. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  290. package/dist/cjs/shared/lib/UserSession.d.ts +17 -0
  291. package/dist/cjs/shared/lib/UserSession.d.ts.map +1 -0
  292. package/dist/cjs/shared/lib/UserSession.js +27 -0
  293. package/dist/cjs/shared/lib/UserSession.js.map +1 -0
  294. package/dist/cjs/shared/lib/iframeUtils.d.ts +6 -0
  295. package/dist/cjs/shared/lib/iframeUtils.d.ts.map +1 -0
  296. package/dist/cjs/shared/lib/iframeUtils.js +11 -0
  297. package/dist/cjs/shared/lib/iframeUtils.js.map +1 -0
  298. package/dist/cjs/shared/lib/session.d.ts +4 -0
  299. package/dist/cjs/shared/lib/session.d.ts.map +1 -0
  300. package/dist/cjs/shared/lib/session.js +48 -0
  301. package/dist/cjs/shared/lib/session.js.map +1 -0
  302. package/dist/cjs/shared/lib/storage.d.ts +35 -0
  303. package/dist/cjs/shared/lib/storage.d.ts.map +1 -0
  304. package/dist/cjs/shared/lib/storage.js +21 -0
  305. package/dist/cjs/shared/lib/storage.js.map +1 -0
  306. package/dist/cjs/shared/lib/types.d.ts +39 -0
  307. package/dist/cjs/shared/lib/types.d.ts.map +1 -0
  308. package/dist/cjs/shared/lib/types.js +22 -0
  309. package/dist/cjs/shared/lib/types.js.map +1 -0
  310. package/dist/cjs/shared/lib/util.d.ts +40 -0
  311. package/dist/cjs/shared/lib/util.d.ts.map +1 -0
  312. package/dist/cjs/shared/lib/util.js +239 -0
  313. package/dist/cjs/shared/lib/util.js.map +1 -0
  314. package/dist/cjs/shared/providers/AuthContext.d.ts +12 -0
  315. package/dist/cjs/shared/providers/AuthContext.d.ts.map +1 -0
  316. package/dist/cjs/shared/providers/AuthContext.js +7 -0
  317. package/dist/cjs/shared/providers/AuthContext.js.map +1 -0
  318. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts +19 -0
  319. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
  320. package/dist/cjs/shared/providers/CivicAuthConfigContext.js +59 -0
  321. package/dist/cjs/shared/providers/CivicAuthConfigContext.js.map +1 -0
  322. package/dist/cjs/shared/providers/IframeProvider.d.ts +25 -0
  323. package/dist/cjs/shared/providers/IframeProvider.d.ts.map +1 -0
  324. package/dist/cjs/shared/providers/IframeProvider.js +63 -0
  325. package/dist/cjs/shared/providers/IframeProvider.js.map +1 -0
  326. package/dist/cjs/shared/providers/SessionProvider.d.ts +19 -0
  327. package/dist/cjs/shared/providers/SessionProvider.d.ts.map +1 -0
  328. package/dist/cjs/shared/providers/SessionProvider.js +28 -0
  329. package/dist/cjs/shared/providers/SessionProvider.js.map +1 -0
  330. package/dist/cjs/shared/providers/TokenProvider.d.ts +17 -0
  331. package/dist/cjs/shared/providers/TokenProvider.d.ts.map +1 -0
  332. package/dist/cjs/shared/providers/TokenProvider.js +39 -0
  333. package/dist/cjs/shared/providers/TokenProvider.js.map +1 -0
  334. package/dist/cjs/shared/providers/UserProvider.d.ts +26 -0
  335. package/dist/cjs/shared/providers/UserProvider.d.ts.map +1 -0
  336. package/dist/cjs/shared/providers/UserProvider.js +69 -0
  337. package/dist/cjs/shared/providers/UserProvider.js.map +1 -0
  338. package/dist/cjs/shared/providers/types.d.ts +15 -0
  339. package/dist/cjs/shared/providers/types.d.ts.map +1 -0
  340. package/dist/cjs/shared/providers/types.js +3 -0
  341. package/dist/cjs/shared/providers/types.js.map +1 -0
  342. package/dist/cjs/shared/version.d.ts +2 -0
  343. package/dist/cjs/shared/version.d.ts.map +1 -0
  344. package/dist/cjs/shared/version.js +6 -0
  345. package/dist/cjs/shared/version.js.map +1 -0
  346. package/dist/cjs/types.d.ts +163 -0
  347. package/dist/cjs/types.d.ts.map +1 -0
  348. package/dist/cjs/types.js +20 -0
  349. package/dist/cjs/types.js.map +1 -0
  350. package/dist/cjs/utils.d.ts +15 -0
  351. package/dist/cjs/utils.d.ts.map +1 -0
  352. package/dist/cjs/utils.js +47 -0
  353. package/dist/cjs/utils.js.map +1 -0
  354. package/dist/cjs/version.d.ts +2 -0
  355. package/dist/cjs/version.d.ts.map +1 -0
  356. package/dist/cjs/version.js +6 -0
  357. package/dist/cjs/version.js.map +1 -0
  358. package/dist/esm/browser/storage.d.ts +10 -0
  359. package/dist/esm/browser/storage.d.ts.map +1 -0
  360. package/dist/esm/browser/storage.js +20 -0
  361. package/dist/esm/browser/storage.js.map +1 -0
  362. package/dist/esm/config.d.ts +3 -0
  363. package/dist/esm/config.d.ts.map +1 -0
  364. package/dist/esm/config.js +5 -0
  365. package/dist/esm/config.js.map +1 -0
  366. package/dist/esm/constants.d.ts +15 -0
  367. package/dist/esm/constants.d.ts.map +1 -0
  368. package/dist/esm/constants.js +29 -0
  369. package/dist/esm/constants.js.map +1 -0
  370. package/dist/esm/index.d.ts +8 -0
  371. package/dist/esm/index.d.ts.map +1 -0
  372. package/dist/esm/index.js +6 -0
  373. package/dist/esm/index.js.map +1 -0
  374. package/dist/esm/lib/cookies.d.ts +7 -0
  375. package/dist/esm/lib/cookies.d.ts.map +1 -0
  376. package/dist/esm/lib/cookies.js +26 -0
  377. package/dist/esm/lib/cookies.js.map +1 -0
  378. package/dist/esm/lib/jwt.d.ts +3 -0
  379. package/dist/esm/lib/jwt.d.ts.map +1 -0
  380. package/dist/esm/lib/jwt.js +9 -0
  381. package/dist/esm/lib/jwt.js.map +1 -0
  382. package/dist/esm/lib/logger.d.ts +26 -0
  383. package/dist/esm/lib/logger.d.ts.map +1 -0
  384. package/dist/esm/lib/logger.js +55 -0
  385. package/dist/esm/lib/logger.js.map +1 -0
  386. package/dist/esm/lib/oauth.d.ts +19 -0
  387. package/dist/esm/lib/oauth.d.ts.map +1 -0
  388. package/dist/esm/lib/oauth.js +67 -0
  389. package/dist/esm/lib/oauth.js.map +1 -0
  390. package/dist/esm/lib/obj.d.ts +3 -0
  391. package/dist/esm/lib/obj.d.ts.map +1 -0
  392. package/dist/esm/lib/obj.js +18 -0
  393. package/dist/esm/lib/obj.js.map +1 -0
  394. package/dist/esm/lib/postMessage.d.ts +4 -0
  395. package/dist/esm/lib/postMessage.d.ts.map +1 -0
  396. package/dist/esm/lib/postMessage.js +13 -0
  397. package/dist/esm/lib/postMessage.js.map +1 -0
  398. package/dist/esm/lib/windowUtil.d.ts +4 -0
  399. package/dist/esm/lib/windowUtil.d.ts.map +1 -0
  400. package/dist/esm/lib/windowUtil.js +31 -0
  401. package/dist/esm/lib/windowUtil.js.map +1 -0
  402. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts +9 -0
  403. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
  404. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js +22 -0
  405. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
  406. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts +11 -0
  407. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
  408. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js +17 -0
  409. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
  410. package/dist/esm/nextjs/config.d.ts +209 -0
  411. package/dist/esm/nextjs/config.d.ts.map +1 -0
  412. package/dist/esm/nextjs/config.js +186 -0
  413. package/dist/esm/nextjs/config.js.map +1 -0
  414. package/dist/esm/nextjs/cookies.d.ts +16 -0
  415. package/dist/esm/nextjs/cookies.d.ts.map +1 -0
  416. package/dist/esm/nextjs/cookies.js +41 -0
  417. package/dist/esm/nextjs/cookies.js.map +1 -0
  418. package/dist/esm/nextjs/hooks/index.d.ts +2 -0
  419. package/dist/esm/nextjs/hooks/index.d.ts.map +1 -0
  420. package/dist/esm/nextjs/hooks/index.js +2 -0
  421. package/dist/esm/nextjs/hooks/index.js.map +1 -0
  422. package/dist/esm/nextjs/hooks/usePrevious.d.ts +2 -0
  423. package/dist/esm/nextjs/hooks/usePrevious.d.ts.map +1 -0
  424. package/dist/esm/nextjs/hooks/usePrevious.js +9 -0
  425. package/dist/esm/nextjs/hooks/usePrevious.js.map +1 -0
  426. package/dist/esm/nextjs/hooks/useRefresh.d.ts +4 -0
  427. package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +1 -0
  428. package/dist/esm/nextjs/hooks/useRefresh.js +40 -0
  429. package/dist/esm/nextjs/hooks/useRefresh.js.map +1 -0
  430. package/dist/esm/nextjs/hooks/useUserCookie.d.ts +8 -0
  431. package/dist/esm/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  432. package/dist/esm/nextjs/hooks/useUserCookie.js +89 -0
  433. package/dist/esm/nextjs/hooks/useUserCookie.js.map +1 -0
  434. package/dist/esm/nextjs/index.d.ts +9 -0
  435. package/dist/esm/nextjs/index.d.ts.map +1 -0
  436. package/dist/esm/nextjs/index.js +17 -0
  437. package/dist/esm/nextjs/index.js.map +1 -0
  438. package/dist/esm/nextjs/middleware/index.d.ts +2 -0
  439. package/dist/esm/nextjs/middleware/index.d.ts.map +1 -0
  440. package/dist/esm/nextjs/middleware/index.js +4 -0
  441. package/dist/esm/nextjs/middleware/index.js.map +1 -0
  442. package/dist/esm/nextjs/middleware.d.ts +57 -0
  443. package/dist/esm/nextjs/middleware.d.ts.map +1 -0
  444. package/dist/esm/nextjs/middleware.js +101 -0
  445. package/dist/esm/nextjs/middleware.js.map +1 -0
  446. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts +9 -0
  447. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  448. package/dist/esm/nextjs/providers/NextAuthProvider.js +99 -0
  449. package/dist/esm/nextjs/providers/NextAuthProvider.js.map +1 -0
  450. package/dist/esm/nextjs/routeHandler.d.ts +19 -0
  451. package/dist/esm/nextjs/routeHandler.d.ts.map +1 -0
  452. package/dist/esm/nextjs/routeHandler.js +312 -0
  453. package/dist/esm/nextjs/routeHandler.js.map +1 -0
  454. package/dist/esm/nextjs/utils.d.ts +3 -0
  455. package/dist/esm/nextjs/utils.d.ts.map +1 -0
  456. package/dist/esm/nextjs/utils.js +5 -0
  457. package/dist/esm/nextjs/utils.js.map +1 -0
  458. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
  459. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
  460. package/dist/esm/reactjs/components/ButtonContentOrLoader.js +37 -0
  461. package/dist/esm/reactjs/components/ButtonContentOrLoader.js.map +1 -0
  462. package/dist/esm/reactjs/components/SignInButton.d.ts +9 -0
  463. package/dist/esm/reactjs/components/SignInButton.d.ts.map +1 -0
  464. package/dist/esm/reactjs/components/SignInButton.js +28 -0
  465. package/dist/esm/reactjs/components/SignInButton.js.map +1 -0
  466. package/dist/esm/reactjs/components/SignOutButton.d.ts +7 -0
  467. package/dist/esm/reactjs/components/SignOutButton.d.ts.map +1 -0
  468. package/dist/esm/reactjs/components/SignOutButton.js +24 -0
  469. package/dist/esm/reactjs/components/SignOutButton.js.map +1 -0
  470. package/dist/esm/reactjs/components/UserButton.d.ts +9 -0
  471. package/dist/esm/reactjs/components/UserButton.d.ts.map +1 -0
  472. package/dist/esm/reactjs/components/UserButton.js +142 -0
  473. package/dist/esm/reactjs/components/UserButton.js.map +1 -0
  474. package/dist/esm/reactjs/components/index.d.ts +6 -0
  475. package/dist/esm/reactjs/components/index.d.ts.map +1 -0
  476. package/dist/esm/reactjs/components/index.js +6 -0
  477. package/dist/esm/reactjs/components/index.js.map +1 -0
  478. package/dist/esm/reactjs/components/utils.d.ts +13 -0
  479. package/dist/esm/reactjs/components/utils.d.ts.map +1 -0
  480. package/dist/esm/reactjs/components/utils.js +27 -0
  481. package/dist/esm/reactjs/components/utils.js.map +1 -0
  482. package/dist/esm/reactjs/hooks/index.d.ts +3 -0
  483. package/dist/esm/reactjs/hooks/index.d.ts.map +1 -0
  484. package/dist/esm/reactjs/hooks/index.js +3 -0
  485. package/dist/esm/reactjs/hooks/index.js.map +1 -0
  486. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
  487. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  488. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js +13 -0
  489. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
  490. package/dist/esm/reactjs/hooks/useUser.d.ts +4 -0
  491. package/dist/esm/reactjs/hooks/useUser.d.ts.map +1 -0
  492. package/dist/esm/reactjs/hooks/useUser.js +12 -0
  493. package/dist/esm/reactjs/hooks/useUser.js.map +1 -0
  494. package/dist/esm/reactjs/index.d.ts +6 -0
  495. package/dist/esm/reactjs/index.d.ts.map +1 -0
  496. package/dist/esm/reactjs/index.js +10 -0
  497. package/dist/esm/reactjs/index.js.map +1 -0
  498. package/dist/esm/reactjs/providers/AuthProvider.d.ts +10 -0
  499. package/dist/esm/reactjs/providers/AuthProvider.d.ts.map +1 -0
  500. package/dist/esm/reactjs/providers/AuthProvider.js +89 -0
  501. package/dist/esm/reactjs/providers/AuthProvider.js.map +1 -0
  502. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts +5 -0
  503. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
  504. package/dist/esm/reactjs/providers/CivicAuthProvider.js +27 -0
  505. package/dist/esm/reactjs/providers/CivicAuthProvider.js.map +1 -0
  506. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  507. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  508. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js +143 -0
  509. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  510. package/dist/esm/reactjs/providers/index.d.ts +8 -0
  511. package/dist/esm/reactjs/providers/index.d.ts.map +1 -0
  512. package/dist/esm/reactjs/providers/index.js +7 -0
  513. package/dist/esm/reactjs/providers/index.js.map +1 -0
  514. package/dist/esm/server/ServerAuthenticationResolver.d.ts +20 -0
  515. package/dist/esm/server/ServerAuthenticationResolver.d.ts.map +1 -0
  516. package/dist/esm/server/ServerAuthenticationResolver.js +67 -0
  517. package/dist/esm/server/ServerAuthenticationResolver.js.map +1 -0
  518. package/dist/esm/server/config.d.ts +11 -0
  519. package/dist/esm/server/config.d.ts.map +1 -0
  520. package/dist/esm/server/config.js +2 -0
  521. package/dist/esm/server/config.js.map +1 -0
  522. package/dist/esm/server/index.d.ts +9 -0
  523. package/dist/esm/server/index.d.ts.map +1 -0
  524. package/dist/esm/server/index.js +9 -0
  525. package/dist/esm/server/index.js.map +1 -0
  526. package/dist/esm/server/login.d.ts +17 -0
  527. package/dist/esm/server/login.d.ts.map +1 -0
  528. package/dist/esm/server/login.js +37 -0
  529. package/dist/esm/server/login.js.map +1 -0
  530. package/dist/esm/server/logout.d.ts +7 -0
  531. package/dist/esm/server/logout.d.ts.map +1 -0
  532. package/dist/esm/server/logout.js +23 -0
  533. package/dist/esm/server/logout.js.map +1 -0
  534. package/dist/esm/server/refresh.d.ts +7 -0
  535. package/dist/esm/server/refresh.d.ts.map +1 -0
  536. package/dist/esm/server/refresh.js +13 -0
  537. package/dist/esm/server/refresh.js.map +1 -0
  538. package/dist/esm/services/AuthenticationService.d.ts +93 -0
  539. package/dist/esm/services/AuthenticationService.d.ts.map +1 -0
  540. package/dist/esm/services/AuthenticationService.js +366 -0
  541. package/dist/esm/services/AuthenticationService.js.map +1 -0
  542. package/dist/esm/services/PKCE.d.ts +20 -0
  543. package/dist/esm/services/PKCE.d.ts.map +1 -0
  544. package/dist/esm/services/PKCE.js +44 -0
  545. package/dist/esm/services/PKCE.js.map +1 -0
  546. package/dist/esm/services/types.d.ts +24 -0
  547. package/dist/esm/services/types.d.ts.map +1 -0
  548. package/dist/esm/services/types.js +7 -0
  549. package/dist/esm/services/types.js.map +1 -0
  550. package/dist/esm/shared/components/BlockDisplay.d.ts +6 -0
  551. package/dist/esm/shared/components/BlockDisplay.d.ts.map +1 -0
  552. package/dist/esm/shared/components/BlockDisplay.js +29 -0
  553. package/dist/esm/shared/components/BlockDisplay.js.map +1 -0
  554. package/dist/esm/shared/components/CivicAuthIframe.d.ts +9 -0
  555. package/dist/esm/shared/components/CivicAuthIframe.d.ts.map +1 -0
  556. package/dist/esm/shared/components/CivicAuthIframe.js +27 -0
  557. package/dist/esm/shared/components/CivicAuthIframe.js.map +1 -0
  558. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts +14 -0
  559. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  560. package/dist/esm/shared/components/CivicAuthIframeContainer.js +154 -0
  561. package/dist/esm/shared/components/CivicAuthIframeContainer.js.map +1 -0
  562. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
  563. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
  564. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js +19 -0
  565. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
  566. package/dist/esm/shared/components/CloseIcon.d.ts +3 -0
  567. package/dist/esm/shared/components/CloseIcon.d.ts.map +1 -0
  568. package/dist/esm/shared/components/CloseIcon.js +5 -0
  569. package/dist/esm/shared/components/CloseIcon.js.map +1 -0
  570. package/dist/esm/shared/components/IFrameAndLoading.d.ts +7 -0
  571. package/dist/esm/shared/components/IFrameAndLoading.d.ts.map +1 -0
  572. package/dist/esm/shared/components/IFrameAndLoading.js +36 -0
  573. package/dist/esm/shared/components/IFrameAndLoading.js.map +1 -0
  574. package/dist/esm/shared/components/LoadingIcon.d.ts +6 -0
  575. package/dist/esm/shared/components/LoadingIcon.d.ts.map +1 -0
  576. package/dist/esm/shared/components/LoadingIcon.js +26 -0
  577. package/dist/esm/shared/components/LoadingIcon.js.map +1 -0
  578. package/dist/esm/shared/components/SVGLoading.d.ts +4 -0
  579. package/dist/esm/shared/components/SVGLoading.d.ts.map +1 -0
  580. package/dist/esm/shared/components/SVGLoading.js +28 -0
  581. package/dist/esm/shared/components/SVGLoading.js.map +1 -0
  582. package/dist/esm/shared/hooks/index.d.ts +11 -0
  583. package/dist/esm/shared/hooks/index.d.ts.map +1 -0
  584. package/dist/esm/shared/hooks/index.js +11 -0
  585. package/dist/esm/shared/hooks/index.js.map +1 -0
  586. package/dist/esm/shared/hooks/useAuth.d.ts +3 -0
  587. package/dist/esm/shared/hooks/useAuth.d.ts.map +1 -0
  588. package/dist/esm/shared/hooks/useAuth.js +12 -0
  589. package/dist/esm/shared/hooks/useAuth.js.map +1 -0
  590. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts +3 -0
  591. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
  592. package/dist/esm/shared/hooks/useCivicAuthConfig.js +10 -0
  593. package/dist/esm/shared/hooks/useCivicAuthConfig.js.map +1 -0
  594. package/dist/esm/shared/hooks/useCurrentUrl.d.ts +3 -0
  595. package/dist/esm/shared/hooks/useCurrentUrl.d.ts.map +1 -0
  596. package/dist/esm/shared/hooks/useCurrentUrl.js +24 -0
  597. package/dist/esm/shared/hooks/useCurrentUrl.js.map +1 -0
  598. package/dist/esm/shared/hooks/useIframe.d.ts +3 -0
  599. package/dist/esm/shared/hooks/useIframe.d.ts.map +1 -0
  600. package/dist/esm/shared/hooks/useIframe.js +13 -0
  601. package/dist/esm/shared/hooks/useIframe.js.map +1 -0
  602. package/dist/esm/shared/hooks/useIsInIframe.d.ts +3 -0
  603. package/dist/esm/shared/hooks/useIsInIframe.d.ts.map +1 -0
  604. package/dist/esm/shared/hooks/useIsInIframe.js +14 -0
  605. package/dist/esm/shared/hooks/useIsInIframe.js.map +1 -0
  606. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts +4 -0
  607. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
  608. package/dist/esm/shared/hooks/useOAuthEndpoints.js +14 -0
  609. package/dist/esm/shared/hooks/useOAuthEndpoints.js.map +1 -0
  610. package/dist/esm/shared/hooks/useRefresh.d.ts +4 -0
  611. package/dist/esm/shared/hooks/useRefresh.d.ts.map +1 -0
  612. package/dist/esm/shared/hooks/useRefresh.js +38 -0
  613. package/dist/esm/shared/hooks/useRefresh.js.map +1 -0
  614. package/dist/esm/shared/hooks/useSession.d.ts +3 -0
  615. package/dist/esm/shared/hooks/useSession.d.ts.map +1 -0
  616. package/dist/esm/shared/hooks/useSession.js +13 -0
  617. package/dist/esm/shared/hooks/useSession.js.map +1 -0
  618. package/dist/esm/shared/hooks/useSignIn.d.ts +17 -0
  619. package/dist/esm/shared/hooks/useSignIn.d.ts.map +1 -0
  620. package/dist/esm/shared/hooks/useSignIn.js +168 -0
  621. package/dist/esm/shared/hooks/useSignIn.js.map +1 -0
  622. package/dist/esm/shared/hooks/useToken.d.ts +3 -0
  623. package/dist/esm/shared/hooks/useToken.d.ts.map +1 -0
  624. package/dist/esm/shared/hooks/useToken.js +12 -0
  625. package/dist/esm/shared/hooks/useToken.js.map +1 -0
  626. package/dist/esm/shared/hooks/useWindowFocused.d.ts +5 -0
  627. package/dist/esm/shared/hooks/useWindowFocused.d.ts.map +1 -0
  628. package/dist/esm/shared/hooks/useWindowFocused.js +21 -0
  629. package/dist/esm/shared/hooks/useWindowFocused.js.map +1 -0
  630. package/dist/esm/shared/index.d.ts +7 -0
  631. package/dist/esm/shared/index.d.ts.map +1 -0
  632. package/dist/esm/shared/index.js +18 -0
  633. package/dist/esm/shared/index.js.map +1 -0
  634. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
  635. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
  636. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js +48 -0
  637. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
  638. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts +9 -0
  639. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
  640. package/dist/esm/shared/lib/BrowserCookieStorage.js +56 -0
  641. package/dist/esm/shared/lib/BrowserCookieStorage.js.map +1 -0
  642. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts +16 -0
  643. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  644. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js +61 -0
  645. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  646. package/dist/esm/shared/lib/UserSession.d.ts +17 -0
  647. package/dist/esm/shared/lib/UserSession.d.ts.map +1 -0
  648. package/dist/esm/shared/lib/UserSession.js +23 -0
  649. package/dist/esm/shared/lib/UserSession.js.map +1 -0
  650. package/dist/esm/shared/lib/iframeUtils.d.ts +6 -0
  651. package/dist/esm/shared/lib/iframeUtils.d.ts.map +1 -0
  652. package/dist/esm/shared/lib/iframeUtils.js +7 -0
  653. package/dist/esm/shared/lib/iframeUtils.js.map +1 -0
  654. package/dist/esm/shared/lib/session.d.ts +4 -0
  655. package/dist/esm/shared/lib/session.d.ts.map +1 -0
  656. package/dist/esm/shared/lib/session.js +44 -0
  657. package/dist/esm/shared/lib/session.js.map +1 -0
  658. package/dist/esm/shared/lib/storage.d.ts +35 -0
  659. package/dist/esm/shared/lib/storage.d.ts.map +1 -0
  660. package/dist/esm/shared/lib/storage.js +17 -0
  661. package/dist/esm/shared/lib/storage.js.map +1 -0
  662. package/dist/esm/shared/lib/types.d.ts +39 -0
  663. package/dist/esm/shared/lib/types.d.ts.map +1 -0
  664. package/dist/esm/shared/lib/types.js +19 -0
  665. package/dist/esm/shared/lib/types.js.map +1 -0
  666. package/dist/esm/shared/lib/util.d.ts +40 -0
  667. package/dist/esm/shared/lib/util.d.ts.map +1 -0
  668. package/dist/esm/shared/lib/util.js +187 -0
  669. package/dist/esm/shared/lib/util.js.map +1 -0
  670. package/dist/esm/shared/providers/AuthContext.d.ts +12 -0
  671. package/dist/esm/shared/providers/AuthContext.d.ts.map +1 -0
  672. package/dist/esm/shared/providers/AuthContext.js +4 -0
  673. package/dist/esm/shared/providers/AuthContext.js.map +1 -0
  674. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts +19 -0
  675. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
  676. package/dist/esm/shared/providers/CivicAuthConfigContext.js +55 -0
  677. package/dist/esm/shared/providers/CivicAuthConfigContext.js.map +1 -0
  678. package/dist/esm/shared/providers/IframeProvider.d.ts +25 -0
  679. package/dist/esm/shared/providers/IframeProvider.d.ts.map +1 -0
  680. package/dist/esm/shared/providers/IframeProvider.js +59 -0
  681. package/dist/esm/shared/providers/IframeProvider.js.map +1 -0
  682. package/dist/esm/shared/providers/SessionProvider.d.ts +19 -0
  683. package/dist/esm/shared/providers/SessionProvider.d.ts.map +1 -0
  684. package/dist/esm/shared/providers/SessionProvider.js +24 -0
  685. package/dist/esm/shared/providers/SessionProvider.js.map +1 -0
  686. package/dist/esm/shared/providers/TokenProvider.d.ts +17 -0
  687. package/dist/esm/shared/providers/TokenProvider.d.ts.map +1 -0
  688. package/dist/esm/shared/providers/TokenProvider.js +35 -0
  689. package/dist/esm/shared/providers/TokenProvider.js.map +1 -0
  690. package/dist/esm/shared/providers/UserProvider.d.ts +26 -0
  691. package/dist/esm/shared/providers/UserProvider.d.ts.map +1 -0
  692. package/dist/esm/shared/providers/UserProvider.js +65 -0
  693. package/dist/esm/shared/providers/UserProvider.js.map +1 -0
  694. package/dist/esm/shared/providers/types.d.ts +15 -0
  695. package/dist/esm/shared/providers/types.d.ts.map +1 -0
  696. package/dist/esm/shared/providers/types.js +2 -0
  697. package/dist/esm/shared/providers/types.js.map +1 -0
  698. package/dist/esm/shared/version.d.ts +2 -0
  699. package/dist/esm/shared/version.d.ts.map +1 -0
  700. package/dist/esm/shared/version.js +3 -0
  701. package/dist/esm/shared/version.js.map +1 -0
  702. package/dist/esm/types.d.ts +163 -0
  703. package/dist/esm/types.d.ts.map +1 -0
  704. package/dist/esm/types.js +17 -0
  705. package/dist/esm/types.js.map +1 -0
  706. package/dist/esm/utils.d.ts +15 -0
  707. package/dist/esm/utils.d.ts.map +1 -0
  708. package/dist/esm/utils.js +42 -0
  709. package/dist/esm/utils.js.map +1 -0
  710. package/dist/esm/version.d.ts +2 -0
  711. package/dist/esm/version.d.ts.map +1 -0
  712. package/dist/esm/version.js +3 -0
  713. package/dist/esm/version.js.map +1 -0
  714. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts +3 -4
  715. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -1
  716. package/dist/nextjs/NextClientAuthenticationRefresher.js +14 -12
  717. package/dist/nextjs/NextClientAuthenticationRefresher.js.map +1 -1
  718. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts +2 -1
  719. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -1
  720. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js +7 -5
  721. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -1
  722. package/dist/nextjs/hooks/useRefresh.d.ts +3 -1
  723. package/dist/nextjs/hooks/useRefresh.d.ts.map +1 -1
  724. package/dist/nextjs/hooks/useRefresh.js +11 -2
  725. package/dist/nextjs/hooks/useRefresh.js.map +1 -1
  726. package/dist/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
  727. package/dist/nextjs/providers/NextAuthProvider.js +7 -1
  728. package/dist/nextjs/providers/NextAuthProvider.js.map +1 -1
  729. package/dist/nextjs/routeHandler.d.ts.map +1 -1
  730. package/dist/nextjs/routeHandler.js +18 -11
  731. package/dist/nextjs/routeHandler.js.map +1 -1
  732. package/dist/reactjs/providers/AuthProvider.d.ts.map +1 -1
  733. package/dist/reactjs/providers/AuthProvider.js +8 -0
  734. package/dist/reactjs/providers/AuthProvider.js.map +1 -1
  735. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
  736. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js +1 -2
  737. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -1
  738. package/dist/server/refresh.d.ts.map +1 -1
  739. package/dist/server/refresh.js +4 -1
  740. package/dist/server/refresh.js.map +1 -1
  741. package/dist/services/AuthenticationService.d.ts.map +1 -1
  742. package/dist/services/AuthenticationService.js +1 -6
  743. package/dist/services/AuthenticationService.js.map +1 -1
  744. package/dist/shared/components/CivicAuthIframe.d.ts.map +1 -1
  745. package/dist/shared/components/CivicAuthIframe.js +8 -2
  746. package/dist/shared/components/CivicAuthIframe.js.map +1 -1
  747. package/dist/shared/hooks/useRefresh.d.ts +3 -1
  748. package/dist/shared/hooks/useRefresh.d.ts.map +1 -1
  749. package/dist/shared/hooks/useRefresh.js +11 -2
  750. package/dist/shared/hooks/useRefresh.js.map +1 -1
  751. package/dist/shared/lib/AuthenticationRefresherImpl.d.ts +2 -2
  752. package/dist/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -1
  753. package/dist/shared/lib/AuthenticationRefresherImpl.js +7 -9
  754. package/dist/shared/lib/AuthenticationRefresherImpl.js.map +1 -1
  755. package/dist/shared/lib/GenericAuthenticationRefresher.d.ts +2 -4
  756. package/dist/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  757. package/dist/shared/lib/GenericAuthenticationRefresher.js +10 -44
  758. package/dist/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  759. package/dist/shared/lib/util.d.ts.map +1 -1
  760. package/dist/shared/lib/util.js +3 -7
  761. package/dist/shared/lib/util.js.map +1 -1
  762. package/dist/shared/version.d.ts +1 -1
  763. package/dist/shared/version.js +1 -1
  764. package/dist/shared/version.js.map +1 -1
  765. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  766. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  767. package/package.json +1 -1
@@ -0,0 +1,143 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
3
+ import React, { createContext, useCallback, useEffect, useMemo, useState, useRef, } from "react";
4
+ import { BrowserAuthenticationService } from "../../services/AuthenticationService.js";
5
+ import { isWindowInIframe } from "../../lib/windowUtil.js";
6
+ import { useCurrentUrl, useCivicAuthConfig, useWindowFocused, useRefresh, } from "../../shared/hooks/index.js";
7
+ import { LocalStorageAdapter } from "../../browser/storage.js";
8
+ const defaultSession = {
9
+ data: {
10
+ authenticated: false,
11
+ idToken: undefined,
12
+ accessToken: undefined,
13
+ displayMode: "iframe",
14
+ },
15
+ error: null,
16
+ isLoading: false,
17
+ doTokenExchange: null,
18
+ };
19
+ // Context for exposing session specifically to the TokenProvider
20
+ const ClientTokenExchangeSessionContext = createContext(defaultSession);
21
+ const ClientTokenExchangeSessionProvider = ({ children, }) => {
22
+ const authConfig = useCivicAuthConfig();
23
+ const [authService, setAuthService] = useState();
24
+ const [error, setError] = useState(null);
25
+ const [isLoading, setIsLoading] = useState(false);
26
+ const [session, setSession] = useState(null);
27
+ const { isWindowFocused } = useWindowFocused();
28
+ const currentUrl = useCurrentUrl();
29
+ // Add a ref to track processed codes
30
+ const processedCodes = useRef(new Set());
31
+ useRefresh(session);
32
+ useEffect(() => {
33
+ if (!currentUrl || !authConfig)
34
+ return;
35
+ const { redirectUrl, clientId, oauthServer, scopes, logoutRedirectUrl, logoutUrl, } = authConfig;
36
+ BrowserAuthenticationService.build({
37
+ clientId,
38
+ redirectUrl,
39
+ logoutRedirectUrl,
40
+ logoutUrl,
41
+ oauthServer,
42
+ scopes,
43
+ displayMode: "iframe",
44
+ }).then(setAuthService);
45
+ }, [currentUrl, authConfig]);
46
+ const isInIframe = isWindowInIframe(globalThis.window);
47
+ const doTokenExchange = useCallback(async (inUrl) => {
48
+ if (!authService)
49
+ return;
50
+ const url = new URL(inUrl);
51
+ const code = url.searchParams.get("code");
52
+ const state = url.searchParams.get("state");
53
+ // Create a unique key for this code/state combination
54
+ const exchangeKey = `${code}:${state}`;
55
+ // If we've already processed this code, skip it
56
+ if (processedCodes.current.has(exchangeKey)) {
57
+ console.log("Token exchange already processed for this code");
58
+ return;
59
+ }
60
+ if (code && state) {
61
+ try {
62
+ // Mark this code as processed before starting the exchange
63
+ processedCodes.current.add(exchangeKey);
64
+ setIsLoading(true);
65
+ await authService.tokenExchange(code, state);
66
+ }
67
+ catch (error) {
68
+ setError(error);
69
+ setSession({ authenticated: false });
70
+ }
71
+ setIsLoading(false);
72
+ }
73
+ }, [authService]);
74
+ const onSignIn = useCallback(async () => {
75
+ if (!authService)
76
+ return;
77
+ const session = await authService.getSessionData();
78
+ setSession(session);
79
+ }, [authService]);
80
+ const onSignOut = useCallback(() => {
81
+ setSession(null);
82
+ }, []);
83
+ useEffect(() => {
84
+ LocalStorageAdapter.emitter.on("signIn", onSignIn);
85
+ LocalStorageAdapter.emitter.on("signOut", onSignOut);
86
+ return () => {
87
+ LocalStorageAdapter.emitter.off("signIn", onSignIn);
88
+ LocalStorageAdapter.emitter.off("signOut", onSignOut);
89
+ };
90
+ }, [onSignIn, onSignOut]);
91
+ useEffect(() => {
92
+ if (!authConfig) {
93
+ setIsLoading(true);
94
+ }
95
+ else {
96
+ setIsLoading(false);
97
+ }
98
+ }, [authConfig]);
99
+ // Handle page load or refocus
100
+ useEffect(() => {
101
+ if (!authConfig || !authService || !currentUrl || isInIframe || isLoading) {
102
+ return;
103
+ }
104
+ const abortController = new AbortController();
105
+ const onPageLoad = async () => {
106
+ // if we have existing tokens, then validate them and return the session data
107
+ // otherwise check if we have a code in the url and exchange it for tokens
108
+ // if we have neither, return undefined
109
+ const existingSessionData = await authService.validateExistingSession();
110
+ if (existingSessionData.authenticated) {
111
+ setSession(existingSessionData);
112
+ return;
113
+ }
114
+ if (abortController.signal.aborted ||
115
+ !new URL(currentUrl).searchParams.get("code")) {
116
+ return;
117
+ }
118
+ await doTokenExchange(currentUrl);
119
+ };
120
+ onPageLoad();
121
+ return () => {
122
+ abortController.abort();
123
+ };
124
+ }, [
125
+ authConfig,
126
+ authService,
127
+ currentUrl,
128
+ doTokenExchange,
129
+ isInIframe,
130
+ isLoading,
131
+ isWindowFocused,
132
+ session?.authenticated,
133
+ ]);
134
+ const value = useMemo(() => ({
135
+ data: session,
136
+ error,
137
+ isLoading,
138
+ doTokenExchange: authService ? doTokenExchange : null,
139
+ }), [session, error, isLoading, authService, doTokenExchange]);
140
+ return (_jsx(ClientTokenExchangeSessionContext.Provider, { value: value, children: children }));
141
+ };
142
+ export { ClientTokenExchangeSessionProvider, ClientTokenExchangeSessionContext, };
143
+ //# sourceMappingURL=ClientTokenExchangeSessionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientTokenExchangeSessionProvider.js","sourceRoot":"","sources":["../../../../src/reactjs/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,GACP,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,MAAM,cAAc,GAA6C;IAC/D,IAAI,EAAE;QACJ,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;KACtB;IACD,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,iEAAiE;AACjE,MAAM,iCAAiC,GACrC,aAAa,CAA2C,cAAc,CAAC,CAAC;AAM1E,MAAM,kCAAkC,GAAG,CAAC,EAC1C,QAAQ,GAC8B,EAAE,EAAE;IAC1C,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAA0B,CAAC;IACzE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IACjE,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,qCAAqC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;IAEjD,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,OAAO;QAEvC,MAAM,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,SAAS,GACV,GAAG,UAAU,CAAC;QACf,4BAA4B,CAAC,KAAK,CAAC;YACjC,QAAQ;YACR,WAAW;YACX,iBAAiB;YACjB,SAAS;YACT,WAAW;YACX,MAAM;YACN,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE5C,sDAAsD;QACtD,MAAM,WAAW,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;QAEvC,gDAAgD;QAChD,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,2DAA2D;gBAC3D,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACxC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAc,CAAC,CAAC;gBACzB,UAAU,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;QACnD,UAAU,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,GAAG,EAAE;YACV,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpD,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;YAC5B,6EAA6E;YAC7E,0EAA0E;YAC1E,uCAAuC;YACvC,MAAM,mBAAmB,GAAG,MAAM,WAAW,CAAC,uBAAuB,EAAE,CAAC;YACxE,IAAI,mBAAmB,CAAC,aAAa,EAAE,CAAC;gBACtC,UAAU,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IACE,eAAe,CAAC,MAAM,CAAC,OAAO;gBAC9B,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAC7C,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,UAAU,EAAE,CAAC;QACb,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,UAAU;QACV,WAAW;QACX,UAAU;QACV,eAAe;QACf,UAAU;QACV,SAAS;QACT,eAAe;QACf,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,SAAS;QACT,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;KACtD,CAAC,EACF,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAC1D,CAAC;IAEF,OAAO,CACL,KAAC,iCAAiC,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrD,QAAQ,GACkC,CAC9C,CAAC;AACJ,CAAC,CAAC;AAGF,OAAO,EACL,kCAAkC,EAClC,iCAAiC,GAClC,CAAC","sourcesContent":["\"use client\";\nimport type { ReactNode } from \"react\";\nimport React, {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useState,\n useRef,\n} from \"react\";\nimport { BrowserAuthenticationService } from \"@/services/AuthenticationService.js\";\nimport type { AuthenticationResolver } from \"@/services/types.js\";\nimport { isWindowInIframe } from \"@/lib/windowUtil.js\";\nimport type { SessionData } from \"@/types.js\";\nimport {\n useCurrentUrl,\n useCivicAuthConfig,\n useWindowFocused,\n useRefresh,\n} from \"@/shared/hooks/index.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\n\nexport type ClientTokenExchangeSessionProviderOutput = {\n data: SessionData | null;\n error: Error | null;\n isLoading: boolean;\n doTokenExchange: null | ((url: string) => Promise<void>);\n};\nconst defaultSession: ClientTokenExchangeSessionProviderOutput = {\n data: {\n authenticated: false,\n idToken: undefined,\n accessToken: undefined,\n displayMode: \"iframe\",\n },\n error: null,\n isLoading: false,\n doTokenExchange: null,\n};\n\n// Context for exposing session specifically to the TokenProvider\nconst ClientTokenExchangeSessionContext =\n createContext<ClientTokenExchangeSessionProviderOutput>(defaultSession);\n\ntype ClientTokenExchangeSessionContextType = {\n children: ReactNode;\n};\n\nconst ClientTokenExchangeSessionProvider = ({\n children,\n}: ClientTokenExchangeSessionContextType) => {\n const authConfig = useCivicAuthConfig();\n const [authService, setAuthService] = useState<AuthenticationResolver>();\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [session, setSession] = useState<SessionData | null>(null);\n const { isWindowFocused } = useWindowFocused();\n const currentUrl = useCurrentUrl();\n\n // Add a ref to track processed codes\n const processedCodes = useRef(new Set<string>());\n\n useRefresh(session);\n\n useEffect(() => {\n if (!currentUrl || !authConfig) return;\n\n const {\n redirectUrl,\n clientId,\n oauthServer,\n scopes,\n logoutRedirectUrl,\n logoutUrl,\n } = authConfig;\n BrowserAuthenticationService.build({\n clientId,\n redirectUrl,\n logoutRedirectUrl,\n logoutUrl,\n oauthServer,\n scopes,\n displayMode: \"iframe\",\n }).then(setAuthService);\n }, [currentUrl, authConfig]);\n\n const isInIframe = isWindowInIframe(globalThis.window);\n\n const doTokenExchange = useCallback(\n async (inUrl: string) => {\n if (!authService) return;\n const url = new URL(inUrl);\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n // Create a unique key for this code/state combination\n const exchangeKey = `${code}:${state}`;\n\n // If we've already processed this code, skip it\n if (processedCodes.current.has(exchangeKey)) {\n console.log(\"Token exchange already processed for this code\");\n return;\n }\n\n if (code && state) {\n try {\n // Mark this code as processed before starting the exchange\n processedCodes.current.add(exchangeKey);\n setIsLoading(true);\n await authService.tokenExchange(code, state);\n } catch (error) {\n setError(error as Error);\n setSession({ authenticated: false });\n }\n setIsLoading(false);\n }\n },\n [authService],\n );\n\n const onSignIn = useCallback(async () => {\n if (!authService) return;\n const session = await authService.getSessionData();\n setSession(session);\n }, [authService]);\n\n const onSignOut = useCallback(() => {\n setSession(null);\n }, []);\n\n useEffect(() => {\n LocalStorageAdapter.emitter.on(\"signIn\", onSignIn);\n LocalStorageAdapter.emitter.on(\"signOut\", onSignOut);\n return () => {\n LocalStorageAdapter.emitter.off(\"signIn\", onSignIn);\n LocalStorageAdapter.emitter.off(\"signOut\", onSignOut);\n };\n }, [onSignIn, onSignOut]);\n\n useEffect(() => {\n if (!authConfig) {\n setIsLoading(true);\n } else {\n setIsLoading(false);\n }\n }, [authConfig]);\n // Handle page load or refocus\n useEffect(() => {\n if (!authConfig || !authService || !currentUrl || isInIframe || isLoading) {\n return;\n }\n const abortController = new AbortController();\n const onPageLoad = async () => {\n // if we have existing tokens, then validate them and return the session data\n // otherwise check if we have a code in the url and exchange it for tokens\n // if we have neither, return undefined\n const existingSessionData = await authService.validateExistingSession();\n if (existingSessionData.authenticated) {\n setSession(existingSessionData);\n return;\n }\n if (\n abortController.signal.aborted ||\n !new URL(currentUrl).searchParams.get(\"code\")\n ) {\n return;\n }\n await doTokenExchange(currentUrl);\n };\n onPageLoad();\n return () => {\n abortController.abort();\n };\n }, [\n authConfig,\n authService,\n currentUrl,\n doTokenExchange,\n isInIframe,\n isLoading,\n isWindowFocused,\n session?.authenticated,\n ]);\n\n const value = useMemo(\n () => ({\n data: session,\n error,\n isLoading,\n doTokenExchange: authService ? doTokenExchange : null,\n }),\n [session, error, isLoading, authService, doTokenExchange],\n );\n\n return (\n <ClientTokenExchangeSessionContext.Provider value={value}>\n {children}\n </ClientTokenExchangeSessionContext.Provider>\n );\n};\n\nexport type { ClientTokenExchangeSessionContextType as SessionContextType };\nexport {\n ClientTokenExchangeSessionProvider,\n ClientTokenExchangeSessionContext,\n};\n"]}
@@ -0,0 +1,8 @@
1
+ export { UserProvider, UserContext, type UserContextType, } from "../../shared/providers/UserProvider.js";
2
+ export { TokenProvider, TokenContext, type TokenContextType, } from "../../shared/providers/TokenProvider.js";
3
+ export { AuthProvider } from "../../reactjs/providers/AuthProvider.js";
4
+ export { SessionProvider, SessionContext, type SessionContextType, } from "../../shared/providers/SessionProvider.js";
5
+ export { CivicAuthProvider, type CivicAuthProviderProps, } from "../../reactjs/providers/CivicAuthProvider.js";
6
+ export { AuthContext } from "../../shared/providers/AuthContext.js";
7
+ export type { AuthContextType } from "../../shared/providers/AuthContext.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/reactjs/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,GACtB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { UserProvider, UserContext, } from "../../shared/providers/UserProvider.js";
2
+ export { TokenProvider, TokenContext, } from "../../shared/providers/TokenProvider.js";
3
+ export { AuthProvider } from "../../reactjs/providers/AuthProvider.js";
4
+ export { SessionProvider, SessionContext, } from "../../shared/providers/SessionProvider.js";
5
+ export { CivicAuthProvider, } from "../../reactjs/providers/CivicAuthProvider.js";
6
+ export { AuthContext } from "../../shared/providers/AuthContext.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/reactjs/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,GAEZ,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,YAAY,GAEb,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,cAAc,GAEf,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,GAElB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC","sourcesContent":["export {\n UserProvider,\n UserContext,\n type UserContextType,\n} from \"@/shared/providers/UserProvider.js\";\n\nexport {\n TokenProvider,\n TokenContext,\n type TokenContextType,\n} from \"@/shared/providers/TokenProvider.js\";\n\nexport { AuthProvider } from \"@/reactjs/providers/AuthProvider.js\";\n\nexport {\n SessionProvider,\n SessionContext,\n type SessionContextType,\n} from \"@/shared/providers/SessionProvider.js\";\n\nexport {\n CivicAuthProvider,\n type CivicAuthProviderProps,\n} from \"@/reactjs/providers/CivicAuthProvider.js\";\n\nexport { AuthContext } from \"@/shared/providers/AuthContext.js\";\nexport type { AuthContextType } from \"@/shared/providers/AuthContext.js\";\n"]}
@@ -0,0 +1,20 @@
1
+ import type { AuthStorage, Endpoints, OIDCTokenResponseBody, SessionData } from "../types.js";
2
+ import type { AuthConfig } from "../server/config.js";
3
+ import type { AuthenticationResolver } from "../services/types.ts";
4
+ export declare class ServerAuthenticationResolver implements AuthenticationResolver {
5
+ readonly authConfig: AuthConfig;
6
+ readonly storage: AuthStorage;
7
+ readonly endpointOverrides?: Partial<Endpoints> | undefined;
8
+ private pkceProducer;
9
+ private oauth2client;
10
+ private endpoints;
11
+ private constructor();
12
+ validateExistingSession(): Promise<SessionData>;
13
+ get oauthServer(): string;
14
+ init(): Promise<this>;
15
+ tokenExchange(code: string, state: string): Promise<OIDCTokenResponseBody>;
16
+ getSessionData(): Promise<SessionData | null>;
17
+ getEndSessionEndpoint(): Promise<string | null>;
18
+ static build(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints>): Promise<AuthenticationResolver>;
19
+ }
20
+ //# sourceMappingURL=ServerAuthenticationResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerAuthenticationResolver.d.ts","sourceRoot":"","sources":["../../../src/server/ServerAuthenticationResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD,OAAO,KAAK,EAAE,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAGhF,qBAAa,4BAA6B,YAAW,sBAAsB;IAMvE,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAPjD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO;IAOP,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrB,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,CAAC;IAoB3B,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa7C,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAOxC,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,sBAAsB,CAAC;CAUnC"}
@@ -0,0 +1,67 @@
1
+ import { GenericPublicClientPKCEProducer } from "../services/PKCE.js";
2
+ import { OAuth2Client } from "oslo/oauth2";
3
+ import { exchangeTokens, getEndpointsWithOverrides, retrieveTokens, storeServerTokens, } from "../shared/lib/util.js";
4
+ import { DEFAULT_AUTH_SERVER } from "../constants.js";
5
+ export class ServerAuthenticationResolver {
6
+ authConfig;
7
+ storage;
8
+ endpointOverrides;
9
+ pkceProducer;
10
+ oauth2client;
11
+ endpoints;
12
+ constructor(authConfig, storage, endpointOverrides) {
13
+ this.authConfig = authConfig;
14
+ this.storage = storage;
15
+ this.endpointOverrides = endpointOverrides;
16
+ this.pkceProducer = new GenericPublicClientPKCEProducer(storage);
17
+ }
18
+ validateExistingSession() {
19
+ throw new Error("Method not implemented.");
20
+ }
21
+ get oauthServer() {
22
+ return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;
23
+ }
24
+ async init() {
25
+ // resolve oauth config
26
+ this.endpoints = await getEndpointsWithOverrides(this.oauthServer, this.endpointOverrides);
27
+ this.oauth2client = new OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
28
+ redirectURI: this.authConfig.redirectUrl,
29
+ });
30
+ return this;
31
+ }
32
+ async tokenExchange(code, state) {
33
+ if (!this.oauth2client)
34
+ await this.init();
35
+ const codeVerifier = await this.pkceProducer.getCodeVerifier();
36
+ if (!codeVerifier)
37
+ throw new Error("Code verifier not found in storage");
38
+ // exchange auth code for tokens
39
+ const tokens = await exchangeTokens(code, state, this.pkceProducer, this.oauth2client, // clean up types here to avoid the ! operator
40
+ this.oauthServer, this.endpoints);
41
+ await storeServerTokens(this.storage, tokens);
42
+ return tokens;
43
+ }
44
+ async getSessionData() {
45
+ const storageData = await retrieveTokens(this.storage);
46
+ if (!storageData)
47
+ return null;
48
+ return {
49
+ authenticated: !!storageData.id_token,
50
+ idToken: storageData.id_token,
51
+ accessToken: storageData.access_token,
52
+ refreshToken: storageData.refresh_token,
53
+ };
54
+ }
55
+ async getEndSessionEndpoint() {
56
+ if (!this.endpoints) {
57
+ return null;
58
+ }
59
+ return this.endpoints.endsession;
60
+ }
61
+ static async build(authConfig, storage, endpointOverrides) {
62
+ const resolver = new ServerAuthenticationResolver(authConfig, storage, endpointOverrides);
63
+ await resolver.init();
64
+ return resolver;
65
+ }
66
+ }
67
+ //# sourceMappingURL=ServerAuthenticationResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerAuthenticationResolver.js","sourceRoot":"","sources":["../../../src/server/ServerAuthenticationResolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport type {\n AuthStorage,\n Endpoints,\n OIDCTokenResponseBody,\n SessionData,\n} from \"@/types.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport {\n exchangeTokens,\n getEndpointsWithOverrides,\n retrieveTokens,\n storeServerTokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthenticationResolver, PKCEProducer } from \"@/services/types.ts\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\n\nexport class ServerAuthenticationResolver implements AuthenticationResolver {\n private pkceProducer: PKCEProducer;\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n readonly authConfig: AuthConfig,\n readonly storage: AuthStorage,\n readonly endpointOverrides?: Partial<Endpoints>,\n ) {\n this.pkceProducer = new GenericPublicClientPKCEProducer(storage);\n }\n validateExistingSession(): Promise<SessionData> {\n throw new Error(\"Method not implemented.\");\n }\n\n get oauthServer(): string {\n return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;\n }\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n async tokenExchange(\n code: string,\n state: string,\n ): Promise<OIDCTokenResponseBody> {\n if (!this.oauth2client) await this.init();\n const codeVerifier = await this.pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in storage\");\n\n // exchange auth code for tokens\n const tokens = await exchangeTokens(\n code,\n state,\n this.pkceProducer,\n this.oauth2client!, // clean up types here to avoid the ! operator\n this.oauthServer,\n this.endpoints!, // clean up types here to avoid the ! operator\n );\n\n await storeServerTokens(this.storage, tokens);\n\n return tokens;\n }\n\n async getSessionData(): Promise<SessionData | null> {\n const storageData = await retrieveTokens(this.storage);\n\n if (!storageData) return null;\n\n return {\n authenticated: !!storageData.id_token,\n idToken: storageData.id_token,\n accessToken: storageData.access_token,\n refreshToken: storageData.refresh_token,\n };\n }\n\n async getEndSessionEndpoint(): Promise<string | null> {\n if (!this.endpoints) {\n return null;\n }\n return this.endpoints.endsession;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<AuthenticationResolver> {\n const resolver = new ServerAuthenticationResolver(\n authConfig,\n storage,\n endpointOverrides,\n );\n await resolver.init();\n\n return resolver;\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { Endpoints } from "../types.ts";
2
+ export type AuthConfig = {
3
+ clientId: string;
4
+ redirectUrl: string;
5
+ oauthServer?: string;
6
+ challengeUrl?: string;
7
+ refreshUrl?: string;
8
+ endpointOverrides?: Partial<Endpoints> | undefined;
9
+ postLogoutRedirectUrl?: string;
10
+ };
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACnD,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"","sourcesContent":["import type { Endpoints } from \"@/types.ts\";\n\nexport type AuthConfig = {\n clientId: string;\n redirectUrl: string;\n oauthServer?: string;\n challengeUrl?: string;\n refreshUrl?: string;\n endpointOverrides?: Partial<Endpoints> | undefined;\n postLogoutRedirectUrl?: string;\n};\n"]}
@@ -0,0 +1,9 @@
1
+ export { CookieStorage } from "../shared/lib/storage.js";
2
+ export type { SessionStorage, CookieStorageSettings, } from "../shared/lib/storage.js";
3
+ export { resolveOAuthAccessCode, isLoggedIn, buildLoginUrl, } from "../server/login.js";
4
+ export type { AuthConfig } from "../server/config.js";
5
+ export { getUser, getTokens } from "../shared/lib/session.js";
6
+ export { refreshTokens } from "../server/refresh.js";
7
+ export { buildLogoutRedirectUrl } from "../server/logout.js";
8
+ export { clearTokens } from "../shared/lib/util.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { printVersion } from "../shared/index.js";
2
+ printVersion();
3
+ export { CookieStorage } from "../shared/lib/storage.js";
4
+ export { resolveOAuthAccessCode, isLoggedIn, buildLoginUrl, } from "../server/login.js";
5
+ export { getUser, getTokens } from "../shared/lib/session.js";
6
+ export { refreshTokens } from "../server/refresh.js";
7
+ export { buildLogoutRedirectUrl } from "../server/logout.js";
8
+ export { clearTokens } from "../shared/lib/util.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,CAAC;AAEf,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["import { printVersion } from \"@/shared/index.js\";\nprintVersion();\n\nexport { CookieStorage } from \"@/shared/lib/storage.js\";\nexport type {\n SessionStorage,\n CookieStorageSettings,\n} from \"@/shared/lib/storage.js\";\nexport {\n resolveOAuthAccessCode,\n isLoggedIn,\n buildLoginUrl,\n} from \"@/server/login.js\";\nexport type { AuthConfig } from \"@/server/config.js\";\nexport { getUser, getTokens } from \"@/shared/lib/session.js\";\nexport { refreshTokens } from \"@/server/refresh.js\";\nexport { buildLogoutRedirectUrl } from \"@/server/logout.js\";\nexport { clearTokens } from \"@/shared/lib/util.js\";\n"]}
@@ -0,0 +1,17 @@
1
+ import type { AuthStorage, OIDCTokenResponseBody } from "../types.js";
2
+ import type { AuthConfig } from "../server/config.ts";
3
+ /**
4
+ * Resolve an OAuth access code to a set of OIDC tokens
5
+ * @param code The access code, typically from a query parameter in the redirect url
6
+ * @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
7
+ * @param storage The place that this server uses to store session data (e.g. a cookie store)
8
+ * @param config Oauth Server configuration
9
+ */
10
+ export declare function resolveOAuthAccessCode(code: string, state: string, storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
11
+ export declare function isLoggedIn(storage: AuthStorage): Promise<boolean>;
12
+ export declare function buildLoginUrl(config: Pick<AuthConfig, "clientId" | "redirectUrl"> & Partial<Pick<AuthConfig, "oauthServer">> & {
13
+ scopes?: string[];
14
+ state?: string;
15
+ nonce?: string;
16
+ }, storage: AuthStorage): Promise<URL>;
17
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/server/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAKrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAWhC;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,CAed"}
@@ -0,0 +1,37 @@
1
+ import { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from "../constants.js";
2
+ import { GenericAuthenticationInitiator } from "../services/AuthenticationService.js";
3
+ import { GenericPublicClientPKCEProducer } from "../services/PKCE.js";
4
+ import { ServerAuthenticationResolver } from "../server/ServerAuthenticationResolver.js";
5
+ /**
6
+ * Resolve an OAuth access code to a set of OIDC tokens
7
+ * @param code The access code, typically from a query parameter in the redirect url
8
+ * @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
9
+ * @param storage The place that this server uses to store session data (e.g. a cookie store)
10
+ * @param config Oauth Server configuration
11
+ */
12
+ export async function resolveOAuthAccessCode(code, state, storage, config) {
13
+ const authSessionService = await ServerAuthenticationResolver.build({
14
+ ...config,
15
+ oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
16
+ }, storage, config.endpointOverrides);
17
+ return authSessionService.tokenExchange(code, state);
18
+ }
19
+ export async function isLoggedIn(storage) {
20
+ return !!(await storage.get("id_token"));
21
+ }
22
+ export async function buildLoginUrl(config, storage) {
23
+ // generate a random state if not provided
24
+ const state = config.state ?? Math.random().toString(36).substring(2);
25
+ const scopes = config.scopes ?? DEFAULT_SCOPES;
26
+ const pkceProducer = new GenericPublicClientPKCEProducer(storage);
27
+ const authInitiator = new GenericAuthenticationInitiator({
28
+ ...config,
29
+ state,
30
+ scopes,
31
+ oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
32
+ // When retrieving the PKCE challenge on the server-side, we produce it and store it in the session
33
+ pkceConsumer: pkceProducer,
34
+ });
35
+ return authInitiator.signIn();
36
+ }
37
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/server/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAGxF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,KAAa,EACb,OAAoB,EACpB,MAAkB;IAElB,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,KAAK,CACjE;QACE,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;KACvD,EACD,OAAO,EACP,MAAM,CAAC,iBAAiB,CACzB,CAAC;IAEF,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAKG,EACH,OAAoB;IAEpB,0CAA0C;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,8BAA8B,CAAC;QACvD,GAAG,MAAM;QACT,KAAK;QACL,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;QACtD,mGAAmG;QACnG,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,MAAM,EAAE,CAAC;AAChC,CAAC","sourcesContent":["import type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from \"@/constants.js\";\nimport { GenericAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { ServerAuthenticationResolver } from \"@/server/ServerAuthenticationResolver.js\";\nimport type { AuthConfig } from \"@/server/config.ts\";\n\n/**\n * Resolve an OAuth access code to a set of OIDC tokens\n * @param code The access code, typically from a query parameter in the redirect url\n * @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url\n * @param storage The place that this server uses to store session data (e.g. a cookie store)\n * @param config Oauth Server configuration\n */\nexport async function resolveOAuthAccessCode(\n code: string,\n state: string,\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const authSessionService = await ServerAuthenticationResolver.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return authSessionService.tokenExchange(code, state);\n}\n\nexport async function isLoggedIn(storage: AuthStorage): Promise<boolean> {\n return !!(await storage.get(\"id_token\"));\n}\n\nexport async function buildLoginUrl(\n config: Pick<AuthConfig, \"clientId\" | \"redirectUrl\"> &\n Partial<Pick<AuthConfig, \"oauthServer\">> & {\n scopes?: string[];\n state?: string;\n nonce?: string;\n },\n storage: AuthStorage,\n): Promise<URL> {\n // generate a random state if not provided\n const state = config.state ?? Math.random().toString(36).substring(2);\n const scopes = config.scopes ?? DEFAULT_SCOPES;\n const pkceProducer = new GenericPublicClientPKCEProducer(storage);\n const authInitiator = new GenericAuthenticationInitiator({\n ...config,\n state,\n scopes,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n // When retrieving the PKCE challenge on the server-side, we produce it and store it in the session\n pkceConsumer: pkceProducer,\n });\n\n return authInitiator.signIn();\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { AuthConfig } from "../server/config.js";
2
+ import type { AuthStorage } from "../types.js";
3
+ export declare function buildLogoutRedirectUrl(config: Pick<AuthConfig, "clientId" | "postLogoutRedirectUrl"> & Partial<Pick<AuthConfig, "oauthServer">> & {
4
+ scopes?: string[];
5
+ state?: string;
6
+ }, storage: AuthStorage): Promise<URL>;
7
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../src/server/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,uBAAuB,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,CAkBd"}
@@ -0,0 +1,23 @@
1
+ import { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from "../constants.js";
2
+ import { GenericPublicClientPKCEProducer } from "../services/PKCE.js";
3
+ import { GenericAuthenticationInitiator } from "../services/AuthenticationService.js";
4
+ import { OAuthTokens } from "../shared/lib/types.js";
5
+ export async function buildLogoutRedirectUrl(config, storage) {
6
+ // generate a random state if not provided
7
+ const state = config.state ?? Math.random().toString(36).substring(2);
8
+ const scopes = config.scopes ?? DEFAULT_SCOPES;
9
+ const pkceProducer = new GenericPublicClientPKCEProducer(storage);
10
+ const authInitiator = new GenericAuthenticationInitiator({
11
+ ...config,
12
+ state,
13
+ scopes,
14
+ oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
15
+ pkceConsumer: pkceProducer,
16
+ redirectUrl: config.postLogoutRedirectUrl || "/",
17
+ });
18
+ const idToken = await storage.get(OAuthTokens.ID_TOKEN);
19
+ if (!idToken)
20
+ throw new Error("No id_token found in storage");
21
+ return authInitiator.signOut(idToken);
22
+ }
23
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/server/logout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAIG,EACH,OAAoB;IAEpB,0CAA0C;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,8BAA8B,CAAC;QACvD,GAAG,MAAM;QACT,KAAK;QACL,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;QACtD,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,MAAM,CAAC,qBAAqB,IAAI,GAAG;KACjD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE9D,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC","sourcesContent":["import type { AuthConfig } from \"@/server/config.js\";\nimport type { AuthStorage } from \"@/types.js\";\nimport { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from \"@/constants.js\";\nimport { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { GenericAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { OAuthTokens } from \"@/shared/lib/types.js\";\n\nexport async function buildLogoutRedirectUrl(\n config: Pick<AuthConfig, \"clientId\" | \"postLogoutRedirectUrl\"> &\n Partial<Pick<AuthConfig, \"oauthServer\">> & {\n scopes?: string[];\n state?: string;\n },\n storage: AuthStorage,\n): Promise<URL> {\n // generate a random state if not provided\n const state = config.state ?? Math.random().toString(36).substring(2);\n const scopes = config.scopes ?? DEFAULT_SCOPES;\n const pkceProducer = new GenericPublicClientPKCEProducer(storage);\n const authInitiator = new GenericAuthenticationInitiator({\n ...config,\n state,\n scopes,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n pkceConsumer: pkceProducer,\n redirectUrl: config.postLogoutRedirectUrl || \"/\",\n });\n\n const idToken = await storage.get(OAuthTokens.ID_TOKEN);\n if (!idToken) throw new Error(\"No id_token found in storage\");\n\n return authInitiator.signOut(idToken);\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { AuthStorage, OIDCTokenResponseBody } from "../types.js";
2
+ import type { AuthConfig } from "../server/config.ts";
3
+ /**
4
+ * Refresh the current set of OIDC tokens
5
+ */
6
+ export declare function refreshTokens(storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
7
+ //# sourceMappingURL=refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/server/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAWhC"}
@@ -0,0 +1,13 @@
1
+ import { DEFAULT_AUTH_SERVER } from "../constants.js";
2
+ import { AuthenticationRefresherImpl } from "../shared/lib/AuthenticationRefresherImpl.js";
3
+ /**
4
+ * Refresh the current set of OIDC tokens
5
+ */
6
+ export async function refreshTokens(storage, config) {
7
+ const refresher = await AuthenticationRefresherImpl.build({
8
+ ...config,
9
+ oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
10
+ }, storage, config.endpointOverrides);
11
+ return refresher.refreshTokens();
12
+ }
13
+ //# sourceMappingURL=refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/server/refresh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,MAAkB;IAElB,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC,KAAK,CACvD;QACE,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;KACvD,EACD,OAAO,EACP,MAAM,CAAC,iBAAiB,CACzB,CAAC;IAEF,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport type { AuthConfig } from \"@/server/config.ts\";\nimport { AuthenticationRefresherImpl } from \"@/shared/lib/AuthenticationRefresherImpl.js\";\n\n/**\n * Refresh the current set of OIDC tokens\n */\nexport async function refreshTokens(\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const refresher = await AuthenticationRefresherImpl.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return refresher.refreshTokens();\n}\n"]}
@@ -0,0 +1,93 @@
1
+ import type { DisplayMode, Endpoints, LoginAppDesignOptions, OIDCTokenResponseBody, SessionData } from "../types.js";
2
+ import { BrowserPublicClientPKCEProducer } from "../services/PKCE.js";
3
+ import type { AuthenticationInitiator, AuthenticationResolver, PKCEConsumer } from "../services/types.js";
4
+ export type GenericAuthenticationInitiatorConfig = {
5
+ clientId: string;
6
+ redirectUrl: string;
7
+ state: string;
8
+ scopes: string[];
9
+ oauthServer: string;
10
+ nonce?: string;
11
+ endpointOverrides?: Partial<Endpoints>;
12
+ pkceConsumer: PKCEConsumer;
13
+ };
14
+ export type BrowserAuthenticationInitiatorConfig = Omit<GenericAuthenticationInitiatorConfig, "state"> & {
15
+ logoutUrl?: string;
16
+ logoutRedirectUrl: string;
17
+ displayMode: DisplayMode;
18
+ };
19
+ /**
20
+ * An authentication initiator that works on a browser. Since this is just triggering
21
+ * login and logout, session data is not stored here.
22
+ * An associated AuthenticationResolver would be needed to get the session data.
23
+ * Storage is needed for the code verifier, this is the domain of the PKCEConsumer
24
+ * The storage used by the PKCEConsumer should be available to the AuthenticationResolver.
25
+ *
26
+ * Example usage:
27
+ *
28
+ * 1) Client-only SPA -eg a react app with no server:
29
+ * new BrowserAuthenticationInitiator({
30
+ * pkceConsumer: new BrowserPublicClientPKCEProducer(), // generate and retrieve the challenge client-side
31
+ * ... other config
32
+ * })
33
+ *
34
+ * 2) Client-side of a client/server app - eg a react app with a backend:
35
+ * new BrowserAuthenticationInitiator({
36
+ * pkceConsumer: new ConfidentialClientPKCEConsumer("https://myserver.com/pkce"), // get the challenge from the server
37
+ * ... other config
38
+ * })
39
+ */
40
+ export declare class BrowserAuthenticationInitiator implements AuthenticationInitiator {
41
+ readonly setDesignOptions: (value: LoginAppDesignOptions) => void;
42
+ private postMessageHandler;
43
+ protected config: BrowserAuthenticationInitiatorConfig;
44
+ setDisplayMode(displayMode: DisplayMode): void;
45
+ get displayMode(): DisplayMode;
46
+ get isServerTokenExchange(): boolean;
47
+ get state(): string;
48
+ constructor(config: typeof this.config, setDesignOptions?: (value: LoginAppDesignOptions) => void);
49
+ handleLoginAppPopupFailed(redirectUrl: string): Promise<void>;
50
+ handleLoginAppDesignUpdate(options: LoginAppDesignOptions): Promise<void>;
51
+ signIn(iframeRef: HTMLIFrameElement | null): Promise<URL>;
52
+ protected handleIframeUrlChange(iframe: HTMLIFrameElement, expectedUrl: string): Promise<void>;
53
+ signOut(idToken: string | undefined, iframeRef: HTMLIFrameElement | null): Promise<URL>;
54
+ cleanup(): void;
55
+ }
56
+ /** A general-purpose authentication initiator, that just generates urls, but lets
57
+ * the caller decide how to use them. This is useful for server-side applications
58
+ * that may serve this URL to their front-ends or just call them directly
59
+ */
60
+ export declare class GenericAuthenticationInitiator implements AuthenticationInitiator {
61
+ protected config: GenericAuthenticationInitiatorConfig;
62
+ constructor(config: typeof this.config);
63
+ signIn(): Promise<URL>;
64
+ signOut(idToken: string): Promise<URL>;
65
+ }
66
+ type BrowserAuthenticationConfig = {
67
+ clientId: string;
68
+ redirectUrl: string;
69
+ logoutUrl?: string;
70
+ logoutRedirectUrl: string;
71
+ scopes: string[];
72
+ oauthServer: string;
73
+ endpointOverrides?: Partial<Endpoints>;
74
+ displayMode: DisplayMode;
75
+ };
76
+ /**
77
+ * An authentication resolver that can run on the browser (i.e. a public client)
78
+ * It uses PKCE for security. PKCE and Session data are stored in local storage
79
+ */
80
+ export declare class BrowserAuthenticationService extends BrowserAuthenticationInitiator {
81
+ protected pkceProducer: BrowserPublicClientPKCEProducer;
82
+ private oauth2client;
83
+ private endpoints;
84
+ constructor(config: BrowserAuthenticationConfig, pkceProducer?: BrowserPublicClientPKCEProducer);
85
+ init(): Promise<this>;
86
+ tokenExchange(code: string, state: string): Promise<OIDCTokenResponseBody>;
87
+ getSessionData(): Promise<SessionData | null>;
88
+ validateExistingSession(): Promise<SessionData>;
89
+ getEndSessionEndpoint(): Promise<string | null>;
90
+ static build(config: BrowserAuthenticationConfig): Promise<AuthenticationResolver>;
91
+ }
92
+ export {};
93
+ //# sourceMappingURL=AuthenticationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationService.d.ts","sourceRoot":"","sources":["../../../src/services/AuthenticationService.ts"],"names":[],"mappings":"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"}