@civic/auth 0.3.6-beta.1 → 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 (773) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +2 -0
  3. package/dist/cjs/browser/storage.d.ts +10 -0
  4. package/dist/cjs/browser/storage.d.ts.map +1 -0
  5. package/dist/cjs/browser/storage.js +24 -0
  6. package/dist/cjs/browser/storage.js.map +1 -0
  7. package/dist/cjs/config.d.ts +3 -0
  8. package/dist/cjs/config.d.ts.map +1 -0
  9. package/dist/cjs/config.js +8 -0
  10. package/dist/cjs/config.js.map +1 -0
  11. package/dist/cjs/constants.d.ts +15 -0
  12. package/dist/cjs/constants.d.ts.map +1 -0
  13. package/dist/cjs/constants.js +44 -0
  14. package/dist/cjs/constants.js.map +1 -0
  15. package/dist/cjs/index.d.ts +8 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +11 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/lib/cookies.d.ts +7 -0
  20. package/dist/cjs/lib/cookies.d.ts.map +1 -0
  21. package/dist/cjs/lib/cookies.js +29 -0
  22. package/dist/cjs/lib/cookies.js.map +1 -0
  23. package/dist/cjs/lib/jwt.d.ts +3 -0
  24. package/dist/cjs/lib/jwt.d.ts.map +1 -0
  25. package/dist/cjs/lib/jwt.js +13 -0
  26. package/dist/cjs/lib/jwt.js.map +1 -0
  27. package/dist/cjs/lib/logger.d.ts +26 -0
  28. package/dist/cjs/lib/logger.d.ts.map +1 -0
  29. package/dist/cjs/lib/logger.js +62 -0
  30. package/dist/cjs/lib/logger.js.map +1 -0
  31. package/dist/cjs/lib/oauth.d.ts +19 -0
  32. package/dist/cjs/lib/oauth.d.ts.map +1 -0
  33. package/dist/cjs/lib/oauth.js +74 -0
  34. package/dist/cjs/lib/oauth.js.map +1 -0
  35. package/dist/cjs/lib/obj.d.ts +3 -0
  36. package/dist/cjs/lib/obj.d.ts.map +1 -0
  37. package/dist/cjs/lib/obj.js +21 -0
  38. package/dist/cjs/lib/obj.js.map +1 -0
  39. package/dist/cjs/lib/postMessage.d.ts +4 -0
  40. package/dist/cjs/lib/postMessage.d.ts.map +1 -0
  41. package/dist/cjs/lib/postMessage.js +16 -0
  42. package/dist/cjs/lib/postMessage.js.map +1 -0
  43. package/dist/cjs/lib/windowUtil.d.ts +4 -0
  44. package/dist/cjs/lib/windowUtil.d.ts.map +1 -0
  45. package/dist/cjs/lib/windowUtil.js +35 -0
  46. package/dist/cjs/lib/windowUtil.js.map +1 -0
  47. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts +9 -0
  48. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
  49. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js +26 -0
  50. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
  51. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts +11 -0
  52. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
  53. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js +21 -0
  54. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
  55. package/dist/cjs/nextjs/config.d.ts +209 -0
  56. package/dist/cjs/nextjs/config.d.ts.map +1 -0
  57. package/dist/cjs/nextjs/config.js +191 -0
  58. package/dist/cjs/nextjs/config.js.map +1 -0
  59. package/dist/cjs/nextjs/cookies.d.ts +16 -0
  60. package/dist/cjs/nextjs/cookies.d.ts.map +1 -0
  61. package/dist/cjs/nextjs/cookies.js +44 -0
  62. package/dist/cjs/nextjs/cookies.js.map +1 -0
  63. package/dist/cjs/nextjs/hooks/index.d.ts +2 -0
  64. package/dist/cjs/nextjs/hooks/index.d.ts.map +1 -0
  65. package/dist/cjs/nextjs/hooks/index.js +6 -0
  66. package/dist/cjs/nextjs/hooks/index.js.map +1 -0
  67. package/dist/cjs/nextjs/hooks/usePrevious.d.ts +2 -0
  68. package/dist/cjs/nextjs/hooks/usePrevious.d.ts.map +1 -0
  69. package/dist/cjs/nextjs/hooks/usePrevious.js +12 -0
  70. package/dist/cjs/nextjs/hooks/usePrevious.js.map +1 -0
  71. package/dist/cjs/nextjs/hooks/useRefresh.d.ts +4 -0
  72. package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +1 -0
  73. package/dist/cjs/nextjs/hooks/useRefresh.js +43 -0
  74. package/dist/cjs/nextjs/hooks/useRefresh.js.map +1 -0
  75. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts +8 -0
  76. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  77. package/dist/cjs/nextjs/hooks/useUserCookie.js +93 -0
  78. package/dist/cjs/nextjs/hooks/useUserCookie.js.map +1 -0
  79. package/dist/cjs/nextjs/index.d.ts +9 -0
  80. package/dist/cjs/nextjs/index.d.ts.map +1 -0
  81. package/dist/cjs/nextjs/index.js +27 -0
  82. package/dist/cjs/nextjs/index.js.map +1 -0
  83. package/dist/cjs/nextjs/middleware/index.d.ts +2 -0
  84. package/dist/cjs/nextjs/middleware/index.d.ts.map +1 -0
  85. package/dist/cjs/nextjs/middleware/index.js +10 -0
  86. package/dist/cjs/nextjs/middleware/index.js.map +1 -0
  87. package/dist/cjs/nextjs/middleware.d.ts +57 -0
  88. package/dist/cjs/nextjs/middleware.d.ts.map +1 -0
  89. package/dist/cjs/nextjs/middleware.js +110 -0
  90. package/dist/cjs/nextjs/middleware.js.map +1 -0
  91. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts +9 -0
  92. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  93. package/dist/cjs/nextjs/providers/NextAuthProvider.js +102 -0
  94. package/dist/cjs/nextjs/providers/NextAuthProvider.js.map +1 -0
  95. package/dist/cjs/nextjs/routeHandler.d.ts +19 -0
  96. package/dist/cjs/nextjs/routeHandler.d.ts.map +1 -0
  97. package/dist/cjs/nextjs/routeHandler.js +318 -0
  98. package/dist/cjs/nextjs/routeHandler.js.map +1 -0
  99. package/dist/cjs/nextjs/utils.d.ts +3 -0
  100. package/dist/cjs/nextjs/utils.d.ts.map +1 -0
  101. package/dist/cjs/nextjs/utils.js +9 -0
  102. package/dist/cjs/nextjs/utils.js.map +1 -0
  103. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
  104. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
  105. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js +40 -0
  106. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js.map +1 -0
  107. package/dist/cjs/reactjs/components/SignInButton.d.ts +9 -0
  108. package/dist/cjs/reactjs/components/SignInButton.d.ts.map +1 -0
  109. package/dist/cjs/reactjs/components/SignInButton.js +31 -0
  110. package/dist/cjs/reactjs/components/SignInButton.js.map +1 -0
  111. package/dist/cjs/reactjs/components/SignOutButton.d.ts +7 -0
  112. package/dist/cjs/reactjs/components/SignOutButton.d.ts.map +1 -0
  113. package/dist/cjs/reactjs/components/SignOutButton.js +27 -0
  114. package/dist/cjs/reactjs/components/SignOutButton.js.map +1 -0
  115. package/dist/cjs/reactjs/components/UserButton.d.ts +9 -0
  116. package/dist/cjs/reactjs/components/UserButton.d.ts.map +1 -0
  117. package/dist/cjs/reactjs/components/UserButton.js +145 -0
  118. package/dist/cjs/reactjs/components/UserButton.js.map +1 -0
  119. package/dist/cjs/reactjs/components/index.d.ts +6 -0
  120. package/dist/cjs/reactjs/components/index.d.ts.map +1 -0
  121. package/dist/cjs/reactjs/components/index.js +14 -0
  122. package/dist/cjs/reactjs/components/index.js.map +1 -0
  123. package/dist/cjs/reactjs/components/utils.d.ts +13 -0
  124. package/dist/cjs/reactjs/components/utils.d.ts.map +1 -0
  125. package/dist/cjs/reactjs/components/utils.js +31 -0
  126. package/dist/cjs/reactjs/components/utils.js.map +1 -0
  127. package/dist/cjs/reactjs/hooks/index.d.ts +3 -0
  128. package/dist/cjs/reactjs/hooks/index.d.ts.map +1 -0
  129. package/dist/cjs/reactjs/hooks/index.js +8 -0
  130. package/dist/cjs/reactjs/hooks/index.js.map +1 -0
  131. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
  132. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  133. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js +16 -0
  134. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
  135. package/dist/cjs/reactjs/hooks/useUser.d.ts +4 -0
  136. package/dist/cjs/reactjs/hooks/useUser.d.ts.map +1 -0
  137. package/dist/cjs/reactjs/hooks/useUser.js +15 -0
  138. package/dist/cjs/reactjs/hooks/useUser.js.map +1 -0
  139. package/dist/cjs/reactjs/index.d.ts +6 -0
  140. package/dist/cjs/reactjs/index.d.ts.map +1 -0
  141. package/dist/cjs/reactjs/index.js +32 -0
  142. package/dist/cjs/reactjs/index.js.map +1 -0
  143. package/dist/cjs/reactjs/providers/AuthProvider.d.ts +10 -0
  144. package/dist/cjs/reactjs/providers/AuthProvider.d.ts.map +1 -0
  145. package/dist/cjs/reactjs/providers/AuthProvider.js +91 -0
  146. package/dist/cjs/reactjs/providers/AuthProvider.js.map +1 -0
  147. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts +5 -0
  148. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
  149. package/dist/cjs/reactjs/providers/CivicAuthProvider.js +29 -0
  150. package/dist/cjs/reactjs/providers/CivicAuthProvider.js.map +1 -0
  151. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  152. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  153. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js +147 -0
  154. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  155. package/dist/cjs/reactjs/providers/index.d.ts +8 -0
  156. package/dist/cjs/reactjs/providers/index.d.ts.map +1 -0
  157. package/dist/cjs/reactjs/providers/index.js +19 -0
  158. package/dist/cjs/reactjs/providers/index.js.map +1 -0
  159. package/dist/cjs/server/ServerAuthenticationResolver.d.ts +20 -0
  160. package/dist/cjs/server/ServerAuthenticationResolver.d.ts.map +1 -0
  161. package/dist/cjs/server/ServerAuthenticationResolver.js +71 -0
  162. package/dist/cjs/server/ServerAuthenticationResolver.js.map +1 -0
  163. package/dist/cjs/server/config.d.ts +11 -0
  164. package/dist/cjs/server/config.d.ts.map +1 -0
  165. package/dist/cjs/server/config.js +3 -0
  166. package/dist/cjs/server/config.js.map +1 -0
  167. package/dist/cjs/server/index.d.ts +9 -0
  168. package/dist/cjs/server/index.d.ts.map +1 -0
  169. package/dist/cjs/server/index.js +21 -0
  170. package/dist/cjs/server/index.js.map +1 -0
  171. package/dist/cjs/server/login.d.ts +17 -0
  172. package/dist/cjs/server/login.d.ts.map +1 -0
  173. package/dist/cjs/server/login.js +42 -0
  174. package/dist/cjs/server/login.js.map +1 -0
  175. package/dist/cjs/server/logout.d.ts +7 -0
  176. package/dist/cjs/server/logout.d.ts.map +1 -0
  177. package/dist/cjs/server/logout.js +26 -0
  178. package/dist/cjs/server/logout.js.map +1 -0
  179. package/dist/cjs/server/refresh.d.ts +7 -0
  180. package/dist/cjs/server/refresh.d.ts.map +1 -0
  181. package/dist/cjs/server/refresh.js +16 -0
  182. package/dist/cjs/server/refresh.js.map +1 -0
  183. package/dist/cjs/services/AuthenticationService.d.ts +93 -0
  184. package/dist/cjs/services/AuthenticationService.d.ts.map +1 -0
  185. package/dist/cjs/services/AuthenticationService.js +372 -0
  186. package/dist/cjs/services/AuthenticationService.js.map +1 -0
  187. package/dist/cjs/services/PKCE.d.ts +20 -0
  188. package/dist/cjs/services/PKCE.d.ts.map +1 -0
  189. package/dist/cjs/services/PKCE.js +50 -0
  190. package/dist/cjs/services/PKCE.js.map +1 -0
  191. package/dist/cjs/services/types.d.ts +24 -0
  192. package/dist/cjs/services/types.d.ts.map +1 -0
  193. package/dist/cjs/services/types.js +11 -0
  194. package/dist/cjs/services/types.js.map +1 -0
  195. package/dist/cjs/shared/components/BlockDisplay.d.ts +6 -0
  196. package/dist/cjs/shared/components/BlockDisplay.d.ts.map +1 -0
  197. package/dist/cjs/shared/components/BlockDisplay.js +32 -0
  198. package/dist/cjs/shared/components/BlockDisplay.js.map +1 -0
  199. package/dist/cjs/shared/components/CivicAuthIframe.d.ts +9 -0
  200. package/dist/cjs/shared/components/CivicAuthIframe.d.ts.map +1 -0
  201. package/dist/cjs/shared/components/CivicAuthIframe.js +66 -0
  202. package/dist/cjs/shared/components/CivicAuthIframe.js.map +1 -0
  203. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts +14 -0
  204. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  205. package/dist/cjs/shared/components/CivicAuthIframeContainer.js +158 -0
  206. package/dist/cjs/shared/components/CivicAuthIframeContainer.js.map +1 -0
  207. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
  208. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
  209. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js +21 -0
  210. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
  211. package/dist/cjs/shared/components/CloseIcon.d.ts +3 -0
  212. package/dist/cjs/shared/components/CloseIcon.d.ts.map +1 -0
  213. package/dist/cjs/shared/components/CloseIcon.js +7 -0
  214. package/dist/cjs/shared/components/CloseIcon.js.map +1 -0
  215. package/dist/cjs/shared/components/IFrameAndLoading.d.ts +7 -0
  216. package/dist/cjs/shared/components/IFrameAndLoading.d.ts.map +1 -0
  217. package/dist/cjs/shared/components/IFrameAndLoading.js +39 -0
  218. package/dist/cjs/shared/components/IFrameAndLoading.js.map +1 -0
  219. package/dist/cjs/shared/components/LoadingIcon.d.ts +6 -0
  220. package/dist/cjs/shared/components/LoadingIcon.d.ts.map +1 -0
  221. package/dist/cjs/shared/components/LoadingIcon.js +28 -0
  222. package/dist/cjs/shared/components/LoadingIcon.js.map +1 -0
  223. package/dist/cjs/shared/components/SVGLoading.d.ts +4 -0
  224. package/dist/cjs/shared/components/SVGLoading.d.ts.map +1 -0
  225. package/dist/cjs/shared/components/SVGLoading.js +30 -0
  226. package/dist/cjs/shared/components/SVGLoading.js.map +1 -0
  227. package/dist/cjs/shared/hooks/index.d.ts +11 -0
  228. package/dist/cjs/shared/hooks/index.d.ts.map +1 -0
  229. package/dist/cjs/shared/hooks/index.js +24 -0
  230. package/dist/cjs/shared/hooks/index.js.map +1 -0
  231. package/dist/cjs/shared/hooks/useAuth.d.ts +3 -0
  232. package/dist/cjs/shared/hooks/useAuth.d.ts.map +1 -0
  233. package/dist/cjs/shared/hooks/useAuth.js +15 -0
  234. package/dist/cjs/shared/hooks/useAuth.js.map +1 -0
  235. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts +3 -0
  236. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
  237. package/dist/cjs/shared/hooks/useCivicAuthConfig.js +13 -0
  238. package/dist/cjs/shared/hooks/useCivicAuthConfig.js.map +1 -0
  239. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts +3 -0
  240. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts.map +1 -0
  241. package/dist/cjs/shared/hooks/useCurrentUrl.js +27 -0
  242. package/dist/cjs/shared/hooks/useCurrentUrl.js.map +1 -0
  243. package/dist/cjs/shared/hooks/useIframe.d.ts +3 -0
  244. package/dist/cjs/shared/hooks/useIframe.d.ts.map +1 -0
  245. package/dist/cjs/shared/hooks/useIframe.js +16 -0
  246. package/dist/cjs/shared/hooks/useIframe.js.map +1 -0
  247. package/dist/cjs/shared/hooks/useIsInIframe.d.ts +3 -0
  248. package/dist/cjs/shared/hooks/useIsInIframe.d.ts.map +1 -0
  249. package/dist/cjs/shared/hooks/useIsInIframe.js +17 -0
  250. package/dist/cjs/shared/hooks/useIsInIframe.js.map +1 -0
  251. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts +4 -0
  252. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
  253. package/dist/cjs/shared/hooks/useOAuthEndpoints.js +17 -0
  254. package/dist/cjs/shared/hooks/useOAuthEndpoints.js.map +1 -0
  255. package/dist/cjs/shared/hooks/useRefresh.d.ts +4 -0
  256. package/dist/cjs/shared/hooks/useRefresh.d.ts.map +1 -0
  257. package/dist/cjs/shared/hooks/useRefresh.js +41 -0
  258. package/dist/cjs/shared/hooks/useRefresh.js.map +1 -0
  259. package/dist/cjs/shared/hooks/useSession.d.ts +3 -0
  260. package/dist/cjs/shared/hooks/useSession.d.ts.map +1 -0
  261. package/dist/cjs/shared/hooks/useSession.js +16 -0
  262. package/dist/cjs/shared/hooks/useSession.js.map +1 -0
  263. package/dist/cjs/shared/hooks/useSignIn.d.ts +17 -0
  264. package/dist/cjs/shared/hooks/useSignIn.d.ts.map +1 -0
  265. package/dist/cjs/shared/hooks/useSignIn.js +171 -0
  266. package/dist/cjs/shared/hooks/useSignIn.js.map +1 -0
  267. package/dist/cjs/shared/hooks/useToken.d.ts +3 -0
  268. package/dist/cjs/shared/hooks/useToken.d.ts.map +1 -0
  269. package/dist/cjs/shared/hooks/useToken.js +15 -0
  270. package/dist/cjs/shared/hooks/useToken.js.map +1 -0
  271. package/dist/cjs/shared/hooks/useWindowFocused.d.ts +5 -0
  272. package/dist/cjs/shared/hooks/useWindowFocused.d.ts.map +1 -0
  273. package/dist/cjs/shared/hooks/useWindowFocused.js +24 -0
  274. package/dist/cjs/shared/hooks/useWindowFocused.js.map +1 -0
  275. package/dist/cjs/shared/index.d.ts +7 -0
  276. package/dist/cjs/shared/index.d.ts.map +1 -0
  277. package/dist/cjs/shared/index.js +25 -0
  278. package/dist/cjs/shared/index.js.map +1 -0
  279. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
  280. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
  281. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js +52 -0
  282. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
  283. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts +9 -0
  284. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
  285. package/dist/cjs/shared/lib/BrowserCookieStorage.js +60 -0
  286. package/dist/cjs/shared/lib/BrowserCookieStorage.js.map +1 -0
  287. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts +16 -0
  288. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  289. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js +65 -0
  290. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  291. package/dist/cjs/shared/lib/UserSession.d.ts +17 -0
  292. package/dist/cjs/shared/lib/UserSession.d.ts.map +1 -0
  293. package/dist/cjs/shared/lib/UserSession.js +27 -0
  294. package/dist/cjs/shared/lib/UserSession.js.map +1 -0
  295. package/dist/cjs/shared/lib/iframeUtils.d.ts +6 -0
  296. package/dist/cjs/shared/lib/iframeUtils.d.ts.map +1 -0
  297. package/dist/cjs/shared/lib/iframeUtils.js +11 -0
  298. package/dist/cjs/shared/lib/iframeUtils.js.map +1 -0
  299. package/dist/cjs/shared/lib/session.d.ts +4 -0
  300. package/dist/cjs/shared/lib/session.d.ts.map +1 -0
  301. package/dist/cjs/shared/lib/session.js +48 -0
  302. package/dist/cjs/shared/lib/session.js.map +1 -0
  303. package/dist/cjs/shared/lib/storage.d.ts +35 -0
  304. package/dist/cjs/shared/lib/storage.d.ts.map +1 -0
  305. package/dist/cjs/shared/lib/storage.js +21 -0
  306. package/dist/cjs/shared/lib/storage.js.map +1 -0
  307. package/dist/cjs/shared/lib/types.d.ts +39 -0
  308. package/dist/cjs/shared/lib/types.d.ts.map +1 -0
  309. package/dist/cjs/shared/lib/types.js +22 -0
  310. package/dist/cjs/shared/lib/types.js.map +1 -0
  311. package/dist/cjs/shared/lib/util.d.ts +40 -0
  312. package/dist/cjs/shared/lib/util.d.ts.map +1 -0
  313. package/dist/cjs/shared/lib/util.js +239 -0
  314. package/dist/cjs/shared/lib/util.js.map +1 -0
  315. package/dist/cjs/shared/providers/AuthContext.d.ts +12 -0
  316. package/dist/cjs/shared/providers/AuthContext.d.ts.map +1 -0
  317. package/dist/cjs/shared/providers/AuthContext.js +7 -0
  318. package/dist/cjs/shared/providers/AuthContext.js.map +1 -0
  319. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts +19 -0
  320. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
  321. package/dist/cjs/shared/providers/CivicAuthConfigContext.js +59 -0
  322. package/dist/cjs/shared/providers/CivicAuthConfigContext.js.map +1 -0
  323. package/dist/cjs/shared/providers/IframeProvider.d.ts +25 -0
  324. package/dist/cjs/shared/providers/IframeProvider.d.ts.map +1 -0
  325. package/dist/cjs/shared/providers/IframeProvider.js +63 -0
  326. package/dist/cjs/shared/providers/IframeProvider.js.map +1 -0
  327. package/dist/cjs/shared/providers/SessionProvider.d.ts +19 -0
  328. package/dist/cjs/shared/providers/SessionProvider.d.ts.map +1 -0
  329. package/dist/cjs/shared/providers/SessionProvider.js +28 -0
  330. package/dist/cjs/shared/providers/SessionProvider.js.map +1 -0
  331. package/dist/cjs/shared/providers/TokenProvider.d.ts +17 -0
  332. package/dist/cjs/shared/providers/TokenProvider.d.ts.map +1 -0
  333. package/dist/cjs/shared/providers/TokenProvider.js +39 -0
  334. package/dist/cjs/shared/providers/TokenProvider.js.map +1 -0
  335. package/dist/cjs/shared/providers/UserProvider.d.ts +26 -0
  336. package/dist/cjs/shared/providers/UserProvider.d.ts.map +1 -0
  337. package/dist/cjs/shared/providers/UserProvider.js +69 -0
  338. package/dist/cjs/shared/providers/UserProvider.js.map +1 -0
  339. package/dist/cjs/shared/providers/types.d.ts +15 -0
  340. package/dist/cjs/shared/providers/types.d.ts.map +1 -0
  341. package/dist/cjs/shared/providers/types.js +3 -0
  342. package/dist/cjs/shared/providers/types.js.map +1 -0
  343. package/dist/cjs/shared/version.d.ts +2 -0
  344. package/dist/cjs/shared/version.d.ts.map +1 -0
  345. package/dist/cjs/shared/version.js +6 -0
  346. package/dist/cjs/shared/version.js.map +1 -0
  347. package/dist/cjs/types.d.ts +163 -0
  348. package/dist/cjs/types.d.ts.map +1 -0
  349. package/dist/cjs/types.js +20 -0
  350. package/dist/cjs/types.js.map +1 -0
  351. package/dist/cjs/utils.d.ts +15 -0
  352. package/dist/cjs/utils.d.ts.map +1 -0
  353. package/dist/cjs/utils.js +47 -0
  354. package/dist/cjs/utils.js.map +1 -0
  355. package/dist/cjs/version.d.ts +2 -0
  356. package/dist/cjs/version.d.ts.map +1 -0
  357. package/dist/cjs/version.js +6 -0
  358. package/dist/cjs/version.js.map +1 -0
  359. package/dist/esm/browser/storage.d.ts +10 -0
  360. package/dist/esm/browser/storage.d.ts.map +1 -0
  361. package/dist/esm/browser/storage.js +20 -0
  362. package/dist/esm/browser/storage.js.map +1 -0
  363. package/dist/esm/config.d.ts +3 -0
  364. package/dist/esm/config.d.ts.map +1 -0
  365. package/dist/esm/config.js +5 -0
  366. package/dist/esm/config.js.map +1 -0
  367. package/dist/esm/constants.d.ts +15 -0
  368. package/dist/esm/constants.d.ts.map +1 -0
  369. package/dist/esm/constants.js +29 -0
  370. package/dist/esm/constants.js.map +1 -0
  371. package/dist/esm/index.d.ts +8 -0
  372. package/dist/esm/index.d.ts.map +1 -0
  373. package/dist/esm/index.js +6 -0
  374. package/dist/esm/index.js.map +1 -0
  375. package/dist/esm/lib/cookies.d.ts +7 -0
  376. package/dist/esm/lib/cookies.d.ts.map +1 -0
  377. package/dist/esm/lib/cookies.js +26 -0
  378. package/dist/esm/lib/cookies.js.map +1 -0
  379. package/dist/esm/lib/jwt.d.ts +3 -0
  380. package/dist/esm/lib/jwt.d.ts.map +1 -0
  381. package/dist/esm/lib/jwt.js +9 -0
  382. package/dist/esm/lib/jwt.js.map +1 -0
  383. package/dist/esm/lib/logger.d.ts +26 -0
  384. package/dist/esm/lib/logger.d.ts.map +1 -0
  385. package/dist/esm/lib/logger.js +55 -0
  386. package/dist/esm/lib/logger.js.map +1 -0
  387. package/dist/esm/lib/oauth.d.ts +19 -0
  388. package/dist/esm/lib/oauth.d.ts.map +1 -0
  389. package/dist/esm/lib/oauth.js +67 -0
  390. package/dist/esm/lib/oauth.js.map +1 -0
  391. package/dist/esm/lib/obj.d.ts +3 -0
  392. package/dist/esm/lib/obj.d.ts.map +1 -0
  393. package/dist/esm/lib/obj.js +18 -0
  394. package/dist/esm/lib/obj.js.map +1 -0
  395. package/dist/esm/lib/postMessage.d.ts +4 -0
  396. package/dist/esm/lib/postMessage.d.ts.map +1 -0
  397. package/dist/esm/lib/postMessage.js +13 -0
  398. package/dist/esm/lib/postMessage.js.map +1 -0
  399. package/dist/esm/lib/windowUtil.d.ts +4 -0
  400. package/dist/esm/lib/windowUtil.d.ts.map +1 -0
  401. package/dist/esm/lib/windowUtil.js +31 -0
  402. package/dist/esm/lib/windowUtil.js.map +1 -0
  403. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts +9 -0
  404. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
  405. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js +22 -0
  406. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
  407. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts +11 -0
  408. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
  409. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js +17 -0
  410. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
  411. package/dist/esm/nextjs/config.d.ts +209 -0
  412. package/dist/esm/nextjs/config.d.ts.map +1 -0
  413. package/dist/esm/nextjs/config.js +186 -0
  414. package/dist/esm/nextjs/config.js.map +1 -0
  415. package/dist/esm/nextjs/cookies.d.ts +16 -0
  416. package/dist/esm/nextjs/cookies.d.ts.map +1 -0
  417. package/dist/esm/nextjs/cookies.js +41 -0
  418. package/dist/esm/nextjs/cookies.js.map +1 -0
  419. package/dist/esm/nextjs/hooks/index.d.ts +2 -0
  420. package/dist/esm/nextjs/hooks/index.d.ts.map +1 -0
  421. package/dist/esm/nextjs/hooks/index.js +2 -0
  422. package/dist/esm/nextjs/hooks/index.js.map +1 -0
  423. package/dist/esm/nextjs/hooks/usePrevious.d.ts +2 -0
  424. package/dist/esm/nextjs/hooks/usePrevious.d.ts.map +1 -0
  425. package/dist/esm/nextjs/hooks/usePrevious.js +9 -0
  426. package/dist/esm/nextjs/hooks/usePrevious.js.map +1 -0
  427. package/dist/esm/nextjs/hooks/useRefresh.d.ts +4 -0
  428. package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +1 -0
  429. package/dist/esm/nextjs/hooks/useRefresh.js +40 -0
  430. package/dist/esm/nextjs/hooks/useRefresh.js.map +1 -0
  431. package/dist/esm/nextjs/hooks/useUserCookie.d.ts +8 -0
  432. package/dist/esm/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  433. package/dist/esm/nextjs/hooks/useUserCookie.js +89 -0
  434. package/dist/esm/nextjs/hooks/useUserCookie.js.map +1 -0
  435. package/dist/esm/nextjs/index.d.ts +9 -0
  436. package/dist/esm/nextjs/index.d.ts.map +1 -0
  437. package/dist/esm/nextjs/index.js +17 -0
  438. package/dist/esm/nextjs/index.js.map +1 -0
  439. package/dist/esm/nextjs/middleware/index.d.ts +2 -0
  440. package/dist/esm/nextjs/middleware/index.d.ts.map +1 -0
  441. package/dist/esm/nextjs/middleware/index.js +4 -0
  442. package/dist/esm/nextjs/middleware/index.js.map +1 -0
  443. package/dist/esm/nextjs/middleware.d.ts +57 -0
  444. package/dist/esm/nextjs/middleware.d.ts.map +1 -0
  445. package/dist/esm/nextjs/middleware.js +101 -0
  446. package/dist/esm/nextjs/middleware.js.map +1 -0
  447. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts +9 -0
  448. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  449. package/dist/esm/nextjs/providers/NextAuthProvider.js +99 -0
  450. package/dist/esm/nextjs/providers/NextAuthProvider.js.map +1 -0
  451. package/dist/esm/nextjs/routeHandler.d.ts +19 -0
  452. package/dist/esm/nextjs/routeHandler.d.ts.map +1 -0
  453. package/dist/esm/nextjs/routeHandler.js +312 -0
  454. package/dist/esm/nextjs/routeHandler.js.map +1 -0
  455. package/dist/esm/nextjs/utils.d.ts +3 -0
  456. package/dist/esm/nextjs/utils.d.ts.map +1 -0
  457. package/dist/esm/nextjs/utils.js +5 -0
  458. package/dist/esm/nextjs/utils.js.map +1 -0
  459. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
  460. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
  461. package/dist/esm/reactjs/components/ButtonContentOrLoader.js +37 -0
  462. package/dist/esm/reactjs/components/ButtonContentOrLoader.js.map +1 -0
  463. package/dist/esm/reactjs/components/SignInButton.d.ts +9 -0
  464. package/dist/esm/reactjs/components/SignInButton.d.ts.map +1 -0
  465. package/dist/esm/reactjs/components/SignInButton.js +28 -0
  466. package/dist/esm/reactjs/components/SignInButton.js.map +1 -0
  467. package/dist/esm/reactjs/components/SignOutButton.d.ts +7 -0
  468. package/dist/esm/reactjs/components/SignOutButton.d.ts.map +1 -0
  469. package/dist/esm/reactjs/components/SignOutButton.js +24 -0
  470. package/dist/esm/reactjs/components/SignOutButton.js.map +1 -0
  471. package/dist/esm/reactjs/components/UserButton.d.ts +9 -0
  472. package/dist/esm/reactjs/components/UserButton.d.ts.map +1 -0
  473. package/dist/esm/reactjs/components/UserButton.js +142 -0
  474. package/dist/esm/reactjs/components/UserButton.js.map +1 -0
  475. package/dist/esm/reactjs/components/index.d.ts +6 -0
  476. package/dist/esm/reactjs/components/index.d.ts.map +1 -0
  477. package/dist/esm/reactjs/components/index.js +6 -0
  478. package/dist/esm/reactjs/components/index.js.map +1 -0
  479. package/dist/esm/reactjs/components/utils.d.ts +13 -0
  480. package/dist/esm/reactjs/components/utils.d.ts.map +1 -0
  481. package/dist/esm/reactjs/components/utils.js +27 -0
  482. package/dist/esm/reactjs/components/utils.js.map +1 -0
  483. package/dist/esm/reactjs/hooks/index.d.ts +3 -0
  484. package/dist/esm/reactjs/hooks/index.d.ts.map +1 -0
  485. package/dist/esm/reactjs/hooks/index.js +3 -0
  486. package/dist/esm/reactjs/hooks/index.js.map +1 -0
  487. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
  488. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  489. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js +13 -0
  490. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
  491. package/dist/esm/reactjs/hooks/useUser.d.ts +4 -0
  492. package/dist/esm/reactjs/hooks/useUser.d.ts.map +1 -0
  493. package/dist/esm/reactjs/hooks/useUser.js +12 -0
  494. package/dist/esm/reactjs/hooks/useUser.js.map +1 -0
  495. package/dist/esm/reactjs/index.d.ts +6 -0
  496. package/dist/esm/reactjs/index.d.ts.map +1 -0
  497. package/dist/esm/reactjs/index.js +10 -0
  498. package/dist/esm/reactjs/index.js.map +1 -0
  499. package/dist/esm/reactjs/providers/AuthProvider.d.ts +10 -0
  500. package/dist/esm/reactjs/providers/AuthProvider.d.ts.map +1 -0
  501. package/dist/esm/reactjs/providers/AuthProvider.js +89 -0
  502. package/dist/esm/reactjs/providers/AuthProvider.js.map +1 -0
  503. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts +5 -0
  504. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
  505. package/dist/esm/reactjs/providers/CivicAuthProvider.js +27 -0
  506. package/dist/esm/reactjs/providers/CivicAuthProvider.js.map +1 -0
  507. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  508. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  509. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js +143 -0
  510. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  511. package/dist/esm/reactjs/providers/index.d.ts +8 -0
  512. package/dist/esm/reactjs/providers/index.d.ts.map +1 -0
  513. package/dist/esm/reactjs/providers/index.js +7 -0
  514. package/dist/esm/reactjs/providers/index.js.map +1 -0
  515. package/dist/esm/server/ServerAuthenticationResolver.d.ts +20 -0
  516. package/dist/esm/server/ServerAuthenticationResolver.d.ts.map +1 -0
  517. package/dist/esm/server/ServerAuthenticationResolver.js +67 -0
  518. package/dist/esm/server/ServerAuthenticationResolver.js.map +1 -0
  519. package/dist/esm/server/config.d.ts +11 -0
  520. package/dist/esm/server/config.d.ts.map +1 -0
  521. package/dist/esm/server/config.js +2 -0
  522. package/dist/esm/server/config.js.map +1 -0
  523. package/dist/esm/server/index.d.ts +9 -0
  524. package/dist/esm/server/index.d.ts.map +1 -0
  525. package/dist/esm/server/index.js +9 -0
  526. package/dist/esm/server/index.js.map +1 -0
  527. package/dist/esm/server/login.d.ts +17 -0
  528. package/dist/esm/server/login.d.ts.map +1 -0
  529. package/dist/esm/server/login.js +37 -0
  530. package/dist/esm/server/login.js.map +1 -0
  531. package/dist/esm/server/logout.d.ts +7 -0
  532. package/dist/esm/server/logout.d.ts.map +1 -0
  533. package/dist/esm/server/logout.js +23 -0
  534. package/dist/esm/server/logout.js.map +1 -0
  535. package/dist/esm/server/refresh.d.ts +7 -0
  536. package/dist/esm/server/refresh.d.ts.map +1 -0
  537. package/dist/esm/server/refresh.js +13 -0
  538. package/dist/esm/server/refresh.js.map +1 -0
  539. package/dist/esm/services/AuthenticationService.d.ts +93 -0
  540. package/dist/esm/services/AuthenticationService.d.ts.map +1 -0
  541. package/dist/esm/services/AuthenticationService.js +366 -0
  542. package/dist/esm/services/AuthenticationService.js.map +1 -0
  543. package/dist/esm/services/PKCE.d.ts +20 -0
  544. package/dist/esm/services/PKCE.d.ts.map +1 -0
  545. package/dist/esm/services/PKCE.js +44 -0
  546. package/dist/esm/services/PKCE.js.map +1 -0
  547. package/dist/esm/services/types.d.ts +24 -0
  548. package/dist/esm/services/types.d.ts.map +1 -0
  549. package/dist/esm/services/types.js +7 -0
  550. package/dist/esm/services/types.js.map +1 -0
  551. package/dist/esm/shared/components/BlockDisplay.d.ts +6 -0
  552. package/dist/esm/shared/components/BlockDisplay.d.ts.map +1 -0
  553. package/dist/esm/shared/components/BlockDisplay.js +29 -0
  554. package/dist/esm/shared/components/BlockDisplay.js.map +1 -0
  555. package/dist/esm/shared/components/CivicAuthIframe.d.ts +9 -0
  556. package/dist/esm/shared/components/CivicAuthIframe.d.ts.map +1 -0
  557. package/dist/esm/shared/components/CivicAuthIframe.js +27 -0
  558. package/dist/esm/shared/components/CivicAuthIframe.js.map +1 -0
  559. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts +14 -0
  560. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  561. package/dist/esm/shared/components/CivicAuthIframeContainer.js +154 -0
  562. package/dist/esm/shared/components/CivicAuthIframeContainer.js.map +1 -0
  563. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
  564. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
  565. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js +19 -0
  566. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
  567. package/dist/esm/shared/components/CloseIcon.d.ts +3 -0
  568. package/dist/esm/shared/components/CloseIcon.d.ts.map +1 -0
  569. package/dist/esm/shared/components/CloseIcon.js +5 -0
  570. package/dist/esm/shared/components/CloseIcon.js.map +1 -0
  571. package/dist/esm/shared/components/IFrameAndLoading.d.ts +7 -0
  572. package/dist/esm/shared/components/IFrameAndLoading.d.ts.map +1 -0
  573. package/dist/esm/shared/components/IFrameAndLoading.js +36 -0
  574. package/dist/esm/shared/components/IFrameAndLoading.js.map +1 -0
  575. package/dist/esm/shared/components/LoadingIcon.d.ts +6 -0
  576. package/dist/esm/shared/components/LoadingIcon.d.ts.map +1 -0
  577. package/dist/esm/shared/components/LoadingIcon.js +26 -0
  578. package/dist/esm/shared/components/LoadingIcon.js.map +1 -0
  579. package/dist/esm/shared/components/SVGLoading.d.ts +4 -0
  580. package/dist/esm/shared/components/SVGLoading.d.ts.map +1 -0
  581. package/dist/esm/shared/components/SVGLoading.js +28 -0
  582. package/dist/esm/shared/components/SVGLoading.js.map +1 -0
  583. package/dist/esm/shared/hooks/index.d.ts +11 -0
  584. package/dist/esm/shared/hooks/index.d.ts.map +1 -0
  585. package/dist/esm/shared/hooks/index.js +11 -0
  586. package/dist/esm/shared/hooks/index.js.map +1 -0
  587. package/dist/esm/shared/hooks/useAuth.d.ts +3 -0
  588. package/dist/esm/shared/hooks/useAuth.d.ts.map +1 -0
  589. package/dist/esm/shared/hooks/useAuth.js +12 -0
  590. package/dist/esm/shared/hooks/useAuth.js.map +1 -0
  591. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts +3 -0
  592. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
  593. package/dist/esm/shared/hooks/useCivicAuthConfig.js +10 -0
  594. package/dist/esm/shared/hooks/useCivicAuthConfig.js.map +1 -0
  595. package/dist/esm/shared/hooks/useCurrentUrl.d.ts +3 -0
  596. package/dist/esm/shared/hooks/useCurrentUrl.d.ts.map +1 -0
  597. package/dist/esm/shared/hooks/useCurrentUrl.js +24 -0
  598. package/dist/esm/shared/hooks/useCurrentUrl.js.map +1 -0
  599. package/dist/esm/shared/hooks/useIframe.d.ts +3 -0
  600. package/dist/esm/shared/hooks/useIframe.d.ts.map +1 -0
  601. package/dist/esm/shared/hooks/useIframe.js +13 -0
  602. package/dist/esm/shared/hooks/useIframe.js.map +1 -0
  603. package/dist/esm/shared/hooks/useIsInIframe.d.ts +3 -0
  604. package/dist/esm/shared/hooks/useIsInIframe.d.ts.map +1 -0
  605. package/dist/esm/shared/hooks/useIsInIframe.js +14 -0
  606. package/dist/esm/shared/hooks/useIsInIframe.js.map +1 -0
  607. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts +4 -0
  608. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
  609. package/dist/esm/shared/hooks/useOAuthEndpoints.js +14 -0
  610. package/dist/esm/shared/hooks/useOAuthEndpoints.js.map +1 -0
  611. package/dist/esm/shared/hooks/useRefresh.d.ts +4 -0
  612. package/dist/esm/shared/hooks/useRefresh.d.ts.map +1 -0
  613. package/dist/esm/shared/hooks/useRefresh.js +38 -0
  614. package/dist/esm/shared/hooks/useRefresh.js.map +1 -0
  615. package/dist/esm/shared/hooks/useSession.d.ts +3 -0
  616. package/dist/esm/shared/hooks/useSession.d.ts.map +1 -0
  617. package/dist/esm/shared/hooks/useSession.js +13 -0
  618. package/dist/esm/shared/hooks/useSession.js.map +1 -0
  619. package/dist/esm/shared/hooks/useSignIn.d.ts +17 -0
  620. package/dist/esm/shared/hooks/useSignIn.d.ts.map +1 -0
  621. package/dist/esm/shared/hooks/useSignIn.js +168 -0
  622. package/dist/esm/shared/hooks/useSignIn.js.map +1 -0
  623. package/dist/esm/shared/hooks/useToken.d.ts +3 -0
  624. package/dist/esm/shared/hooks/useToken.d.ts.map +1 -0
  625. package/dist/esm/shared/hooks/useToken.js +12 -0
  626. package/dist/esm/shared/hooks/useToken.js.map +1 -0
  627. package/dist/esm/shared/hooks/useWindowFocused.d.ts +5 -0
  628. package/dist/esm/shared/hooks/useWindowFocused.d.ts.map +1 -0
  629. package/dist/esm/shared/hooks/useWindowFocused.js +21 -0
  630. package/dist/esm/shared/hooks/useWindowFocused.js.map +1 -0
  631. package/dist/esm/shared/index.d.ts +7 -0
  632. package/dist/esm/shared/index.d.ts.map +1 -0
  633. package/dist/esm/shared/index.js +18 -0
  634. package/dist/esm/shared/index.js.map +1 -0
  635. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
  636. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
  637. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js +48 -0
  638. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
  639. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts +9 -0
  640. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
  641. package/dist/esm/shared/lib/BrowserCookieStorage.js +56 -0
  642. package/dist/esm/shared/lib/BrowserCookieStorage.js.map +1 -0
  643. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts +16 -0
  644. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  645. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js +61 -0
  646. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  647. package/dist/esm/shared/lib/UserSession.d.ts +17 -0
  648. package/dist/esm/shared/lib/UserSession.d.ts.map +1 -0
  649. package/dist/esm/shared/lib/UserSession.js +23 -0
  650. package/dist/esm/shared/lib/UserSession.js.map +1 -0
  651. package/dist/esm/shared/lib/iframeUtils.d.ts +6 -0
  652. package/dist/esm/shared/lib/iframeUtils.d.ts.map +1 -0
  653. package/dist/esm/shared/lib/iframeUtils.js +7 -0
  654. package/dist/esm/shared/lib/iframeUtils.js.map +1 -0
  655. package/dist/esm/shared/lib/session.d.ts +4 -0
  656. package/dist/esm/shared/lib/session.d.ts.map +1 -0
  657. package/dist/esm/shared/lib/session.js +44 -0
  658. package/dist/esm/shared/lib/session.js.map +1 -0
  659. package/dist/esm/shared/lib/storage.d.ts +35 -0
  660. package/dist/esm/shared/lib/storage.d.ts.map +1 -0
  661. package/dist/esm/shared/lib/storage.js +17 -0
  662. package/dist/esm/shared/lib/storage.js.map +1 -0
  663. package/dist/esm/shared/lib/types.d.ts +39 -0
  664. package/dist/esm/shared/lib/types.d.ts.map +1 -0
  665. package/dist/esm/shared/lib/types.js +19 -0
  666. package/dist/esm/shared/lib/types.js.map +1 -0
  667. package/dist/esm/shared/lib/util.d.ts +40 -0
  668. package/dist/esm/shared/lib/util.d.ts.map +1 -0
  669. package/dist/esm/shared/lib/util.js +187 -0
  670. package/dist/esm/shared/lib/util.js.map +1 -0
  671. package/dist/esm/shared/providers/AuthContext.d.ts +12 -0
  672. package/dist/esm/shared/providers/AuthContext.d.ts.map +1 -0
  673. package/dist/esm/shared/providers/AuthContext.js +4 -0
  674. package/dist/esm/shared/providers/AuthContext.js.map +1 -0
  675. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts +19 -0
  676. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
  677. package/dist/esm/shared/providers/CivicAuthConfigContext.js +55 -0
  678. package/dist/esm/shared/providers/CivicAuthConfigContext.js.map +1 -0
  679. package/dist/esm/shared/providers/IframeProvider.d.ts +25 -0
  680. package/dist/esm/shared/providers/IframeProvider.d.ts.map +1 -0
  681. package/dist/esm/shared/providers/IframeProvider.js +59 -0
  682. package/dist/esm/shared/providers/IframeProvider.js.map +1 -0
  683. package/dist/esm/shared/providers/SessionProvider.d.ts +19 -0
  684. package/dist/esm/shared/providers/SessionProvider.d.ts.map +1 -0
  685. package/dist/esm/shared/providers/SessionProvider.js +24 -0
  686. package/dist/esm/shared/providers/SessionProvider.js.map +1 -0
  687. package/dist/esm/shared/providers/TokenProvider.d.ts +17 -0
  688. package/dist/esm/shared/providers/TokenProvider.d.ts.map +1 -0
  689. package/dist/esm/shared/providers/TokenProvider.js +35 -0
  690. package/dist/esm/shared/providers/TokenProvider.js.map +1 -0
  691. package/dist/esm/shared/providers/UserProvider.d.ts +26 -0
  692. package/dist/esm/shared/providers/UserProvider.d.ts.map +1 -0
  693. package/dist/esm/shared/providers/UserProvider.js +65 -0
  694. package/dist/esm/shared/providers/UserProvider.js.map +1 -0
  695. package/dist/esm/shared/providers/types.d.ts +15 -0
  696. package/dist/esm/shared/providers/types.d.ts.map +1 -0
  697. package/dist/esm/shared/providers/types.js +2 -0
  698. package/dist/esm/shared/providers/types.js.map +1 -0
  699. package/dist/esm/shared/version.d.ts +2 -0
  700. package/dist/esm/shared/version.d.ts.map +1 -0
  701. package/dist/esm/shared/version.js +3 -0
  702. package/dist/esm/shared/version.js.map +1 -0
  703. package/dist/esm/types.d.ts +163 -0
  704. package/dist/esm/types.d.ts.map +1 -0
  705. package/dist/esm/types.js +17 -0
  706. package/dist/esm/types.js.map +1 -0
  707. package/dist/esm/utils.d.ts +15 -0
  708. package/dist/esm/utils.d.ts.map +1 -0
  709. package/dist/esm/utils.js +42 -0
  710. package/dist/esm/utils.js.map +1 -0
  711. package/dist/esm/version.d.ts +2 -0
  712. package/dist/esm/version.d.ts.map +1 -0
  713. package/dist/esm/version.js +3 -0
  714. package/dist/esm/version.js.map +1 -0
  715. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts +3 -4
  716. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -1
  717. package/dist/nextjs/NextClientAuthenticationRefresher.js +14 -12
  718. package/dist/nextjs/NextClientAuthenticationRefresher.js.map +1 -1
  719. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts +2 -1
  720. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -1
  721. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js +7 -2
  722. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -1
  723. package/dist/nextjs/hooks/useRefresh.d.ts +3 -1
  724. package/dist/nextjs/hooks/useRefresh.d.ts.map +1 -1
  725. package/dist/nextjs/hooks/useRefresh.js +11 -2
  726. package/dist/nextjs/hooks/useRefresh.js.map +1 -1
  727. package/dist/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
  728. package/dist/nextjs/providers/NextAuthProvider.js +7 -1
  729. package/dist/nextjs/providers/NextAuthProvider.js.map +1 -1
  730. package/dist/nextjs/routeHandler.d.ts.map +1 -1
  731. package/dist/nextjs/routeHandler.js +18 -11
  732. package/dist/nextjs/routeHandler.js.map +1 -1
  733. package/dist/reactjs/providers/AuthProvider.d.ts.map +1 -1
  734. package/dist/reactjs/providers/AuthProvider.js +8 -0
  735. package/dist/reactjs/providers/AuthProvider.js.map +1 -1
  736. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
  737. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js +1 -2
  738. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -1
  739. package/dist/server/refresh.d.ts.map +1 -1
  740. package/dist/server/refresh.js +4 -1
  741. package/dist/server/refresh.js.map +1 -1
  742. package/dist/services/AuthenticationService.d.ts.map +1 -1
  743. package/dist/services/AuthenticationService.js +1 -6
  744. package/dist/services/AuthenticationService.js.map +1 -1
  745. package/dist/shared/components/CivicAuthIframe.d.ts.map +1 -1
  746. package/dist/shared/components/CivicAuthIframe.js +8 -2
  747. package/dist/shared/components/CivicAuthIframe.js.map +1 -1
  748. package/dist/shared/hooks/useRefresh.d.ts +3 -1
  749. package/dist/shared/hooks/useRefresh.d.ts.map +1 -1
  750. package/dist/shared/hooks/useRefresh.js +11 -2
  751. package/dist/shared/hooks/useRefresh.js.map +1 -1
  752. package/dist/shared/lib/AuthenticationRefresherImpl.d.ts +2 -2
  753. package/dist/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -1
  754. package/dist/shared/lib/AuthenticationRefresherImpl.js +7 -6
  755. package/dist/shared/lib/AuthenticationRefresherImpl.js.map +1 -1
  756. package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts +11 -0
  757. package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts.map +1 -0
  758. package/dist/shared/lib/BrowserAuthenticationRefresher.js +58 -0
  759. package/dist/shared/lib/BrowserAuthenticationRefresher.js.map +1 -0
  760. package/dist/shared/lib/GenericAuthenticationRefresher.d.ts +2 -4
  761. package/dist/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  762. package/dist/shared/lib/GenericAuthenticationRefresher.js +10 -39
  763. package/dist/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  764. package/dist/shared/lib/util.d.ts.map +1 -1
  765. package/dist/shared/lib/util.js +12 -2
  766. package/dist/shared/lib/util.js.map +1 -1
  767. package/dist/shared/version.d.ts +1 -1
  768. package/dist/shared/version.d.ts.map +1 -1
  769. package/dist/shared/version.js +1 -1
  770. package/dist/shared/version.js.map +1 -1
  771. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  772. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  773. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ import { CookieStorage, } from "../../shared/lib/storage.js";
