@civic/auth 0.0.1-beta.3 → 0.0.1-beta.31

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 (701) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.json +10 -0
  3. package/.prettierignore +3 -0
  4. package/.prettierrc +1 -0
  5. package/.turbo/turbo-build.log +13 -0
  6. package/.turbo/turbo-lint$colon$fix.log +16 -0
  7. package/.turbo/turbo-test.log +1153 -0
  8. package/README.md +26 -4
  9. package/dist/cjs/src/browser/storage.d.ts +6 -0
  10. package/dist/cjs/src/browser/storage.d.ts.map +1 -0
  11. package/dist/cjs/src/browser/storage.js +13 -0
  12. package/dist/cjs/src/browser/storage.js.map +1 -0
  13. package/dist/cjs/src/config.d.ts +3 -0
  14. package/dist/cjs/src/config.d.ts.map +1 -0
  15. package/dist/cjs/src/config.js +8 -0
  16. package/dist/cjs/src/config.js.map +1 -0
  17. package/dist/cjs/src/constants.d.ts +9 -0
  18. package/dist/cjs/src/constants.d.ts.map +1 -0
  19. package/dist/cjs/src/constants.js +26 -0
  20. package/dist/cjs/src/constants.js.map +1 -0
  21. package/dist/cjs/src/index.d.ts +4 -0
  22. package/dist/cjs/src/index.d.ts.map +1 -0
  23. package/dist/cjs/src/index.js +3 -0
  24. package/dist/cjs/src/index.js.map +1 -0
  25. package/dist/cjs/src/lib/cookies.d.ts +7 -0
  26. package/dist/cjs/src/lib/cookies.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/cookies.js +26 -0
  28. package/dist/cjs/src/lib/cookies.js.map +1 -0
  29. package/dist/cjs/src/lib/jwt.d.ts +3 -0
  30. package/dist/cjs/src/lib/jwt.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/jwt.js +13 -0
  32. package/dist/cjs/src/lib/jwt.js.map +1 -0
  33. package/dist/cjs/src/lib/logger.d.ts +26 -0
  34. package/dist/cjs/src/lib/logger.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/logger.js +62 -0
  36. package/dist/cjs/src/lib/logger.js.map +1 -0
  37. package/dist/cjs/src/lib/oauth.d.ts +19 -0
  38. package/dist/cjs/src/lib/oauth.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/oauth.js +67 -0
  40. package/dist/cjs/src/lib/oauth.js.map +1 -0
  41. package/dist/cjs/src/lib/postMessage.d.ts +4 -0
  42. package/dist/cjs/src/lib/postMessage.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/postMessage.js +18 -0
  44. package/dist/cjs/src/lib/postMessage.js.map +1 -0
  45. package/dist/cjs/src/lib/windowUtil.d.ts +4 -0
  46. package/dist/cjs/src/lib/windowUtil.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/windowUtil.js +34 -0
  48. package/dist/cjs/src/lib/windowUtil.js.map +1 -0
  49. package/dist/cjs/src/nextjs/GetUser.d.ts +6 -0
  50. package/dist/cjs/src/nextjs/GetUser.d.ts.map +1 -0
  51. package/dist/cjs/src/nextjs/GetUser.js +22 -0
  52. package/dist/cjs/src/nextjs/GetUser.js.map +1 -0
  53. package/dist/cjs/src/nextjs/config.d.ts +178 -0
  54. package/dist/cjs/src/nextjs/config.d.ts.map +1 -0
  55. package/dist/cjs/src/nextjs/config.js +167 -0
  56. package/dist/cjs/src/nextjs/config.js.map +1 -0
  57. package/dist/cjs/src/nextjs/cookies.d.ts +30 -0
  58. package/dist/cjs/src/nextjs/cookies.d.ts.map +1 -0
  59. package/dist/cjs/src/nextjs/cookies.js +119 -0
  60. package/dist/cjs/src/nextjs/cookies.js.map +1 -0
  61. package/dist/cjs/src/nextjs/hooks/index.d.ts +2 -0
  62. package/dist/cjs/src/nextjs/hooks/index.d.ts.map +1 -0
  63. package/dist/cjs/src/nextjs/hooks/index.js +6 -0
  64. package/dist/cjs/src/nextjs/hooks/index.js.map +1 -0
  65. package/dist/cjs/src/nextjs/hooks/useTokenCookie.d.ts +3 -0
  66. package/dist/cjs/src/nextjs/hooks/useTokenCookie.d.ts.map +1 -0
  67. package/dist/cjs/src/nextjs/hooks/useTokenCookie.js +41 -0
  68. package/dist/cjs/src/nextjs/hooks/useTokenCookie.js.map +1 -0
  69. package/dist/cjs/src/nextjs/hooks/useUserCookie.d.ts +3 -0
  70. package/dist/cjs/src/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  71. package/dist/cjs/src/nextjs/hooks/useUserCookie.js +40 -0
  72. package/dist/cjs/src/nextjs/hooks/useUserCookie.js.map +1 -0
  73. package/dist/cjs/src/nextjs/index.d.ts +7 -0
  74. package/dist/cjs/src/nextjs/index.d.ts.map +1 -0
  75. package/dist/cjs/src/nextjs/index.js +18 -0
  76. package/dist/cjs/src/nextjs/index.js.map +1 -0
  77. package/dist/cjs/src/nextjs/middleware/index.d.ts +2 -0
  78. package/dist/cjs/src/nextjs/middleware/index.d.ts.map +1 -0
  79. package/dist/cjs/src/nextjs/middleware/index.js +8 -0
  80. package/dist/cjs/src/nextjs/middleware/index.js.map +1 -0
  81. package/dist/cjs/src/nextjs/middleware.d.ts +59 -0
  82. package/dist/cjs/src/nextjs/middleware.d.ts.map +1 -0
  83. package/dist/cjs/src/nextjs/middleware.js +116 -0
  84. package/dist/cjs/src/nextjs/middleware.js.map +1 -0
  85. package/dist/cjs/src/nextjs/providers/NextAuthProvider.d.ts +9 -0
  86. package/dist/cjs/src/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  87. package/dist/cjs/src/nextjs/providers/NextAuthProvider.js +76 -0
  88. package/dist/cjs/src/nextjs/providers/NextAuthProvider.js.map +1 -0
  89. package/dist/cjs/src/nextjs/routeHandler.d.ts +18 -0
  90. package/dist/cjs/src/nextjs/routeHandler.d.ts.map +1 -0
  91. package/dist/cjs/src/nextjs/routeHandler.js +217 -0
  92. package/dist/cjs/src/nextjs/routeHandler.js.map +1 -0
  93. package/dist/cjs/src/nextjs/utils.d.ts +3 -0
  94. package/dist/cjs/src/nextjs/utils.d.ts.map +1 -0
  95. package/dist/cjs/src/nextjs/utils.js +9 -0
  96. package/dist/cjs/src/nextjs/utils.js.map +1 -0
  97. package/dist/cjs/src/reactjs/components/SignInButton.d.ts +8 -0
  98. package/dist/cjs/src/reactjs/components/SignInButton.d.ts.map +1 -0
  99. package/dist/cjs/src/reactjs/components/SignInButton.js +20 -0
  100. package/dist/cjs/src/reactjs/components/SignInButton.js.map +1 -0
  101. package/dist/cjs/src/reactjs/components/SignOutButton.d.ts +6 -0
  102. package/dist/cjs/src/reactjs/components/SignOutButton.d.ts.map +1 -0
  103. package/dist/cjs/src/reactjs/components/SignOutButton.js +20 -0
  104. package/dist/cjs/src/reactjs/components/SignOutButton.js.map +1 -0
  105. package/dist/cjs/src/reactjs/components/UserButton.d.ts +8 -0
  106. package/dist/cjs/src/reactjs/components/UserButton.d.ts.map +1 -0
  107. package/dist/cjs/src/reactjs/components/UserButton.js +136 -0
  108. package/dist/cjs/src/reactjs/components/UserButton.js.map +1 -0
  109. package/dist/cjs/src/reactjs/components/index.d.ts +6 -0
  110. package/dist/cjs/src/reactjs/components/index.d.ts.map +1 -0
  111. package/dist/cjs/src/reactjs/components/index.js +14 -0
  112. package/dist/cjs/src/reactjs/components/index.js.map +1 -0
  113. package/dist/cjs/src/reactjs/hooks/index.d.ts +7 -0
  114. package/dist/cjs/src/reactjs/hooks/index.d.ts.map +1 -0
  115. package/dist/cjs/src/reactjs/hooks/index.js +16 -0
  116. package/dist/cjs/src/reactjs/hooks/index.js.map +1 -0
  117. package/dist/cjs/src/reactjs/hooks/useAuth.d.ts +3 -0
  118. package/dist/cjs/src/reactjs/hooks/useAuth.d.ts.map +1 -0
  119. package/dist/cjs/src/reactjs/hooks/useAuth.js +15 -0
  120. package/dist/cjs/src/reactjs/hooks/useAuth.js.map +1 -0
  121. package/dist/cjs/src/reactjs/hooks/useUser.d.ts +4 -0
  122. package/dist/cjs/src/reactjs/hooks/useUser.d.ts.map +1 -0
  123. package/dist/cjs/src/reactjs/hooks/useUser.js +15 -0
  124. package/dist/cjs/src/reactjs/hooks/useUser.js.map +1 -0
  125. package/dist/cjs/src/reactjs/index.d.ts +6 -0
  126. package/dist/cjs/src/reactjs/index.d.ts.map +1 -0
  127. package/dist/cjs/src/reactjs/index.js +30 -0
  128. package/dist/cjs/src/reactjs/index.js.map +1 -0
  129. package/dist/cjs/src/reactjs/providers/index.d.ts +8 -0
  130. package/dist/cjs/src/reactjs/providers/index.d.ts.map +1 -0
  131. package/dist/cjs/src/reactjs/providers/index.js +19 -0
  132. package/dist/cjs/src/reactjs/providers/index.js.map +1 -0
  133. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts +18 -0
  134. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts.map +1 -0
  135. package/dist/cjs/src/server/ServerAuthenticationResolver.js +61 -0
  136. package/dist/cjs/src/server/ServerAuthenticationResolver.js.map +1 -0
  137. package/dist/cjs/src/server/config.d.ts +16 -0
  138. package/dist/cjs/src/server/config.d.ts.map +1 -0
  139. package/dist/cjs/src/server/config.js +3 -0
  140. package/dist/cjs/src/server/config.js.map +1 -0
  141. package/dist/cjs/src/server/index.d.ts +6 -0
  142. package/dist/cjs/src/server/index.d.ts.map +1 -0
  143. package/dist/cjs/src/server/index.js +14 -0
  144. package/dist/cjs/src/server/index.js.map +1 -0
  145. package/dist/cjs/src/server/login.d.ts +17 -0
  146. package/dist/cjs/src/server/login.d.ts.map +1 -0
  147. package/dist/cjs/src/server/login.js +42 -0
  148. package/dist/cjs/src/server/login.js.map +1 -0
  149. package/dist/cjs/src/server/refresh.d.ts +7 -0
  150. package/dist/cjs/src/server/refresh.d.ts.map +1 -0
  151. package/dist/cjs/src/server/refresh.js +16 -0
  152. package/dist/cjs/src/server/refresh.js.map +1 -0
  153. package/dist/cjs/src/services/AuthenticationService.d.ts +87 -0
  154. package/dist/cjs/src/services/AuthenticationService.d.ts.map +1 -0
  155. package/dist/cjs/src/services/AuthenticationService.js +218 -0
  156. package/dist/cjs/src/services/AuthenticationService.js.map +1 -0
  157. package/dist/cjs/src/services/PKCE.d.ts +20 -0
  158. package/dist/cjs/src/services/PKCE.d.ts.map +1 -0
  159. package/dist/cjs/src/services/PKCE.js +50 -0
  160. package/dist/cjs/src/services/PKCE.js.map +1 -0
  161. package/dist/cjs/src/services/types.d.ts +23 -0
  162. package/dist/cjs/src/services/types.d.ts.map +1 -0
  163. package/dist/cjs/src/services/types.js +11 -0
  164. package/dist/cjs/src/services/types.js.map +1 -0
  165. package/dist/cjs/src/shared/AuthProvider.d.ts +18 -0
  166. package/dist/cjs/src/shared/AuthProvider.d.ts.map +1 -0
  167. package/dist/cjs/src/shared/AuthProvider.js +246 -0
  168. package/dist/cjs/src/shared/AuthProvider.js.map +1 -0
  169. package/dist/cjs/src/shared/CivicAuthProvider.d.ts +6 -0
  170. package/dist/cjs/src/shared/CivicAuthProvider.d.ts.map +1 -0
  171. package/dist/cjs/src/shared/CivicAuthProvider.js +19 -0
  172. package/dist/cjs/src/shared/CivicAuthProvider.js.map +1 -0
  173. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts +15 -0
  174. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts.map +1 -0
  175. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js +47 -0
  176. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js.map +1 -0
  177. package/dist/cjs/src/shared/UserProvider.d.ts +17 -0
  178. package/dist/cjs/src/shared/UserProvider.d.ts.map +1 -0
  179. package/dist/cjs/src/shared/UserProvider.js +42 -0
  180. package/dist/cjs/src/shared/UserProvider.js.map +1 -0
  181. package/dist/cjs/src/shared/UserSession.d.ts +12 -0
  182. package/dist/cjs/src/shared/UserSession.d.ts.map +1 -0
  183. package/dist/cjs/src/shared/UserSession.js +24 -0
  184. package/dist/cjs/src/shared/UserSession.js.map +1 -0
  185. package/dist/cjs/src/shared/components/CivicAuthIframe.d.ts +8 -0
  186. package/dist/cjs/src/shared/components/CivicAuthIframe.d.ts.map +1 -0
  187. package/dist/cjs/src/shared/components/CivicAuthIframe.js +35 -0
  188. package/dist/cjs/src/shared/components/CivicAuthIframe.js.map +1 -0
  189. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.d.ts +9 -0
  190. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  191. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js +154 -0
  192. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js.map +1 -0
  193. package/dist/cjs/src/shared/components/CloseIcon.d.ts +4 -0
  194. package/dist/cjs/src/shared/components/CloseIcon.d.ts.map +1 -0
  195. package/dist/cjs/src/shared/components/CloseIcon.js +12 -0
  196. package/dist/cjs/src/shared/components/CloseIcon.js.map +1 -0
  197. package/dist/cjs/src/shared/components/LoadingIcon.d.ts +4 -0
  198. package/dist/cjs/src/shared/components/LoadingIcon.d.ts.map +1 -0
  199. package/dist/cjs/src/shared/components/LoadingIcon.js +36 -0
  200. package/dist/cjs/src/shared/components/LoadingIcon.js.map +1 -0
  201. package/dist/cjs/src/shared/hooks/index.d.ts +5 -0
  202. package/dist/cjs/src/shared/hooks/index.d.ts.map +1 -0
  203. package/dist/cjs/src/shared/hooks/index.js +12 -0
  204. package/dist/cjs/src/shared/hooks/index.js.map +1 -0
  205. package/dist/cjs/src/shared/hooks/useAuth.d.ts +3 -0
  206. package/dist/cjs/src/shared/hooks/useAuth.d.ts.map +1 -0
  207. package/dist/cjs/src/shared/hooks/useAuth.js +15 -0
  208. package/dist/cjs/src/shared/hooks/useAuth.js.map +1 -0
  209. package/dist/cjs/src/shared/hooks/useConfig.d.ts +3 -0
  210. package/dist/cjs/src/shared/hooks/useConfig.d.ts.map +1 -0
  211. package/dist/cjs/src/shared/hooks/useConfig.js +16 -0
  212. package/dist/cjs/src/shared/hooks/useConfig.js.map +1 -0
  213. package/dist/cjs/src/shared/hooks/useIframe.d.ts +3 -0
  214. package/dist/cjs/src/shared/hooks/useIframe.d.ts.map +1 -0
  215. package/dist/cjs/src/shared/hooks/useIframe.js +16 -0
  216. package/dist/cjs/src/shared/hooks/useIframe.js.map +1 -0
  217. package/dist/cjs/src/shared/hooks/useSession.d.ts +3 -0
  218. package/dist/cjs/src/shared/hooks/useSession.d.ts.map +1 -0
  219. package/dist/cjs/src/shared/hooks/useSession.js +16 -0
  220. package/dist/cjs/src/shared/hooks/useSession.js.map +1 -0
  221. package/dist/cjs/src/shared/hooks/useToken.d.ts +3 -0
  222. package/dist/cjs/src/shared/hooks/useToken.d.ts.map +1 -0
  223. package/dist/cjs/src/shared/hooks/useToken.js +15 -0
  224. package/dist/cjs/src/shared/hooks/useToken.js.map +1 -0
  225. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts +15 -0
  226. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  227. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js +43 -0
  228. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  229. package/dist/cjs/src/shared/lib/UserSession.d.ts +12 -0
  230. package/dist/cjs/src/shared/lib/UserSession.d.ts.map +1 -0
  231. package/dist/cjs/src/shared/lib/UserSession.js +24 -0
  232. package/dist/cjs/src/shared/lib/UserSession.js.map +1 -0
  233. package/dist/cjs/src/shared/lib/session.d.ts +3 -0
  234. package/dist/cjs/src/shared/lib/session.d.ts.map +1 -0
  235. package/dist/cjs/src/shared/lib/session.js +13 -0
  236. package/dist/cjs/src/shared/lib/session.js.map +1 -0
  237. package/dist/cjs/src/shared/lib/storage.d.ts +25 -0
  238. package/dist/cjs/src/shared/lib/storage.d.ts.map +1 -0
  239. package/dist/cjs/src/shared/lib/storage.js +21 -0
  240. package/dist/cjs/src/shared/lib/storage.js.map +1 -0
  241. package/dist/cjs/src/shared/lib/types.d.ts +22 -0
  242. package/dist/cjs/src/shared/lib/types.d.ts.map +1 -0
  243. package/dist/cjs/src/shared/lib/types.js +19 -0
  244. package/dist/cjs/src/shared/lib/types.js.map +1 -0
  245. package/dist/cjs/src/shared/lib/util.d.ts +33 -0
  246. package/dist/cjs/src/shared/lib/util.d.ts.map +1 -0
  247. package/dist/cjs/src/shared/lib/util.js +163 -0
  248. package/dist/cjs/src/shared/lib/util.js.map +1 -0
  249. package/dist/cjs/src/shared/providers/AuthContext.d.ts +10 -0
  250. package/dist/cjs/src/shared/providers/AuthContext.d.ts.map +1 -0
  251. package/dist/cjs/src/shared/providers/AuthContext.js +6 -0
  252. package/dist/cjs/src/shared/providers/AuthContext.js.map +1 -0
  253. package/dist/cjs/src/shared/providers/AuthProvider.d.ts +20 -0
  254. package/dist/cjs/src/shared/providers/AuthProvider.d.ts.map +1 -0
  255. package/dist/cjs/src/shared/providers/AuthProvider.js +289 -0
  256. package/dist/cjs/src/shared/providers/AuthProvider.js.map +1 -0
  257. package/dist/cjs/src/shared/providers/CivicAuthProvider.d.ts +6 -0
  258. package/dist/cjs/src/shared/providers/CivicAuthProvider.d.ts.map +1 -0
  259. package/dist/cjs/src/shared/providers/CivicAuthProvider.js +21 -0
  260. package/dist/cjs/src/shared/providers/CivicAuthProvider.js.map +1 -0
  261. package/dist/cjs/src/shared/providers/ConfigProvider.d.ts +21 -0
  262. package/dist/cjs/src/shared/providers/ConfigProvider.d.ts.map +1 -0
  263. package/dist/cjs/src/shared/providers/ConfigProvider.js +46 -0
  264. package/dist/cjs/src/shared/providers/ConfigProvider.js.map +1 -0
  265. package/dist/cjs/src/shared/providers/IframeProvider.d.ts +16 -0
  266. package/dist/cjs/src/shared/providers/IframeProvider.d.ts.map +1 -0
  267. package/dist/cjs/src/shared/providers/IframeProvider.js +38 -0
  268. package/dist/cjs/src/shared/providers/IframeProvider.js.map +1 -0
  269. package/dist/cjs/src/shared/providers/SessionProvider.d.ts +13 -0
  270. package/dist/cjs/src/shared/providers/SessionProvider.d.ts.map +1 -0
  271. package/dist/cjs/src/shared/providers/SessionProvider.js +40 -0
  272. package/dist/cjs/src/shared/providers/SessionProvider.js.map +1 -0
  273. package/dist/cjs/src/shared/providers/TokenProvider.d.ts +18 -0
  274. package/dist/cjs/src/shared/providers/TokenProvider.d.ts.map +1 -0
  275. package/dist/cjs/src/shared/providers/TokenProvider.js +80 -0
  276. package/dist/cjs/src/shared/providers/TokenProvider.js.map +1 -0
  277. package/dist/cjs/src/shared/providers/UserProvider.d.ts +18 -0
  278. package/dist/cjs/src/shared/providers/UserProvider.d.ts.map +1 -0
  279. package/dist/cjs/src/shared/providers/UserProvider.js +65 -0
  280. package/dist/cjs/src/shared/providers/UserProvider.js.map +1 -0
  281. package/dist/cjs/src/shared/session.d.ts +3 -0
  282. package/dist/cjs/src/shared/session.d.ts.map +1 -0
  283. package/dist/cjs/src/shared/session.js +13 -0
  284. package/dist/cjs/src/shared/session.js.map +1 -0
  285. package/dist/cjs/src/shared/util.d.ts +39 -0
  286. package/dist/cjs/src/shared/util.d.ts.map +1 -0
  287. package/dist/cjs/src/shared/util.js +162 -0
  288. package/dist/cjs/src/shared/util.js.map +1 -0
  289. package/dist/cjs/src/types.d.ts +146 -0
  290. package/dist/cjs/src/types.d.ts.map +1 -0
  291. package/dist/cjs/src/types.js +3 -0
  292. package/dist/cjs/src/types.js.map +1 -0
  293. package/dist/cjs/src/utils.d.ts +15 -0
  294. package/dist/cjs/src/utils.d.ts.map +1 -0
  295. package/dist/cjs/src/utils.js +47 -0
  296. package/dist/cjs/src/utils.js.map +1 -0
  297. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  298. package/dist/esm/src/browser/storage.d.ts +6 -0
  299. package/dist/esm/src/browser/storage.d.ts.map +1 -0
  300. package/dist/esm/src/browser/storage.js +9 -0
  301. package/dist/esm/src/browser/storage.js.map +1 -0
  302. package/dist/esm/src/config.d.ts +3 -0
  303. package/dist/esm/src/config.d.ts.map +1 -0
  304. package/dist/esm/src/config.js +5 -0
  305. package/dist/esm/src/config.js.map +1 -0
  306. package/dist/esm/src/constants.d.ts +9 -0
  307. package/dist/esm/src/constants.d.ts.map +1 -0
  308. package/dist/esm/src/constants.js +17 -0
  309. package/dist/esm/src/constants.js.map +1 -0
  310. package/dist/esm/src/index.d.ts +4 -0
  311. package/dist/esm/src/index.d.ts.map +1 -0
  312. package/dist/esm/src/index.js +2 -0
  313. package/dist/esm/src/index.js.map +1 -0
  314. package/dist/esm/src/lib/cookies.d.ts +7 -0
  315. package/dist/esm/src/lib/cookies.d.ts.map +1 -0
  316. package/dist/esm/src/lib/cookies.js +23 -0
  317. package/dist/esm/src/lib/cookies.js.map +1 -0
  318. package/dist/esm/src/lib/jwt.d.ts +3 -0
  319. package/dist/esm/src/lib/jwt.d.ts.map +1 -0
  320. package/dist/esm/src/lib/jwt.js +9 -0
  321. package/dist/esm/src/lib/jwt.js.map +1 -0
  322. package/dist/esm/src/lib/logger.d.ts +26 -0
  323. package/dist/esm/src/lib/logger.d.ts.map +1 -0
  324. package/dist/esm/src/lib/logger.js +55 -0
  325. package/dist/esm/src/lib/logger.js.map +1 -0
  326. package/dist/esm/src/lib/oauth.d.ts +19 -0
  327. package/dist/esm/src/lib/oauth.d.ts.map +1 -0
  328. package/dist/esm/src/lib/oauth.js +60 -0
  329. package/dist/esm/src/lib/oauth.js.map +1 -0
  330. package/dist/esm/src/lib/postMessage.d.ts +4 -0
  331. package/dist/esm/src/lib/postMessage.d.ts.map +1 -0
  332. package/dist/esm/src/lib/postMessage.js +15 -0
  333. package/dist/esm/src/lib/postMessage.js.map +1 -0
  334. package/dist/esm/src/lib/windowUtil.d.ts +4 -0
  335. package/dist/esm/src/lib/windowUtil.d.ts.map +1 -0
  336. package/dist/esm/src/lib/windowUtil.js +30 -0
  337. package/dist/esm/src/lib/windowUtil.js.map +1 -0
  338. package/dist/esm/src/nextjs/GetUser.d.ts +6 -0
  339. package/dist/esm/src/nextjs/GetUser.d.ts.map +1 -0
  340. package/dist/esm/src/nextjs/GetUser.js +18 -0
  341. package/dist/esm/src/nextjs/GetUser.js.map +1 -0
  342. package/dist/esm/src/nextjs/config.d.ts +178 -0
  343. package/dist/esm/src/nextjs/config.d.ts.map +1 -0
  344. package/dist/esm/src/nextjs/config.js +162 -0
  345. package/dist/esm/src/nextjs/config.js.map +1 -0
  346. package/dist/esm/src/nextjs/cookies.d.ts +30 -0
  347. package/dist/esm/src/nextjs/cookies.d.ts.map +1 -0
  348. package/dist/esm/src/nextjs/cookies.js +112 -0
  349. package/dist/esm/src/nextjs/cookies.js.map +1 -0
  350. package/dist/esm/src/nextjs/hooks/index.d.ts +2 -0
  351. package/dist/esm/src/nextjs/hooks/index.d.ts.map +1 -0
  352. package/dist/esm/src/nextjs/hooks/index.js +2 -0
  353. package/dist/esm/src/nextjs/hooks/index.js.map +1 -0
  354. package/dist/esm/src/nextjs/hooks/useTokenCookie.d.ts +3 -0
  355. package/dist/esm/src/nextjs/hooks/useTokenCookie.d.ts.map +1 -0
  356. package/dist/esm/src/nextjs/hooks/useTokenCookie.js +37 -0
  357. package/dist/esm/src/nextjs/hooks/useTokenCookie.js.map +1 -0
  358. package/dist/esm/src/nextjs/hooks/useUserCookie.d.ts +3 -0
  359. package/dist/esm/src/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  360. package/dist/esm/src/nextjs/hooks/useUserCookie.js +36 -0
  361. package/dist/esm/src/nextjs/hooks/useUserCookie.js.map +1 -0
  362. package/dist/esm/src/nextjs/index.d.ts +7 -0
  363. package/dist/esm/src/nextjs/index.d.ts.map +1 -0
  364. package/dist/esm/src/nextjs/index.js +6 -0
  365. package/dist/esm/src/nextjs/index.js.map +1 -0
  366. package/dist/esm/src/nextjs/middleware/index.d.ts +2 -0
  367. package/dist/esm/src/nextjs/middleware/index.d.ts.map +1 -0
  368. package/dist/esm/src/nextjs/middleware/index.js +2 -0
  369. package/dist/esm/src/nextjs/middleware/index.js.map +1 -0
  370. package/dist/esm/src/nextjs/middleware.d.ts +59 -0
  371. package/dist/esm/src/nextjs/middleware.d.ts.map +1 -0
  372. package/dist/esm/src/nextjs/middleware.js +107 -0
  373. package/dist/esm/src/nextjs/middleware.js.map +1 -0
  374. package/dist/esm/src/nextjs/providers/NextAuthProvider.d.ts +9 -0
  375. package/dist/esm/src/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
  376. package/dist/esm/src/nextjs/providers/NextAuthProvider.js +50 -0
  377. package/dist/esm/src/nextjs/providers/NextAuthProvider.js.map +1 -0
  378. package/dist/esm/src/nextjs/routeHandler.d.ts +18 -0
  379. package/dist/esm/src/nextjs/routeHandler.d.ts.map +1 -0
  380. package/dist/esm/src/nextjs/routeHandler.js +212 -0
  381. package/dist/esm/src/nextjs/routeHandler.js.map +1 -0
  382. package/dist/esm/src/nextjs/utils.d.ts +3 -0
  383. package/dist/esm/src/nextjs/utils.d.ts.map +1 -0
  384. package/dist/esm/src/nextjs/utils.js +5 -0
  385. package/dist/esm/src/nextjs/utils.js.map +1 -0
  386. package/dist/esm/src/reactjs/components/SignInButton.d.ts +8 -0
  387. package/dist/esm/src/reactjs/components/SignInButton.d.ts.map +1 -0
  388. package/dist/esm/src/reactjs/components/SignInButton.js +14 -0
  389. package/dist/esm/src/reactjs/components/SignInButton.js.map +1 -0
  390. package/dist/esm/src/reactjs/components/SignOutButton.d.ts +6 -0
  391. package/dist/esm/src/reactjs/components/SignOutButton.d.ts.map +1 -0
  392. package/dist/esm/src/reactjs/components/SignOutButton.js +14 -0
  393. package/dist/esm/src/reactjs/components/SignOutButton.js.map +1 -0
  394. package/dist/esm/src/reactjs/components/UserButton.d.ts +8 -0
  395. package/dist/esm/src/reactjs/components/UserButton.d.ts.map +1 -0
  396. package/dist/esm/src/reactjs/components/UserButton.js +110 -0
  397. package/dist/esm/src/reactjs/components/UserButton.js.map +1 -0
  398. package/dist/esm/src/reactjs/components/index.d.ts +6 -0
  399. package/dist/esm/src/reactjs/components/index.d.ts.map +1 -0
  400. package/dist/esm/src/reactjs/components/index.js +6 -0
  401. package/dist/esm/src/reactjs/components/index.js.map +1 -0
  402. package/dist/esm/src/reactjs/hooks/index.d.ts +7 -0
  403. package/dist/esm/src/reactjs/hooks/index.d.ts.map +1 -0
  404. package/dist/esm/src/reactjs/hooks/index.js +7 -0
  405. package/dist/esm/src/reactjs/hooks/index.js.map +1 -0
  406. package/dist/esm/src/reactjs/hooks/useAuth.d.ts +3 -0
  407. package/dist/esm/src/reactjs/hooks/useAuth.d.ts.map +1 -0
  408. package/dist/esm/src/reactjs/hooks/useAuth.js +12 -0
  409. package/dist/esm/src/reactjs/hooks/useAuth.js.map +1 -0
  410. package/dist/esm/src/reactjs/hooks/useUser.d.ts +4 -0
  411. package/dist/esm/src/reactjs/hooks/useUser.d.ts.map +1 -0
  412. package/dist/esm/src/reactjs/hooks/useUser.js +12 -0
  413. package/dist/esm/src/reactjs/hooks/useUser.js.map +1 -0
  414. package/dist/esm/src/reactjs/index.d.ts +6 -0
  415. package/dist/esm/src/reactjs/index.d.ts.map +1 -0
  416. package/dist/esm/src/reactjs/index.js +8 -0
  417. package/dist/esm/src/reactjs/index.js.map +1 -0
  418. package/dist/esm/src/reactjs/providers/index.d.ts +8 -0
  419. package/dist/esm/src/reactjs/providers/index.d.ts.map +1 -0
  420. package/dist/esm/src/reactjs/providers/index.js +7 -0
  421. package/dist/esm/src/reactjs/providers/index.js.map +1 -0
  422. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts +18 -0
  423. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts.map +1 -0
  424. package/dist/esm/src/server/ServerAuthenticationResolver.js +57 -0
  425. package/dist/esm/src/server/ServerAuthenticationResolver.js.map +1 -0
  426. package/dist/esm/src/server/config.d.ts +16 -0
  427. package/dist/esm/src/server/config.d.ts.map +1 -0
  428. package/dist/esm/src/server/config.js +2 -0
  429. package/dist/esm/src/server/config.js.map +1 -0
  430. package/dist/esm/src/server/index.d.ts +6 -0
  431. package/dist/esm/src/server/index.d.ts.map +1 -0
  432. package/dist/esm/src/server/index.js +5 -0
  433. package/dist/esm/src/server/index.js.map +1 -0
  434. package/dist/esm/src/server/login.d.ts +17 -0
  435. package/dist/esm/src/server/login.d.ts.map +1 -0
  436. package/dist/esm/src/server/login.js +37 -0
  437. package/dist/esm/src/server/login.js.map +1 -0
  438. package/dist/esm/src/server/refresh.d.ts +7 -0
  439. package/dist/esm/src/server/refresh.d.ts.map +1 -0
  440. package/dist/esm/src/server/refresh.js +13 -0
  441. package/dist/esm/src/server/refresh.js.map +1 -0
  442. package/dist/esm/src/services/AuthenticationService.d.ts +87 -0
  443. package/dist/esm/src/services/AuthenticationService.d.ts.map +1 -0
  444. package/dist/esm/src/services/AuthenticationService.js +212 -0
  445. package/dist/esm/src/services/AuthenticationService.js.map +1 -0
  446. package/dist/esm/src/services/PKCE.d.ts +20 -0
  447. package/dist/esm/src/services/PKCE.d.ts.map +1 -0
  448. package/dist/esm/src/services/PKCE.js +44 -0
  449. package/dist/esm/src/services/PKCE.js.map +1 -0
  450. package/dist/esm/src/services/types.d.ts +23 -0
  451. package/dist/esm/src/services/types.d.ts.map +1 -0
  452. package/dist/esm/src/services/types.js +7 -0
  453. package/dist/esm/src/services/types.js.map +1 -0
  454. package/dist/esm/src/shared/components/CivicAuthIframe.d.ts +8 -0
  455. package/dist/esm/src/shared/components/CivicAuthIframe.d.ts.map +1 -0
  456. package/dist/esm/src/shared/components/CivicAuthIframe.js +9 -0
  457. package/dist/esm/src/shared/components/CivicAuthIframe.js.map +1 -0
  458. package/dist/esm/src/shared/components/CivicAuthIframeContainer.d.ts +9 -0
  459. package/dist/esm/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
  460. package/dist/esm/src/shared/components/CivicAuthIframeContainer.js +128 -0
  461. package/dist/esm/src/shared/components/CivicAuthIframeContainer.js.map +1 -0
  462. package/dist/esm/src/shared/components/CloseIcon.d.ts +4 -0
  463. package/dist/esm/src/shared/components/CloseIcon.d.ts.map +1 -0
  464. package/dist/esm/src/shared/components/CloseIcon.js +6 -0
  465. package/dist/esm/src/shared/components/CloseIcon.js.map +1 -0
  466. package/dist/esm/src/shared/components/LoadingIcon.d.ts +4 -0
  467. package/dist/esm/src/shared/components/LoadingIcon.d.ts.map +1 -0
  468. package/dist/esm/src/shared/components/LoadingIcon.js +30 -0
  469. package/dist/esm/src/shared/components/LoadingIcon.js.map +1 -0
  470. package/dist/esm/src/shared/hooks/index.d.ts +5 -0
  471. package/dist/esm/src/shared/hooks/index.d.ts.map +1 -0
  472. package/dist/esm/src/shared/hooks/index.js +5 -0
  473. package/dist/esm/src/shared/hooks/index.js.map +1 -0
  474. package/dist/esm/src/shared/hooks/useAuth.d.ts +3 -0
  475. package/dist/esm/src/shared/hooks/useAuth.d.ts.map +1 -0
  476. package/dist/esm/src/shared/hooks/useAuth.js +12 -0
  477. package/dist/esm/src/shared/hooks/useAuth.js.map +1 -0
  478. package/dist/esm/src/shared/hooks/useConfig.d.ts +3 -0
  479. package/dist/esm/src/shared/hooks/useConfig.d.ts.map +1 -0
  480. package/dist/esm/src/shared/hooks/useConfig.js +13 -0
  481. package/dist/esm/src/shared/hooks/useConfig.js.map +1 -0
  482. package/dist/esm/src/shared/hooks/useIframe.d.ts +3 -0
  483. package/dist/esm/src/shared/hooks/useIframe.d.ts.map +1 -0
  484. package/dist/esm/src/shared/hooks/useIframe.js +13 -0
  485. package/dist/esm/src/shared/hooks/useIframe.js.map +1 -0
  486. package/dist/esm/src/shared/hooks/useSession.d.ts +3 -0
  487. package/dist/esm/src/shared/hooks/useSession.d.ts.map +1 -0
  488. package/dist/esm/src/shared/hooks/useSession.js +13 -0
  489. package/dist/esm/src/shared/hooks/useSession.js.map +1 -0
  490. package/dist/esm/src/shared/hooks/useToken.d.ts +3 -0
  491. package/dist/esm/src/shared/hooks/useToken.d.ts.map +1 -0
  492. package/dist/esm/src/shared/hooks/useToken.js +12 -0
  493. package/dist/esm/src/shared/hooks/useToken.js.map +1 -0
  494. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts +15 -0
  495. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
  496. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js +39 -0
  497. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
  498. package/dist/esm/src/shared/lib/UserSession.d.ts +12 -0
  499. package/dist/esm/src/shared/lib/UserSession.d.ts.map +1 -0
  500. package/dist/esm/src/shared/lib/UserSession.js +20 -0
  501. package/dist/esm/src/shared/lib/UserSession.js.map +1 -0
  502. package/dist/esm/src/shared/lib/session.d.ts +3 -0
  503. package/dist/esm/src/shared/lib/session.d.ts.map +1 -0
  504. package/dist/esm/src/shared/lib/session.js +10 -0
  505. package/dist/esm/src/shared/lib/session.js.map +1 -0
  506. package/dist/esm/src/shared/lib/storage.d.ts +25 -0
  507. package/dist/esm/src/shared/lib/storage.d.ts.map +1 -0
  508. package/dist/esm/src/shared/lib/storage.js +17 -0
  509. package/dist/esm/src/shared/lib/storage.js.map +1 -0
  510. package/dist/esm/src/shared/lib/types.d.ts +22 -0
  511. package/dist/esm/src/shared/lib/types.d.ts.map +1 -0
  512. package/dist/esm/src/shared/lib/types.js +16 -0
  513. package/dist/esm/src/shared/lib/types.js.map +1 -0
  514. package/dist/esm/src/shared/lib/util.d.ts +33 -0
  515. package/dist/esm/src/shared/lib/util.d.ts.map +1 -0
  516. package/dist/esm/src/shared/lib/util.js +127 -0
  517. package/dist/esm/src/shared/lib/util.js.map +1 -0
  518. package/dist/esm/src/shared/providers/AuthContext.d.ts +10 -0
  519. package/dist/esm/src/shared/providers/AuthContext.d.ts.map +1 -0
  520. package/dist/esm/src/shared/providers/AuthContext.js +3 -0
  521. package/dist/esm/src/shared/providers/AuthContext.js.map +1 -0
  522. package/dist/esm/src/shared/providers/AuthProvider.d.ts +20 -0
  523. package/dist/esm/src/shared/providers/AuthProvider.d.ts.map +1 -0
  524. package/dist/esm/src/shared/providers/AuthProvider.js +263 -0
  525. package/dist/esm/src/shared/providers/AuthProvider.js.map +1 -0
  526. package/dist/esm/src/shared/providers/CivicAuthProvider.d.ts +6 -0
  527. package/dist/esm/src/shared/providers/CivicAuthProvider.d.ts.map +1 -0
  528. package/dist/esm/src/shared/providers/CivicAuthProvider.js +15 -0
  529. package/dist/esm/src/shared/providers/CivicAuthProvider.js.map +1 -0
  530. package/dist/esm/src/shared/providers/ConfigProvider.d.ts +21 -0
  531. package/dist/esm/src/shared/providers/ConfigProvider.d.ts.map +1 -0
  532. package/dist/esm/src/shared/providers/ConfigProvider.js +19 -0
  533. package/dist/esm/src/shared/providers/ConfigProvider.js.map +1 -0
  534. package/dist/esm/src/shared/providers/IframeProvider.d.ts +16 -0
  535. package/dist/esm/src/shared/providers/IframeProvider.d.ts.map +1 -0
  536. package/dist/esm/src/shared/providers/IframeProvider.js +11 -0
  537. package/dist/esm/src/shared/providers/IframeProvider.js.map +1 -0
  538. package/dist/esm/src/shared/providers/SessionProvider.d.ts +13 -0
  539. package/dist/esm/src/shared/providers/SessionProvider.d.ts.map +1 -0
  540. package/dist/esm/src/shared/providers/SessionProvider.js +13 -0
  541. package/dist/esm/src/shared/providers/SessionProvider.js.map +1 -0
  542. package/dist/esm/src/shared/providers/TokenProvider.d.ts +18 -0
  543. package/dist/esm/src/shared/providers/TokenProvider.d.ts.map +1 -0
  544. package/dist/esm/src/shared/providers/TokenProvider.js +53 -0
  545. package/dist/esm/src/shared/providers/TokenProvider.js.map +1 -0
  546. package/dist/esm/src/shared/providers/UserProvider.d.ts +18 -0
  547. package/dist/esm/src/shared/providers/UserProvider.d.ts.map +1 -0
  548. package/dist/esm/src/shared/providers/UserProvider.js +38 -0
  549. package/dist/esm/src/shared/providers/UserProvider.js.map +1 -0
  550. package/dist/esm/src/types.d.ts +146 -0
  551. package/dist/esm/src/types.d.ts.map +1 -0
  552. package/dist/esm/src/types.js +2 -0
  553. package/dist/esm/src/types.js.map +1 -0
  554. package/dist/esm/src/utils.d.ts +15 -0
  555. package/dist/esm/src/utils.d.ts.map +1 -0
  556. package/dist/esm/src/utils.js +43 -0
  557. package/dist/esm/src/utils.js.map +1 -0
  558. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  559. package/dist/src/nextjs/cookies.d.ts.map +1 -0
  560. package/dist/src/nextjs/cookies.js +113 -0
  561. package/dist/src/nextjs/cookies.js.map +1 -0
  562. package/dist/tsconfig.tsbuildinfo +1 -0
  563. package/package.json +53 -43
  564. package/src/browser/storage.ts +11 -0
  565. package/src/config.ts +6 -0
  566. package/src/constants.ts +29 -0
  567. package/src/index.ts +16 -0
  568. package/src/lib/cookies.ts +28 -0
  569. package/src/lib/jwt.ts +15 -0
  570. package/src/lib/logger.ts +72 -0
  571. package/src/lib/oauth.ts +83 -0
  572. package/src/lib/postMessage.ts +22 -0
  573. package/src/lib/windowUtil.ts +29 -0
  574. package/src/nextjs/GetUser.ts +22 -0
  575. package/src/nextjs/config.ts +205 -0
  576. package/src/nextjs/cookies.ts +162 -0
  577. package/src/nextjs/hooks/index.ts +1 -0
  578. package/src/nextjs/hooks/useTokenCookie.ts +41 -0
  579. package/src/nextjs/hooks/useUserCookie.ts +41 -0
  580. package/src/nextjs/index.ts +20 -0
  581. package/src/nextjs/middleware/index.ts +1 -0
  582. package/src/nextjs/middleware.ts +155 -0
  583. package/src/nextjs/providers/NextAuthProvider.tsx +87 -0
  584. package/src/nextjs/routeHandler.ts +297 -0
  585. package/src/nextjs/utils.ts +9 -0
  586. package/src/reactjs/components/SignInButton.tsx +32 -0
  587. package/src/reactjs/components/SignOutButton.tsx +24 -0
  588. package/src/reactjs/components/UserButton.tsx +215 -0
  589. package/src/reactjs/components/index.ts +5 -0
  590. package/src/reactjs/hooks/index.ts +6 -0
  591. package/src/reactjs/hooks/useAuth.ts +15 -0
  592. package/src/reactjs/hooks/useUser.ts +20 -0
  593. package/src/reactjs/index.ts +19 -0
  594. package/src/reactjs/providers/index.ts +27 -0
  595. package/src/server/ServerAuthenticationResolver.ts +102 -0
  596. package/src/server/config.ts +17 -0
  597. package/src/server/index.ts +12 -0
  598. package/src/server/login.ts +59 -0
  599. package/src/server/refresh.ts +23 -0
  600. package/src/services/AuthenticationService.ts +324 -0
  601. package/src/services/PKCE.ts +45 -0
  602. package/src/services/types.ts +54 -0
  603. package/src/shared/components/CivicAuthIframe.tsx +26 -0
  604. package/src/shared/components/CivicAuthIframeContainer.tsx +190 -0
  605. package/src/shared/components/CloseIcon.tsx +21 -0
  606. package/src/shared/components/LoadingIcon.tsx +53 -0
  607. package/src/shared/hooks/index.ts +4 -0
  608. package/src/shared/hooks/useAuth.ts +15 -0
  609. package/src/shared/hooks/useConfig.ts +14 -0
  610. package/src/shared/hooks/useIframe.ts +14 -0
  611. package/src/shared/hooks/useSession.ts +14 -0
  612. package/src/shared/hooks/useToken.ts +15 -0
  613. package/src/shared/lib/GenericAuthenticationRefresher.ts +70 -0
  614. package/src/shared/lib/UserSession.ts +25 -0
  615. package/src/shared/lib/session.ts +11 -0
  616. package/src/shared/lib/storage.ts +40 -0
  617. package/src/shared/lib/types.ts +26 -0
  618. package/src/shared/lib/util.ts +217 -0
  619. package/src/shared/providers/AuthContext.tsx +11 -0
  620. package/src/shared/providers/AuthProvider.tsx +390 -0
  621. package/src/shared/providers/CivicAuthProvider.tsx +31 -0
  622. package/src/shared/providers/ConfigProvider.tsx +50 -0
  623. package/src/shared/providers/IframeProvider.tsx +34 -0
  624. package/src/shared/providers/SessionProvider.tsx +29 -0
  625. package/src/shared/providers/TokenProvider.tsx +78 -0
  626. package/src/shared/providers/UserProvider.tsx +80 -0
  627. package/src/types.ts +227 -0
  628. package/src/utils.ts +58 -0
  629. package/test/integration/sdk.test.tsx +266 -0
  630. package/test/support/fixtures.ts +56 -0
  631. package/test/support/tokens.json +26 -0
  632. package/test/unit/lib/oauth.test.ts +72 -0
  633. package/test/unit/logger.test.ts +175 -0
  634. package/test/unit/nextjs/NextAuthProvider.test.tsx +38 -0
  635. package/test/unit/nextjs/config.test.ts +218 -0
  636. package/test/unit/nextjs/getUser.test.ts +41 -0
  637. package/test/unit/nextjs/middleware.test.ts +138 -0
  638. package/test/unit/nextjs/routeHandler.test.ts.skipped +369 -0
  639. package/test/unit/nextjs/utils.test.ts +17 -0
  640. package/test/unit/publicApi/__snapshots__/apiSnapshot.test.ts.snap +17 -0
  641. package/test/unit/publicApi/apiSnapshot.test.ts +11 -0
  642. package/test/unit/react/components/SignInButton.test.tsx +50 -0
  643. package/test/unit/react/components/SignOutButton.test.tsx +49 -0
  644. package/test/unit/server/login.test.ts +181 -0
  645. package/test/unit/server/session.test.ts +51 -0
  646. package/test/unit/services/AuthenticationService.test.ts +152 -0
  647. package/test/unit/services/ServerAuthenticationResolver.test.ts +115 -0
  648. package/test/unit/shared/GenericAuthenticationRefresher.test.ts +89 -0
  649. package/test/unit/shared/UserSession.test.ts +42 -0
  650. package/test/unit/shared/components/CivicAuthIframeContainer.test.tsx +154 -0
  651. package/test/unit/shared/storage.test.ts +67 -0
  652. package/test/unit/utils.test.ts +48 -0
  653. package/tsconfig.build.json +5 -0
  654. package/tsconfig.cjs.json +8 -0
  655. package/tsconfig.esm.json +7 -0
  656. package/tsconfig.json +42 -0
  657. package/vitest.config.ts +41 -0
  658. package/dist/chunk-4GIHS7LB.js +0 -201
  659. package/dist/chunk-4GIHS7LB.js.map +0 -1
  660. package/dist/chunk-CRTRMMJ7.js +0 -59
  661. package/dist/chunk-CRTRMMJ7.js.map +0 -1
  662. package/dist/chunk-GNGLWGZJ.mjs +0 -238
  663. package/dist/chunk-GNGLWGZJ.mjs.map +0 -1
  664. package/dist/chunk-NQPMNXBL.mjs +0 -154
  665. package/dist/chunk-NQPMNXBL.mjs.map +0 -1
  666. package/dist/chunk-RGHW4PYM.mjs +0 -59
  667. package/dist/chunk-RGHW4PYM.mjs.map +0 -1
  668. package/dist/chunk-UV56GNIT.mjs +0 -201
  669. package/dist/chunk-UV56GNIT.mjs.map +0 -1
  670. package/dist/chunk-VXIWRZWU.js +0 -238
  671. package/dist/chunk-VXIWRZWU.js.map +0 -1
  672. package/dist/chunk-WPISYQG3.js +0 -154
  673. package/dist/chunk-WPISYQG3.js.map +0 -1
  674. package/dist/index-DoDoIY_K.d.mts +0 -79
  675. package/dist/index-DoDoIY_K.d.ts +0 -79
  676. package/dist/index.css +0 -342
  677. package/dist/index.css.map +0 -1
  678. package/dist/index.d.mts +0 -3
  679. package/dist/index.d.ts +0 -3
  680. package/dist/index.js +0 -2
  681. package/dist/index.js.map +0 -1
  682. package/dist/index.mjs +0 -2
  683. package/dist/index.mjs.map +0 -1
  684. package/dist/nextjs.d.mts +0 -225
  685. package/dist/nextjs.d.ts +0 -225
  686. package/dist/nextjs.js +0 -253
  687. package/dist/nextjs.js.map +0 -1
  688. package/dist/nextjs.mjs +0 -253
  689. package/dist/nextjs.mjs.map +0 -1
  690. package/dist/react.d.mts +0 -119
  691. package/dist/react.d.ts +0 -119
  692. package/dist/react.js +0 -1178
  693. package/dist/react.js.map +0 -1
  694. package/dist/react.mjs +0 -1178
  695. package/dist/react.mjs.map +0 -1
  696. package/dist/server.d.mts +0 -55
  697. package/dist/server.d.ts +0 -55
  698. package/dist/server.js +0 -17
  699. package/dist/server.js.map +0 -1
  700. package/dist/server.mjs +0 -17
  701. package/dist/server.mjs.map +0 -1
