@civic/auth 0.2.5-alpha.3 → 0.2.5

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 (559) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/cjs/lib/cookies.d.ts +1 -12
  3. package/dist/cjs/lib/cookies.d.ts.map +1 -1
  4. package/dist/cjs/lib/cookies.js +2 -30
  5. package/dist/cjs/lib/cookies.js.map +1 -1
  6. package/dist/cjs/nextjs/GetUser.d.ts +6 -0
  7. package/dist/cjs/nextjs/GetUser.d.ts.map +1 -0
  8. package/dist/cjs/nextjs/GetUser.js +11 -0
  9. package/dist/cjs/nextjs/GetUser.js.map +1 -0
  10. package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +1 -1
  11. package/dist/cjs/nextjs/hooks/useRefresh.js +5 -7
  12. package/dist/cjs/nextjs/hooks/useRefresh.js.map +1 -1
  13. package/dist/cjs/nextjs/routeHandler.js +1 -1
  14. package/dist/cjs/nextjs/routeHandler.js.map +1 -1
  15. package/dist/cjs/reactjs/hooks/useAuth.d.ts +3 -0
  16. package/dist/cjs/reactjs/hooks/useAuth.d.ts.map +1 -0
  17. package/dist/cjs/reactjs/hooks/useAuth.js +15 -0
  18. package/dist/cjs/reactjs/hooks/useAuth.js.map +1 -0
  19. package/dist/cjs/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
  20. package/dist/cjs/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  21. package/dist/cjs/shared/hooks/useClientTokenExchangeSession.js +16 -0
  22. package/dist/cjs/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
  23. package/dist/cjs/shared/lib/session.d.ts.map +1 -1
  24. package/dist/cjs/shared/lib/session.js +10 -2
  25. package/dist/cjs/shared/lib/session.js.map +1 -1
  26. package/dist/cjs/shared/lib/types.d.ts +1 -1
  27. package/dist/cjs/shared/lib/types.d.ts.map +1 -1
  28. package/dist/cjs/shared/lib/types.js.map +1 -1
  29. package/dist/cjs/shared/providers/AuthProvider.d.ts +22 -0
  30. package/dist/cjs/shared/providers/AuthProvider.d.ts.map +1 -0
  31. package/dist/cjs/shared/providers/AuthProvider.js +108 -0
  32. package/dist/cjs/shared/providers/AuthProvider.js.map +1 -0
  33. package/dist/cjs/shared/providers/CivicAuthProvider.d.ts +6 -0
  34. package/dist/cjs/shared/providers/CivicAuthProvider.d.ts.map +1 -0
  35. package/dist/cjs/shared/providers/CivicAuthProvider.js +38 -0
  36. package/dist/cjs/shared/providers/CivicAuthProvider.js.map +1 -0
  37. package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  38. package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  39. package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.js +168 -0
  40. package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  41. package/dist/cjs/shared/version.d.ts +1 -1
  42. package/dist/cjs/shared/version.d.ts.map +1 -1
  43. package/dist/cjs/shared/version.js +1 -1
  44. package/dist/cjs/shared/version.js.map +1 -1
  45. package/dist/cjs/types.d.ts.map +1 -1
  46. package/dist/cjs/types.js +7 -1
  47. package/dist/cjs/types.js.map +1 -1
  48. package/dist/cjs/utils.d.ts +2 -2
  49. package/dist/cjs/utils.d.ts.map +1 -1
  50. package/dist/cjs/utils.js +1 -1
  51. package/dist/cjs/utils.js.map +1 -1
  52. package/dist/esm/lib/cookies.d.ts +1 -12
  53. package/dist/esm/lib/cookies.d.ts.map +1 -1
  54. package/dist/esm/lib/cookies.js +2 -29
  55. package/dist/esm/lib/cookies.js.map +1 -1
  56. package/dist/esm/nextjs/GetUser.d.ts +6 -0
  57. package/dist/esm/nextjs/GetUser.d.ts.map +1 -0
  58. package/dist/esm/nextjs/GetUser.js +7 -0
  59. package/dist/esm/nextjs/GetUser.js.map +1 -0
  60. package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +1 -1
  61. package/dist/esm/nextjs/hooks/useRefresh.js +6 -8
  62. package/dist/esm/nextjs/hooks/useRefresh.js.map +1 -1
  63. package/dist/esm/nextjs/routeHandler.js +1 -1
  64. package/dist/esm/nextjs/routeHandler.js.map +1 -1
  65. package/dist/esm/reactjs/hooks/useAuth.d.ts +3 -0
  66. package/dist/esm/reactjs/hooks/useAuth.d.ts.map +1 -0
  67. package/dist/esm/reactjs/hooks/useAuth.js +12 -0
  68. package/dist/esm/reactjs/hooks/useAuth.js.map +1 -0
  69. package/dist/esm/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
  70. package/dist/esm/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  71. package/dist/esm/shared/hooks/useClientTokenExchangeSession.js +13 -0
  72. package/dist/esm/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
  73. package/dist/esm/shared/lib/session.d.ts.map +1 -1
  74. package/dist/esm/shared/lib/session.js +10 -2
  75. package/dist/esm/shared/lib/session.js.map +1 -1
  76. package/dist/esm/shared/lib/types.d.ts +1 -1
  77. package/dist/esm/shared/lib/types.d.ts.map +1 -1
  78. package/dist/esm/shared/lib/types.js.map +1 -1
  79. package/dist/esm/shared/providers/AuthProvider.d.ts +22 -0
  80. package/dist/esm/shared/providers/AuthProvider.d.ts.map +1 -0
  81. package/dist/esm/shared/providers/AuthProvider.js +72 -0
  82. package/dist/esm/shared/providers/AuthProvider.js.map +1 -0
  83. package/dist/esm/shared/providers/CivicAuthProvider.d.ts +6 -0
  84. package/dist/esm/shared/providers/CivicAuthProvider.d.ts.map +1 -0
  85. package/dist/esm/shared/providers/CivicAuthProvider.js +32 -0
  86. package/dist/esm/shared/providers/CivicAuthProvider.js.map +1 -0
  87. package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  88. package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  89. package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.js +131 -0
  90. package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  91. package/dist/esm/shared/version.d.ts +1 -1
  92. package/dist/esm/shared/version.d.ts.map +1 -1
  93. package/dist/esm/shared/version.js +1 -1
  94. package/dist/esm/shared/version.js.map +1 -1
  95. package/dist/esm/types.d.ts.map +1 -1
  96. package/dist/esm/types.js +7 -1
  97. package/dist/esm/types.js.map +1 -1
  98. package/dist/esm/utils.d.ts +2 -2
  99. package/dist/esm/utils.d.ts.map +1 -1
  100. package/dist/esm/utils.js +1 -2
  101. package/dist/esm/utils.js.map +1 -1
  102. package/dist/generateVersion.d.ts +2 -0
  103. package/dist/generateVersion.d.ts.map +1 -0
  104. package/dist/generateVersion.js +12 -0
  105. package/dist/generateVersion.js.map +1 -0
  106. package/dist/package.json +118 -0
  107. package/dist/src/browser/storage.d.ts +9 -0
  108. package/dist/src/browser/storage.d.ts.map +1 -0
  109. package/dist/src/browser/storage.js +17 -0
  110. package/dist/src/browser/storage.js.map +1 -0
  111. package/dist/src/config.d.ts +3 -0
  112. package/dist/src/config.d.ts.map +1 -0
  113. package/dist/src/config.js +5 -0
  114. package/dist/src/config.js.map +1 -0
  115. package/dist/src/constants.d.ts +8 -0
  116. package/dist/src/constants.d.ts.map +1 -0
  117. package/dist/src/constants.js +16 -0
  118. package/dist/src/constants.js.map +1 -0
  119. package/dist/src/index.d.ts +6 -0
  120. package/dist/src/index.d.ts.map +1 -0
  121. package/dist/src/index.js +4 -0
  122. package/dist/src/index.js.map +1 -0
  123. package/dist/src/lib/cookies.d.ts +7 -0
  124. package/dist/src/lib/cookies.d.ts.map +1 -0
  125. package/dist/src/lib/cookies.js +25 -0
  126. package/dist/src/lib/cookies.js.map +1 -0
  127. package/dist/src/lib/jwt.d.ts +3 -0
  128. package/dist/src/lib/jwt.d.ts.map +1 -0
  129. package/dist/src/lib/jwt.js +9 -0
  130. package/dist/src/lib/jwt.js.map +1 -0
  131. package/dist/src/lib/logger.d.ts +26 -0
  132. package/dist/src/lib/logger.d.ts.map +1 -0
  133. package/dist/src/lib/logger.js +55 -0
  134. package/dist/src/lib/logger.js.map +1 -0
  135. package/dist/src/lib/oauth.d.ts +19 -0
  136. package/dist/src/lib/oauth.d.ts.map +1 -0
  137. package/dist/src/lib/oauth.js +61 -0
  138. package/dist/src/lib/oauth.js.map +1 -0
  139. package/dist/src/lib/obj.d.ts +3 -0
  140. package/dist/src/lib/obj.d.ts.map +1 -0
  141. package/dist/src/lib/obj.js +18 -0
  142. package/dist/src/lib/obj.js.map +1 -0
  143. package/dist/src/lib/postMessage.d.ts +4 -0
  144. package/dist/src/lib/postMessage.d.ts.map +1 -0
  145. package/dist/src/lib/postMessage.js +15 -0
  146. package/dist/src/lib/postMessage.js.map +1 -0
  147. package/dist/src/lib/windowUtil.d.ts +4 -0
  148. package/dist/src/lib/windowUtil.d.ts.map +1 -0
  149. package/dist/src/lib/windowUtil.js +31 -0
  150. package/dist/src/lib/windowUtil.js.map +1 -0
  151. package/dist/src/nextjs/GetUser.d.ts +6 -0
  152. package/dist/src/nextjs/GetUser.d.ts.map +1 -0
  153. package/dist/src/nextjs/GetUser.js +7 -0
  154. package/dist/src/nextjs/GetUser.js.map +1 -0
  155. package/dist/src/nextjs/config.d.ts +181 -0
  156. package/dist/src/nextjs/config.d.ts.map +1 -0
  157. package/dist/src/nextjs/config.js +177 -0
  158. package/dist/src/nextjs/config.js.map +1 -0
  159. package/dist/src/nextjs/cookies.d.ts +30 -0
  160. package/dist/src/nextjs/cookies.d.ts.map +1 -0
  161. package/dist/src/nextjs/cookies.js +112 -0
  162. package/dist/src/nextjs/cookies.js.map +1 -0
  163. package/dist/src/nextjs/hooks/index.d.ts +2 -0
  164. package/dist/src/nextjs/hooks/index.d.ts.map +1 -0
  165. package/dist/src/nextjs/hooks/index.js +2 -0
  166. package/dist/src/nextjs/hooks/index.js.map +1 -0
  167. package/dist/src/nextjs/hooks/usePrevious.d.ts +2 -0
  168. package/dist/src/nextjs/hooks/usePrevious.d.ts.map +1 -0
  169. package/dist/src/nextjs/hooks/usePrevious.js +9 -0
  170. package/dist/src/nextjs/hooks/usePrevious.js.map +1 -0
  171. package/dist/src/nextjs/hooks/useUserCookie.d.ts +8 -0
  172. package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  173. package/dist/src/nextjs/hooks/useUserCookie.js +88 -0
  174. package/dist/src/nextjs/hooks/useUserCookie.js.map +1 -0
  175. package/dist/src/nextjs/index.d.ts +7 -0
  176. package/dist/src/nextjs/index.d.ts.map +1 -0
  177. package/dist/src/nextjs/index.js +8 -0
  178. package/dist/src/nextjs/index.js.map +1 -0
  179. package/dist/src/nextjs/middleware/index.d.ts +2 -0
  180. package/dist/src/nextjs/middleware/index.d.ts.map +1 -0
  181. package/dist/src/nextjs/middleware/index.js +4 -0
  182. package/dist/src/nextjs/middleware/index.js.map +1 -0
  183. package/dist/src/nextjs/middleware.d.ts +59 -0
  184. package/dist/src/nextjs/middleware.d.ts.map +1 -0
  185. package/dist/src/nextjs/middleware.js +107 -0
  186. package/dist/src/nextjs/middleware.js.map +1 -0
  187. package/dist/src/nextjs/providers/NextAuthProvider.d.ts +13 -0
  188. package/dist/src/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  189. package/dist/src/nextjs/providers/NextAuthProvider.js +94 -0
  190. package/dist/src/nextjs/providers/NextAuthProvider.js.map +1 -0
  191. package/dist/src/nextjs/routeHandler.d.ts +19 -0
  192. package/dist/src/nextjs/routeHandler.d.ts.map +1 -0
  193. package/dist/src/nextjs/routeHandler.js +309 -0
  194. package/dist/src/nextjs/routeHandler.js.map +1 -0
  195. package/dist/src/nextjs/utils.d.ts +3 -0
  196. package/dist/src/nextjs/utils.d.ts.map +1 -0
  197. package/dist/src/nextjs/utils.js +5 -0
  198. package/dist/src/nextjs/utils.js.map +1 -0
  199. package/dist/src/reactjs/components/SignInButton.d.ts +8 -0
  200. package/dist/src/reactjs/components/SignInButton.d.ts.map +1 -0
  201. package/dist/src/reactjs/components/SignInButton.js +14 -0
  202. package/dist/src/reactjs/components/SignInButton.js.map +1 -0
  203. package/dist/src/reactjs/components/SignOutButton.d.ts +6 -0
  204. package/dist/src/reactjs/components/SignOutButton.d.ts.map +1 -0
  205. package/dist/src/reactjs/components/SignOutButton.js +14 -0
  206. package/dist/src/reactjs/components/SignOutButton.js.map +1 -0
  207. package/dist/src/reactjs/components/UserButton.d.ts +6 -0
  208. package/dist/src/reactjs/components/UserButton.d.ts.map +1 -0
  209. package/dist/src/reactjs/components/UserButton.js +118 -0
  210. package/dist/src/reactjs/components/UserButton.js.map +1 -0
  211. package/dist/src/reactjs/components/index.d.ts +6 -0
  212. package/dist/src/reactjs/components/index.d.ts.map +1 -0
  213. package/dist/src/reactjs/components/index.js +6 -0
  214. package/dist/src/reactjs/components/index.js.map +1 -0
  215. package/dist/src/reactjs/hooks/index.d.ts +6 -0
  216. package/dist/src/reactjs/hooks/index.d.ts.map +1 -0
  217. package/dist/src/reactjs/hooks/index.js +6 -0
  218. package/dist/src/reactjs/hooks/index.js.map +1 -0
  219. package/dist/src/reactjs/hooks/useAuth.d.ts +3 -0
  220. package/dist/src/reactjs/hooks/useAuth.d.ts.map +1 -0
  221. package/dist/src/reactjs/hooks/useAuth.js +12 -0
  222. package/dist/src/reactjs/hooks/useAuth.js.map +1 -0
  223. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
  224. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  225. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js +13 -0
  226. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
  227. package/dist/src/reactjs/hooks/useUser.d.ts +4 -0
  228. package/dist/src/reactjs/hooks/useUser.d.ts.map +1 -0
  229. package/dist/src/reactjs/hooks/useUser.js +12 -0
  230. package/dist/src/reactjs/hooks/useUser.js.map +1 -0
  231. package/dist/src/reactjs/index.d.ts +6 -0
  232. package/dist/src/reactjs/index.d.ts.map +1 -0
  233. package/dist/src/reactjs/index.js +10 -0
  234. package/dist/src/reactjs/index.js.map +1 -0
  235. package/dist/src/reactjs/providers/AuthProvider.d.ts +11 -0
  236. package/dist/src/reactjs/providers/AuthProvider.d.ts.map +1 -0
  237. package/dist/src/reactjs/providers/AuthProvider.js +76 -0
  238. package/dist/src/reactjs/providers/AuthProvider.js.map +1 -0
  239. package/dist/src/reactjs/providers/CivicAuthProvider.d.ts +6 -0
  240. package/dist/src/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
  241. package/dist/src/reactjs/providers/CivicAuthProvider.js +32 -0
  242. package/dist/src/reactjs/providers/CivicAuthProvider.js.map +1 -0
  243. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  244. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  245. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js +148 -0
  246. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  247. package/dist/src/reactjs/providers/index.d.ts +8 -0
  248. package/dist/src/reactjs/providers/index.d.ts.map +1 -0
  249. package/dist/src/reactjs/providers/index.js +7 -0
  250. package/dist/src/reactjs/providers/index.js.map +1 -0
  251. package/dist/src/server/ServerAuthenticationResolver.d.ts +20 -0
  252. package/dist/src/server/ServerAuthenticationResolver.d.ts.map +1 -0
  253. package/dist/src/server/ServerAuthenticationResolver.js +67 -0
  254. package/dist/src/server/ServerAuthenticationResolver.js.map +1 -0
  255. package/dist/src/server/config.d.ts +10 -0
  256. package/dist/src/server/config.d.ts.map +1 -0
  257. package/dist/src/server/config.js +2 -0
  258. package/dist/src/server/config.js.map +1 -0
  259. package/dist/src/server/index.d.ts +7 -0
  260. package/dist/src/server/index.d.ts.map +1 -0
  261. package/dist/src/server/index.js +7 -0
  262. package/dist/src/server/index.js.map +1 -0
  263. package/dist/src/server/login.d.ts +21 -0
  264. package/dist/src/server/login.d.ts.map +1 -0
  265. package/dist/src/server/login.js +56 -0
  266. package/dist/src/server/login.js.map +1 -0
  267. package/dist/src/server/refresh.d.ts +7 -0
  268. package/dist/src/server/refresh.d.ts.map +1 -0
  269. package/dist/src/server/refresh.js +13 -0
  270. package/dist/src/server/refresh.js.map +1 -0
  271. package/dist/src/services/AuthenticationService.d.ts +91 -0
  272. package/dist/src/services/AuthenticationService.d.ts.map +1 -0
  273. package/dist/src/services/AuthenticationService.js +322 -0
  274. package/dist/src/services/AuthenticationService.js.map +1 -0
  275. package/dist/src/services/PKCE.d.ts +20 -0
  276. package/dist/src/services/PKCE.d.ts.map +1 -0
  277. package/dist/src/services/PKCE.js +44 -0
  278. package/dist/src/services/PKCE.js.map +1 -0
  279. package/dist/src/services/types.d.ts +24 -0
  280. package/dist/src/services/types.d.ts.map +1 -0
  281. package/dist/src/services/types.js +7 -0
  282. package/dist/src/services/types.js.map +1 -0
  283. package/dist/src/shared/components/BlockDisplay.d.ts +7 -0
  284. package/dist/src/shared/components/BlockDisplay.d.ts.map +1 -0
  285. package/dist/src/shared/components/BlockDisplay.js +25 -0
  286. package/dist/src/shared/components/BlockDisplay.js.map +1 -0
  287. package/dist/src/shared/components/CivicAuthIframe.d.ts +9 -0
  288. package/dist/src/shared/components/CivicAuthIframe.d.ts.map +1 -0
  289. package/dist/src/shared/components/CivicAuthIframe.js +8 -0
  290. package/dist/src/shared/components/CivicAuthIframe.js.map +1 -0
  291. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts +13 -0
  292. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  293. package/dist/src/shared/components/CivicAuthIframeContainer.js +138 -0
  294. package/dist/src/shared/components/CivicAuthIframeContainer.js.map +1 -0
  295. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts +7 -0
  296. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
  297. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js +22 -0
  298. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
  299. package/dist/src/shared/components/CloseIcon.d.ts +4 -0
  300. package/dist/src/shared/components/CloseIcon.d.ts.map +1 -0
  301. package/dist/src/shared/components/CloseIcon.js +6 -0
  302. package/dist/src/shared/components/CloseIcon.js.map +1 -0
  303. package/dist/src/shared/components/IFrameAndLoading.d.ts +8 -0
  304. package/dist/src/shared/components/IFrameAndLoading.d.ts.map +1 -0
  305. package/dist/src/shared/components/IFrameAndLoading.js +27 -0
  306. package/dist/src/shared/components/IFrameAndLoading.js.map +1 -0
  307. package/dist/src/shared/components/LoadingIcon.d.ts +4 -0
  308. package/dist/src/shared/components/LoadingIcon.d.ts.map +1 -0
  309. package/dist/src/shared/components/LoadingIcon.js +30 -0
  310. package/dist/src/shared/components/LoadingIcon.js.map +1 -0
  311. package/dist/src/shared/hooks/index.d.ts +11 -0
  312. package/dist/src/shared/hooks/index.d.ts.map +1 -0
  313. package/dist/src/shared/hooks/index.js +11 -0
  314. package/dist/src/shared/hooks/index.js.map +1 -0
  315. package/dist/src/shared/hooks/useAuth.d.ts +3 -0
  316. package/dist/src/shared/hooks/useAuth.d.ts.map +1 -0
  317. package/dist/src/shared/hooks/useAuth.js +12 -0
  318. package/dist/src/shared/hooks/useAuth.js.map +1 -0
  319. package/dist/src/shared/hooks/useCivicAuthConfig.d.ts +3 -0
  320. package/dist/src/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
  321. package/dist/src/shared/hooks/useCivicAuthConfig.js +10 -0
  322. package/dist/src/shared/hooks/useCivicAuthConfig.js.map +1 -0
  323. package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
  324. package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
  325. package/dist/src/shared/hooks/useClientTokenExchangeSession.js +13 -0
  326. package/dist/src/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
  327. package/dist/src/shared/hooks/useCurrentUrl.d.ts +3 -0
  328. package/dist/src/shared/hooks/useCurrentUrl.d.ts.map +1 -0
  329. package/dist/src/shared/hooks/useCurrentUrl.js +24 -0
  330. package/dist/src/shared/hooks/useCurrentUrl.js.map +1 -0
  331. package/dist/src/shared/hooks/useIframe.d.ts +3 -0
  332. package/dist/src/shared/hooks/useIframe.d.ts.map +1 -0
  333. package/dist/src/shared/hooks/useIframe.js +13 -0
  334. package/dist/src/shared/hooks/useIframe.js.map +1 -0
  335. package/dist/src/shared/hooks/useIsInIframe.d.ts +3 -0
  336. package/dist/src/shared/hooks/useIsInIframe.d.ts.map +1 -0
  337. package/dist/src/shared/hooks/useIsInIframe.js +14 -0
  338. package/dist/src/shared/hooks/useIsInIframe.js.map +1 -0
  339. package/dist/src/shared/hooks/useOAuthEndpoints.d.ts +4 -0
  340. package/dist/src/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
  341. package/dist/src/shared/hooks/useOAuthEndpoints.js +14 -0
  342. package/dist/src/shared/hooks/useOAuthEndpoints.js.map +1 -0
  343. package/dist/src/shared/hooks/useRefresh.d.ts +4 -0
  344. package/dist/src/shared/hooks/useRefresh.d.ts.map +1 -0
  345. package/dist/src/shared/hooks/useRefresh.js +38 -0
  346. package/dist/src/shared/hooks/useRefresh.js.map +1 -0
  347. package/dist/src/shared/hooks/useSession.d.ts +3 -0
  348. package/dist/src/shared/hooks/useSession.d.ts.map +1 -0
  349. package/dist/src/shared/hooks/useSession.js +13 -0
  350. package/dist/src/shared/hooks/useSession.js.map +1 -0
  351. package/dist/src/shared/hooks/useSignIn.d.ts +15 -0
  352. package/dist/src/shared/hooks/useSignIn.d.ts.map +1 -0
  353. package/dist/src/shared/hooks/useSignIn.js +126 -0
  354. package/dist/src/shared/hooks/useSignIn.js.map +1 -0
  355. package/dist/src/shared/hooks/useToken.d.ts +3 -0
  356. package/dist/src/shared/hooks/useToken.d.ts.map +1 -0
  357. package/dist/src/shared/hooks/useToken.js +12 -0
  358. package/dist/src/shared/hooks/useToken.js.map +1 -0
  359. package/dist/src/shared/hooks/useWindowFocused.d.ts +5 -0
  360. package/dist/src/shared/hooks/useWindowFocused.d.ts.map +1 -0
  361. package/dist/src/shared/hooks/useWindowFocused.js +21 -0
  362. package/dist/src/shared/hooks/useWindowFocused.js.map +1 -0
  363. package/dist/src/shared/index.d.ts +5 -0
  364. package/dist/src/shared/index.d.ts.map +1 -0
  365. package/dist/src/shared/index.js +16 -0
  366. package/dist/src/shared/index.js.map +1 -0
  367. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts +20 -0
  368. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  369. package/dist/src/shared/lib/GenericAuthenticationRefresher.js +73 -0
  370. package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  371. package/dist/src/shared/lib/UserSession.d.ts +12 -0
  372. package/dist/src/shared/lib/UserSession.d.ts.map +1 -0
  373. package/dist/src/shared/lib/UserSession.js +20 -0
  374. package/dist/src/shared/lib/UserSession.js.map +1 -0
  375. package/dist/src/shared/lib/session.d.ts +3 -0
  376. package/dist/src/shared/lib/session.d.ts.map +1 -0
  377. package/dist/src/shared/lib/session.js +21 -0
  378. package/dist/src/shared/lib/session.js.map +1 -0
  379. package/dist/src/shared/lib/storage.d.ts +25 -0
  380. package/dist/src/shared/lib/storage.d.ts.map +1 -0
  381. package/dist/src/shared/lib/storage.js +17 -0
  382. package/dist/src/shared/lib/storage.js.map +1 -0
  383. package/dist/src/shared/lib/types.d.ts +36 -0
  384. package/dist/src/shared/lib/types.d.ts.map +1 -0
  385. package/dist/src/shared/lib/types.js +18 -0
  386. package/dist/src/shared/lib/types.js.map +1 -0
  387. package/dist/src/shared/lib/util.d.ts +34 -0
  388. package/dist/src/shared/lib/util.d.ts.map +1 -0
  389. package/dist/src/shared/lib/util.js +137 -0
  390. package/dist/src/shared/lib/util.js.map +1 -0
  391. package/dist/src/shared/providers/AuthContext.d.ts +11 -0
  392. package/dist/src/shared/providers/AuthContext.d.ts.map +1 -0
  393. package/dist/src/shared/providers/AuthContext.js +3 -0
  394. package/dist/src/shared/providers/AuthContext.js.map +1 -0
  395. package/dist/src/shared/providers/AuthProvider.d.ts +22 -0
  396. package/dist/src/shared/providers/AuthProvider.d.ts.map +1 -0
  397. package/dist/src/shared/providers/AuthProvider.js +72 -0
  398. package/dist/src/shared/providers/AuthProvider.js.map +1 -0
  399. package/dist/src/shared/providers/CivicAuthConfigContext.d.ts +18 -0
  400. package/dist/src/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
  401. package/dist/src/shared/providers/CivicAuthConfigContext.js +52 -0
  402. package/dist/src/shared/providers/CivicAuthConfigContext.js.map +1 -0
  403. package/dist/src/shared/providers/CivicAuthProvider.d.ts +6 -0
  404. package/dist/src/shared/providers/CivicAuthProvider.d.ts.map +1 -0
  405. package/dist/src/shared/providers/CivicAuthProvider.js +32 -0
  406. package/dist/src/shared/providers/CivicAuthProvider.js.map +1 -0
  407. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
  408. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
  409. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js +131 -0
  410. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
  411. package/dist/src/shared/providers/IframeProvider.d.ts +22 -0
  412. package/dist/src/shared/providers/IframeProvider.d.ts.map +1 -0
  413. package/dist/src/shared/providers/IframeProvider.js +35 -0
  414. package/dist/src/shared/providers/IframeProvider.js.map +1 -0
  415. package/dist/src/shared/providers/SessionProvider.d.ts +19 -0
  416. package/dist/src/shared/providers/SessionProvider.d.ts.map +1 -0
  417. package/dist/src/shared/providers/SessionProvider.js +23 -0
  418. package/dist/src/shared/providers/SessionProvider.js.map +1 -0
  419. package/dist/src/shared/providers/TokenProvider.d.ts +18 -0
  420. package/dist/src/shared/providers/TokenProvider.d.ts.map +1 -0
  421. package/dist/src/shared/providers/TokenProvider.js +42 -0
  422. package/dist/src/shared/providers/TokenProvider.js.map +1 -0
  423. package/dist/src/shared/providers/UserProvider.d.ts +24 -0
  424. package/dist/src/shared/providers/UserProvider.d.ts.map +1 -0
  425. package/dist/src/shared/providers/UserProvider.js +52 -0
  426. package/dist/src/shared/providers/UserProvider.js.map +1 -0
  427. package/dist/src/shared/providers/types.d.ts +15 -0
  428. package/dist/src/shared/providers/types.d.ts.map +1 -0
  429. package/dist/src/shared/providers/types.js +2 -0
  430. package/dist/src/shared/providers/types.js.map +1 -0
  431. package/dist/src/shared/version.d.ts +2 -0
  432. package/dist/src/shared/version.d.ts.map +1 -0
  433. package/dist/src/shared/version.js +3 -0
  434. package/dist/src/shared/version.js.map +1 -0
  435. package/dist/src/types.d.ts +148 -0
  436. package/dist/src/types.d.ts.map +1 -0
  437. package/dist/src/types.js +4 -0
  438. package/dist/src/types.js.map +1 -0
  439. package/dist/src/utils.d.ts +15 -0
  440. package/dist/src/utils.d.ts.map +1 -0
  441. package/dist/src/utils.js +43 -0
  442. package/dist/src/utils.js.map +1 -0
  443. package/dist/src/version.d.ts +2 -0
  444. package/dist/src/version.d.ts.map +1 -0
  445. package/dist/src/version.js +3 -0
  446. package/dist/src/version.js.map +1 -0
  447. package/dist/test/integration/sdk.test.d.ts +2 -0
  448. package/dist/test/integration/sdk.test.d.ts.map +1 -0
  449. package/dist/test/integration/sdk.test.js +237 -0
  450. package/dist/test/integration/sdk.test.js.map +1 -0
  451. package/dist/test/support/fixtures.d.ts +26 -0
  452. package/dist/test/support/fixtures.d.ts.map +1 -0
  453. package/dist/test/support/fixtures.js +55 -0
  454. package/dist/test/support/fixtures.js.map +1 -0
  455. package/dist/test/support/tokens.json +26 -0
  456. package/dist/test/unit/lib/oauth.test.d.ts +2 -0
  457. package/dist/test/unit/lib/oauth.test.d.ts.map +1 -0
  458. package/dist/test/unit/lib/oauth.test.js +56 -0
  459. package/dist/test/unit/lib/oauth.test.js.map +1 -0
  460. package/dist/test/unit/lib/obj.test.d.ts +2 -0
  461. package/dist/test/unit/lib/obj.test.d.ts.map +1 -0
  462. package/dist/test/unit/lib/obj.test.js +37 -0
  463. package/dist/test/unit/lib/obj.test.js.map +1 -0
  464. package/dist/test/unit/logger.test.d.ts +2 -0
  465. package/dist/test/unit/logger.test.d.ts.map +1 -0
  466. package/dist/test/unit/logger.test.js +141 -0
  467. package/dist/test/unit/logger.test.js.map +1 -0
  468. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +2 -0
  469. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts.map +1 -0
  470. package/dist/test/unit/nextjs/NextAuthProvider.test.js +31 -0
  471. package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +1 -0
  472. package/dist/test/unit/nextjs/config.test.d.ts +2 -0
  473. package/dist/test/unit/nextjs/config.test.d.ts.map +1 -0
  474. package/dist/test/unit/nextjs/config.test.js +203 -0
  475. package/dist/test/unit/nextjs/config.test.js.map +1 -0
  476. package/dist/test/unit/nextjs/getUser.test.d.ts +2 -0
  477. package/dist/test/unit/nextjs/getUser.test.d.ts.map +1 -0
  478. package/dist/test/unit/nextjs/getUser.test.js +22 -0
  479. package/dist/test/unit/nextjs/getUser.test.js.map +1 -0
  480. package/dist/test/unit/nextjs/handler.test.d.ts +2 -0
  481. package/dist/test/unit/nextjs/handler.test.d.ts.map +1 -0
  482. package/dist/test/unit/nextjs/handler.test.js +207 -0
  483. package/dist/test/unit/nextjs/handler.test.js.map +1 -0
  484. package/dist/test/unit/nextjs/middleware.test.d.ts +2 -0
  485. package/dist/test/unit/nextjs/middleware.test.d.ts.map +1 -0
  486. package/dist/test/unit/nextjs/middleware.test.js +113 -0
  487. package/dist/test/unit/nextjs/middleware.test.js.map +1 -0
  488. package/dist/test/unit/nextjs/utils.test.d.ts +2 -0
  489. package/dist/test/unit/nextjs/utils.test.d.ts.map +1 -0
  490. package/dist/test/unit/nextjs/utils.test.js +13 -0
  491. package/dist/test/unit/nextjs/utils.test.js.map +1 -0
  492. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +2 -0
  493. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts.map +1 -0
  494. package/dist/test/unit/publicApi/apiSnapshot.test.js +10 -0
  495. package/dist/test/unit/publicApi/apiSnapshot.test.js.map +1 -0
  496. package/dist/test/unit/react/components/SignInButton.test.d.ts +2 -0
  497. package/dist/test/unit/react/components/SignInButton.test.d.ts.map +1 -0
  498. package/dist/test/unit/react/components/SignInButton.test.js +31 -0
  499. package/dist/test/unit/react/components/SignInButton.test.js.map +1 -0
  500. package/dist/test/unit/react/components/SignOutButton.test.d.ts +2 -0
  501. package/dist/test/unit/react/components/SignOutButton.test.d.ts.map +1 -0
  502. package/dist/test/unit/react/components/SignOutButton.test.js +30 -0
  503. package/dist/test/unit/react/components/SignOutButton.test.js.map +1 -0
  504. package/dist/test/unit/server/login.test.d.ts +2 -0
  505. package/dist/test/unit/server/login.test.d.ts.map +1 -0
  506. package/dist/test/unit/server/login.test.js +184 -0
  507. package/dist/test/unit/server/login.test.js.map +1 -0
  508. package/dist/test/unit/server/refresh.test.d.ts +2 -0
  509. package/dist/test/unit/server/refresh.test.d.ts.map +1 -0
  510. package/dist/test/unit/server/refresh.test.js +55 -0
  511. package/dist/test/unit/server/refresh.test.js.map +1 -0
  512. package/dist/test/unit/server/session.test.d.ts +2 -0
  513. package/dist/test/unit/server/session.test.d.ts.map +1 -0
  514. package/dist/test/unit/server/session.test.js +41 -0
  515. package/dist/test/unit/server/session.test.js.map +1 -0
  516. package/dist/test/unit/services/AuthenticationService.test.d.ts +2 -0
  517. package/dist/test/unit/services/AuthenticationService.test.d.ts.map +1 -0
  518. package/dist/test/unit/services/AuthenticationService.test.js +301 -0
  519. package/dist/test/unit/services/AuthenticationService.test.js.map +1 -0
  520. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +2 -0
  521. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts.map +1 -0
  522. package/dist/test/unit/services/ServerAuthenticationResolver.test.js +75 -0
  523. package/dist/test/unit/services/ServerAuthenticationResolver.test.js.map +1 -0
  524. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +2 -0
  525. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts.map +1 -0
  526. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js +144 -0
  527. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js.map +1 -0
  528. package/dist/test/unit/shared/UserSession.test.d.ts +2 -0
  529. package/dist/test/unit/shared/UserSession.test.d.ts.map +1 -0
  530. package/dist/test/unit/shared/UserSession.test.js +37 -0
  531. package/dist/test/unit/shared/UserSession.test.js.map +1 -0
  532. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +2 -0
  533. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts.map +1 -0
  534. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +122 -0
  535. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +1 -0
  536. package/dist/test/unit/shared/printVersion.test.d.ts +2 -0
  537. package/dist/test/unit/shared/printVersion.test.d.ts.map +1 -0
  538. package/dist/test/unit/shared/printVersion.test.js +39 -0
  539. package/dist/test/unit/shared/printVersion.test.js.map +1 -0
  540. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts +2 -0
  541. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts.map +1 -0
  542. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js +108 -0
  543. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js.map +1 -0
  544. package/dist/test/unit/shared/storage.test.d.ts +2 -0
  545. package/dist/test/unit/shared/storage.test.d.ts.map +1 -0
  546. package/dist/test/unit/shared/storage.test.js +53 -0
  547. package/dist/test/unit/shared/storage.test.js.map +1 -0
  548. package/dist/test/unit/utils.test.d.ts +2 -0
  549. package/dist/test/unit/utils.test.d.ts.map +1 -0
  550. package/dist/test/unit/utils.test.js +40 -0
  551. package/dist/test/unit/utils.test.js.map +1 -0
  552. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  553. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  554. package/dist/tsconfig.tsbuildinfo +1 -0
  555. package/dist/vitest.config.d.ts +3 -0
  556. package/dist/vitest.config.d.ts.map +1 -0
  557. package/dist/vitest.config.js +44 -0
  558. package/dist/vitest.config.js.map +1 -0
  559. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { type AuthProviderProps } from "../../shared/providers/AuthProvider.js";