2
+ // Ensure only runs in a browser environment
3
+ function documentObj() {
4
+ if (typeof globalThis.window !== "undefined")
5
+ return globalThis.document;
6
+ const stack = new Error().stack;
7
+ throw new Error("Document is not available in this environment:" + JSON.stringify(stack));
8
+ }
9
+ const split = (separator) => (str) => str.split(separator);
10
+ const cookieStringFromSettings = (settings) => {
11
+ let cookieSettings = "";
12
+ if (settings.path) {
13
+ cookieSettings += `Path=${settings.path}; `;
14
+ }
15
+ if (settings.expires) {
16
+ cookieSettings += `Expires=${settings.expires}; `;
17
+ }
18
+ if (settings.secure) {
19
+ cookieSettings += `Secure; `;
20
+ }
21
+ if (settings.httpOnly) {
22
+ // HttpOnly cannot be set from client-side JavaScript, so this clause can be omitted.
23
+ console.warn("HttpOnly cannot be set on client-side cookies. Ignoring this setting.");
24
+ }
25
+ if (settings.sameSite) {
26
+ cookieSettings += `SameSite=${settings.sameSite}; `;
27
+ }
28
+ return cookieSettings.trim();
29
+ };
30
+ export class BrowserCookieStorage extends CookieStorage {
31
+ constructor(config = {}) {
32
+ super({
33
+ // sensible browser defaults
34
+ secure: false,
35
+ httpOnly: false,
36
+ ...config,
37
+ });
38
+ }
39
+ async get(key) {
40
+ const encodedValue = documentObj()
41
+ .cookie.split(";")
42
+ .map(split("="))
43
+ .find(([cookieKey]) => cookieKey?.trim() === key)?.[1];
44
+ return encodedValue ? decodeURIComponent(encodedValue) : null;
45
+ }
46
+ async set(key, value, cookieConfigOverride = {}) {
47
+ const encodedValue = encodeURIComponent(value);
48
+ const settings = { ...this.settings, ...cookieConfigOverride };
49
+ const cookieString = cookieStringFromSettings(settings);
50
+ documentObj().cookie = `${key}=${encodedValue}; ${cookieString}`;
51
+ }
52
+ async delete(key) {
53
+ documentObj().cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
54
+ }
55
+ }
56
+ //# sourceMappingURL=BrowserCookieStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserCookieStorage.js","sourceRoot":"","sources":["../../../../src/shared/lib/BrowserCookieStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,yBAAyB,CAAC;AAGjC,4CAA4C;AAC5C,SAAS,WAAW;IAClB,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAChC,MAAM,IAAI,KAAK,CACb,gDAAgD,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3E,MAAM,wBAAwB,GAAG,CAAC,QAA+B,EAAU,EAAE;IAC3E,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,cAAc,IAAI,QAAQ,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,cAAc,IAAI,WAAW,QAAQ,CAAC,OAAO,IAAI,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,cAAc,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,qFAAqF;QACrF,OAAO,CAAC,IAAI,CACV,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,cAAc,IAAI,YAAY,QAAQ,CAAC,QAAQ,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC;AACF,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IACrD,YAAY,SAAyC,EAAE;QACrD,KAAK,CAAC;YACJ,4BAA4B;YAC5B,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,YAAY,GAAG,WAAW,EAAE;aAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;aACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACf,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,KAAa,EACb,uBAA8C,EAAE;QAEhD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;QAC/D,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACxD,WAAW,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,WAAW,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,mDAAmD,CAAC;IACnF,CAAC;CACF","sourcesContent":["import {\n CookieStorage,\n type CookieStorageSettings,\n} from \"@/shared/lib/storage.js\";\nimport type { CookieConfig } from \"./types.js\";\n\n// Ensure only runs in a browser environment\nfunction documentObj() {\n if (typeof globalThis.window !== \"undefined\") return globalThis.document;\n const stack = new Error().stack;\n throw new Error(\n \"Document is not available in this environment:\" + JSON.stringify(stack),\n );\n}\n\nconst split = (separator: string) => (str: string) => str.split(separator);\n\nconst cookieStringFromSettings = (settings: CookieStorageSettings): string => {\n let cookieSettings = \"\";\n\n if (settings.path) {\n cookieSettings += `Path=${settings.path}; `;\n }\n if (settings.expires) {\n cookieSettings += `Expires=${settings.expires}; `;\n }\n if (settings.secure) {\n cookieSettings += `Secure; `;\n }\n if (settings.httpOnly) {\n // HttpOnly cannot be set from client-side JavaScript, so this clause can be omitted.\n console.warn(\n \"HttpOnly cannot be set on client-side cookies. Ignoring this setting.\",\n );\n }\n if (settings.sameSite) {\n cookieSettings += `SameSite=${settings.sameSite}; `;\n }\n return cookieSettings.trim();\n};\nexport class BrowserCookieStorage extends CookieStorage {\n constructor(config: Partial<CookieStorageSettings> = {}) {\n super({\n // sensible browser defaults\n secure: false,\n httpOnly: false,\n ...config,\n });\n }\n\n async get(key: string): Promise<string | null> {\n const encodedValue = documentObj()\n .cookie.split(\";\")\n .map(split(\"=\"))\n .find(([cookieKey]) => cookieKey?.trim() === key)?.[1];\n\n return encodedValue ? decodeURIComponent(encodedValue) : null;\n }\n\n async set(\n key: string,\n value: string,\n cookieConfigOverride: Partial<CookieConfig> = {},\n ): Promise<void> {\n const encodedValue = encodeURIComponent(value);\n const settings = { ...this.settings, ...cookieConfigOverride };\n const cookieString = cookieStringFromSettings(settings);\n documentObj().cookie = `${key}=${encodedValue}; ${cookieString}`;\n }\n\n async delete(key: string): Promise<void> {\n documentObj().cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { AuthConfig } from "../../server/config.js";
2
+ import type { AuthenticationRefresher } from "../../services/types.js";
3
+ import type { AuthStorage, OIDCTokenResponseBody } from "../../types.js";
4
+ export declare abstract class GenericAuthenticationRefresher implements AuthenticationRefresher {
5
+ protected authConfig: AuthConfig | undefined;
6
+ protected storage: AuthStorage | undefined;
7
+ static refreshInProgress: boolean;
8
+ get oauthServer(): string;
9
+ abstract refreshAccessToken(refreshToken?: string): Promise<OIDCTokenResponseBody>;
10
+ getRefreshToken(): Promise<string>;
11
+ refreshTokens(): Promise<OIDCTokenResponseBody>;
12
+ private handleRefresh;
13
+ setupAutorefresh(): Promise<void>;
14
+ clearAutorefresh(): void;
15
+ }
16
+ //# sourceMappingURL=GenericAuthenticationRefresher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAKnE,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,8BAAsB,8BACpB,YAAW,uBAAuB;IAElC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,iBAAiB,UAAS;IAEjC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,QAAQ,CAAC,kBAAkB,CACzB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAE3B,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAQlC,aAAa;YAIL,aAAa;IAerB,gBAAgB;IAoBtB,gBAAgB;CAQjB"}
@@ -0,0 +1,61 @@
1
+ import { AUTOREFRESH_TIMEOUT_NAME, DEFAULT_AUTH_SERVER, REFRESH_IN_PROGRESS, } from "../../constants.js";
2
+ import { retrieveAccessTokenExpiresAt, retrieveTokens, } from "../../shared/lib/util.js";
3
+ export class GenericAuthenticationRefresher {
4
+ authConfig;
5
+ storage;
6
+ static refreshInProgress = false;
7
+ get oauthServer() {
8
+ return this.authConfig?.oauthServer || DEFAULT_AUTH_SERVER;
9
+ }
10
+ async getRefreshToken() {
11
+ if (!this.storage)
12
+ throw new Error("No storage available");
13
+ const tokens = await retrieveTokens(this.storage);
14
+ if (!tokens?.refresh_token)
15
+ throw new Error("No refresh token available");
16
+ return tokens.refresh_token;
17
+ }
18
+ async refreshTokens() {
19
+ return this.refreshAccessToken();
20
+ }
21
+ async handleRefresh() {
22
+ try {
23
+ // ensure only one refresh is in progress
24
+ if (localStorage.getItem(REFRESH_IN_PROGRESS) !== "true") {
25
+ localStorage.setItem(REFRESH_IN_PROGRESS, "true");
26
+ await this.refreshTokens();
27
+ localStorage.setItem(REFRESH_IN_PROGRESS, "false");
28
+ await this.setupAutorefresh(); // Reset the timeout after successful refresh
29
+ }
30
+ }
31
+ catch (error) {
32
+ console.error("Failed to refresh tokens:", error);
33
+ // TODO detect if refresh token has expired and if yes then logout
34
+ }
35
+ }
36
+ async setupAutorefresh() {
37
+ if (!this.storage)
38
+ throw new Error("No storage available");
39
+ // Clear any existing timeout
40
+ this.clearAutorefresh();
41
+ // get expires_in
42
+ const now = Math.floor(Date.now() / 1000);
43
+ const expiresAt = (await retrieveAccessTokenExpiresAt(this.storage)) || now + 60;
44
+ // Calculate time until expiry (subtract 30 seconds as buffer)
45
+ const bufferTime = 30; // 30 seconds
46
+ const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past
47
+ const refreshTimeout = setTimeout(() => {
48
+ this.handleRefresh();
49
+ }, 1000 * refreshTime);
50
+ localStorage.setItem(AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());
51
+ }
52
+ clearAutorefresh() {
53
+ // use local storage to store the timeout id so that if multiple instances
54
+ // of the refresher are created they can all clear the same timeout
55
+ const existingTimeout = localStorage.getItem(AUTOREFRESH_TIMEOUT_NAME);
56
+ if (existingTimeout) {
57
+ clearTimeout(existingTimeout);
58
+ }
59
+ }
60
+ }
61
+ //# sourceMappingURL=GenericAuthenticationRefresher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,4BAA4B,EAC5B,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,MAAM,OAAgB,8BAA8B;IAGxC,UAAU,CAAyB;IACnC,OAAO,CAA0B;IAC3C,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAEjC,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,WAAW,IAAI,mBAAmB,CAAC;IAC7D,CAAC;IAMD,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,yCAAyC;YACzC,IAAI,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,MAAM,EAAE,CAAC;gBACzD,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,6CAA6C;YAC9E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,kEAAkE;QACpE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,6BAA6B;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,iBAAiB;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GACb,CAAC,MAAM,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAEjE,8DAA8D;QAC9D,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,aAAa;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iDAAiD;QAEhH,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;QACvB,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;QACd,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACvE,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;IACH,CAAC","sourcesContent":["import {\n AUTOREFRESH_TIMEOUT_NAME,\n DEFAULT_AUTH_SERVER,\n REFRESH_IN_PROGRESS,\n} from \"@/constants.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport type { AuthenticationRefresher } from \"@/services/types.js\";\nimport {\n retrieveAccessTokenExpiresAt,\n retrieveTokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\n\nexport abstract class GenericAuthenticationRefresher\n implements AuthenticationRefresher\n{\n protected authConfig: AuthConfig | undefined;\n protected storage: AuthStorage | undefined;\n static refreshInProgress = false;\n\n get oauthServer(): string {\n return this.authConfig?.oauthServer || DEFAULT_AUTH_SERVER;\n }\n\n abstract refreshAccessToken(\n refreshToken?: string,\n ): Promise<OIDCTokenResponseBody>;\n\n async getRefreshToken(): Promise<string> {\n if (!this.storage) throw new Error(\"No storage available\");\n\n const tokens = await retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n return tokens.refresh_token;\n }\n\n async refreshTokens() {\n return this.refreshAccessToken();\n }\n\n private async handleRefresh() {\n try {\n // ensure only one refresh is in progress\n if (localStorage.getItem(REFRESH_IN_PROGRESS) !== \"true\") {\n localStorage.setItem(REFRESH_IN_PROGRESS, \"true\");\n await this.refreshTokens();\n localStorage.setItem(REFRESH_IN_PROGRESS, \"false\");\n await this.setupAutorefresh(); // Reset the timeout after successful refresh\n }\n } catch (error) {\n console.error(\"Failed to refresh tokens:\", error);\n // TODO detect if refresh token has expired and if yes then logout\n }\n }\n\n async setupAutorefresh() {\n if (!this.storage) throw new Error(\"No storage available\");\n // Clear any existing timeout\n this.clearAutorefresh();\n\n // get expires_in\n const now = Math.floor(Date.now() / 1000);\n const expiresAt =\n (await retrieveAccessTokenExpiresAt(this.storage)) || now + 60;\n\n // Calculate time until expiry (subtract 30 seconds as buffer)\n const bufferTime = 30; // 30 seconds\n const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past\n\n const refreshTimeout = setTimeout(() => {\n this.handleRefresh();\n }, 1000 * refreshTime);\n localStorage.setItem(AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());\n }\n\n clearAutorefresh() {\n // use local storage to store the timeout id so that if multiple instances\n // of the refresher are created they can all clear the same timeout\n const existingTimeout = localStorage.getItem(AUTOREFRESH_TIMEOUT_NAME);\n if (existingTimeout) {\n clearTimeout(existingTimeout);\n }\n }\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { AuthStorage, ForwardedTokensJWT, UnknownObject, User } from "../../types.js";
2
+ export interface UserSession<T extends UnknownObject> {
3
+ get(): Promise<User<T> | null>;
4
+ set(user: User<T> & {
5
+ forwardedTokens?: ForwardedTokensJWT;
6
+ }): Promise<void>;
7
+ }
8
+ export declare class GenericUserSession<T extends UnknownObject> implements UserSession<T> {
9
+ readonly storage: AuthStorage;
10
+ constructor(storage: AuthStorage);
11
+ get(): Promise<User<T> | null>;
12
+ set(user: (User<T> & {
13
+ forwardedTokens?: ForwardedTokensJWT;
14
+ }) | null): Promise<void>;
15
+ clear(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=UserSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/UserSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,IAAI,EACL,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,aAAa;IAClD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,aAAa,CACrD,YAAW,WAAW,CAAC,CAAC,CAAC;IAEb,QAAQ,CAAC,OAAO,EAAE,WAAW;gBAApB,OAAO,EAAE,WAAW;IAEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK9B,GAAG,CACP,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC,GAAG,IAAI,GAChE,OAAO,CAAC,IAAI,CAAC;IAQV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,23 @@
1
+ import { UserStorage } from "../../shared/lib/types.js";
2
+ import { convertForwardedTokenFormat } from "../../lib/jwt.js";
3
+ export class GenericUserSession {
4
+ storage;
5
+ constructor(storage) {
6
+ this.storage = storage;
7
+ }
8
+ async get() {
9
+ const user = await this.storage.get(UserStorage.USER);
10
+ return user ? JSON.parse(user) : null;
11
+ }
12
+ async set(user) {
13
+ const forwardedTokens = user?.forwardedTokens
14
+ ? convertForwardedTokenFormat(user?.forwardedTokens)
15
+ : null;
16
+ const value = user ? JSON.stringify({ ...user, forwardedTokens }) : "";
17
+ await this.storage.set(UserStorage.USER, value);
18
+ }
19
+ async clear() {
20
+ await this.storage.delete(UserStorage.USER);
21
+ }
22
+ }
23
+ //# sourceMappingURL=UserSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSession.js","sourceRoot":"","sources":["../../../../src/shared/lib/UserSession.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAO3D,MAAM,OAAO,kBAAkB;IAGR;IAArB,YAAqB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAE7C,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAiE;QAEjE,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe;YAC3C,CAAC,CAAC,2BAA2B,CAAC,IAAI,EAAE,eAAqC,CAAC;YAC1E,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF","sourcesContent":["import type {\n AuthStorage,\n ForwardedTokensJWT,\n UnknownObject,\n User,\n} from \"@/types.js\";\nimport { UserStorage } from \"@/shared/lib/types.js\";\nimport { convertForwardedTokenFormat } from \"@/lib/jwt.js\";\n\nexport interface UserSession<T extends UnknownObject> {\n get(): Promise<User<T> | null>;\n set(user: User<T> & { forwardedTokens?: ForwardedTokensJWT }): Promise<void>;\n}\n\nexport class GenericUserSession<T extends UnknownObject>\n implements UserSession<T>\n{\n constructor(readonly storage: AuthStorage) {}\n\n async get(): Promise<User<T> | null> {\n const user = await this.storage.get(UserStorage.USER);\n return user ? JSON.parse(user) : null;\n }\n\n async set(\n user: (User<T> & { forwardedTokens?: ForwardedTokensJWT }) | null,\n ): Promise<void> {\n const forwardedTokens = user?.forwardedTokens\n ? convertForwardedTokenFormat(user?.forwardedTokens as ForwardedTokensJWT)\n : null;\n const value = user ? JSON.stringify({ ...user, forwardedTokens }) : \"\";\n await this.storage.set(UserStorage.USER, value);\n }\n\n async clear(): Promise<void> {\n await this.storage.delete(UserStorage.USER);\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ type ExtendedIframeElement = HTMLIFrameElement & {
2
+ getElement: () => HTMLIFrameElement;
3
+ };
4
+ export declare const getIframeRef: (iframeRef: HTMLIFrameElement | ExtendedIframeElement | null) => HTMLIFrameElement;
5
+ export {};
6
+ //# sourceMappingURL=iframeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframeUtils.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG,iBAAiB,GAAG;IAC/C,UAAU,EAAE,MAAM,iBAAiB,CAAC;CACrC,CAAC;AACF,eAAO,MAAM,YAAY,cACZ,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,KAC1D,iBAKF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const getIframeRef = (iframeRef) => {
2
+ if (!iframeRef) {
3
+ throw new Error("iframeRef is required for displayMode 'iframe'");
4
+ }
5
+ return iframeRef?.getElement?.() ?? iframeRef;
6
+ };
7
+ //# sourceMappingURL=iframeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframeUtils.js","sourceRoot":"","sources":["../../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,SAA2D,EACxC,EAAE;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAQ,SAAmC,EAAE,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC;AAC3E,CAAC,CAAC","sourcesContent":["type ExtendedIframeElement = HTMLIFrameElement & {\n getElement: () => HTMLIFrameElement;\n};\nexport const getIframeRef = (\n iframeRef: HTMLIFrameElement | ExtendedIframeElement | null,\n): HTMLIFrameElement => {\n if (!iframeRef) {\n throw new Error(\"iframeRef is required for displayMode 'iframe'\");\n }\n return (iframeRef as ExtendedIframeElement)?.getElement?.() ?? iframeRef;\n};\n"]}
@@ -0,0 +1,4 @@
1
+ import { type AuthStorage, type OAuthTokens, type User, type EmptyObject, type UnknownObject } from "../../types.js";
2
+ export declare function getUser<T extends UnknownObject = EmptyObject>(storage: AuthStorage): Promise<User<T> | null>;
3
+ export declare function getTokens(storage: AuthStorage): Promise<OAuthTokens | null>;
4
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAsBpB,wBAAsB,OAAO,CAAC,CAAC,SAAS,aAAa,GAAG,WAAW,EACjE,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAoBzB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS7B"}
@@ -0,0 +1,44 @@
1
+ import { retrieveTokens } from "../../shared/lib/util.js";
2
+ import { decodeJwt } from "jose";
3
+ import { tokenKeys, } from "../../types.js";
4
+ import { JWT_PAYLOAD_KNOWN_CLAIM_KEYS } from "../../constants.js";
5
+ // Function to omit keys from an object
6
+ const omitKeys = (keys, obj) => {
7
+ const result = { ...obj };
8
+ keys.forEach((key) => {
9
+ delete result[key];
10
+ });
11
+ return result;
12
+ };
13
+ const parseJWTToType = (jwt) => {
14
+ const parseResult = decodeJwt(jwt);
15
+ return parseResult;
16
+ };
17
+ export async function getUser(storage) {
18
+ const tokens = await retrieveTokens(storage);
19
+ if (!tokens)
20
+ return null;
21
+ const parsedToken = parseJWTToType(tokens.id_token);
22
+ // it might be preferable to throw here
23
+ if (!parsedToken.sub)
24
+ return null;
25
+ // set the user ID from the token sub
26
+ const userWithAdditionalTokenFields = {
27
+ ...parsedToken,
28
+ id: parsedToken.sub,
29
+ };
30
+ // Assumes all information is in the ID token
31
+ // remove the token keys from the user object to stop it getting too large
32
+ return omitKeys([...JWT_PAYLOAD_KNOWN_CLAIM_KEYS, ...tokenKeys], userWithAdditionalTokenFields);
33
+ }
34
+ export async function getTokens(storage) {
35
+ const storageData = await retrieveTokens(storage);
36
+ if (!storageData)
37
+ return null;
38
+ return {
39
+ idToken: storageData.id_token,
40
+ accessToken: storageData.access_token,
41
+ refreshToken: storageData.refresh_token,
42
+ };
43
+ }
44
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/shared/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAmB,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,SAAS,GAMV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAE9D,uCAAuC;AACvC,MAAM,QAAQ,GAAG,CACf,IAAS,EACT,GAAM,EACM,EAAE;IACd,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,GAAW,EACK,EAAE;IAClB,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,WAA6B,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,WAAW,GAAG,cAAc,CAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,uCAAuC;IACvC,IAAI,CAAC,WAAW,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAElC,qCAAqC;IACrC,MAAM,6BAA6B,GAAG;QACpC,GAAI,WAAiB;QACrB,EAAE,EAAE,WAAW,CAAC,GAAG;KACpB,CAAC;IAEF,6CAA6C;IAC7C,0EAA0E;IAC1E,OAAO,QAAQ,CACb,CAAC,GAAG,4BAA4B,EAAE,GAAG,SAAS,CAAC,EAC/C,6BAA6B,CACnB,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,QAAQ;QAC7B,WAAW,EAAE,WAAW,CAAC,YAAY;QACrC,YAAY,EAAE,WAAW,CAAC,aAAa;KACxC,CAAC;AACJ,CAAC","sourcesContent":["import { retrieveTokens } from \"@/shared/lib/util.js\";\nimport { decodeJwt, type JWTPayload } from \"jose\";\nimport {\n tokenKeys,\n type AuthStorage,\n type OAuthTokens,\n type User,\n type EmptyObject,\n type UnknownObject,\n} from \"@/types.js\";\nimport { JWT_PAYLOAD_KNOWN_CLAIM_KEYS } from \"@/constants.js\";\n\n// Function to omit keys from an object\nconst omitKeys = <K extends keyof T, T extends Record<string, unknown>>(\n keys: K[],\n obj: T,\n): Omit<T, K> => {\n const result = { ...obj };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\n\nconst parseJWTToType = <T extends UnknownObject = EmptyObject>(\n jwt: string,\n): JWTPayload & T => {\n const parseResult = decodeJwt(jwt);\n return parseResult as JWTPayload & T;\n};\n\nexport async function getUser<T extends UnknownObject = EmptyObject>(\n storage: AuthStorage,\n): Promise<User<T> | null> {\n const tokens = await retrieveTokens(storage);\n if (!tokens) return null;\n\n const parsedToken = parseJWTToType<T>(tokens.id_token);\n // it might be preferable to throw here\n if (!parsedToken.sub) return null;\n\n // set the user ID from the token sub\n const userWithAdditionalTokenFields = {\n ...(parsedToken as T),\n id: parsedToken.sub,\n };\n\n // Assumes all information is in the ID token\n // remove the token keys from the user object to stop it getting too large\n return omitKeys(\n [...JWT_PAYLOAD_KNOWN_CLAIM_KEYS, ...tokenKeys],\n userWithAdditionalTokenFields,\n ) as User<T>;\n}\n\nexport async function getTokens(\n storage: AuthStorage,\n): Promise<OAuthTokens | null> {\n const storageData = await retrieveTokens(storage);\n if (!storageData) return null;\n\n return {\n idToken: storageData.id_token,\n accessToken: storageData.access_token,\n refreshToken: storageData.refresh_token,\n };\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import type { AuthStorage, SessionData, UnknownObject, User } from "../../types.js";
2
+ import type { CookieConfig } from "./types.js";
3
+ type SameSiteOption = "strict" | "lax" | "none";
4
+ export interface SessionStorage {
5
+ get(): SessionData;
6
+ getUser(): User<UnknownObject> | null;
7
+ set(data: Partial<SessionData>): void;
8
+ setUser(data: User<UnknownObject> | null): void;
9
+ clear(): void;
10
+ }
11
+ export type CookieStorageSettings = {
12
+ httpOnly: boolean;
13
+ secure: boolean;
14
+ sameSite: SameSiteOption;
15
+ expires: Date;
16
+ path: string;
17
+ };
18
+ export declare const DEFAULT_COOKIE_DURATION: number;
19
+ export declare abstract class CookieStorage implements AuthStorage {
20
+ protected settings: CookieStorageSettings;
21
+ protected constructor(settings?: Partial<CookieStorageSettings>);
22
+ abstract get(key: string): Promise<string | null>;
23
+ abstract set(key: string, value: string, cookieConfigOverride?: Partial<CookieConfig>): Promise<void>;
24
+ abstract delete(key: string): Promise<void>;
25
+ }
26
+ export type AuthCookieStorageSettings = {
27
+ httpOnly: boolean;
28
+ secure: boolean;
29
+ sameSite: SameSiteOption;
30
+ expires: Date;
31
+ path: string;
32
+ timestamp: Date;
33
+ };
34
+ export {};
35
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,KAAK,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,GAAG,IAAI,WAAW,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAU,CAAC;AAE/C,8BAAsB,aAAc,YAAW,WAAW;IACxD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,SAAS,aAAa,QAAQ,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAanE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,oBAAoB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC3C,OAAO,CAAC,IAAI,CAAC;IAChB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export const DEFAULT_COOKIE_DURATION = 60 * 15; // 15 minutes
2
+ export class CookieStorage {
3
+ settings;
4
+ constructor(settings = {}) {
5
+ this.settings = {
6
+ httpOnly: settings.httpOnly ?? true,
7
+ secure: settings.secure ?? true,
8
+ // the callback request comes the auth server
9
+ // 'lax' ensures the code_verifier cookie is sent with the request
10
+ sameSite: settings.sameSite ?? "lax",
11
+ expires: settings.expires ??
12
+ new Date(Date.now() + 1000 * DEFAULT_COOKIE_DURATION),
13
+ path: settings.path ?? "/",
14
+ };
15
+ }
16
+ }
17
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/shared/lib/storage.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AAE7D,MAAM,OAAgB,aAAa;IACvB,QAAQ,CAAwB;IAC1C,YAAsB,WAA2C,EAAE;QACjE,IAAI,CAAC,QAAQ,GAAG;YACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;YACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;YAC/B,6CAA6C;YAC7C,kEAAkE;YAClE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK;YACpC,OAAO,EACL,QAAQ,CAAC,OAAO;gBAChB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,uBAAuB,CAAC;YACvD,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,GAAG;SAC3B,CAAC;IACJ,CAAC;CAQF","sourcesContent":["import type { AuthStorage, SessionData, UnknownObject, User } from \"@/types.js\";\nimport type { CookieConfig } from \"./types.js\";\n\ntype SameSiteOption = \"strict\" | \"lax\" | \"none\";\n\nexport interface SessionStorage {\n get(): SessionData;\n getUser(): User<UnknownObject> | null;\n set(data: Partial<SessionData>): void;\n setUser(data: User<UnknownObject> | null): void;\n clear(): void;\n}\n\nexport type CookieStorageSettings = {\n httpOnly: boolean;\n secure: boolean;\n sameSite: SameSiteOption;\n expires: Date;\n path: string;\n};\n\nexport const DEFAULT_COOKIE_DURATION = 60 * 15; // 15 minutes\n\nexport abstract class CookieStorage implements AuthStorage {\n protected settings: CookieStorageSettings;\n protected constructor(settings: Partial<CookieStorageSettings> = {}) {\n this.settings = {\n httpOnly: settings.httpOnly ?? true,\n secure: settings.secure ?? true,\n // the callback request comes the auth server\n // 'lax' ensures the code_verifier cookie is sent with the request\n sameSite: settings.sameSite ?? \"lax\",\n expires:\n settings.expires ??\n new Date(Date.now() + 1000 * DEFAULT_COOKIE_DURATION),\n path: settings.path ?? \"/\",\n };\n }\n abstract get(key: string): Promise<string | null>;\n abstract set(\n key: string,\n value: string,\n cookieConfigOverride?: Partial<CookieConfig>,\n ): Promise<void>;\n abstract delete(key: string): Promise<void>;\n}\n\nexport type AuthCookieStorageSettings = {\n httpOnly: boolean;\n secure: boolean;\n sameSite: SameSiteOption;\n expires: Date;\n path: string;\n timestamp: Date;\n};\n"]}
@@ -0,0 +1,39 @@
1
+ import type { Endpoints } from "../../types.js";
2
+ export declare enum OAuthTokens {
3
+ ID_TOKEN = "id_token",
4
+ ACCESS_TOKEN = "access_token",
5
+ REFRESH_TOKEN = "refresh_token",
6
+ ACCESS_TOKEN_EXPIRES_AT = "access_token_expires_at"
7
+ }
8
+ export declare const AUTH_SERVER_SESSION = "_session";
9
+ export declare const AUTH_SERVER_LEGACY_SESSION = "_session.legacy";
10
+ export declare enum CodeVerifier {
11
+ COOKIE_NAME = "code_verifier",
12
+ APP_URL = "app_url"
13
+ }
14
+ export declare enum UserStorage {
15
+ USER = "user"
16
+ }
17
+ export interface CookieConfig {
18
+ secure?: boolean;
19
+ sameSite?: "strict" | "lax" | "none";
20
+ domain?: string;
21
+ path?: string;
22
+ maxAge?: number;
23
+ httpOnly?: boolean;
24
+ }
25
+ export type KeySetter = OAuthTokens | CodeVerifier | UserStorage;
26
+ export type TokensCookieConfig = Record<OAuthTokens | CodeVerifier, CookieConfig>;
27
+ export type CivicAuthConfig = null | {
28
+ clientId: string;
29
+ redirectUrl: string;
30
+ logoutRedirectUrl: string;
31
+ oauthServer: string;
32
+ endpoints: Endpoints;
33
+ scopes: string[];
34
+ nonce?: string;
35
+ challengeUrl?: string;
36
+ refreshUrl?: string;
37
+ logoutUrl?: string;
38
+ };
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,oBAAY,WAAW;IACrB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,uBAAuB,4BAA4B;CACpD;AAED,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAE5D,oBAAY,YAAY;IACtB,WAAW,kBAAkB;IAC7B,OAAO,YAAY;CACpB;AACD,oBAAY,WAAW;IACrB,IAAI,SAAS;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC,WAAW,GAAG,YAAY,EAC1B,YAAY,CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export var OAuthTokens;
2
+ (function (OAuthTokens) {
3
+ OAuthTokens["ID_TOKEN"] = "id_token";
4
+ OAuthTokens["ACCESS_TOKEN"] = "access_token";
5
+ OAuthTokens["REFRESH_TOKEN"] = "refresh_token";
6
+ OAuthTokens["ACCESS_TOKEN_EXPIRES_AT"] = "access_token_expires_at";
7
+ })(OAuthTokens || (OAuthTokens = {}));
8
+ export const AUTH_SERVER_SESSION = "_session";
9
+ export const AUTH_SERVER_LEGACY_SESSION = "_session.legacy";
10
+ export var CodeVerifier;
11
+ (function (CodeVerifier) {
12
+ CodeVerifier["COOKIE_NAME"] = "code_verifier";
13
+ CodeVerifier["APP_URL"] = "app_url";
14
+ })(CodeVerifier || (CodeVerifier = {}));
15
+ export var UserStorage;
16
+ (function (UserStorage) {
17
+ UserStorage["USER"] = "user";
18
+ })(UserStorage || (UserStorage = {}));
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/shared/lib/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,kEAAmD,CAAA;AACrD,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AAE5D,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AACD,MAAM,CAAN,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,4BAAa,CAAA;AACf,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB","sourcesContent":["import type { Endpoints } from \"@/types.js\";\n\nexport enum OAuthTokens {\n ID_TOKEN = \"id_token\",\n ACCESS_TOKEN = \"access_token\",\n REFRESH_TOKEN = \"refresh_token\",\n ACCESS_TOKEN_EXPIRES_AT = \"access_token_expires_at\",\n}\n\nexport const AUTH_SERVER_SESSION = \"_session\";\nexport const AUTH_SERVER_LEGACY_SESSION = \"_session.legacy\";\n\nexport enum CodeVerifier {\n COOKIE_NAME = \"code_verifier\",\n APP_URL = \"app_url\",\n}\nexport enum UserStorage {\n USER = \"user\",\n}\nexport interface CookieConfig {\n secure?: boolean;\n sameSite?: \"strict\" | \"lax\" | \"none\";\n domain?: string;\n path?: string;\n maxAge?: number;\n httpOnly?: boolean;\n}\nexport type KeySetter = OAuthTokens | CodeVerifier | UserStorage;\n\nexport type TokensCookieConfig = Record<\n OAuthTokens | CodeVerifier,\n CookieConfig\n>;\n\nexport type CivicAuthConfig = null | {\n clientId: string;\n redirectUrl: string;\n logoutRedirectUrl: string;\n oauthServer: string;\n endpoints: Endpoints;\n scopes: string[];\n nonce?: string;\n challengeUrl?: string;\n refreshUrl?: string;\n logoutUrl?: string;\n};\n"]}
@@ -0,0 +1,40 @@
1
+ import type { AuthStorage, Endpoints, OIDCTokenResponseBody, ParsedTokens } from "../../types.js";
2
+ import { OAuth2Client } from "oslo/oauth2";
3
+ import type { PKCEConsumer, PKCEProducer } from "../../services/types.js";
4
+ import type { CookieStorage } from "./storage.js";
5
+ /**
6
+ * Given a PKCE code verifier, derive the code challenge using SHA
7
+ */
8
+ export declare function deriveCodeChallenge(codeVerifier: string, method?: "Plain" | "S256"): Promise<string>;
9
+ export declare function getEndpointsWithOverrides(oauthServer: string, endpointOverrides?: Partial<Endpoints>): Promise<Endpoints>;
10
+ export declare function generateOauthLoginUrl(config: {
11
+ clientId: string;
12
+ scopes: string[];
13
+ state: string;
14
+ redirectUrl: string;
15
+ oauthServer: string;
16
+ nonce?: string;
17
+ endpointOverrides?: Partial<Endpoints>;
18
+ pkceConsumer: PKCEConsumer;
19
+ }): Promise<URL>;
20
+ export declare function generateOauthLogoutUrl(config: {
21
+ clientId: string;
22
+ redirectUrl: string;
23
+ idToken: string;
24
+ state: string;
25
+ oauthServer: string;
26
+ endpointOverrides?: Partial<Endpoints>;
27
+ }): Promise<URL>;
28
+ export declare function buildOauth2Client(clientId: string, redirectUri: string, endpoints: Endpoints): OAuth2Client;
29
+ export declare function exchangeTokens(code: string, state: string, pkceProducer: PKCEProducer, oauth2Client: OAuth2Client, oauthServer: string, endpoints: Endpoints): Promise<OIDCTokenResponseBody>;
30
+ export declare const getAccessTokenExpiresAt: (tokens: OIDCTokenResponseBody) => number;
31
+ export declare function setAccessTokenExpiresAt(storage: AuthStorage | CookieStorage, tokens: OIDCTokenResponseBody): Promise<void>;
32
+ export declare function storeTokens(storage: AuthStorage, tokens: OIDCTokenResponseBody): Promise<void>;
33
+ export declare function storeServerTokens(storage: AuthStorage | CookieStorage, tokens: OIDCTokenResponseBody): Promise<void>;
34
+ export declare function clearTokens(storage: AuthStorage): Promise<void>;
35
+ export declare function clearAuthServerSession(storage: AuthStorage): Promise<void>;
36
+ export declare function clearUser(storage: AuthStorage): Promise<void>;
37
+ export declare function retrieveTokens(storage: AuthStorage): Promise<OIDCTokenResponseBody | null>;
38
+ export declare function retrieveAccessTokenExpiresAt(storage: AuthStorage): Promise<number>;
39
+ export declare function validateOauth2Tokens(tokens: OIDCTokenResponseBody, endpoints: Endpoints, oauth2Client: OAuth2Client, issuer: string): Promise<ParsedTokens>;
40
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,GAAG,MAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,OAAO,CAAC,SAAS,CAAM,GACzC,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CA2Bf;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC,GAAG,CAAC,CAcf;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,GACnB,YAAY,CAId;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,kCAoBrB;AAED,eAAO,MAAM,uBAAuB,WAC1B,qBAAqB,KAC5B,MAUF,CAAC;AACF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,iBAsC9B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAYrD;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,iBAGhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,iBAGnD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAmBvC;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CA2BvB"}