package/dist/react.js DELETED
@@ -1,1178 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
- var _chunkWPISYQG3js = require('./chunk-WPISYQG3.js');
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
- var _chunkVXIWRZWUjs = require('./chunk-VXIWRZWU.js');
16
-
17
-
18
-
19
-
20
-
21
- var _chunkCRTRMMJ7js = require('./chunk-CRTRMMJ7.js');
22
-
23
- // src/react/hooks/useUser.tsx
24
- var _react = require('react');
25
-
26
- // src/react/providers/UserProvider.tsx
27
-
28
- var _reactquery = require('@tanstack/react-query');
29
-
30
- // src/react/hooks/useAuth.tsx
31
-
32
-
33
- // src/shared/AuthContext.tsx
34
-
35
- var AuthContext = _react.createContext.call(void 0, null);
36
-
37
- // src/react/hooks/useAuth.tsx
38
- var useAuth = () => {
39
- const context = _react.useContext.call(void 0, AuthContext);
40
- if (!context) {
41
- throw new Error("useAuth must be used within an AuthProvider");
42
- }
43
- return context;
44
- };
45
-
46
- // src/react/hooks/useToken.tsx
47
-
48
-
49
- // src/react/providers/TokenProvider.tsx
50
-
51
-
52
-
53
- // src/react/hooks/useSession.tsx
54
-
55
-
56
- // src/react/providers/SessionProvider.tsx
57
-
58
- var _jsxruntime = require('react/jsx-runtime');
59
- var defaultSession = {
60
- authenticated: false,
61
- idToken: void 0,
62
- accessToken: void 0,
63
- displayMode: "iframe"
64
- };
65
- var SessionContext = _react.createContext.call(void 0, defaultSession);
66
- var SessionProvider = ({ children, session }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SessionContext.Provider, { value: session || defaultSession, children });
67
-
68
- // src/react/hooks/useSession.tsx
69
- var useSession = () => {
70
- const context = _react.useContext.call(void 0, SessionContext);
71
- if (!context) {
72
- throw new Error("useSession must be used within an SessionProvider");
73
- }
74
- return context;
75
- };
76
-
77
- // src/react/providers/TokenProvider.tsx
78
- var _jwt = require('oslo/jwt');
79
-
80
- // src/lib/jwt.ts
81
- var convertForwardedTokenFormat = (inputTokens) => Object.fromEntries(
82
- Object.entries(inputTokens).map(([source, tokens]) => [
83
- source,
84
- {
85
- idToken: tokens == null ? void 0 : tokens.id_token,
86
- accessToken: tokens == null ? void 0 : tokens.access_token,
87
- refreshToken: tokens == null ? void 0 : tokens.refresh_token
88
- }
89
- ])
90
- );
91
-
92
- // src/react/providers/TokenProvider.tsx
93
-
94
- var TokenContext = _react.createContext.call(void 0, void 0);
95
- var TokenProvider = ({ children }) => {
96
- const { isLoading, error: authError } = useAuth();
97
- const session = useSession();
98
- const queryClient3 = _reactquery.useQueryClient.call(void 0, );
99
- const refreshTokenMutation = _reactquery.useMutation.call(void 0, {
100
- mutationFn: () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
101
- throw new Error("Method not implemented.");
102
- }),
103
- onSuccess: () => {
104
- queryClient3.invalidateQueries({ queryKey: ["session"] });
105
- }
106
- });
107
- const decodeTokens = _react.useMemo.call(void 0, () => {
108
- if (!(session == null ? void 0 : session.idToken)) return null;
109
- const parsedJWT = _jwt.parseJWT.call(void 0, session.idToken);
110
- if (!parsedJWT) return null;
111
- const { forwardedTokens } = parsedJWT.payload;
112
- return forwardedTokens ? convertForwardedTokenFormat(forwardedTokens) : null;
113
- }, [session == null ? void 0 : session.idToken]);
114
- const value = _react.useMemo.call(void 0,
115
- () => ({
116
- accessToken: session.accessToken || null,
117
- idToken: session.idToken || null,
118
- forwardedTokens: decodeTokens || {},
119
- refreshToken: refreshTokenMutation.mutateAsync,
120
- isLoading,
121
- error: authError || refreshTokenMutation.error
122
- }),
123
- [
124
- session.accessToken,
125
- session.idToken,
126
- decodeTokens,
127
- refreshTokenMutation.mutateAsync,
128
- refreshTokenMutation.error,
129
- isLoading,
130
- authError
131
- ]
132
- );
133
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenContext.Provider, { value, children });
134
- };
135
-
136
- // src/react/hooks/useToken.tsx
137
- var useToken = () => {
138
- const context = _react.useContext.call(void 0, TokenContext);
139
- if (!context) {
140
- throw new Error("useToken must be used within a TokenProvider");
141
- }
142
- return context;
143
- };
144
-
145
- // src/react/providers/UserProvider.tsx
146
-
147
- var UserContext = _react.createContext.call(void 0, null);
148
- var UserProvider = ({
149
- children,
150
- userInfoService
151
- }) => {
152
- const { isLoading: authLoading, error: authError } = useAuth();
153
- const session = useSession();
154
- const { forwardedTokens, idToken, accessToken, refreshToken } = useToken();
155
- const { signIn, signOut } = useAuth();
156
- const fetchUser = () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
157
- if (!accessToken || !userInfoService) {
158
- return null;
159
- }
160
- const user2 = yield userInfoService == null ? void 0 : userInfoService.getUserInfo(accessToken, idToken);
161
- if (!user2) {
162
- return null;
163
- }
164
- return _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, user2), {
165
- forwardedTokens,
166
- idToken,
167
- accessToken,
168
- refreshToken
169
- });
170
- });
171
- const {
172
- data: user,
173
- isLoading: userLoading,
174
- error: userError
175
- } = _reactquery.useQuery.call(void 0, {
176
- queryKey: ["user", session == null ? void 0 : session.idToken],
177
- queryFn: fetchUser,
178
- enabled: !!(session == null ? void 0 : session.idToken)
179
- // Only run the query if we have an access token
180
- });
181
- const isLoading = authLoading || userLoading;
182
- const error = authError || userError;
183
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
184
- UserContext.Provider,
185
- {
186
- value: {
187
- user: user != null ? user : null,
188
- isLoading,
189
- error,
190
- signIn,
191
- signOut
192
- },
193
- children
194
- }
195
- );
196
- };
197
-
198
- // src/shared/AuthProvider.tsx
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
- // src/services/UserInfoService.ts
209
-
210
- var UserInfoServiceImpl = class {
211
- constructor(endpoints) {
212
- this.endpoints = endpoints;
213
- }
214
- extractUserFromIdToken(idToken) {
215
- const parsedJWT = _jwt.parseJWT.call(void 0, idToken);
216
- if (!parsedJWT) {
217
- return null;
218
- }
219
- return parsedJWT.payload;
220
- }
221
- getUserInfo(accessToken, idToken) {
222
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
223
- if (idToken) {
224
- return this.extractUserFromIdToken(idToken);
225
- }
226
- const userInfo = yield fetch(this.endpoints.userinfo, {
227
- headers: { Authorization: `Bearer ${accessToken}` }
228
- });
229
- return userInfo.json();
230
- });
231
- }
232
- };
233
-
234
- // src/services/SessionService.ts
235
- var _oauth2 = require('oslo/oauth2');
236
- var AuthSessionServiceImpl = class {
237
- constructor(clientId, redirectUrl, oauthServer, inputEndpoints) {
238
- this.clientId = clientId;
239
- this.redirectUrl = redirectUrl;
240
- this.oauthServer = oauthServer;
241
- this.inputEndpoints = inputEndpoints;
242
- this.codeVerifier = void 0;
243
- this.refreshTokenTimeout = null;
244
- this.codeVerifier = this.getCodeVerifier();
245
- this.endpoints = inputEndpoints;
246
- this.redirectUrl = redirectUrl;
247
- }
248
- getCodeVerifier() {
249
- return _oauth2.generateCodeVerifier.call(void 0, );
250
- }
251
- getUserInfoService() {
252
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
253
- if (this.userInfoService) {
254
- return this.userInfoService;
255
- }
256
- const endpoints = yield this.getEndpoints();
257
- this.userInfoService = new UserInfoServiceImpl(endpoints);
258
- return this.userInfoService;
259
- });
260
- }
261
- getEndpoints() {
262
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
263
- var _a;
264
- if ((_a = this.endpoints) == null ? void 0 : _a.auth) {
265
- return this.endpoints;
266
- }
267
- const jwksEndpoints = yield _chunkVXIWRZWUjs.getOauthEndpoints.call(void 0, this.oauthServer);
268
- return this.endpoints ? _chunkCRTRMMJ7js.__spreadValues.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, this.endpoints), jwksEndpoints) : jwksEndpoints;
269
- });
270
- }
271
- getOauth2Client() {
272
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
273
- if (this.oauth2Client) {
274
- return this.oauth2Client;
275
- }
276
- const endpoints = yield this.getEndpoints();
277
- this.oauth2Client = _chunkVXIWRZWUjs.buildOauth2Client.call(void 0,
278
- this.clientId,
279
- this.redirectUrl,
280
- endpoints
281
- );
282
- return this.oauth2Client;
283
- });
284
- }
285
- getSessionData() {
286
- console.log("getSessionData", this.clientId);
287
- const storedItem = localStorage.getItem(`civic-auth:${this.clientId}`) || "{}";
288
- console.log("stored item", storedItem);
289
- return JSON.parse(storedItem);
290
- }
291
- updateSessionData(data) {
292
- localStorage.setItem(
293
- `civic-auth:${this.clientId}`,
294
- JSON.stringify(_chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, data))
295
- );
296
- }
297
- getUser() {
298
- return JSON.parse(
299
- localStorage.getItem(`civic-auth:${this.clientId}:user`) || "{}"
300
- );
301
- }
302
- setUser(data) {
303
- localStorage.setItem(
304
- `civic-auth:${this.clientId}:user`,
305
- JSON.stringify(data === null ? {} : data)
306
- );
307
- }
308
- clearSessionData() {
309
- localStorage.setItem(`civic-auth:${this.clientId}`, JSON.stringify({}));
310
- }
311
- getAuthorizationUrlWithChallenge(state, scopes) {
312
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
313
- var _a;
314
- const oauth2Client = yield this.getOauth2Client();
315
- if ((_a = this.endpoints) == null ? void 0 : _a.challenge) {
316
- const challenge = yield fetch(this.endpoints.challenge).then(
317
- (res) => res.json().then((data) => data.challenge)
318
- );
319
- const oAuthUrl = yield oauth2Client.createAuthorizationURL({
320
- state,
321
- scopes
322
- });
323
- oAuthUrl.searchParams.append("code_challenge", challenge);
324
- oAuthUrl.searchParams.append("code_challenge_method", "S256");
325
- return oAuthUrl;
326
- }
327
- return oauth2Client.createAuthorizationURL({
328
- state,
329
- codeVerifier: this.codeVerifier,
330
- codeChallengeMethod: "S256",
331
- scopes
332
- });
333
- });
334
- }
335
- getAuthorizationUrl(scopes, displayMode, nonce) {
336
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
337
- const state = _chunkVXIWRZWUjs.generateState.call(void 0, displayMode);
338
- const existingSessionData = this.getSessionData();
339
- this.updateSessionData(_chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, existingSessionData), {
340
- codeVerifier: this.codeVerifier,
341
- displayMode
342
- }));
343
- const oAuthUrl = yield this.getAuthorizationUrlWithChallenge(state, scopes);
344
- if (nonce) {
345
- oAuthUrl.searchParams.append("nonce", nonce);
346
- }
347
- oAuthUrl.searchParams.append("prompt", "consent");
348
- return oAuthUrl.toString();
349
- });
350
- }
351
- // TODO fix the Window reference
352
- loadAuthorizationUrl(authorizationURL, displayMode) {
353
- switch (displayMode) {
354
- case "iframe":
355
- break;
356
- case "redirect":
357
- window.location.href = authorizationURL;
358
- break;
359
- case "new_tab":
360
- window.open(authorizationURL, "_blank");
361
- break;
362
- case "custom_tab":
363
- break;
364
- }
365
- }
366
- init() {
367
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
368
- yield this.getOauth2Client();
369
- return this;
370
- });
371
- }
372
- logout() {
373
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
374
- this.updateSessionData({ authenticated: false });
375
- });
376
- }
377
- determineDisplayMode(displayMode) {
378
- if (_chunkVXIWRZWUjs.isPopupBlocked.call(void 0, ) && displayMode === "iframe") {
379
- displayMode = "redirect";
380
- }
381
- return displayMode;
382
- }
383
- signIn(displayMode, scopes, nonce) {
384
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
385
- const authorizationURL = yield this.getAuthorizationUrl(
386
- scopes,
387
- displayMode,
388
- nonce
389
- );
390
- this.loadAuthorizationUrl(authorizationURL, displayMode);
391
- });
392
- }
393
- tokenExchange(responseUrl) {
394
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
395
- let session = this.getSessionData();
396
- if (!session.authenticated) {
397
- const url = new URL(responseUrl);
398
- const authorizationCode = url.searchParams.get("code");
399
- const returnedState = url.searchParams.get("state");
400
- if (!authorizationCode || !returnedState) {
401
- throw new Error("Invalid authorization response");
402
- }
403
- const codeVerifier = session.codeVerifier;
404
- const oauth2Client = yield this.getOauth2Client();
405
- const tokens = yield oauth2Client.validateAuthorizationCode(
406
- authorizationCode,
407
- {
408
- codeVerifier
409
- }
410
- );
411
- try {
412
- yield this.validateTokens(tokens);
413
- } catch (error) {
414
- console.error("tokenExchange tokens", { error, tokens });
415
- throw new Error(
416
- `OIDC tokens validation failed: ${error.message}`
417
- );
418
- }
419
- const parsedDisplayMode = _chunkVXIWRZWUjs.displayModeFromState.call(void 0,
420
- returnedState,
421
- session.displayMode
422
- );
423
- session = _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, session), {
424
- displayMode: parsedDisplayMode,
425
- idToken: tokens.id_token,
426
- authenticated: true,
427
- state: returnedState,
428
- accessToken: tokens.access_token,
429
- refreshToken: tokens.refresh_token,
430
- timestamp: Date.now(),
431
- expiresIn: tokens.expires_in
432
- });
433
- this.updateSessionData(session);
434
- const user = yield (yield this.getUserInfoService()).getUserInfo(tokens.access_token, tokens.id_token || null);
435
- this.setUser(user);
436
- }
437
- this.setupTokenRefresh(session);
438
- if (session.displayMode === "new_tab") {
439
- window.close();
440
- } else if (session.displayMode === "redirect") {
441
- }
442
- return session;
443
- });
444
- }
445
- setupTokenRefresh(session) {
446
- if (this.refreshTokenTimeout) {
447
- clearTimeout(this.refreshTokenTimeout);
448
- }
449
- if (session.expiresIn) {
450
- const elapsedTime = Date.now() - (session.timestamp || 0);
451
- const remainingTime = session.expiresIn * 1e3 - elapsedTime;
452
- const refreshTime = Math.max(0, remainingTime - 6e4);
453
- this.refreshTokenTimeout = setTimeout(() => {
454
- this.refreshToken().then((newSession) => {
455
- console.log("Token refreshed successfully", newSession);
456
- }).catch((error) => {
457
- console.error("Failed to refresh token:", error);
458
- this.updateSessionData({});
459
- });
460
- }, refreshTime);
461
- }
462
- }
463
- refreshToken() {
464
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
465
- const sessionData = this.getSessionData();
466
- if (!sessionData.refreshToken) {
467
- throw new Error("No refresh token available");
468
- }
469
- const oauth2Client = yield this.getOauth2Client();
470
- const tokens = yield oauth2Client.refreshAccessToken(
471
- sessionData.refreshToken
472
- );
473
- const session = _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, sessionData), {
474
- idToken: tokens.id_token,
475
- authenticated: true,
476
- accessToken: tokens.access_token,
477
- refreshToken: tokens.refresh_token,
478
- timestamp: Date.now(),
479
- expiresIn: tokens.expires_in
480
- });
481
- this.updateSessionData(session);
482
- this.setupTokenRefresh(session);
483
- return session;
484
- });
485
- }
486
- getUserInfo() {
487
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
488
- const sessionData = this.getSessionData();
489
- if (!sessionData.accessToken) {
490
- throw new Error("No access token available");
491
- }
492
- const userInfoService = yield this.getUserInfoService();
493
- return userInfoService.getUserInfo(
494
- sessionData.accessToken,
495
- sessionData.idToken || null
496
- );
497
- });
498
- }
499
- /**
500
- * Uses the jose library to validate a JWT token using the OAuth JWKS endpoint
501
- * @returns {Promise<jose.JWTPayload>}
502
- * @throws {Error} if the token is invalid
503
- * @param tokens
504
- */
505
- validateTokens(tokens) {
506
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
507
- const endpoints = yield this.getEndpoints();
508
- if (!this.oauth2Client) yield this.init();
509
- return _chunkVXIWRZWUjs.validateOauth2Tokens.call(void 0,
510
- tokens,
511
- endpoints,
512
- this.oauth2Client,
513
- this.oauthServer
514
- );
515
- });
516
- }
517
- validateExistingSession() {
518
- return _chunkCRTRMMJ7js.__async.call(void 0, this, null, function* () {
519
- const sessionData = this.getSessionData();
520
- try {
521
- if (!sessionData.idToken || !sessionData.accessToken) {
522
- const unAuthenticatedSession = _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, sessionData), { authenticated: false });
523
- this.updateSessionData(unAuthenticatedSession);
524
- return unAuthenticatedSession;
525
- }
526
- yield this.validateTokens({
527
- id_token: sessionData.idToken,
528
- access_token: sessionData.accessToken,
529
- refresh_token: sessionData.refreshToken
530
- });
531
- sessionData.authenticated = true;
532
- return sessionData;
533
- } catch (error) {
534
- console.warn("Failed to validate existing tokens", error);
535
- const unAuthenticatedSession = {
536
- authenticated: false
537
- };
538
- this.updateSessionData(unAuthenticatedSession);
539
- return unAuthenticatedSession;
540
- }
541
- });
542
- }
543
- };
544
-
545
- // src/react/components/CivicAuthIframeModal.tsx
546
-
547
-
548
- // src/react/components/LoadingIcon.tsx
549
-
550
- var LoadingIcon = () => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { role: "status", children: [
551
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
552
- "svg",
553
- {
554
- "aria-hidden": "true",
555
- className: "inline h-8 w-8 animate-spin fill-neutral-600 text-neutral-200 dark:fill-neutral-300 dark:text-neutral-600",
556
- viewBox: "0 0 100 101",
557
- fill: "none",
558
- xmlns: "http://www.w3.org/2000/svg",
559
- children: [
560
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
561
- "path",
562
- {
563
- d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",
564
- fill: "currentColor"
565
- }
566
- ),
567
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
568
- "path",
569
- {
570
- d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",
571
- fill: "currentFill"
572
- }
573
- )
574
- ]
575
- }
576
- ),
577
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: "Loading..." })
578
- ] });
579
-
580
- // src/react/components/CloseIcon.tsx
581
-
582
- var CloseIcon = () => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
583
- "svg",
584
- {
585
- xmlns: "http://www.w3.org/2000/svg",
586
- width: "24",
587
- height: "24",
588
- viewBox: "0 0 24 24",
589
- fill: "none",
590
- stroke: "currentColor",
591
- strokeWidth: "2",
592
- strokeLinecap: "round",
593
- strokeLinejoin: "round",
594
- className: "lucide lucide-x",
595
- children: [
596
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M18 6 6 18" }),
597
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "m6 6 12 12" })
598
- ]
599
- }
600
- );
601
-
602
- // src/react/components/CivicAuthIframe.tsx
603
-
604
-
605
- var CivicAuthIframe = _react.forwardRef.call(void 0,
606
- ({ authUrl, onLoad }, ref) => {
607
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
608
- "iframe",
609
- {
610
- id: _chunkVXIWRZWUjs.IFRAME_ID,
611
- ref,
612
- src: authUrl,
613
- className: "h-96 w-80 border-none",
614
- onLoad
615
- }
616
- );
617
- }
618
- );
619
- CivicAuthIframe.displayName = "CivicAuthIframe";
620
-
621
- // src/react/components/CivicAuthIframeModal.tsx
622
-
623
- var CivicAuthIframeModal = ({
624
- authUrl,
625
- redirectUri,
626
- setAuthResponseUrl,
627
- onClose,
628
- iframeRef,
629
- redirectInProgress = false,
630
- closeOnRedirect = true
631
- }) => {
632
- const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
633
- const processIframeUrl = _react.useCallback.call(void 0, () => {
634
- if (iframeRef.current && iframeRef.current.contentWindow) {
635
- try {
636
- const iframeUrl = iframeRef.current.contentWindow.location.href;
637
- if (iframeUrl.startsWith(redirectUri)) {
638
- setAuthResponseUrl(iframeUrl);
639
- if (closeOnRedirect) onClose();
640
- return true;
641
- }
642
- } catch (e) {
643
- console.log("Waiting for redirect...");
644
- }
645
- }
646
- return false;
647
- }, [closeOnRedirect, iframeRef, onClose, redirectUri, setAuthResponseUrl]);
648
- const intervalId = _react.useRef.call(void 0, );
649
- const handleEscape = _react.useCallback.call(void 0,
650
- (event) => {
651
- if (event.key === "Escape") {
652
- onClose();
653
- }
654
- },
655
- [onClose]
656
- );
657
- _react.useEffect.call(void 0, () => {
658
- window.addEventListener("keydown", handleEscape);
659
- return () => window.removeEventListener("keydown", handleEscape);
660
- });
661
- const handleIframeLoad = () => {
662
- setIsLoading(false);
663
- console.log("handleIframeLoad");
664
- if (processIframeUrl() && intervalId.current) {
665
- clearInterval(intervalId.current);
666
- }
667
- };
668
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
669
- "div",
670
- {
671
- className: "absolute left-0 top-0 z-50 flex h-screen w-screen items-center justify-center bg-neutral-950 bg-opacity-50",
672
- onClick: onClose,
673
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
674
- "div",
675
- {
676
- className: "relative rounded-3xl bg-white p-6 shadow-lg",
677
- onClick: (e) => e.stopPropagation(),
678
- children: [
679
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
680
- "button",
681
- {
682
- className: "absolute right-4 top-4 flex cursor-pointer items-center justify-center border-none bg-transparent p-1 text-neutral-400",
683
- onClick: onClose,
684
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CloseIcon, {})
685
- }
686
- ),
687
- (isLoading || redirectInProgress) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-neutral-100", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingIcon, {}) }),
688
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
689
- CivicAuthIframe,
690
- {
691
- ref: iframeRef,
692
- authUrl,
693
- onLoad: handleIframeLoad
694
- }
695
- )
696
- ]
697
- }
698
- )
699
- }
700
- );
701
- };
702
-
703
- // src/config.ts
704
- var authConfig = {
705
- // TODO change this to the production URL once we're out of beta
706
- oauthServer: "https://auth-dev.civic.com/oauth/"
707
- };
708
-
709
- // src/lib/windowUtil.ts
710
- var isWindowInIframe = (window2) => {
711
- var _a;
712
- if (typeof window2 !== "undefined") {
713
- try {
714
- if (((_a = window2 == null ? void 0 : window2.frameElement) == null ? void 0 : _a.id) === "civic-auth-iframe") {
715
- return true;
716
- }
717
- } catch (_e) {
718
- return false;
719
- }
720
- }
721
- return false;
722
- };
723
-
724
- // src/shared/AuthProvider.tsx
725
-
726
- var globalThisObject;
727
- if (typeof window !== "undefined") {
728
- globalThisObject = window;
729
- } else if (typeof global !== "undefined") {
730
- globalThisObject = global;
731
- } else {
732
- globalThisObject = Function("return this")();
733
- }
734
- globalThisObject.globalThis = globalThisObject;
735
- var AuthProvider = ({
736
- children,
737
- clientId,
738
- redirectUrl: inputRedirectUrl,
739
- config = authConfig,
740
- nonce,
741
- onSignIn,
742
- onSignOut,
743
- authServiceImpl,
744
- serverSideTokenExchange
745
- }) => {
746
- const [iframeUrl, setIframeUrl] = _react.useState.call(void 0, null);
747
- const [currentUrl, setCurrentUrl] = _react.useState.call(void 0, null);
748
- const [isInIframe, setIsInIframe] = _react.useState.call(void 0, false);
749
- const [authResponseUrl, setAuthResponseUrl] = _react.useState.call(void 0, null);
750
- const [tokenExchangeError, setTokenExchangeError] = _react.useState.call(void 0, );
751
- const queryClient3 = _reactquery.useQueryClient.call(void 0, );
752
- const iframeRef = _react.useRef.call(void 0, null);
753
- _react.useEffect.call(void 0, () => {
754
- if (typeof globalThis.window !== "undefined") {
755
- setCurrentUrl(globalThis.window.location.href);
756
- const isInIframeVal = isWindowInIframe(globalThis.window);
757
- setIsInIframe(isInIframeVal);
758
- }
759
- }, []);
760
- const redirectUrl = _react.useMemo.call(void 0,
761
- () => (inputRedirectUrl || currentUrl || "").split("?")[0],
762
- [currentUrl, inputRedirectUrl]
763
- );
764
- const authService = _react.useMemo.call(void 0,
765
- () => currentUrl ? authServiceImpl || new AuthSessionServiceImpl(
766
- clientId,
767
- redirectUrl,
768
- config == null ? void 0 : config.oauthServer,
769
- config == null ? void 0 : config.endpoints
770
- ) : null,
771
- [currentUrl, clientId, redirectUrl, config, authServiceImpl]
772
- );
773
- const [userInfoService, setUserInfoService] = _react.useState.call(void 0, );
774
- _react.useEffect.call(void 0, () => {
775
- if (!authService) return;
776
- authService.getUserInfoService().then(setUserInfoService);
777
- }, [authService]);
778
- const {
779
- data: session,
780
- isLoading,
781
- error
782
- } = _reactquery.useQuery.call(void 0, {
783
- queryKey: ["session", authResponseUrl, iframeUrl, currentUrl, isInIframe],
784
- queryFn: () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
785
- if (!authService) {
786
- return { authenticated: false };
787
- }
788
- const url = new URL(
789
- authResponseUrl ? authResponseUrl : globalThis.window.location.href || ""
790
- );
791
- const code = url.searchParams.get("code");
792
- if (code && !isInIframe && !serverSideTokenExchange) {
793
- try {
794
- console.log("AuthProvider useQuery code", { isInIframe, code });
795
- const newSession = yield authService.tokenExchange(url.toString());
796
- onSignIn == null ? void 0 : onSignIn();
797
- return newSession;
798
- } catch (error2) {
799
- setTokenExchangeError(error2);
800
- onSignIn == null ? void 0 : onSignIn(
801
- error2 instanceof Error ? error2 : new Error("Failed to sign in")
802
- );
803
- return { authenticated: false };
804
- }
805
- }
806
- const existingSessionData = yield authService.validateExistingSession();
807
- if (existingSessionData.authenticated) {
808
- return existingSessionData;
809
- }
810
- return existingSessionData;
811
- })
812
- });
813
- const signOutMutation = _reactquery.useMutation.call(void 0, {
814
- mutationFn: () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
815
- authService == null ? void 0 : authService.updateSessionData({});
816
- setIframeUrl(null);
817
- setAuthResponseUrl(null);
818
- onSignOut == null ? void 0 : onSignOut();
819
- }),
820
- onSuccess: () => {
821
- queryClient3.setQueryData(
822
- ["session", authResponseUrl, iframeUrl, currentUrl, isInIframe],
823
- null
824
- );
825
- }
826
- });
827
- const signIn = _react.useCallback.call(void 0,
828
- (overrideDisplayMode = "iframe") => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
829
- if (!authService) return;
830
- const url = yield authService.getAuthorizationUrl(
831
- // This is the default scope. We will eventually pull this from the partner dashboard
832
- _chunkVXIWRZWUjs.DEFAULT_SCOPES,
833
- overrideDisplayMode,
834
- nonce
835
- );
836
- if (overrideDisplayMode === "iframe") {
837
- setIframeUrl(url);
838
- return;
839
- }
840
- authService.loadAuthorizationUrl(url, overrideDisplayMode);
841
- }),
842
- [authService, nonce]
843
- );
844
- const isAuthenticated = _react.useMemo.call(void 0,
845
- () => session ? session.authenticated : false,
846
- [session]
847
- );
848
- const value = _react.useMemo.call(void 0,
849
- () => ({
850
- isLoading,
851
- error,
852
- signOut: () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
853
- yield signOutMutation.mutateAsync();
854
- }),
855
- isAuthenticated,
856
- signIn
857
- }),
858
- [isLoading, error, signOutMutation, isAuthenticated, signIn]
859
- );
860
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AuthContext.Provider, { value, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SessionProvider, { session, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenProvider, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, UserProvider, { userInfoService, children: [
861
- !isInIframe && iframeUrl && !(session == null ? void 0 : session.authenticated) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
862
- CivicAuthIframeModal,
863
- {
864
- iframeRef,
865
- authUrl: iframeUrl,
866
- redirectUri: redirectUrl,
867
- setAuthResponseUrl,
868
- onClose: () => setIframeUrl(null)
869
- }
870
- ),
871
- (tokenExchangeError || isLoading || error || isInIframe && !(tokenExchangeError || error)) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute left-0 top-0 z-50 flex h-screen w-screen items-center justify-center bg-white", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-white", children: tokenExchangeError || error ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
872
- "Error: ",
873
- (tokenExchangeError || error).message
874
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingIcon, {}) }) }),
875
- children
876
- ] }) }) }) });
877
- };
878
-
879
- // src/shared/CivicAuthProvider.tsx
880
-
881
- require('@civic/auth/styles.css');
882
-
883
- var queryClient = new (0, _reactquery.QueryClient)();
884
- var CivicAuthProvider = (_a) => {
885
- var _b = _a, { children } = _b, props = _chunkCRTRMMJ7js.__objRest.call(void 0, _b, ["children"]);
886
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactquery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AuthProvider, _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, props), { children })) });
887
- };
888
-
889
- // src/react/providers/NextAuthProvider.tsx
890
-
891
-
892
- // src/react/hooks/useUserCookie.ts
893
-
894
- var _navigationjs = require('next/navigation.js');
895
-
896
-
897
- // src/lib/cookies.ts
898
- var getCookieValue = (key, window2) => {
899
- const cookie = window2.document.cookie;
900
- if (!cookie) return null;
901
- const cookies = cookie.split(";");
902
- for (const c of cookies) {
903
- const [name, value] = c.trim().split("=");
904
- if (name === key) {
905
- try {
906
- return JSON.parse(decodeURIComponent(value));
907
- } catch (e) {
908
- console.log("Error parsing cookie value", e);
909
- return value;
910
- }
911
- }
912
- }
913
- return null;
914
- };
915
-
916
- // src/react/hooks/useUserCookie.ts
917
- var getUserFromCookie = () => {
918
- const userCookie = getCookieValue("user", globalThis.window);
919
- return userCookie;
920
- };
921
- var useUserCookie = () => {
922
- const hasRunRef = _react.useRef.call(void 0, false);
923
- const router = _navigationjs.useRouter.call(void 0, );
924
- const { data: user } = _reactquery.useQuery.call(void 0, {
925
- queryKey: ["user"],
926
- queryFn: () => getUserFromCookie(),
927
- refetchInterval: 2e3,
928
- refetchIntervalInBackground: true,
929
- enabled: !hasRunRef.current,
930
- refetchOnWindowFocus: true
931
- });
932
- _react.useEffect.call(void 0, () => {
933
- if (user) {
934
- if (!hasRunRef.current) {
935
- hasRunRef.current = true;
936
- router.refresh();
937
- }
938
- } else {
939
- hasRunRef.current = false;
940
- }
941
- }, [user, router]);
942
- return user;
943
- };
944
-
945
- // src/react/providers/NextAuthProvider.tsx
946
-
947
-
948
- var queryClient2 = new (0, _reactquery.QueryClient)();
949
- var defaultUserContext = { user: null };
950
- var UserContext2 = _react.createContext.call(void 0, defaultUserContext);
951
- var CivicNextAuthProvider = (_a) => {
952
- var _b = _a, {
953
- children
954
- } = _b, props = _chunkCRTRMMJ7js.__objRest.call(void 0, _b, [
955
- "children"
956
- ]);
957
- const user = useUserCookie();
958
- const [redirectUrl, setRedirectUrl] = _react.useState.call(void 0, "");
959
- const { clientId, oauthServer, callbackUrl, challengeUrl } = _chunkWPISYQG3js.resolveAuthConfig.call(void 0, );
960
- _react.useEffect.call(void 0, () => {
961
- if (typeof globalThis.window !== "undefined") {
962
- const currentUrl = globalThis.window.location.href;
963
- setRedirectUrl(_chunkWPISYQG3js.resolveCallbackUrl.call(void 0, _chunkWPISYQG3js.resolveAuthConfig.call(void 0, ), currentUrl));
964
- }
965
- }, [callbackUrl]);
966
- const authService = _react.useMemo.call(void 0, () => {
967
- if (redirectUrl && clientId && oauthServer) {
968
- return new AuthSessionServiceImpl(clientId, redirectUrl, oauthServer, {
969
- challenge: challengeUrl
970
- });
971
- }
972
- return void 0;
973
- }, [redirectUrl, clientId, oauthServer, challengeUrl]);
974
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactquery.QueryClientProvider, { client: queryClient2, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
975
- AuthProvider,
976
- _chunkCRTRMMJ7js.__spreadProps.call(void 0, _chunkCRTRMMJ7js.__spreadValues.call(void 0, {}, props), {
977
- config: { oauthServer },
978
- clientId,
979
- authServiceImpl: authService,
980
- serverSideTokenExchange: true,
981
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, UserContext2.Provider, { value: user, children })
982
- })
983
- ) });
984
- };
985
- var useNextUser = () => _react.useContext.call(void 0, UserContext2);
986
-
987
- // src/react/hooks/useUser.tsx
988
- var useUser = () => {
989
- const context = _react.useContext.call(void 0, UserContext);
990
- if (!context) {
991
- throw new Error("useUser must be used within a UserProvider");
992
- }
993
- return context;
994
- };
995
-
996
- // src/react/components/UserButton.tsx
997
-
998
-
999
- var ChevronDown = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1000
- "svg",
1001
- {
1002
- xmlns: "http://www.w3.org/2000/svg",
1003
- width: "24",
1004
- height: "24",
1005
- viewBox: "0 0 24 24",
1006
- fill: "none",
1007
- stroke: "currentColor",
1008
- strokeWidth: "2",
1009
- strokeLinecap: "round",
1010
- strokeLinejoin: "round",
1011
- className: "lucide lucide-chevron-down",
1012
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "m6 9 6 6 6-6" })
1013
- }
1014
- );
1015
- var ChevronUp = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1016
- "svg",
1017
- {
1018
- xmlns: "http://www.w3.org/2000/svg",
1019
- width: "24",
1020
- height: "24",
1021
- viewBox: "0 0 24 24",
1022
- fill: "none",
1023
- stroke: "currentColor",
1024
- strokeWidth: "2",
1025
- strokeLinecap: "round",
1026
- strokeLinejoin: "round",
1027
- className: "lucide lucide-chevron-up",
1028
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "m18 15-6-6-6 6" })
1029
- }
1030
- );
1031
- var UserButton = ({
1032
- displayMode,
1033
- className
1034
- }) => {
1035
- const [isOpen, setIsOpen] = _react.useState.call(void 0, false);
1036
- const { signIn, isAuthenticated, signOut } = useAuth();
1037
- const { user } = useUser();
1038
- const handleClickOutside = _react.useCallback.call(void 0, (event) => {
1039
- const target = event.target;
1040
- if (!target.closest("#civic-dropdown-container")) {
1041
- setIsOpen(false);
1042
- }
1043
- }, []);
1044
- const handleSignOut = _react.useCallback.call(void 0, () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
1045
- yield signOut();
1046
- setIsOpen(false);
1047
- }), [signOut]);
1048
- const handleSignIn = _react.useCallback.call(void 0, () => _chunkCRTRMMJ7js.__async.call(void 0, void 0, null, function* () {
1049
- yield signIn(displayMode);
1050
- setIsOpen(false);
1051
- }), [signIn, displayMode]);
1052
- const handleEscape = _react.useCallback.call(void 0, (event) => {
1053
- if (event.key === "Escape") {
1054
- setIsOpen(false);
1055
- }
1056
- }, []);
1057
- _react.useEffect.call(void 0, () => {
1058
- if (isOpen) {
1059
- window.addEventListener("click", handleClickOutside);
1060
- window.addEventListener("keydown", handleEscape);
1061
- }
1062
- return () => {
1063
- window.removeEventListener("click", handleClickOutside);
1064
- window.removeEventListener("keydown", handleEscape);
1065
- };
1066
- }, [handleClickOutside, handleEscape, isOpen]);
1067
- if (isAuthenticated) {
1068
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", id: "civic-dropdown-container", children: [
1069
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1070
- "button",
1071
- {
1072
- className: _chunkVXIWRZWUjs.cn.call(void 0,
1073
- "flex w-full items-center justify-between gap-2 rounded-full border border-neutral-500 px-3 py-2 text-neutral-500 transition-colors hover:bg-neutral-200 hover:bg-opacity-50",
1074
- className
1075
- ),
1076
- onClick: () => setIsOpen((isOpen2) => !isOpen2),
1077
- children: [
1078
- (user == null ? void 0 : user.picture) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "relative flex h-10 w-10 shrink-0 gap-2 overflow-hidden rounded-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1079
- "img",
1080
- {
1081
- className: "h-full w-full object-cover",
1082
- src: user.picture,
1083
- alt: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email)
1084
- }
1085
- ) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {}),
1086
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: (user == null ? void 0 : user.name) || (user == null ? void 0 : user.email) }),
1087
- isOpen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChevronUp, {}) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ChevronDown, {})
1088
- ]
1089
- }
1090
- ),
1091
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1092
- "div",
1093
- {
1094
- className: isOpen ? "absolute right-0 mt-2 w-full rounded-lg bg-white py-2 text-neutral-500 shadow-xl" : "hidden",
1095
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1096
- "button",
1097
- {
1098
- className: "block w-full px-4 py-2 transition-colors hover:bg-neutral-200 hover:bg-opacity-50",
1099
- onClick: handleSignOut,
1100
- children: "Logout"
1101
- }
1102
- ) }) })
1103
- }
1104
- )
1105
- ] });
1106
- }
1107
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1108
- "button",
1109
- {
1110
- className: _chunkVXIWRZWUjs.cn.call(void 0,
1111
- "rounded-full border border-neutral-500 px-3 py-2 transition-colors hover:bg-neutral-200 hover:bg-opacity-50",
1112
- className
1113
- ),
1114
- onClick: handleSignIn,
1115
- children: "Sign in"
1116
- }
1117
- );
1118
- };
1119
-
1120
- // src/react/components/SignInButton.tsx
1121
-
1122
- var SignInButton = ({
1123
- displayMode,
1124
- className
1125
- }) => {
1126
- const { signIn } = useAuth();
1127
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1128
- "button",
1129
- {
1130
- className: _chunkVXIWRZWUjs.cn.call(void 0,
1131
- "rounded-full border border-neutral-500 px-3 py-2 transition-colors hover:bg-neutral-200 hover:bg-opacity-50",
1132
- className
1133
- ),
1134
- onClick: () => signIn(displayMode),
1135
- children: "Sign In"
1136
- }
1137
- );
1138
- };
1139
-
1140
- // src/react/components/SignOutButton.tsx
1141
-
1142
- var SignOutButton = ({ className }) => {
1143
- const { signOut } = useAuth();
1144
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1145
- "button",
1146
- {
1147
- className: _chunkVXIWRZWUjs.cn.call(void 0,
1148
- "rounded-full border border-neutral-500 px-3 py-2 transition-colors hover:bg-neutral-200 hover:bg-opacity-50",
1149
- className
1150
- ),
1151
- onClick: () => signOut(),
1152
- children: "Sign Out"
1153
- }
1154
- );
1155
- };
1156
-
1157
- // src/react/components/NextLogOut.tsx
1158
-
1159
- var NextLogOut = ({ children }) => {
1160
- const config = _chunkWPISYQG3js.resolveAuthConfig.call(void 0, );
1161
- const logoutUrl = `${config.logoutUrl}`;
1162
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: logoutUrl, children });
1163
- };
1164
-
1165
-
1166
-
1167
-
1168
-
1169
-
1170
-
1171
-
1172
-
1173
-
1174
-
1175
-
1176
-
1177
- exports.CivicAuthProvider = CivicAuthProvider; exports.CivicNextAuthProvider = CivicNextAuthProvider; exports.NextLogOut = NextLogOut; exports.SignInButton = SignInButton; exports.SignOutButton = SignOutButton; exports.UserButton = UserButton; exports.useAuth = useAuth; exports.useNextUser = useNextUser; exports.useSession = useSession; exports.useToken = useToken; exports.useUser = useUser; exports.useUserCookie = useUserCookie;
1178
- //# sourceMappingURL=react.js.map