3
+ type CivicAuthProviderProps = Omit<AuthProviderProps, "pkceConsumer">;
4
+ declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) => React.JSX.Element;
5
+ export { CivicAuthProvider, type CivicAuthProviderProps };
6
+ //# sourceMappingURL=CivicAuthProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CivicAuthProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAY5C,KAAK,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAmCtE,QAAA,MAAM,iBAAiB,2BAA4B,sBAAsB,sBAexE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ "use client";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CivicAuthProvider = void 0;
8
+ const react_1 = __importDefault(require("react"));
9
+ const AuthProvider_js_1 = require("../../shared/providers/AuthProvider.js");
10
+ const PKCE_js_1 = require("../../services/PKCE.js");
11
+ const UserProvider_js_1 = require("../../shared/providers/UserProvider.js");
12
+ const storage_js_1 = require("../../browser/storage.js");
13
+ const CivicAuthConfigContext_js_1 = require("../../shared/providers/CivicAuthConfigContext.js");
14
+ const IframeProvider_js_1 = require("../../shared/providers/IframeProvider.js");
15
+ const ClientTokenExchangeSessionProvider_js_1 = require("../../shared/providers/ClientTokenExchangeSessionProvider.js");
16
+ const SessionProvider_js_1 = require("../../shared/providers/SessionProvider.js");
17
+ const useClientTokenExchangeSession_js_1 = require("../../shared/hooks/useClientTokenExchangeSession.js");
18
+ const TokenProvider_js_1 = require("../../shared/providers/TokenProvider.js");
19
+ const useAuth_js_1 = require("../../shared/hooks/useAuth.js");
20
+ const WrapperUserProvider = ({ children }) => {
21
+ const { signIn, signOut, displayMode } = (0, useAuth_js_1.useAuth)();
22
+ return (react_1.default.createElement(UserProvider_js_1.UserProvider, { storage: new storage_js_1.LocalStorageAdapter(), signIn: signIn, signOut: signOut, displayMode: displayMode }, children));
23
+ };
24
+ const WrapperSessionAuthProvider = ({ children, ...props }) => {
25
+ const sessionData = (0, useClientTokenExchangeSession_js_1.useClientTokenExchangeSession)();
26
+ return (react_1.default.createElement(SessionProvider_js_1.SessionProvider, { ...sessionData },
27
+ react_1.default.createElement(IframeProvider_js_1.IframeProvider, { iframeMode: props.iframeMode },
28
+ react_1.default.createElement(AuthProvider_js_1.AuthProvider, { ...props, pkceConsumer: new PKCE_js_1.BrowserPublicClientPKCEProducer() },
29
+ react_1.default.createElement(TokenProvider_js_1.TokenProvider, null,
30
+ react_1.default.createElement(WrapperUserProvider, null, children))))));
31
+ };
32
+ const CivicAuthProvider = ({ children, ...props }) => {
33
+ return (react_1.default.createElement(CivicAuthConfigContext_js_1.CivicAuthConfigProvider, { oauthServer: props?.config?.oauthServer, clientId: props?.clientId, redirectUrl: props?.redirectUrl, nonce: props?.nonce },
34
+ react_1.default.createElement(ClientTokenExchangeSessionProvider_js_1.ClientTokenExchangeSessionProvider, null,
35
+ react_1.default.createElement(WrapperSessionAuthProvider, { ...props }, children))));
36
+ };
37
+ exports.CivicAuthProvider = CivicAuthProvider;
38
+ //# sourceMappingURL=CivicAuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CivicAuthProvider.js","sourceRoot":"","sources":["../../../../src/shared/providers/CivicAuthProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;AACb,kDAA0B;AAC1B,wEAG4C;AAC5C,gDAAqE;AACrE,wEAAkE;AAClE,qDAA2D;AAC3D,4FAAuF;AACvF,4EAAsE;AACtE,oHAA8G;AAC9G,8EAAwE;AACxE,sGAAgG;AAChG,0EAAoE;AACpE,0DAAoD;AAIpD,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAA,oBAAO,GAAE,CAAC;IACnD,OAAO,CACL,8BAAC,8BAAY,IACX,OAAO,EAAE,IAAI,gCAAmB,EAAE,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,IAEvB,QAAQ,CACI,CAChB,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,0BAA0B,GAAG,CAAC,EAClC,QAAQ,EACR,GAAG,KAAK,EACe,EAAE,EAAE;IAC3B,MAAM,WAAW,GAAG,IAAA,gEAA6B,GAAE,CAAC;IACpD,OAAO,CACL,8BAAC,oCAAe,OAAK,WAAW;QAC9B,8BAAC,kCAAc,IAAC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC1C,8BAAC,8BAAY,OACP,KAAK,EACT,YAAY,EAAE,IAAI,yCAA+B,EAAE;gBAEnD,8BAAC,gCAAa;oBACZ,8BAAC,mBAAmB,QAAE,QAAQ,CAAuB,CACvC,CACH,CACA,CACD,CACnB,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA0B,EAAE,EAAE;IAC3E,OAAO,CACL,8BAAC,mDAAuB,IACtB,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EACvC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EACzB,WAAW,EAAE,KAAK,EAAE,WAAW,EAC/B,KAAK,EAAE,KAAK,EAAE,KAAK;QAEnB,8BAAC,0EAAkC;YACjC,8BAAC,0BAA0B,OAAK,KAAK,IAClC,QAAQ,CACkB,CACM,CACb,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEO,8CAAiB","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport {\n AuthProvider,\n type AuthProviderProps,\n} from \"@/shared/providers/AuthProvider.js\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"@/shared/providers/UserProvider.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { CivicAuthConfigProvider } from \"@/shared/providers/CivicAuthConfigContext.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider.js\";\nimport { ClientTokenExchangeSessionProvider } from \"@/shared/providers/ClientTokenExchangeSessionProvider.js\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider.js\";\nimport { useClientTokenExchangeSession } from \"@/shared/hooks/useClientTokenExchangeSession.js\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider.js\";\nimport { useAuth } from \"@/shared/hooks/useAuth.js\";\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst WrapperUserProvider = ({ children }: { children: React.ReactNode }) => {\n const { signIn, signOut, displayMode } = useAuth();\n return (\n <UserProvider\n storage={new LocalStorageAdapter()}\n signIn={signIn}\n signOut={signOut}\n displayMode={displayMode}\n >\n {children}\n </UserProvider>\n );\n};\nconst WrapperSessionAuthProvider = ({\n children,\n ...props\n}: CivicAuthProviderProps) => {\n const sessionData = useClientTokenExchangeSession();\n return (\n <SessionProvider {...sessionData}>\n <IframeProvider iframeMode={props.iframeMode}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <TokenProvider>\n <WrapperUserProvider>{children}</WrapperUserProvider>\n </TokenProvider>\n </AuthProvider>\n </IframeProvider>\n </SessionProvider>\n );\n};\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <CivicAuthConfigProvider\n oauthServer={props?.config?.oauthServer}\n clientId={props?.clientId}\n redirectUrl={props?.redirectUrl}\n nonce={props?.nonce}\n >\n <ClientTokenExchangeSessionProvider>\n <WrapperSessionAuthProvider {...props}>\n {children}\n </WrapperSessionAuthProvider>\n </ClientTokenExchangeSessionProvider>\n </CivicAuthConfigProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n"]}
@@ -0,0 +1,17 @@
1
+ import type { ReactNode } from "react";
2
+ import React from "react";
3
+ import type { SessionData } from "../../types.js";
4
+ export type ClientTokenExchangeSessionProviderOutput = {
5
+ data: SessionData | null;
6
+ error: Error | null;
7
+ isLoading: boolean;
8
+ doTokenExchange: null | ((url: string) => Promise<void>);
9
+ };
10
+ declare const ClientTokenExchangeSessionContext: React.Context<ClientTokenExchangeSessionProviderOutput>;
11
+ type ClientTokenExchangeSessionContextType = {
12
+ children: ReactNode;
13
+ };
14
+ declare const ClientTokenExchangeSessionProvider: ({ children, }: ClientTokenExchangeSessionContextType) => React.JSX.Element;
15
+ export type { ClientTokenExchangeSessionContextType as SessionContextType };
16
+ export { ClientTokenExchangeSessionProvider, ClientTokenExchangeSessionContext, };
17
+ //# sourceMappingURL=ClientTokenExchangeSessionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientTokenExchangeSessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAMN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAS9C,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC;AAcF,QAAA,MAAM,iCAAiC,yDACkC,CAAC;AAE1E,KAAK,qCAAqC,GAAG;IAC3C,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,kCAAkC,kBAErC,qCAAqC,sBAsIvC,CAAC;AAEF,YAAY,EAAE,qCAAqC,IAAI,kBAAkB,EAAE,CAAC;AAC5E,OAAO,EACL,kCAAkC,EAClC,iCAAiC,GAClC,CAAC"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.ClientTokenExchangeSessionContext = exports.ClientTokenExchangeSessionProvider = void 0;
38
+ const react_1 = __importStar(require("react"));
39
+ const AuthenticationService_js_1 = require("../../services/AuthenticationService.js");
40
+ const windowUtil_js_1 = require("../../lib/windowUtil.js");
41
+ const index_js_1 = require("../../shared/hooks/index.js");
42
+ const storage_js_1 = require("../../browser/storage.js");
43
+ const defaultSession = {
44
+ data: {
45
+ authenticated: false,
46
+ idToken: undefined,
47
+ accessToken: undefined,
48
+ displayMode: "iframe",
49
+ },
50
+ error: null,
51
+ isLoading: false,
52
+ doTokenExchange: null,
53
+ };
54
+ // Context for exposing session specifically to the TokenProvider
55
+ const ClientTokenExchangeSessionContext = (0, react_1.createContext)(defaultSession);
56
+ exports.ClientTokenExchangeSessionContext = ClientTokenExchangeSessionContext;
57
+ const ClientTokenExchangeSessionProvider = ({ children, }) => {
58
+ const authConfig = (0, index_js_1.useCivicAuthConfig)();
59
+ const [authService, setAuthService] = (0, react_1.useState)();
60
+ const [error, setError] = (0, react_1.useState)(null);
61
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
62
+ const [session, setSession] = (0, react_1.useState)(null);
63
+ const { isWindowFocused } = (0, index_js_1.useWindowFocused)();
64
+ const currentUrl = (0, index_js_1.useCurrentUrl)();
65
+ (0, index_js_1.useRefresh)(session);
66
+ (0, react_1.useEffect)(() => {
67
+ if (!currentUrl || !authConfig)
68
+ return;
69
+ const { redirectUrl, clientId, oauthServer, scopes, logoutRedirectUrl, logoutUrl, } = authConfig;
70
+ AuthenticationService_js_1.BrowserAuthenticationService.build({
71
+ clientId,
72
+ redirectUrl,
73
+ logoutRedirectUrl,
74
+ logoutUrl,
75
+ oauthServer,
76
+ scopes,
77
+ displayMode: "iframe",
78
+ }).then(setAuthService);
79
+ }, [currentUrl, authConfig]);
80
+ const isInIframe = (0, windowUtil_js_1.isWindowInIframe)(globalThis.window);
81
+ const doTokenExchange = (0, react_1.useCallback)(async (inUrl) => {
82
+ if (!authService)
83
+ return;
84
+ const url = new URL(inUrl);
85
+ const code = url.searchParams.get("code");
86
+ const state = url.searchParams.get("state");
87
+ if (code && state) {
88
+ try {
89
+ setIsLoading(true);
90
+ await authService.tokenExchange(code, state);
91
+ }
92
+ catch (error) {
93
+ setError(error);
94
+ setSession({ authenticated: false });
95
+ }
96
+ setIsLoading(false);
97
+ }
98
+ }, [authService]);
99
+ const onSignIn = (0, react_1.useCallback)(async () => {
100
+ if (!authService)
101
+ return;
102
+ const session = await authService.getSessionData();
103
+ setSession(session);
104
+ }, [authService]);
105
+ const onSignOut = (0, react_1.useCallback)(() => {
106
+ setSession({ authenticated: false });
107
+ }, []);
108
+ (0, react_1.useEffect)(() => {
109
+ storage_js_1.LocalStorageAdapter.emitter.on("signIn", onSignIn);
110
+ storage_js_1.LocalStorageAdapter.emitter.on("signOut", onSignOut);
111
+ return () => {
112
+ storage_js_1.LocalStorageAdapter.emitter.off("signIn", onSignIn);
113
+ storage_js_1.LocalStorageAdapter.emitter.off("signOut", onSignOut);
114
+ };
115
+ }, [onSignIn, onSignOut]);
116
+ (0, react_1.useEffect)(() => {
117
+ if (!authConfig) {
118
+ setIsLoading(true);
119
+ }
120
+ else {
121
+ setIsLoading(false);
122
+ }
123
+ }, [authConfig]);
124
+ // Handle page load or refocus
125
+ (0, react_1.useEffect)(() => {
126
+ if (!authConfig || !authService || !currentUrl || isInIframe || isLoading) {
127
+ return;
128
+ }
129
+ const abortController = new AbortController();
130
+ const onPageLoad = async () => {
131
+ // if we have existing tokens, then validate them and return the session data
132
+ // otherwise check if we have a code in the url and exchange it for tokens
133
+ // if we have neither, return undefined
134
+ const existingSessionData = await authService.validateExistingSession();
135
+ if (existingSessionData.authenticated) {
136
+ setSession(existingSessionData);
137
+ return;
138
+ }
139
+ if (abortController.signal.aborted ||
140
+ !new URL(currentUrl).searchParams.get("code")) {
141
+ return;
142
+ }
143
+ await doTokenExchange(currentUrl);
144
+ };
145
+ onPageLoad();
146
+ return () => {
147
+ abortController.abort();
148
+ };
149
+ }, [
150
+ authConfig,
151
+ authService,
152
+ currentUrl,
153
+ doTokenExchange,
154
+ isInIframe,
155
+ isLoading,
156
+ isWindowFocused,
157
+ session?.authenticated,
158
+ ]);
159
+ const value = (0, react_1.useMemo)(() => ({
160
+ data: session,
161
+ error,
162
+ isLoading,
163
+ doTokenExchange: authService ? doTokenExchange : null,
164
+ }), [session, error, isLoading, authService, doTokenExchange]);
165
+ return (react_1.default.createElement(ClientTokenExchangeSessionContext.Provider, { value: value }, children));
166
+ };
167
+ exports.ClientTokenExchangeSessionProvider = ClientTokenExchangeSessionProvider;
168
+ //# sourceMappingURL=ClientTokenExchangeSessionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientTokenExchangeSessionProvider.js","sourceRoot":"","sources":["../../../../src/shared/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport type { ReactNode } from \"react\";\nimport React, {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useState,\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 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 if (code && state) {\n try {\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({ authenticated: false });\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"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "@civic/auth:0.2.5-alpha.3";
1
+ export declare const VERSION = "@civic/auth:0.2.5";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,8BAA8B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,sBAAsB,CAAC"}
@@ -2,5 +2,5 @@
2
2
  // This is an auto-generated file. Do not edit.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.VERSION = void 0;
5
- exports.VERSION = "@civic/auth:0.2.5-alpha.3";
5
+ exports.VERSION = "@civic/auth:0.2.5";
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAElC,QAAA,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.2.5-alpha.3\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAElC,QAAA,OAAO,GAAG,mBAAmB,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.2.5\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/dist/cjs/types.js CHANGED
@@ -10,6 +10,12 @@ var AuthStatus;
10
10
  AuthStatus["SIGNING_OUT"] = "signing_out";
11
11
  })(AuthStatus || (exports.AuthStatus = AuthStatus = {}));
12
12
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
- const tokenKeys = ["idToken", "accessToken", "refreshToken", "forwardedTokens"];
13
+ const tokenKeys = [
14
+ "sub",
15
+ "idToken",
16
+ "accessToken",
17
+ "refreshToken",
18
+ "forwardedTokens",
19
+ ];
14
20
  exports.tokenKeys = tokenKeys;
15
21
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAMA,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,6CAA+B,CAAA;IAC/B,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,6BAAe,CAAA;IACf,yCAA2B,CAAA;AAC7B,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AA4ID,6DAA6D;AAC7D,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAgGvE,8BAAS","sourcesContent":["import type { TokenResponseBody } from \"oslo/oauth2\";\nimport type { JWT } from \"oslo/jwt\";\n\ntype UnknownObject = Record<string, unknown>;\ntype EmptyObject = Record<string, never>;\n\nexport enum AuthStatus {\n AUTHENTICATED = \"authenticated\",\n UNAUTHENTICATED = \"unauthenticated\",\n AUTHENTICATING = \"authenticating\",\n ERROR = \"error\",\n SIGNING_OUT = \"signing_out\",\n}\n// Display modes for the auth flow\ntype DisplayMode = \"iframe\" | \"redirect\" | \"new_tab\" | \"custom_tab\";\n\n// Combined Auth and Session Service\ninterface AuthSessionService {\n // TODO DK NOTES: Should be in BrowserAuthSessionService, not relevant on backend\n loadAuthorizationUrl(\n authorizationURL: string,\n displayMode: DisplayMode,\n ): void;\n // TODO DK NOTES: overrideDisplayMode parameter not appropriate here - also - do we need both this and the above in the interface?\n getAuthorizationUrl(\n scopes: string[],\n overrideDisplayMode: DisplayMode,\n nonce?: string,\n ): Promise<string>;\n // TODO DK NOTES: display mode should be in browser version only. Also, do we need this and the above two in the top-level interface?\n signIn(\n displayMode: DisplayMode,\n scopes: string[],\n nonce?: string,\n ): Promise<void>;\n // TODO DK NOTES: Input should be an auth code - do not assume it comes via an url\n tokenExchange(responseUrl: string): Promise<SessionData>;\n // TODO DK NOTES: Should be async for flexibility\n getSessionData(): SessionData;\n // TODO DK NOTES: Should be async for flexibility\n updateSessionData(data: SessionData): void;\n getUserInfoService(): Promise<UserInfoService>;\n}\n\n// Token Service\ninterface TokenService {\n exchangeCodeForTokens(authCode: string): Promise<Tokens>;\n validateIdToken(idToken: string, nonce: string): boolean;\n refreshAccessToken(refreshToken: string): Promise<Tokens>;\n}\n\n// User Info Service\ninterface UserInfoService {\n getUserInfo<T extends UnknownObject>(\n accessToken: string,\n idToken: string | null,\n ): Promise<User<T> | null>;\n}\n\n// Resource Service\ninterface ResourceService {\n getProtectedResource(accessToken: string): Promise<unknown>;\n}\n\n// Auth Request (for internal use in AuthSessionService)\ntype AuthRequest = {\n clientId: string;\n redirectUri: string;\n state: string;\n nonce: string;\n scope: string;\n};\n\ntype Endpoints = {\n jwks: string;\n auth: string;\n token: string;\n userinfo: string;\n challenge?: string;\n endsession: string;\n};\n\ntype Config = {\n oauthServer: string;\n endpoints?: Endpoints;\n};\n\ntype SessionData = {\n authenticated: boolean; // TODO can this be inferred from the presence of the tokens?\n state?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: number;\n codeVerifier?: string;\n displayMode?: DisplayMode;\n openerUrl?: string;\n};\n\ntype OIDCTokenResponseBody = TokenResponseBody & {\n id_token: string;\n access_token_expires_at?: number;\n};\n\ntype ParsedTokens = {\n id_token: JWTPayload;\n access_token: JWTPayload;\n refresh_token?: string;\n};\n\n// The format we expose to the frontend via hooks\ntype ForwardedTokens = Record<\n string,\n {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n }\n>;\n\n// The format in the JWT payload\ntype ForwardedTokensJWT = Record<\n string,\n {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n scope?: string;\n }\n>;\n\ntype JWTPayload = JWT[\"payload\"] & {\n iss: string;\n aud: string;\n sub: string;\n iat: number;\n exp: number;\n};\n\ntype IdTokenPayload = JWTPayload & {\n forwardedTokens?: ForwardedTokensJWT;\n email?: string;\n name?: string;\n picture?: string;\n nonce: string;\n at_hash: string;\n};\n\ntype IdToken = Omit<JWT, \"payload\"> & {\n payload: IdTokenPayload;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tokenKeys = [\"idToken\", \"accessToken\", \"refreshToken\", \"forwardedTokens\"];\n\nexport type OAuthTokens = {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n};\n// Derive the Tokens type from the array\ntype Tokens = {\n [K in (typeof tokenKeys)[number]]: K extends \"forwardedTokens\"\n ? ForwardedTokens\n : string;\n};\n\n// Base user interface\ntype BaseUser = {\n id: string;\n email?: string;\n name?: string;\n given_name?: string;\n family_name?: string;\n picture?: string;\n updated_at?: Date;\n};\n\ntype User<T extends UnknownObject = EmptyObject> = BaseUser & T;\n\ntype OpenIdConfiguration = {\n authorization_endpoint: string;\n claims_parameter_supported: boolean;\n claims_supported: string[];\n code_challenge_methods_supported: string[];\n end_session_endpoint: string;\n grant_types_supported: string[];\n issuer: string;\n jwks_uri: string;\n authorization_response_iss_parameter_supported: boolean;\n response_modes_supported: string[];\n response_types_supported: string[];\n scopes_supported: string[];\n subject_types_supported: string[];\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n token_endpoint: string;\n id_token_signing_alg_values_supported: string[];\n pushed_authorization_request_endpoint: string;\n request_parameter_supported: boolean;\n request_uri_parameter_supported: boolean;\n userinfo_endpoint: string;\n claim_types_supported: string[];\n};\n\ntype LoginPostMessage = {\n source: string;\n type: string;\n clientId: string;\n data: {\n url: string;\n };\n};\n\nexport type IframeAuthMessage = {\n source: \"civicloginApp\";\n type: \"auth_error\" | \"auth_error_try_again\";\n clientId: string;\n data: {\n url?: string;\n error?: string;\n };\n};\n\nexport type {\n LoginPostMessage,\n AuthSessionService,\n TokenService,\n UserInfoService,\n ResourceService,\n AuthRequest,\n Tokens,\n Endpoints,\n Config,\n SessionData,\n OIDCTokenResponseBody,\n ParsedTokens,\n BaseUser,\n User,\n DisplayMode,\n UnknownObject,\n EmptyObject,\n ForwardedTokens,\n ForwardedTokensJWT,\n JWTPayload,\n IdTokenPayload,\n IdToken,\n OpenIdConfiguration,\n};\nexport { tokenKeys };\nexport interface AuthStorage {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n}\n\nexport type IframeMode = \"embedded\" | \"modal\";\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAMA,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,6CAA+B,CAAA;IAC/B,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,6BAAe,CAAA;IACf,yCAA2B,CAAA;AAC7B,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AA4ID,6DAA6D;AAC7D,MAAM,SAAS,GAAG;IAChB,KAAK;IACL,SAAS;IACT,aAAa;IACb,cAAc;IACd,iBAAiB;CAClB,CAAC;AAgGO,8BAAS","sourcesContent":["import type { TokenResponseBody } from \"oslo/oauth2\";\nimport type { JWT } from \"oslo/jwt\";\n\ntype UnknownObject = Record<string, unknown>;\ntype EmptyObject = Record<string, never>;\n\nexport enum AuthStatus {\n AUTHENTICATED = \"authenticated\",\n UNAUTHENTICATED = \"unauthenticated\",\n AUTHENTICATING = \"authenticating\",\n ERROR = \"error\",\n SIGNING_OUT = \"signing_out\",\n}\n// Display modes for the auth flow\ntype DisplayMode = \"iframe\" | \"redirect\" | \"new_tab\" | \"custom_tab\";\n\n// Combined Auth and Session Service\ninterface AuthSessionService {\n // TODO DK NOTES: Should be in BrowserAuthSessionService, not relevant on backend\n loadAuthorizationUrl(\n authorizationURL: string,\n displayMode: DisplayMode,\n ): void;\n // TODO DK NOTES: overrideDisplayMode parameter not appropriate here - also - do we need both this and the above in the interface?\n getAuthorizationUrl(\n scopes: string[],\n overrideDisplayMode: DisplayMode,\n nonce?: string,\n ): Promise<string>;\n // TODO DK NOTES: display mode should be in browser version only. Also, do we need this and the above two in the top-level interface?\n signIn(\n displayMode: DisplayMode,\n scopes: string[],\n nonce?: string,\n ): Promise<void>;\n // TODO DK NOTES: Input should be an auth code - do not assume it comes via an url\n tokenExchange(responseUrl: string): Promise<SessionData>;\n // TODO DK NOTES: Should be async for flexibility\n getSessionData(): SessionData;\n // TODO DK NOTES: Should be async for flexibility\n updateSessionData(data: SessionData): void;\n getUserInfoService(): Promise<UserInfoService>;\n}\n\n// Token Service\ninterface TokenService {\n exchangeCodeForTokens(authCode: string): Promise<Tokens>;\n validateIdToken(idToken: string, nonce: string): boolean;\n refreshAccessToken(refreshToken: string): Promise<Tokens>;\n}\n\n// User Info Service\ninterface UserInfoService {\n getUserInfo<T extends UnknownObject>(\n accessToken: string,\n idToken: string | null,\n ): Promise<User<T> | null>;\n}\n\n// Resource Service\ninterface ResourceService {\n getProtectedResource(accessToken: string): Promise<unknown>;\n}\n\n// Auth Request (for internal use in AuthSessionService)\ntype AuthRequest = {\n clientId: string;\n redirectUri: string;\n state: string;\n nonce: string;\n scope: string;\n};\n\ntype Endpoints = {\n jwks: string;\n auth: string;\n token: string;\n userinfo: string;\n challenge?: string;\n endsession: string;\n};\n\ntype Config = {\n oauthServer: string;\n endpoints?: Endpoints;\n};\n\ntype SessionData = {\n authenticated: boolean; // TODO can this be inferred from the presence of the tokens?\n state?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: number;\n codeVerifier?: string;\n displayMode?: DisplayMode;\n openerUrl?: string;\n};\n\ntype OIDCTokenResponseBody = TokenResponseBody & {\n id_token: string;\n access_token_expires_at?: number;\n};\n\ntype ParsedTokens = {\n id_token: JWTPayload;\n access_token: JWTPayload;\n refresh_token?: string;\n};\n\n// The format we expose to the frontend via hooks\ntype ForwardedTokens = Record<\n string,\n {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n }\n>;\n\n// The format in the JWT payload\ntype ForwardedTokensJWT = Record<\n string,\n {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n scope?: string;\n }\n>;\n\ntype JWTPayload = JWT[\"payload\"] & {\n iss: string;\n aud: string;\n sub: string;\n iat: number;\n exp: number;\n};\n\ntype IdTokenPayload = JWTPayload & {\n forwardedTokens?: ForwardedTokensJWT;\n email?: string;\n name?: string;\n picture?: string;\n nonce: string;\n at_hash: string;\n};\n\ntype IdToken = Omit<JWT, \"payload\"> & {\n payload: IdTokenPayload;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tokenKeys = [\n \"sub\",\n \"idToken\",\n \"accessToken\",\n \"refreshToken\",\n \"forwardedTokens\",\n];\n\nexport type OAuthTokens = {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n};\n// Derive the Tokens type from the array\ntype Tokens = {\n [K in (typeof tokenKeys)[number]]: K extends \"forwardedTokens\"\n ? ForwardedTokens\n : string;\n};\n\n// Base user interface\ntype BaseUser = {\n id: string;\n email?: string;\n name?: string;\n given_name?: string;\n family_name?: string;\n picture?: string;\n updated_at?: Date;\n};\n\ntype User<T extends UnknownObject = EmptyObject> = BaseUser & T;\n\ntype OpenIdConfiguration = {\n authorization_endpoint: string;\n claims_parameter_supported: boolean;\n claims_supported: string[];\n code_challenge_methods_supported: string[];\n end_session_endpoint: string;\n grant_types_supported: string[];\n issuer: string;\n jwks_uri: string;\n authorization_response_iss_parameter_supported: boolean;\n response_modes_supported: string[];\n response_types_supported: string[];\n scopes_supported: string[];\n subject_types_supported: string[];\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n token_endpoint: string;\n id_token_signing_alg_values_supported: string[];\n pushed_authorization_request_endpoint: string;\n request_parameter_supported: boolean;\n request_uri_parameter_supported: boolean;\n userinfo_endpoint: string;\n claim_types_supported: string[];\n};\n\ntype LoginPostMessage = {\n source: string;\n type: string;\n clientId: string;\n data: {\n url: string;\n };\n};\n\nexport type IframeAuthMessage = {\n source: \"civicloginApp\";\n type: \"auth_error\" | \"auth_error_try_again\";\n clientId: string;\n data: {\n url?: string;\n error?: string;\n };\n};\n\nexport type {\n LoginPostMessage,\n AuthSessionService,\n TokenService,\n UserInfoService,\n ResourceService,\n AuthRequest,\n Tokens,\n Endpoints,\n Config,\n SessionData,\n OIDCTokenResponseBody,\n ParsedTokens,\n BaseUser,\n User,\n DisplayMode,\n UnknownObject,\n EmptyObject,\n ForwardedTokens,\n ForwardedTokensJWT,\n JWTPayload,\n IdTokenPayload,\n IdToken,\n OpenIdConfiguration,\n};\nexport { tokenKeys };\nexport interface AuthStorage {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n}\n\nexport type IframeMode = \"embedded\" | \"modal\";\n"]}
@@ -6,10 +6,10 @@
6
6
  *
7
7
  * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.
8
8
  */
9
- declare const isPopupBlocked: () => boolean;
9
+ export declare const isPopupBlocked: () => boolean;
10
10
  type WithoutUndefined<T> = {
11
11
  [K in keyof T as undefined extends T[K] ? never : K]: T[K];
12
12
  };
13
13
  export declare const withoutUndefined: <T extends { [K in keyof T]: unknown; }>(obj: T) => WithoutUndefined<T>;
14
- export { isPopupBlocked };
14
+ export {};
15
15
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc,QAAO,OAsB1B,CAAC;AAOF,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AACF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,GAAE,OAC/D,CAAC,KACL,gBAAgB,CAAC,CAAC,CAapB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAO,OAsBjC,CAAC;AAOF,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AACF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,GAAE,OAC/D,CAAC,KACL,gBAAgB,CAAC,CAAC,CAapB,CAAC"}
package/dist/cjs/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPopupBlocked = exports.withoutUndefined = void 0;
3
+ exports.withoutUndefined = exports.isPopupBlocked = void 0;
4
4
  /**
5
5
  * Checks if a popup window is blocked by the browser.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,GAAY,EAAE;IACnC,wFAAwF;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEtD,6DAA6D;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA2BO,wCAAc;AAjBhB,MAAM,gBAAgB,GAAG,CAC9B,GAAM,EACe,EAAE;IACvB,MAAM,MAAM,GAAG,EAAyB,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,4EAA4E;YAC5E,6BAA6B;YAC7B,8DAA8D;YAC7D,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B","sourcesContent":["/**\n * Checks if a popup window is blocked by the browser.\n *\n * This function attempts to open a small popup window and then checks if it was successfully created.\n * If the popup is blocked by the browser, the function returns `true`. Otherwise, it returns `false`.\n *\n * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.\n */\nconst isPopupBlocked = (): boolean => {\n // First we try to open a small popup window. It either returns a window object or null.\n const popup = window.open(\"\", \"\", \"width=1,height=1\");\n\n // If window.open() returns null, popup is definitely blocked\n if (!popup) {\n return true;\n }\n\n try {\n // Try to access a property of the popup to check if it's usable\n if (typeof popup.closed === \"undefined\") {\n throw new Error(\"Popup is blocked\");\n }\n } catch {\n // Accessing the popup's properties throws an error if the popup is blocked\n return true;\n }\n\n // Close the popup immediately if it was opened\n popup.close();\n return false;\n};\n\n// This type narrows T as far as it can by:\n// - removing all keys where the value is `undefined`\n// - making keys that are not undefined required\n// So, for example: given { a: string | undefined, b: string | undefined },\n// if you pass in { a: \"foo\" }, it returns an object of type: { a: string }\ntype WithoutUndefined<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n};\nexport const withoutUndefined = <T extends { [K in keyof T]: unknown }>(\n obj: T,\n): WithoutUndefined<T> => {\n const result = {} as WithoutUndefined<T>;\n\n for (const key in obj) {\n if (obj[key] !== undefined) {\n // TypeScript needs assurance that key is a valid key in WithoutUndefined<T>\n // We use type assertion here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (result as any)[key] = obj[key];\n }\n }\n\n return result;\n};\n\nexport { isPopupBlocked };\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,wFAAwF;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEtD,6DAA6D;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAtBW,QAAA,cAAc,kBAsBzB;AAUK,MAAM,gBAAgB,GAAG,CAC9B,GAAM,EACe,EAAE;IACvB,MAAM,MAAM,GAAG,EAAyB,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,4EAA4E;YAC5E,6BAA6B;YAC7B,8DAA8D;YAC7D,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B","sourcesContent":["/**\n * Checks if a popup window is blocked by the browser.\n *\n * This function attempts to open a small popup window and then checks if it was successfully created.\n * If the popup is blocked by the browser, the function returns `true`. Otherwise, it returns `false`.\n *\n * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.\n */\nexport const isPopupBlocked = (): boolean => {\n // First we try to open a small popup window. It either returns a window object or null.\n const popup = window.open(\"\", \"\", \"width=1,height=1\");\n\n // If window.open() returns null, popup is definitely blocked\n if (!popup) {\n return true;\n }\n\n try {\n // Try to access a property of the popup to check if it's usable\n if (typeof popup.closed === \"undefined\") {\n throw new Error(\"Popup is blocked\");\n }\n } catch {\n // Accessing the popup's properties throws an error if the popup is blocked\n return true;\n }\n\n // Close the popup immediately if it was opened\n popup.close();\n return false;\n};\n\n// This type narrows T as far as it can by:\n// - removing all keys where the value is `undefined`\n// - making keys that are not undefined required\n// So, for example: given { a: string | undefined, b: string | undefined },\n// if you pass in { a: \"foo\" }, it returns an object of type: { a: string }\ntype WithoutUndefined<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n};\nexport const withoutUndefined = <T extends { [K in keyof T]: unknown }>(\n obj: T,\n): WithoutUndefined<T> => {\n const result = {} as WithoutUndefined<T>;\n\n for (const key in obj) {\n if (obj[key] !== undefined) {\n // TypeScript needs assurance that key is a valid key in WithoutUndefined<T>\n // We use type assertion here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (result as any)[key] = obj[key];\n }\n }\n\n return result;\n};\n"]}
@@ -1,18 +1,7 @@
1
- import { CookieStorage } from "../shared/lib/storage.js";
2
- import type { OAuthTokens, TokensCookieConfig } from "../shared/lib/types.js";
3
1
  declare const getWindowCookieValue: (requests: {
4
2
  key: string;
5
3
  window: Window;
6
4
  parseJson?: boolean;
7
5
  }[]) => Record<string, string | Record<string, unknown>> | null;
8
- declare class BrowserCookieStorage extends CookieStorage {
9
- readonly config: Partial<TokensCookieConfig>;
10
- constructor(config?: Partial<TokensCookieConfig>);
11
- get(key: string): Promise<string | null>;
12
- /**
13
- * there is no client-side implementation for setting cookies
14
- */
15
- set(_key: OAuthTokens, _value: string): Promise<void>;
16
- }
17
- export { BrowserCookieStorage, getWindowCookieValue };
6
+ export { getWindowCookieValue };
18
7
  //# sourceMappingURL=cookies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,QAAA,MAAM,oBAAoB,aACd;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EAAE,4DAqBJ,CAAC;AAEF,cAAM,oBAAqB,SAAQ,aAAa;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC;gBAAnC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAOvD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU9C;;OAEG;IAEG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D;AAED,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,oBAAoB,aACd;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EAAE,4DAqBJ,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { CookieStorage } from "../shared/lib/storage.js";
1
+ // TODO REMOVE IN FAVOUR OF BrowserCookieStorage.get
2
2
  const getWindowCookieValue = (requests) => {
3
3
  const cookie = window.document.cookie;
4
4
  if (!cookie)
@@ -22,32 +22,5 @@ const getWindowCookieValue = (requests) => {
22
22
  }
23
23
  return response;
24
24
  };
25
- class BrowserCookieStorage extends CookieStorage {
26
- config;
27
- constructor(config = {}) {
28
- super({
29
- secure: true,
30
- httpOnly: false,
31
- });
32
- this.config = config;
33
- }
34
- async get(key) {
35
- if (!document?.cookie)
36
- return null;
37
- const value = `; ${document.cookie}`;
38
- const parts = value.split(`; ${key}=`);
39
- if (parts && parts.length === 2) {
40
- return parts.pop()?.split(";").shift() ?? null;
41
- }
42
- return null;
43
- }
44
- /**
45
- * there is no client-side implementation for setting cookies
46
- */
47
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
48
- async set(_key, _value) {
49
- throw new Error("Not implemented.");
50
- }
51
- }
52
- export { BrowserCookieStorage, getWindowCookieValue };
25
+ export { getWindowCookieValue };
53
26
  //# sourceMappingURL=cookies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,MAAM,oBAAoB,GAAG,CAC3B,QAIG,EACH,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;oBACrC,CAAC,CAAC,uBAAuB,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,oBAAqB,SAAQ,aAAa;IACzB;IAArB,YAAqB,SAAsC,EAAE;QAC3D,KAAK,CAAC;YACJ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAJgB,WAAM,GAAN,MAAM,CAAkC;IAK7D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,6DAA6D;IAC7D,KAAK,CAAC,GAAG,CAAC,IAAiB,EAAE,MAAc;QACzC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;CACF;AAED,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import { CookieStorage } from \"@/shared/lib/storage.js\";\nimport type { OAuthTokens, TokensCookieConfig } from \"@/shared/lib/types.js\";\n\nconst getWindowCookieValue = (\n requests: {\n key: string;\n window: Window;\n parseJson?: boolean;\n }[],\n) => {\n const cookie = window.document.cookie;\n if (!cookie) return null;\n const cookies = cookie.split(\";\");\n const response: Record<string, string | Record<string, unknown>> = {};\n for (const c of cookies) {\n const [name, value] = c.trim().split(\"=\");\n const request = requests.find((r) => r.key === name);\n if (value && request) {\n try {\n const decodeURIComponentValue = decodeURIComponent(value);\n response[request.key] = request.parseJson\n ? JSON.parse(decodeURIComponentValue)\n : decodeURIComponentValue;\n } catch {\n response[request.key] = value;\n }\n }\n }\n return response;\n};\n\nclass BrowserCookieStorage extends CookieStorage {\n constructor(readonly config: Partial<TokensCookieConfig> = {}) {\n super({\n secure: true,\n httpOnly: false,\n });\n }\n\n async get(key: string): Promise<string | null> {\n if (!document?.cookie) return null;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts && parts.length === 2) {\n return parts.pop()?.split(\";\").shift() ?? null;\n }\n return null;\n }\n\n /**\n * there is no client-side implementation for setting cookies\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async set(_key: OAuthTokens, _value: string): Promise<void> {\n throw new Error(\"Not implemented.\");\n }\n}\n\nexport { BrowserCookieStorage, getWindowCookieValue };\n"]}
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,oBAAoB,GAAG,CAC3B,QAIG,EACH,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;oBACrC,CAAC,CAAC,uBAAuB,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["// TODO REMOVE IN FAVOUR OF BrowserCookieStorage.get\nconst getWindowCookieValue = (\n requests: {\n key: string;\n window: Window;\n parseJson?: boolean;\n }[],\n) => {\n const cookie = window.document.cookie;\n if (!cookie) return null;\n const cookies = cookie.split(\";\");\n const response: Record<string, string | Record<string, unknown>> = {};\n for (const c of cookies) {\n const [name, value] = c.trim().split(\"=\");\n const request = requests.find((r) => r.key === name);\n if (value && request) {\n try {\n const decodeURIComponentValue = decodeURIComponent(value);\n response[request.key] = request.parseJson\n ? JSON.parse(decodeURIComponentValue)\n : decodeURIComponentValue;\n } catch {\n response[request.key] = value;\n }\n }\n }\n return response;\n};\n\nexport { getWindowCookieValue };\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Used on the server-side to get the user object from the cookie
3
+ */
4
+ import type { User } from "../types.js";
5
+ export declare const getUser: () => Promise<User | null>;
6
+ //# sourceMappingURL=GetUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetUser.d.ts","sourceRoot":"","sources":["../../../src/nextjs/GetUser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,GAAG,IAAI,CAGnD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { NextjsClientStorage } from "../nextjs/cookies.js";
2
+ import { getUser as getSessionUser } from "../shared/lib/session.js";
3
+ export const getUser = async () => {
4
+ const clientStorage = new NextjsClientStorage();
5
+ return getSessionUser(clientStorage);
6
+ };
7
+ //# sourceMappingURL=GetUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetUser.js","sourceRoot":"","sources":["../../../src/nextjs/GetUser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,IAA0B,EAAE;IACtD,MAAM,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAChD,OAAO,cAAc,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC","sourcesContent":["/**\n * Used on the server-side to get the user object from the cookie\n */\nimport type { User } from \"@/types.js\";\nimport { NextjsClientStorage } from \"@/nextjs/cookies.js\";\nimport { getUser as getSessionUser } from \"@/shared/lib/session.js\";\n\nexport const getUser = async (): Promise<User | null> => {\n const clientStorage = new NextjsClientStorage();\n return getSessionUser(clientStorage);\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI,SA2C9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI,SA0C9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1,14 +1,10 @@
1
1
  import { useCivicAuthConfig } from "../../shared/hooks/useCivicAuthConfig.js";
2
- import { useEffect, useMemo, useState } from "react";
2
+ import { useEffect, useState } from "react";
3
3
  import { NextClientAuthenticationRefresher } from "../../nextjs/NextClientAuthenticationRefresher.js";
4
- import { resolveAuthConfig } from "../../nextjs/config.js";
5
- import { BrowserCookieStorage } from "../../lib/cookies.js";
4
+ import { BrowserCookieStorage } from "../../shared/index.js";
5
+ import { resolveAuthConfig } from "../config.js";
6
6
  const useRefresh = (session) => {
7
7
  const authConfig = useCivicAuthConfig();
8
- const storage = useMemo(() => {
9
- const config = resolveAuthConfig(authConfig ?? {});
10
- return new BrowserCookieStorage(config?.cookies?.tokens ?? {});
11
- }, [authConfig]);
12
8
  // setup token autorefresh
13
9
  const [refresher, setRefresher] = useState(undefined);
14
10
  useEffect(() => {
@@ -16,6 +12,8 @@ const useRefresh = (session) => {
16
12
  return;
17
13
  const abortController = new AbortController();
18
14
  const currentRefresher = refresher;
15
+ const config = resolveAuthConfig(authConfig ?? {});
16
+ const storage = new BrowserCookieStorage(config.cookies.tokens.access_token);
19
17
  NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then((newRefresher) => {
20
18
  if (abortController.signal.aborted)
21
19
  return;
@@ -27,7 +25,7 @@ const useRefresh = (session) => {
27
25
  currentRefresher?.clearAutorefresh();
28
26
  };
29
27
  // eslint-disable-next-line react-hooks/exhaustive-deps
30
- }, [authConfig, storage]); // Only depend on what actually changes
28
+ }, [authConfig]); // Only depend on what actually changes
31
29
  useEffect(() => {
32
30
  if (session?.authenticated) {
33
31
  refresher?.setupAutorefresh();
@@ -1 +1 @@
1
- {"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAExC,SAAS,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAEnC,iCAAiC,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,YAAY,EAAE,EAAE;YACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { NextClientAuthenticationRefresher } from \"@/nextjs/NextClientAuthenticationRefresher.js\";\nimport { resolveAuthConfig } from \"@/nextjs/config.js\";\nimport { BrowserCookieStorage } from \"@/lib/cookies.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n\n const storage = useMemo(() => {\n const config = resolveAuthConfig(authConfig ?? {});\n return new BrowserCookieStorage(config?.cookies?.tokens ?? {});\n }, [authConfig]);\n\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n NextClientAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n\n NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then(\n (newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\n },\n );\n\n return () => {\n abortController.abort();\n currentRefresher?.clearAutorefresh();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authConfig, storage]); // Only depend on what actually changes\n\n useEffect(() => {\n if (session?.authenticated) {\n refresher?.setupAutorefresh();\n } else {\n refresher?.clearAutorefresh();\n }\n\n return () => refresher?.clearAutorefresh();\n }, [refresher, session?.authenticated]);\n};\n\nexport { useRefresh };\n"]}
1
+ {"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAExC,SAAS,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACnC,CAAC;QAEF,iCAAiC,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,YAAY,EAAE,EAAE;YACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { useEffect, useState } from \"react\";\nimport { NextClientAuthenticationRefresher } from \"@/nextjs/NextClientAuthenticationRefresher.js\";\nimport { BrowserCookieStorage } from \"@/shared/index.js\";\nimport { resolveAuthConfig } from \"../config.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n NextClientAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n const config = resolveAuthConfig(authConfig ?? {});\n const storage = new BrowserCookieStorage(\n config.cookies.tokens.access_token,\n );\n\n NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then(\n (newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\n },\n );\n\n return () => {\n abortController.abort();\n currentRefresher?.clearAutorefresh();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authConfig]); // Only depend on what actually changes\n\n useEffect(() => {\n if (session?.authenticated) {\n refresher?.setupAutorefresh();\n } else {\n refresher?.clearAutorefresh();\n }\n\n return () => refresher?.clearAutorefresh();\n }, [refresher, session?.authenticated]);\n};\n\nexport { useRefresh };\n"]}
@@ -68,7 +68,7 @@ async function performTokenExchangeAndSetCookies(config, code, state, appUrl) {
68
68
  throw new AuthError("Failed to get user info", 401);
69
69
  }
70
70
  const userSession = new GenericUserSession(cookieStorage);
71
- userSession.set(user);
71
+ await userSession.set(user);
72
72
  }
73
73
  async function handleRefresh(request, config) {
74
74
  const resolvedConfigs = resolveAuthConfig(config);