@civic/auth 0.3.7 → 0.3.8-beta.1

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 (777) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +9 -2
  3. package/dist/lib/cookies.d.ts.map +1 -1
  4. package/dist/lib/jwt.d.ts.map +1 -1
  5. package/dist/lib/logger.d.ts.map +1 -1
  6. package/dist/lib/oauth.d.ts.map +1 -1
  7. package/dist/lib/obj.d.ts.map +1 -1
  8. package/dist/lib/postMessage.d.ts.map +1 -1
  9. package/dist/lib/windowUtil.d.ts.map +1 -1
  10. package/dist/nextjs/config.d.ts.map +1 -1
  11. package/dist/nextjs/hooks/useRefresh.d.ts.map +1 -1
  12. package/dist/nextjs/index.d.ts.map +1 -1
  13. package/dist/nextjs/middleware.d.ts +4 -4
  14. package/dist/nextjs/middleware.d.ts.map +1 -1
  15. package/dist/nextjs/middleware.js +9 -7
  16. package/dist/nextjs/middleware.js.map +1 -1
  17. package/dist/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
  18. package/dist/nextjs/providers/NextAuthProvider.js +9 -4
  19. package/dist/nextjs/providers/NextAuthProvider.js.map +1 -1
  20. package/dist/nextjs/routeHandler.d.ts.map +1 -1
  21. package/dist/nextjs/utils.d.ts.map +1 -1
  22. package/dist/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -1
  23. package/dist/reactjs/components/SignInButton.d.ts.map +1 -1
  24. package/dist/reactjs/components/SignOutButton.d.ts.map +1 -1
  25. package/dist/reactjs/components/UserButton.d.ts.map +1 -1
  26. package/dist/reactjs/components/utils.d.ts.map +1 -1
  27. package/dist/reactjs/hooks/useUser.d.ts.map +1 -1
  28. package/dist/reactjs/providers/AuthProvider.d.ts.map +1 -1
  29. package/dist/reactjs/providers/AuthProvider.js +3 -1
  30. package/dist/reactjs/providers/AuthProvider.js.map +1 -1
  31. package/dist/reactjs/providers/CivicAuthProvider.d.ts.map +1 -1
  32. package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
  33. package/dist/shared/components/BlockDisplay.d.ts.map +1 -1
  34. package/dist/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
  35. package/dist/shared/components/CivicAuthIframeContainer.js +4 -1
  36. package/dist/shared/components/CivicAuthIframeContainer.js.map +1 -1
  37. package/dist/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -1
  38. package/dist/shared/components/IFrameAndLoading.d.ts.map +1 -1
  39. package/dist/shared/components/LoadingIcon.d.ts.map +1 -1
  40. package/dist/shared/hooks/useOAuthEndpoints.d.ts.map +1 -1
  41. package/dist/shared/hooks/useRefresh.d.ts.map +1 -1
  42. package/dist/shared/hooks/useSignIn.d.ts.map +1 -1
  43. package/dist/shared/hooks/useSignIn.js +3 -3
  44. package/dist/shared/hooks/useSignIn.js.map +1 -1
  45. package/dist/shared/lib/iframeUtils.d.ts +1 -1
  46. package/dist/shared/lib/iframeUtils.d.ts.map +1 -1
  47. package/dist/shared/lib/iframeUtils.js +2 -2
  48. package/dist/shared/lib/iframeUtils.js.map +1 -1
  49. package/dist/shared/lib/util.d.ts.map +1 -1
  50. package/dist/shared/providers/CivicAuthConfigContext.d.ts.map +1 -1
  51. package/dist/shared/providers/IframeProvider.d.ts +3 -0
  52. package/dist/shared/providers/IframeProvider.d.ts.map +1 -1
  53. package/dist/shared/providers/IframeProvider.js +5 -0
  54. package/dist/shared/providers/IframeProvider.js.map +1 -1
  55. package/dist/shared/providers/SessionProvider.d.ts.map +1 -1
  56. package/dist/shared/providers/TokenProvider.d.ts.map +1 -1
  57. package/dist/shared/providers/UserProvider.d.ts.map +1 -1
  58. package/dist/shared/version.d.ts +1 -1
  59. package/dist/shared/version.d.ts.map +1 -1
  60. package/dist/shared/version.js +1 -1
  61. package/dist/shared/version.js.map +1 -1
  62. package/dist/utils.d.ts.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/cjs/browser/storage.d.ts +0 -10
  65. package/dist/cjs/browser/storage.d.ts.map +0 -1
  66. package/dist/cjs/browser/storage.js +0 -24
  67. package/dist/cjs/browser/storage.js.map +0 -1
  68. package/dist/cjs/config.d.ts +0 -3
  69. package/dist/cjs/config.d.ts.map +0 -1
  70. package/dist/cjs/config.js +0 -8
  71. package/dist/cjs/config.js.map +0 -1
  72. package/dist/cjs/constants.d.ts +0 -15
  73. package/dist/cjs/constants.d.ts.map +0 -1
  74. package/dist/cjs/constants.js +0 -44
  75. package/dist/cjs/constants.js.map +0 -1
  76. package/dist/cjs/index.d.ts +0 -8
  77. package/dist/cjs/index.d.ts.map +0 -1
  78. package/dist/cjs/index.js +0 -11
  79. package/dist/cjs/index.js.map +0 -1
  80. package/dist/cjs/lib/cookies.d.ts +0 -7
  81. package/dist/cjs/lib/cookies.d.ts.map +0 -1
  82. package/dist/cjs/lib/cookies.js +0 -29
  83. package/dist/cjs/lib/cookies.js.map +0 -1
  84. package/dist/cjs/lib/jwt.d.ts +0 -3
  85. package/dist/cjs/lib/jwt.d.ts.map +0 -1
  86. package/dist/cjs/lib/jwt.js +0 -13
  87. package/dist/cjs/lib/jwt.js.map +0 -1
  88. package/dist/cjs/lib/logger.d.ts +0 -26
  89. package/dist/cjs/lib/logger.d.ts.map +0 -1
  90. package/dist/cjs/lib/logger.js +0 -62
  91. package/dist/cjs/lib/logger.js.map +0 -1
  92. package/dist/cjs/lib/oauth.d.ts +0 -19
  93. package/dist/cjs/lib/oauth.d.ts.map +0 -1
  94. package/dist/cjs/lib/oauth.js +0 -74
  95. package/dist/cjs/lib/oauth.js.map +0 -1
  96. package/dist/cjs/lib/obj.d.ts +0 -3
  97. package/dist/cjs/lib/obj.d.ts.map +0 -1
  98. package/dist/cjs/lib/obj.js +0 -21
  99. package/dist/cjs/lib/obj.js.map +0 -1
  100. package/dist/cjs/lib/postMessage.d.ts +0 -4
  101. package/dist/cjs/lib/postMessage.d.ts.map +0 -1
  102. package/dist/cjs/lib/postMessage.js +0 -16
  103. package/dist/cjs/lib/postMessage.js.map +0 -1
  104. package/dist/cjs/lib/windowUtil.d.ts +0 -4
  105. package/dist/cjs/lib/windowUtil.d.ts.map +0 -1
  106. package/dist/cjs/lib/windowUtil.js +0 -35
  107. package/dist/cjs/lib/windowUtil.js.map +0 -1
  108. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts +0 -9
  109. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts.map +0 -1
  110. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js +0 -26
  111. package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js.map +0 -1
  112. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts +0 -11
  113. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +0 -1
  114. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js +0 -21
  115. package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js.map +0 -1
  116. package/dist/cjs/nextjs/config.d.ts +0 -209
  117. package/dist/cjs/nextjs/config.d.ts.map +0 -1
  118. package/dist/cjs/nextjs/config.js +0 -191
  119. package/dist/cjs/nextjs/config.js.map +0 -1
  120. package/dist/cjs/nextjs/cookies.d.ts +0 -16
  121. package/dist/cjs/nextjs/cookies.d.ts.map +0 -1
  122. package/dist/cjs/nextjs/cookies.js +0 -44
  123. package/dist/cjs/nextjs/cookies.js.map +0 -1
  124. package/dist/cjs/nextjs/hooks/index.d.ts +0 -2
  125. package/dist/cjs/nextjs/hooks/index.d.ts.map +0 -1
  126. package/dist/cjs/nextjs/hooks/index.js +0 -6
  127. package/dist/cjs/nextjs/hooks/index.js.map +0 -1
  128. package/dist/cjs/nextjs/hooks/usePrevious.d.ts +0 -2
  129. package/dist/cjs/nextjs/hooks/usePrevious.d.ts.map +0 -1
  130. package/dist/cjs/nextjs/hooks/usePrevious.js +0 -12
  131. package/dist/cjs/nextjs/hooks/usePrevious.js.map +0 -1
  132. package/dist/cjs/nextjs/hooks/useRefresh.d.ts +0 -4
  133. package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +0 -1
  134. package/dist/cjs/nextjs/hooks/useRefresh.js +0 -43
  135. package/dist/cjs/nextjs/hooks/useRefresh.js.map +0 -1
  136. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts +0 -8
  137. package/dist/cjs/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  138. package/dist/cjs/nextjs/hooks/useUserCookie.js +0 -93
  139. package/dist/cjs/nextjs/hooks/useUserCookie.js.map +0 -1
  140. package/dist/cjs/nextjs/index.d.ts +0 -9
  141. package/dist/cjs/nextjs/index.d.ts.map +0 -1
  142. package/dist/cjs/nextjs/index.js +0 -27
  143. package/dist/cjs/nextjs/index.js.map +0 -1
  144. package/dist/cjs/nextjs/middleware/index.d.ts +0 -2
  145. package/dist/cjs/nextjs/middleware/index.d.ts.map +0 -1
  146. package/dist/cjs/nextjs/middleware/index.js +0 -10
  147. package/dist/cjs/nextjs/middleware/index.js.map +0 -1
  148. package/dist/cjs/nextjs/middleware.d.ts +0 -57
  149. package/dist/cjs/nextjs/middleware.d.ts.map +0 -1
  150. package/dist/cjs/nextjs/middleware.js +0 -110
  151. package/dist/cjs/nextjs/middleware.js.map +0 -1
  152. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts +0 -9
  153. package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  154. package/dist/cjs/nextjs/providers/NextAuthProvider.js +0 -102
  155. package/dist/cjs/nextjs/providers/NextAuthProvider.js.map +0 -1
  156. package/dist/cjs/nextjs/routeHandler.d.ts +0 -19
  157. package/dist/cjs/nextjs/routeHandler.d.ts.map +0 -1
  158. package/dist/cjs/nextjs/routeHandler.js +0 -318
  159. package/dist/cjs/nextjs/routeHandler.js.map +0 -1
  160. package/dist/cjs/nextjs/utils.d.ts +0 -3
  161. package/dist/cjs/nextjs/utils.d.ts.map +0 -1
  162. package/dist/cjs/nextjs/utils.js +0 -9
  163. package/dist/cjs/nextjs/utils.js.map +0 -1
  164. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts +0 -17
  165. package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts.map +0 -1
  166. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js +0 -40
  167. package/dist/cjs/reactjs/components/ButtonContentOrLoader.js.map +0 -1
  168. package/dist/cjs/reactjs/components/SignInButton.d.ts +0 -9
  169. package/dist/cjs/reactjs/components/SignInButton.d.ts.map +0 -1
  170. package/dist/cjs/reactjs/components/SignInButton.js +0 -31
  171. package/dist/cjs/reactjs/components/SignInButton.js.map +0 -1
  172. package/dist/cjs/reactjs/components/SignOutButton.d.ts +0 -7
  173. package/dist/cjs/reactjs/components/SignOutButton.d.ts.map +0 -1
  174. package/dist/cjs/reactjs/components/SignOutButton.js +0 -27
  175. package/dist/cjs/reactjs/components/SignOutButton.js.map +0 -1
  176. package/dist/cjs/reactjs/components/UserButton.d.ts +0 -9
  177. package/dist/cjs/reactjs/components/UserButton.d.ts.map +0 -1
  178. package/dist/cjs/reactjs/components/UserButton.js +0 -145
  179. package/dist/cjs/reactjs/components/UserButton.js.map +0 -1
  180. package/dist/cjs/reactjs/components/index.d.ts +0 -6
  181. package/dist/cjs/reactjs/components/index.d.ts.map +0 -1
  182. package/dist/cjs/reactjs/components/index.js +0 -14
  183. package/dist/cjs/reactjs/components/index.js.map +0 -1
  184. package/dist/cjs/reactjs/components/utils.d.ts +0 -13
  185. package/dist/cjs/reactjs/components/utils.d.ts.map +0 -1
  186. package/dist/cjs/reactjs/components/utils.js +0 -31
  187. package/dist/cjs/reactjs/components/utils.js.map +0 -1
  188. package/dist/cjs/reactjs/hooks/index.d.ts +0 -3
  189. package/dist/cjs/reactjs/hooks/index.d.ts.map +0 -1
  190. package/dist/cjs/reactjs/hooks/index.js +0 -8
  191. package/dist/cjs/reactjs/hooks/index.js.map +0 -1
  192. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts +0 -3
  193. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
  194. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js +0 -16
  195. package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js.map +0 -1
  196. package/dist/cjs/reactjs/hooks/useUser.d.ts +0 -4
  197. package/dist/cjs/reactjs/hooks/useUser.d.ts.map +0 -1
  198. package/dist/cjs/reactjs/hooks/useUser.js +0 -15
  199. package/dist/cjs/reactjs/hooks/useUser.js.map +0 -1
  200. package/dist/cjs/reactjs/index.d.ts +0 -6
  201. package/dist/cjs/reactjs/index.d.ts.map +0 -1
  202. package/dist/cjs/reactjs/index.js +0 -32
  203. package/dist/cjs/reactjs/index.js.map +0 -1
  204. package/dist/cjs/reactjs/providers/AuthProvider.d.ts +0 -10
  205. package/dist/cjs/reactjs/providers/AuthProvider.d.ts.map +0 -1
  206. package/dist/cjs/reactjs/providers/AuthProvider.js +0 -91
  207. package/dist/cjs/reactjs/providers/AuthProvider.js.map +0 -1
  208. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts +0 -5
  209. package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts.map +0 -1
  210. package/dist/cjs/reactjs/providers/CivicAuthProvider.js +0 -29
  211. package/dist/cjs/reactjs/providers/CivicAuthProvider.js.map +0 -1
  212. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +0 -17
  213. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +0 -1
  214. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js +0 -147
  215. package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +0 -1
  216. package/dist/cjs/reactjs/providers/index.d.ts +0 -8
  217. package/dist/cjs/reactjs/providers/index.d.ts.map +0 -1
  218. package/dist/cjs/reactjs/providers/index.js +0 -19
  219. package/dist/cjs/reactjs/providers/index.js.map +0 -1
  220. package/dist/cjs/server/ServerAuthenticationResolver.d.ts +0 -20
  221. package/dist/cjs/server/ServerAuthenticationResolver.d.ts.map +0 -1
  222. package/dist/cjs/server/ServerAuthenticationResolver.js +0 -71
  223. package/dist/cjs/server/ServerAuthenticationResolver.js.map +0 -1
  224. package/dist/cjs/server/config.d.ts +0 -11
  225. package/dist/cjs/server/config.d.ts.map +0 -1
  226. package/dist/cjs/server/config.js +0 -3
  227. package/dist/cjs/server/config.js.map +0 -1
  228. package/dist/cjs/server/index.d.ts +0 -9
  229. package/dist/cjs/server/index.d.ts.map +0 -1
  230. package/dist/cjs/server/index.js +0 -21
  231. package/dist/cjs/server/index.js.map +0 -1
  232. package/dist/cjs/server/login.d.ts +0 -17
  233. package/dist/cjs/server/login.d.ts.map +0 -1
  234. package/dist/cjs/server/login.js +0 -42
  235. package/dist/cjs/server/login.js.map +0 -1
  236. package/dist/cjs/server/logout.d.ts +0 -7
  237. package/dist/cjs/server/logout.d.ts.map +0 -1
  238. package/dist/cjs/server/logout.js +0 -26
  239. package/dist/cjs/server/logout.js.map +0 -1
  240. package/dist/cjs/server/refresh.d.ts +0 -7
  241. package/dist/cjs/server/refresh.d.ts.map +0 -1
  242. package/dist/cjs/server/refresh.js +0 -16
  243. package/dist/cjs/server/refresh.js.map +0 -1
  244. package/dist/cjs/services/AuthenticationService.d.ts +0 -93
  245. package/dist/cjs/services/AuthenticationService.d.ts.map +0 -1
  246. package/dist/cjs/services/AuthenticationService.js +0 -372
  247. package/dist/cjs/services/AuthenticationService.js.map +0 -1
  248. package/dist/cjs/services/PKCE.d.ts +0 -20
  249. package/dist/cjs/services/PKCE.d.ts.map +0 -1
  250. package/dist/cjs/services/PKCE.js +0 -50
  251. package/dist/cjs/services/PKCE.js.map +0 -1
  252. package/dist/cjs/services/types.d.ts +0 -24
  253. package/dist/cjs/services/types.d.ts.map +0 -1
  254. package/dist/cjs/services/types.js +0 -11
  255. package/dist/cjs/services/types.js.map +0 -1
  256. package/dist/cjs/shared/components/BlockDisplay.d.ts +0 -6
  257. package/dist/cjs/shared/components/BlockDisplay.d.ts.map +0 -1
  258. package/dist/cjs/shared/components/BlockDisplay.js +0 -32
  259. package/dist/cjs/shared/components/BlockDisplay.js.map +0 -1
  260. package/dist/cjs/shared/components/CivicAuthIframe.d.ts +0 -9
  261. package/dist/cjs/shared/components/CivicAuthIframe.d.ts.map +0 -1
  262. package/dist/cjs/shared/components/CivicAuthIframe.js +0 -66
  263. package/dist/cjs/shared/components/CivicAuthIframe.js.map +0 -1
  264. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts +0 -14
  265. package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  266. package/dist/cjs/shared/components/CivicAuthIframeContainer.js +0 -158
  267. package/dist/cjs/shared/components/CivicAuthIframeContainer.js.map +0 -1
  268. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts +0 -6
  269. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +0 -1
  270. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js +0 -21
  271. package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js.map +0 -1
  272. package/dist/cjs/shared/components/CloseIcon.d.ts +0 -3
  273. package/dist/cjs/shared/components/CloseIcon.d.ts.map +0 -1
  274. package/dist/cjs/shared/components/CloseIcon.js +0 -7
  275. package/dist/cjs/shared/components/CloseIcon.js.map +0 -1
  276. package/dist/cjs/shared/components/IFrameAndLoading.d.ts +0 -7
  277. package/dist/cjs/shared/components/IFrameAndLoading.d.ts.map +0 -1
  278. package/dist/cjs/shared/components/IFrameAndLoading.js +0 -39
  279. package/dist/cjs/shared/components/IFrameAndLoading.js.map +0 -1
  280. package/dist/cjs/shared/components/LoadingIcon.d.ts +0 -6
  281. package/dist/cjs/shared/components/LoadingIcon.d.ts.map +0 -1
  282. package/dist/cjs/shared/components/LoadingIcon.js +0 -28
  283. package/dist/cjs/shared/components/LoadingIcon.js.map +0 -1
  284. package/dist/cjs/shared/components/SVGLoading.d.ts +0 -4
  285. package/dist/cjs/shared/components/SVGLoading.d.ts.map +0 -1
  286. package/dist/cjs/shared/components/SVGLoading.js +0 -30
  287. package/dist/cjs/shared/components/SVGLoading.js.map +0 -1
  288. package/dist/cjs/shared/hooks/index.d.ts +0 -11
  289. package/dist/cjs/shared/hooks/index.d.ts.map +0 -1
  290. package/dist/cjs/shared/hooks/index.js +0 -24
  291. package/dist/cjs/shared/hooks/index.js.map +0 -1
  292. package/dist/cjs/shared/hooks/useAuth.d.ts +0 -3
  293. package/dist/cjs/shared/hooks/useAuth.d.ts.map +0 -1
  294. package/dist/cjs/shared/hooks/useAuth.js +0 -15
  295. package/dist/cjs/shared/hooks/useAuth.js.map +0 -1
  296. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts +0 -3
  297. package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts.map +0 -1
  298. package/dist/cjs/shared/hooks/useCivicAuthConfig.js +0 -13
  299. package/dist/cjs/shared/hooks/useCivicAuthConfig.js.map +0 -1
  300. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts +0 -3
  301. package/dist/cjs/shared/hooks/useCurrentUrl.d.ts.map +0 -1
  302. package/dist/cjs/shared/hooks/useCurrentUrl.js +0 -27
  303. package/dist/cjs/shared/hooks/useCurrentUrl.js.map +0 -1
  304. package/dist/cjs/shared/hooks/useIframe.d.ts +0 -3
  305. package/dist/cjs/shared/hooks/useIframe.d.ts.map +0 -1
  306. package/dist/cjs/shared/hooks/useIframe.js +0 -16
  307. package/dist/cjs/shared/hooks/useIframe.js.map +0 -1
  308. package/dist/cjs/shared/hooks/useIsInIframe.d.ts +0 -3
  309. package/dist/cjs/shared/hooks/useIsInIframe.d.ts.map +0 -1
  310. package/dist/cjs/shared/hooks/useIsInIframe.js +0 -17
  311. package/dist/cjs/shared/hooks/useIsInIframe.js.map +0 -1
  312. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts +0 -4
  313. package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts.map +0 -1
  314. package/dist/cjs/shared/hooks/useOAuthEndpoints.js +0 -17
  315. package/dist/cjs/shared/hooks/useOAuthEndpoints.js.map +0 -1
  316. package/dist/cjs/shared/hooks/useRefresh.d.ts +0 -4
  317. package/dist/cjs/shared/hooks/useRefresh.d.ts.map +0 -1
  318. package/dist/cjs/shared/hooks/useRefresh.js +0 -41
  319. package/dist/cjs/shared/hooks/useRefresh.js.map +0 -1
  320. package/dist/cjs/shared/hooks/useSession.d.ts +0 -3
  321. package/dist/cjs/shared/hooks/useSession.d.ts.map +0 -1
  322. package/dist/cjs/shared/hooks/useSession.js +0 -16
  323. package/dist/cjs/shared/hooks/useSession.js.map +0 -1
  324. package/dist/cjs/shared/hooks/useSignIn.d.ts +0 -17
  325. package/dist/cjs/shared/hooks/useSignIn.d.ts.map +0 -1
  326. package/dist/cjs/shared/hooks/useSignIn.js +0 -171
  327. package/dist/cjs/shared/hooks/useSignIn.js.map +0 -1
  328. package/dist/cjs/shared/hooks/useToken.d.ts +0 -3
  329. package/dist/cjs/shared/hooks/useToken.d.ts.map +0 -1
  330. package/dist/cjs/shared/hooks/useToken.js +0 -15
  331. package/dist/cjs/shared/hooks/useToken.js.map +0 -1
  332. package/dist/cjs/shared/hooks/useWindowFocused.d.ts +0 -5
  333. package/dist/cjs/shared/hooks/useWindowFocused.d.ts.map +0 -1
  334. package/dist/cjs/shared/hooks/useWindowFocused.js +0 -24
  335. package/dist/cjs/shared/hooks/useWindowFocused.js.map +0 -1
  336. package/dist/cjs/shared/index.d.ts +0 -7
  337. package/dist/cjs/shared/index.d.ts.map +0 -1
  338. package/dist/cjs/shared/index.js +0 -25
  339. package/dist/cjs/shared/index.js.map +0 -1
  340. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts +0 -14
  341. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts.map +0 -1
  342. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js +0 -52
  343. package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js.map +0 -1
  344. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts +0 -9
  345. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts.map +0 -1
  346. package/dist/cjs/shared/lib/BrowserCookieStorage.js +0 -60
  347. package/dist/cjs/shared/lib/BrowserCookieStorage.js.map +0 -1
  348. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts +0 -16
  349. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  350. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js +0 -65
  351. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  352. package/dist/cjs/shared/lib/UserSession.d.ts +0 -17
  353. package/dist/cjs/shared/lib/UserSession.d.ts.map +0 -1
  354. package/dist/cjs/shared/lib/UserSession.js +0 -27
  355. package/dist/cjs/shared/lib/UserSession.js.map +0 -1
  356. package/dist/cjs/shared/lib/iframeUtils.d.ts +0 -6
  357. package/dist/cjs/shared/lib/iframeUtils.d.ts.map +0 -1
  358. package/dist/cjs/shared/lib/iframeUtils.js +0 -11
  359. package/dist/cjs/shared/lib/iframeUtils.js.map +0 -1
  360. package/dist/cjs/shared/lib/session.d.ts +0 -4
  361. package/dist/cjs/shared/lib/session.d.ts.map +0 -1
  362. package/dist/cjs/shared/lib/session.js +0 -48
  363. package/dist/cjs/shared/lib/session.js.map +0 -1
  364. package/dist/cjs/shared/lib/storage.d.ts +0 -35
  365. package/dist/cjs/shared/lib/storage.d.ts.map +0 -1
  366. package/dist/cjs/shared/lib/storage.js +0 -21
  367. package/dist/cjs/shared/lib/storage.js.map +0 -1
  368. package/dist/cjs/shared/lib/types.d.ts +0 -39
  369. package/dist/cjs/shared/lib/types.d.ts.map +0 -1
  370. package/dist/cjs/shared/lib/types.js +0 -22
  371. package/dist/cjs/shared/lib/types.js.map +0 -1
  372. package/dist/cjs/shared/lib/util.d.ts +0 -40
  373. package/dist/cjs/shared/lib/util.d.ts.map +0 -1
  374. package/dist/cjs/shared/lib/util.js +0 -239
  375. package/dist/cjs/shared/lib/util.js.map +0 -1
  376. package/dist/cjs/shared/providers/AuthContext.d.ts +0 -12
  377. package/dist/cjs/shared/providers/AuthContext.d.ts.map +0 -1
  378. package/dist/cjs/shared/providers/AuthContext.js +0 -7
  379. package/dist/cjs/shared/providers/AuthContext.js.map +0 -1
  380. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts +0 -19
  381. package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts.map +0 -1
  382. package/dist/cjs/shared/providers/CivicAuthConfigContext.js +0 -59
  383. package/dist/cjs/shared/providers/CivicAuthConfigContext.js.map +0 -1
  384. package/dist/cjs/shared/providers/IframeProvider.d.ts +0 -25
  385. package/dist/cjs/shared/providers/IframeProvider.d.ts.map +0 -1
  386. package/dist/cjs/shared/providers/IframeProvider.js +0 -63
  387. package/dist/cjs/shared/providers/IframeProvider.js.map +0 -1
  388. package/dist/cjs/shared/providers/SessionProvider.d.ts +0 -19
  389. package/dist/cjs/shared/providers/SessionProvider.d.ts.map +0 -1
  390. package/dist/cjs/shared/providers/SessionProvider.js +0 -28
  391. package/dist/cjs/shared/providers/SessionProvider.js.map +0 -1
  392. package/dist/cjs/shared/providers/TokenProvider.d.ts +0 -17
  393. package/dist/cjs/shared/providers/TokenProvider.d.ts.map +0 -1
  394. package/dist/cjs/shared/providers/TokenProvider.js +0 -39
  395. package/dist/cjs/shared/providers/TokenProvider.js.map +0 -1
  396. package/dist/cjs/shared/providers/UserProvider.d.ts +0 -26
  397. package/dist/cjs/shared/providers/UserProvider.d.ts.map +0 -1
  398. package/dist/cjs/shared/providers/UserProvider.js +0 -69
  399. package/dist/cjs/shared/providers/UserProvider.js.map +0 -1
  400. package/dist/cjs/shared/providers/types.d.ts +0 -15
  401. package/dist/cjs/shared/providers/types.d.ts.map +0 -1
  402. package/dist/cjs/shared/providers/types.js +0 -3
  403. package/dist/cjs/shared/providers/types.js.map +0 -1
  404. package/dist/cjs/shared/version.d.ts +0 -2
  405. package/dist/cjs/shared/version.d.ts.map +0 -1
  406. package/dist/cjs/shared/version.js +0 -6
  407. package/dist/cjs/shared/version.js.map +0 -1
  408. package/dist/cjs/types.d.ts +0 -163
  409. package/dist/cjs/types.d.ts.map +0 -1
  410. package/dist/cjs/types.js +0 -20
  411. package/dist/cjs/types.js.map +0 -1
  412. package/dist/cjs/utils.d.ts +0 -15
  413. package/dist/cjs/utils.d.ts.map +0 -1
  414. package/dist/cjs/utils.js +0 -47
  415. package/dist/cjs/utils.js.map +0 -1
  416. package/dist/cjs/version.d.ts +0 -2
  417. package/dist/cjs/version.d.ts.map +0 -1
  418. package/dist/cjs/version.js +0 -6
  419. package/dist/cjs/version.js.map +0 -1
  420. package/dist/esm/browser/storage.d.ts +0 -10
  421. package/dist/esm/browser/storage.d.ts.map +0 -1
  422. package/dist/esm/browser/storage.js +0 -20
  423. package/dist/esm/browser/storage.js.map +0 -1
  424. package/dist/esm/config.d.ts +0 -3
  425. package/dist/esm/config.d.ts.map +0 -1
  426. package/dist/esm/config.js +0 -5
  427. package/dist/esm/config.js.map +0 -1
  428. package/dist/esm/constants.d.ts +0 -15
  429. package/dist/esm/constants.d.ts.map +0 -1
  430. package/dist/esm/constants.js +0 -29
  431. package/dist/esm/constants.js.map +0 -1
  432. package/dist/esm/index.d.ts +0 -8
  433. package/dist/esm/index.d.ts.map +0 -1
  434. package/dist/esm/index.js +0 -6
  435. package/dist/esm/index.js.map +0 -1
  436. package/dist/esm/lib/cookies.d.ts +0 -7
  437. package/dist/esm/lib/cookies.d.ts.map +0 -1
  438. package/dist/esm/lib/cookies.js +0 -26
  439. package/dist/esm/lib/cookies.js.map +0 -1
  440. package/dist/esm/lib/jwt.d.ts +0 -3
  441. package/dist/esm/lib/jwt.d.ts.map +0 -1
  442. package/dist/esm/lib/jwt.js +0 -9
  443. package/dist/esm/lib/jwt.js.map +0 -1
  444. package/dist/esm/lib/logger.d.ts +0 -26
  445. package/dist/esm/lib/logger.d.ts.map +0 -1
  446. package/dist/esm/lib/logger.js +0 -55
  447. package/dist/esm/lib/logger.js.map +0 -1
  448. package/dist/esm/lib/oauth.d.ts +0 -19
  449. package/dist/esm/lib/oauth.d.ts.map +0 -1
  450. package/dist/esm/lib/oauth.js +0 -67
  451. package/dist/esm/lib/oauth.js.map +0 -1
  452. package/dist/esm/lib/obj.d.ts +0 -3
  453. package/dist/esm/lib/obj.d.ts.map +0 -1
  454. package/dist/esm/lib/obj.js +0 -18
  455. package/dist/esm/lib/obj.js.map +0 -1
  456. package/dist/esm/lib/postMessage.d.ts +0 -4
  457. package/dist/esm/lib/postMessage.d.ts.map +0 -1
  458. package/dist/esm/lib/postMessage.js +0 -13
  459. package/dist/esm/lib/postMessage.js.map +0 -1
  460. package/dist/esm/lib/windowUtil.d.ts +0 -4
  461. package/dist/esm/lib/windowUtil.d.ts.map +0 -1
  462. package/dist/esm/lib/windowUtil.js +0 -31
  463. package/dist/esm/lib/windowUtil.js.map +0 -1
  464. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts +0 -9
  465. package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts.map +0 -1
  466. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js +0 -22
  467. package/dist/esm/nextjs/NextClientAuthenticationRefresher.js.map +0 -1
  468. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts +0 -11
  469. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +0 -1
  470. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js +0 -17
  471. package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js.map +0 -1
  472. package/dist/esm/nextjs/config.d.ts +0 -209
  473. package/dist/esm/nextjs/config.d.ts.map +0 -1
  474. package/dist/esm/nextjs/config.js +0 -186
  475. package/dist/esm/nextjs/config.js.map +0 -1
  476. package/dist/esm/nextjs/cookies.d.ts +0 -16
  477. package/dist/esm/nextjs/cookies.d.ts.map +0 -1
  478. package/dist/esm/nextjs/cookies.js +0 -41
  479. package/dist/esm/nextjs/cookies.js.map +0 -1
  480. package/dist/esm/nextjs/hooks/index.d.ts +0 -2
  481. package/dist/esm/nextjs/hooks/index.d.ts.map +0 -1
  482. package/dist/esm/nextjs/hooks/index.js +0 -2
  483. package/dist/esm/nextjs/hooks/index.js.map +0 -1
  484. package/dist/esm/nextjs/hooks/usePrevious.d.ts +0 -2
  485. package/dist/esm/nextjs/hooks/usePrevious.d.ts.map +0 -1
  486. package/dist/esm/nextjs/hooks/usePrevious.js +0 -9
  487. package/dist/esm/nextjs/hooks/usePrevious.js.map +0 -1
  488. package/dist/esm/nextjs/hooks/useRefresh.d.ts +0 -4
  489. package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +0 -1
  490. package/dist/esm/nextjs/hooks/useRefresh.js +0 -40
  491. package/dist/esm/nextjs/hooks/useRefresh.js.map +0 -1
  492. package/dist/esm/nextjs/hooks/useUserCookie.d.ts +0 -8
  493. package/dist/esm/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  494. package/dist/esm/nextjs/hooks/useUserCookie.js +0 -89
  495. package/dist/esm/nextjs/hooks/useUserCookie.js.map +0 -1
  496. package/dist/esm/nextjs/index.d.ts +0 -9
  497. package/dist/esm/nextjs/index.d.ts.map +0 -1
  498. package/dist/esm/nextjs/index.js +0 -17
  499. package/dist/esm/nextjs/index.js.map +0 -1
  500. package/dist/esm/nextjs/middleware/index.d.ts +0 -2
  501. package/dist/esm/nextjs/middleware/index.d.ts.map +0 -1
  502. package/dist/esm/nextjs/middleware/index.js +0 -4
  503. package/dist/esm/nextjs/middleware/index.js.map +0 -1
  504. package/dist/esm/nextjs/middleware.d.ts +0 -57
  505. package/dist/esm/nextjs/middleware.d.ts.map +0 -1
  506. package/dist/esm/nextjs/middleware.js +0 -101
  507. package/dist/esm/nextjs/middleware.js.map +0 -1
  508. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts +0 -9
  509. package/dist/esm/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  510. package/dist/esm/nextjs/providers/NextAuthProvider.js +0 -99
  511. package/dist/esm/nextjs/providers/NextAuthProvider.js.map +0 -1
  512. package/dist/esm/nextjs/routeHandler.d.ts +0 -19
  513. package/dist/esm/nextjs/routeHandler.d.ts.map +0 -1
  514. package/dist/esm/nextjs/routeHandler.js +0 -312
  515. package/dist/esm/nextjs/routeHandler.js.map +0 -1
  516. package/dist/esm/nextjs/utils.d.ts +0 -3
  517. package/dist/esm/nextjs/utils.d.ts.map +0 -1
  518. package/dist/esm/nextjs/utils.js +0 -5
  519. package/dist/esm/nextjs/utils.js.map +0 -1
  520. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts +0 -17
  521. package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts.map +0 -1
  522. package/dist/esm/reactjs/components/ButtonContentOrLoader.js +0 -37
  523. package/dist/esm/reactjs/components/ButtonContentOrLoader.js.map +0 -1
  524. package/dist/esm/reactjs/components/SignInButton.d.ts +0 -9
  525. package/dist/esm/reactjs/components/SignInButton.d.ts.map +0 -1
  526. package/dist/esm/reactjs/components/SignInButton.js +0 -28
  527. package/dist/esm/reactjs/components/SignInButton.js.map +0 -1
  528. package/dist/esm/reactjs/components/SignOutButton.d.ts +0 -7
  529. package/dist/esm/reactjs/components/SignOutButton.d.ts.map +0 -1
  530. package/dist/esm/reactjs/components/SignOutButton.js +0 -24
  531. package/dist/esm/reactjs/components/SignOutButton.js.map +0 -1
  532. package/dist/esm/reactjs/components/UserButton.d.ts +0 -9
  533. package/dist/esm/reactjs/components/UserButton.d.ts.map +0 -1
  534. package/dist/esm/reactjs/components/UserButton.js +0 -142
  535. package/dist/esm/reactjs/components/UserButton.js.map +0 -1
  536. package/dist/esm/reactjs/components/index.d.ts +0 -6
  537. package/dist/esm/reactjs/components/index.d.ts.map +0 -1
  538. package/dist/esm/reactjs/components/index.js +0 -6
  539. package/dist/esm/reactjs/components/index.js.map +0 -1
  540. package/dist/esm/reactjs/components/utils.d.ts +0 -13
  541. package/dist/esm/reactjs/components/utils.d.ts.map +0 -1
  542. package/dist/esm/reactjs/components/utils.js +0 -27
  543. package/dist/esm/reactjs/components/utils.js.map +0 -1
  544. package/dist/esm/reactjs/hooks/index.d.ts +0 -3
  545. package/dist/esm/reactjs/hooks/index.d.ts.map +0 -1
  546. package/dist/esm/reactjs/hooks/index.js +0 -3
  547. package/dist/esm/reactjs/hooks/index.js.map +0 -1
  548. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts +0 -3
  549. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
  550. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js +0 -13
  551. package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js.map +0 -1
  552. package/dist/esm/reactjs/hooks/useUser.d.ts +0 -4
  553. package/dist/esm/reactjs/hooks/useUser.d.ts.map +0 -1
  554. package/dist/esm/reactjs/hooks/useUser.js +0 -12
  555. package/dist/esm/reactjs/hooks/useUser.js.map +0 -1
  556. package/dist/esm/reactjs/index.d.ts +0 -6
  557. package/dist/esm/reactjs/index.d.ts.map +0 -1
  558. package/dist/esm/reactjs/index.js +0 -10
  559. package/dist/esm/reactjs/index.js.map +0 -1
  560. package/dist/esm/reactjs/providers/AuthProvider.d.ts +0 -10
  561. package/dist/esm/reactjs/providers/AuthProvider.d.ts.map +0 -1
  562. package/dist/esm/reactjs/providers/AuthProvider.js +0 -89
  563. package/dist/esm/reactjs/providers/AuthProvider.js.map +0 -1
  564. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts +0 -5
  565. package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts.map +0 -1
  566. package/dist/esm/reactjs/providers/CivicAuthProvider.js +0 -27
  567. package/dist/esm/reactjs/providers/CivicAuthProvider.js.map +0 -1
  568. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +0 -17
  569. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +0 -1
  570. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js +0 -143
  571. package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +0 -1
  572. package/dist/esm/reactjs/providers/index.d.ts +0 -8
  573. package/dist/esm/reactjs/providers/index.d.ts.map +0 -1
  574. package/dist/esm/reactjs/providers/index.js +0 -7
  575. package/dist/esm/reactjs/providers/index.js.map +0 -1
  576. package/dist/esm/server/ServerAuthenticationResolver.d.ts +0 -20
  577. package/dist/esm/server/ServerAuthenticationResolver.d.ts.map +0 -1
  578. package/dist/esm/server/ServerAuthenticationResolver.js +0 -67
  579. package/dist/esm/server/ServerAuthenticationResolver.js.map +0 -1
  580. package/dist/esm/server/config.d.ts +0 -11
  581. package/dist/esm/server/config.d.ts.map +0 -1
  582. package/dist/esm/server/config.js +0 -2
  583. package/dist/esm/server/config.js.map +0 -1
  584. package/dist/esm/server/index.d.ts +0 -9
  585. package/dist/esm/server/index.d.ts.map +0 -1
  586. package/dist/esm/server/index.js +0 -9
  587. package/dist/esm/server/index.js.map +0 -1
  588. package/dist/esm/server/login.d.ts +0 -17
  589. package/dist/esm/server/login.d.ts.map +0 -1
  590. package/dist/esm/server/login.js +0 -37
  591. package/dist/esm/server/login.js.map +0 -1
  592. package/dist/esm/server/logout.d.ts +0 -7
  593. package/dist/esm/server/logout.d.ts.map +0 -1
  594. package/dist/esm/server/logout.js +0 -23
  595. package/dist/esm/server/logout.js.map +0 -1
  596. package/dist/esm/server/refresh.d.ts +0 -7
  597. package/dist/esm/server/refresh.d.ts.map +0 -1
  598. package/dist/esm/server/refresh.js +0 -13
  599. package/dist/esm/server/refresh.js.map +0 -1
  600. package/dist/esm/services/AuthenticationService.d.ts +0 -93
  601. package/dist/esm/services/AuthenticationService.d.ts.map +0 -1
  602. package/dist/esm/services/AuthenticationService.js +0 -366
  603. package/dist/esm/services/AuthenticationService.js.map +0 -1
  604. package/dist/esm/services/PKCE.d.ts +0 -20
  605. package/dist/esm/services/PKCE.d.ts.map +0 -1
  606. package/dist/esm/services/PKCE.js +0 -44
  607. package/dist/esm/services/PKCE.js.map +0 -1
  608. package/dist/esm/services/types.d.ts +0 -24
  609. package/dist/esm/services/types.d.ts.map +0 -1
  610. package/dist/esm/services/types.js +0 -7
  611. package/dist/esm/services/types.js.map +0 -1
  612. package/dist/esm/shared/components/BlockDisplay.d.ts +0 -6
  613. package/dist/esm/shared/components/BlockDisplay.d.ts.map +0 -1
  614. package/dist/esm/shared/components/BlockDisplay.js +0 -29
  615. package/dist/esm/shared/components/BlockDisplay.js.map +0 -1
  616. package/dist/esm/shared/components/CivicAuthIframe.d.ts +0 -9
  617. package/dist/esm/shared/components/CivicAuthIframe.d.ts.map +0 -1
  618. package/dist/esm/shared/components/CivicAuthIframe.js +0 -27
  619. package/dist/esm/shared/components/CivicAuthIframe.js.map +0 -1
  620. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts +0 -14
  621. package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  622. package/dist/esm/shared/components/CivicAuthIframeContainer.js +0 -154
  623. package/dist/esm/shared/components/CivicAuthIframeContainer.js.map +0 -1
  624. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts +0 -6
  625. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +0 -1
  626. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js +0 -19
  627. package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js.map +0 -1
  628. package/dist/esm/shared/components/CloseIcon.d.ts +0 -3
  629. package/dist/esm/shared/components/CloseIcon.d.ts.map +0 -1
  630. package/dist/esm/shared/components/CloseIcon.js +0 -5
  631. package/dist/esm/shared/components/CloseIcon.js.map +0 -1
  632. package/dist/esm/shared/components/IFrameAndLoading.d.ts +0 -7
  633. package/dist/esm/shared/components/IFrameAndLoading.d.ts.map +0 -1
  634. package/dist/esm/shared/components/IFrameAndLoading.js +0 -36
  635. package/dist/esm/shared/components/IFrameAndLoading.js.map +0 -1
  636. package/dist/esm/shared/components/LoadingIcon.d.ts +0 -6
  637. package/dist/esm/shared/components/LoadingIcon.d.ts.map +0 -1
  638. package/dist/esm/shared/components/LoadingIcon.js +0 -26
  639. package/dist/esm/shared/components/LoadingIcon.js.map +0 -1
  640. package/dist/esm/shared/components/SVGLoading.d.ts +0 -4
  641. package/dist/esm/shared/components/SVGLoading.d.ts.map +0 -1
  642. package/dist/esm/shared/components/SVGLoading.js +0 -28
  643. package/dist/esm/shared/components/SVGLoading.js.map +0 -1
  644. package/dist/esm/shared/hooks/index.d.ts +0 -11
  645. package/dist/esm/shared/hooks/index.d.ts.map +0 -1
  646. package/dist/esm/shared/hooks/index.js +0 -11
  647. package/dist/esm/shared/hooks/index.js.map +0 -1
  648. package/dist/esm/shared/hooks/useAuth.d.ts +0 -3
  649. package/dist/esm/shared/hooks/useAuth.d.ts.map +0 -1
  650. package/dist/esm/shared/hooks/useAuth.js +0 -12
  651. package/dist/esm/shared/hooks/useAuth.js.map +0 -1
  652. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts +0 -3
  653. package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts.map +0 -1
  654. package/dist/esm/shared/hooks/useCivicAuthConfig.js +0 -10
  655. package/dist/esm/shared/hooks/useCivicAuthConfig.js.map +0 -1
  656. package/dist/esm/shared/hooks/useCurrentUrl.d.ts +0 -3
  657. package/dist/esm/shared/hooks/useCurrentUrl.d.ts.map +0 -1
  658. package/dist/esm/shared/hooks/useCurrentUrl.js +0 -24
  659. package/dist/esm/shared/hooks/useCurrentUrl.js.map +0 -1
  660. package/dist/esm/shared/hooks/useIframe.d.ts +0 -3
  661. package/dist/esm/shared/hooks/useIframe.d.ts.map +0 -1
  662. package/dist/esm/shared/hooks/useIframe.js +0 -13
  663. package/dist/esm/shared/hooks/useIframe.js.map +0 -1
  664. package/dist/esm/shared/hooks/useIsInIframe.d.ts +0 -3
  665. package/dist/esm/shared/hooks/useIsInIframe.d.ts.map +0 -1
  666. package/dist/esm/shared/hooks/useIsInIframe.js +0 -14
  667. package/dist/esm/shared/hooks/useIsInIframe.js.map +0 -1
  668. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts +0 -4
  669. package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts.map +0 -1
  670. package/dist/esm/shared/hooks/useOAuthEndpoints.js +0 -14
  671. package/dist/esm/shared/hooks/useOAuthEndpoints.js.map +0 -1
  672. package/dist/esm/shared/hooks/useRefresh.d.ts +0 -4
  673. package/dist/esm/shared/hooks/useRefresh.d.ts.map +0 -1
  674. package/dist/esm/shared/hooks/useRefresh.js +0 -38
  675. package/dist/esm/shared/hooks/useRefresh.js.map +0 -1
  676. package/dist/esm/shared/hooks/useSession.d.ts +0 -3
  677. package/dist/esm/shared/hooks/useSession.d.ts.map +0 -1
  678. package/dist/esm/shared/hooks/useSession.js +0 -13
  679. package/dist/esm/shared/hooks/useSession.js.map +0 -1
  680. package/dist/esm/shared/hooks/useSignIn.d.ts +0 -17
  681. package/dist/esm/shared/hooks/useSignIn.d.ts.map +0 -1
  682. package/dist/esm/shared/hooks/useSignIn.js +0 -168
  683. package/dist/esm/shared/hooks/useSignIn.js.map +0 -1
  684. package/dist/esm/shared/hooks/useToken.d.ts +0 -3
  685. package/dist/esm/shared/hooks/useToken.d.ts.map +0 -1
  686. package/dist/esm/shared/hooks/useToken.js +0 -12
  687. package/dist/esm/shared/hooks/useToken.js.map +0 -1
  688. package/dist/esm/shared/hooks/useWindowFocused.d.ts +0 -5
  689. package/dist/esm/shared/hooks/useWindowFocused.d.ts.map +0 -1
  690. package/dist/esm/shared/hooks/useWindowFocused.js +0 -21
  691. package/dist/esm/shared/hooks/useWindowFocused.js.map +0 -1
  692. package/dist/esm/shared/index.d.ts +0 -7
  693. package/dist/esm/shared/index.d.ts.map +0 -1
  694. package/dist/esm/shared/index.js +0 -18
  695. package/dist/esm/shared/index.js.map +0 -1
  696. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts +0 -14
  697. package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts.map +0 -1
  698. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js +0 -48
  699. package/dist/esm/shared/lib/AuthenticationRefresherImpl.js.map +0 -1
  700. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts +0 -9
  701. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts.map +0 -1
  702. package/dist/esm/shared/lib/BrowserCookieStorage.js +0 -56
  703. package/dist/esm/shared/lib/BrowserCookieStorage.js.map +0 -1
  704. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts +0 -16
  705. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  706. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js +0 -61
  707. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  708. package/dist/esm/shared/lib/UserSession.d.ts +0 -17
  709. package/dist/esm/shared/lib/UserSession.d.ts.map +0 -1
  710. package/dist/esm/shared/lib/UserSession.js +0 -23
  711. package/dist/esm/shared/lib/UserSession.js.map +0 -1
  712. package/dist/esm/shared/lib/iframeUtils.d.ts +0 -6
  713. package/dist/esm/shared/lib/iframeUtils.d.ts.map +0 -1
  714. package/dist/esm/shared/lib/iframeUtils.js +0 -7
  715. package/dist/esm/shared/lib/iframeUtils.js.map +0 -1
  716. package/dist/esm/shared/lib/session.d.ts +0 -4
  717. package/dist/esm/shared/lib/session.d.ts.map +0 -1
  718. package/dist/esm/shared/lib/session.js +0 -44
  719. package/dist/esm/shared/lib/session.js.map +0 -1
  720. package/dist/esm/shared/lib/storage.d.ts +0 -35
  721. package/dist/esm/shared/lib/storage.d.ts.map +0 -1
  722. package/dist/esm/shared/lib/storage.js +0 -17
  723. package/dist/esm/shared/lib/storage.js.map +0 -1
  724. package/dist/esm/shared/lib/types.d.ts +0 -39
  725. package/dist/esm/shared/lib/types.d.ts.map +0 -1
  726. package/dist/esm/shared/lib/types.js +0 -19
  727. package/dist/esm/shared/lib/types.js.map +0 -1
  728. package/dist/esm/shared/lib/util.d.ts +0 -40
  729. package/dist/esm/shared/lib/util.d.ts.map +0 -1
  730. package/dist/esm/shared/lib/util.js +0 -187
  731. package/dist/esm/shared/lib/util.js.map +0 -1
  732. package/dist/esm/shared/providers/AuthContext.d.ts +0 -12
  733. package/dist/esm/shared/providers/AuthContext.d.ts.map +0 -1
  734. package/dist/esm/shared/providers/AuthContext.js +0 -4
  735. package/dist/esm/shared/providers/AuthContext.js.map +0 -1
  736. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts +0 -19
  737. package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts.map +0 -1
  738. package/dist/esm/shared/providers/CivicAuthConfigContext.js +0 -55
  739. package/dist/esm/shared/providers/CivicAuthConfigContext.js.map +0 -1
  740. package/dist/esm/shared/providers/IframeProvider.d.ts +0 -25
  741. package/dist/esm/shared/providers/IframeProvider.d.ts.map +0 -1
  742. package/dist/esm/shared/providers/IframeProvider.js +0 -59
  743. package/dist/esm/shared/providers/IframeProvider.js.map +0 -1
  744. package/dist/esm/shared/providers/SessionProvider.d.ts +0 -19
  745. package/dist/esm/shared/providers/SessionProvider.d.ts.map +0 -1
  746. package/dist/esm/shared/providers/SessionProvider.js +0 -24
  747. package/dist/esm/shared/providers/SessionProvider.js.map +0 -1
  748. package/dist/esm/shared/providers/TokenProvider.d.ts +0 -17
  749. package/dist/esm/shared/providers/TokenProvider.d.ts.map +0 -1
  750. package/dist/esm/shared/providers/TokenProvider.js +0 -35
  751. package/dist/esm/shared/providers/TokenProvider.js.map +0 -1
  752. package/dist/esm/shared/providers/UserProvider.d.ts +0 -26
  753. package/dist/esm/shared/providers/UserProvider.d.ts.map +0 -1
  754. package/dist/esm/shared/providers/UserProvider.js +0 -65
  755. package/dist/esm/shared/providers/UserProvider.js.map +0 -1
  756. package/dist/esm/shared/providers/types.d.ts +0 -15
  757. package/dist/esm/shared/providers/types.d.ts.map +0 -1
  758. package/dist/esm/shared/providers/types.js +0 -2
  759. package/dist/esm/shared/providers/types.js.map +0 -1
  760. package/dist/esm/shared/version.d.ts +0 -2
  761. package/dist/esm/shared/version.d.ts.map +0 -1
  762. package/dist/esm/shared/version.js +0 -3
  763. package/dist/esm/shared/version.js.map +0 -1
  764. package/dist/esm/types.d.ts +0 -163
  765. package/dist/esm/types.d.ts.map +0 -1
  766. package/dist/esm/types.js +0 -17
  767. package/dist/esm/types.js.map +0 -1
  768. package/dist/esm/utils.d.ts +0 -15
  769. package/dist/esm/utils.d.ts.map +0 -1
  770. package/dist/esm/utils.js +0 -42
  771. package/dist/esm/utils.js.map +0 -1
  772. package/dist/esm/version.d.ts +0 -2
  773. package/dist/esm/version.d.ts.map +0 -1
  774. package/dist/esm/version.js +0 -3
  775. package/dist/esm/version.js.map +0 -1
  776. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  777. package/dist/tsconfig.esm.tsbuildinfo +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.3.8 Fix NextJS cookie expiration behaviour
2
+ - fix the civic-auth SDK NextJS cookie expiration behaviour for embedded iframes: when the iframe mounts, it will trigger the auto sign-in process to start again
3
+ - change NextJS console.logs to logger.debug statements
4
+
1
5
  # 0.3.7 Fix user auth refresh
2
6
  - Fix issue where a 500 occurred during token refresh
3
7
  - UI fixes
package/README.md CHANGED
@@ -324,11 +324,18 @@ Using the Civic Auth middleware ensures that only logged-in users have access to
324
324
  ```typescript
325
325
  import { authMiddleware } from '@civic/auth/nextjs/middleware'
326
326
 
327
- export default authMiddleware()
327
+ export default authMiddleware();
328
328
 
329
329
  export const config = {
330
330
  // include the paths you wish to secure here
331
- matcher: [ '/api/:path*', '/admin/:path*' ]
331
+ matcher: [
332
+ /*
333
+ * Match all request paths except those starting with:
334
+ * - _next (static files)
335
+ * - favicon.ico, sitemap.xml, robots.txt
336
+ */
337
+ '/((?!_next|favicon.ico|sitemap.xml|robots.txt).*)',
338
+ ],
332
339
  }
333
340
  ```
334
341
 
@@ -1 +1 @@
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
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/lib/cookies.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,oBAAoB,GACxB,UAAU;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 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/lib/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,2BAA2B,gBACzB,kBAAkB,KAC9B,eAUA,CAAC"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/lib/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,2BAA2B,GACtC,aAAa,kBAAkB,KAC9B,eAUA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAsCD,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,MACrB,CAAC;AAG7B,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CAoBV,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAsCD,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,KAAG,MACrB,CAAC;AAG7B,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CAoBV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,YAAY,CAAC;AAG9E,QAAA,MAAM,mBAAmB,WAAY,MAAM,KAAG,MAAM,EAQnD,CAAC;AAMF,QAAA,MAAM,iBAAiB,gBAAuB,MAAM,KAAG,OAAO,CAAC,SAAS,CAmBvE,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,aAAa,gBACJ,WAAW,wBACF,OAAO,KAC5B,MAOF,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,UACjB,MAAM,sBACO,WAAW,GAAG,SAAS,KAC1C,WAAW,GAAG,SAQhB,CAAC;AAEF,QAAA,MAAM,4BAA4B,UAAW,MAAM,KAAG,OAAO,GAAG,SAQ/D,CAAC;AAEF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,YAAY,CAAC;AAG9E,QAAA,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAAM,EAQnD,CAAC;AAMF,QAAA,MAAM,iBAAiB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,SAAS,CAmBvE,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,aAAa,GACjB,aAAa,WAAW,EACxB,sBAAsB,OAAO,KAC5B,MAOF,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,GACxB,OAAO,MAAM,EACb,oBAAoB,WAAW,GAAG,SAAS,KAC1C,WAAW,GAAG,SAQhB,CAAC;AAEF,QAAA,MAAM,4BAA4B,GAAI,OAAO,MAAM,KAAG,OAAO,GAAG,SAQ/D,CAAC;AAEF,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/lib/obj.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,SACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,QAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KAC/C,OAiBF,CAAC;AACF,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../src/lib/obj.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,GACnB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAChD,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,KAC/C,OAiBF,CAAC;AACF,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postMessage.d.ts","sourceRoot":"","sources":["../../src/lib/postMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,QAAA,MAAM,2BAA2B,UACxB,gBAAgB,YACb,MAAM,KACf,OAYF,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
1
+ {"version":3,"file":"postMessage.d.ts","sourceRoot":"","sources":["../../src/lib/postMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,QAAA,MAAM,2BAA2B,GAC/B,OAAO,gBAAgB,EACvB,UAAU,MAAM,KACf,OAYF,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"windowUtil.d.ts","sourceRoot":"","sources":["../../src/lib/windowUtil.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,WAAY,MAAM,KAAG,OAc1C,CAAC;AAEF,QAAA,MAAM,yBAAyB,mBAAoB,MAAM,EAAE,SAW1D,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"windowUtil.d.ts","sourceRoot":"","sources":["../../src/lib/windowUtil.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,OAc1C,CAAC;AAEF,QAAA,MAAM,yBAAyB,GAAI,gBAAgB,MAAM,EAAE,SAW1D,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/nextjs/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,sBAAsB,GACtB;IACE,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;CACH,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CA+DtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,YACpB,OAAO,CAAC,UAAU,CAAC,KAC1B,sBA8CF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,qBAAqB,eAAgB,UAAU,mBACrC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyB2mZ,CAAC;6BAAsG,CAAC;;;sBAAke,CAAC;yBAA4H,CAAC;;;qBAA+H,CAAC;;;;;;;;;;;;;;;;;;iBAA8pE,CAAC;;;;;;;6BAAg6C,CAAC;sBAAoC,CAAC;;aAAoC,CAAC;;6BAA0D,CAAC;oBAA8B,CAAC;0BAAkE,CAAC;;qBAA2C,CAAC;mBAAiC,CAAC;;wBAA+C,CAAC;eAAmD,CAAC;iBAA4C,CAAC;2BAAyC,CAAC;;;;;;;;;yBAA4zC,CAAC;6BAAwC,CAAC;;;eAAkD,CAAC;mBAAuB,CAAC;;;;CADp7lB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/nextjs/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,sBAAsB,GACtB;IACE,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;CACH,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAKF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CA+DtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAQ,OAAO,CAAC,UAAU,CAAM,KAC/B,sBA8CF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,UAAU,MAClD,aAAa,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyB2mZ,CAAC;6BAAsG,CAAC;;;sBAAke,CAAC;yBAA4H,CAAC;;;qBAA+H,CAAC;;;;;;;;;;;;;;;;;;iBAA8pE,CAAC;;;;;;;6BAAg6C,CAAC;sBAAoC,CAAC;;aAAoC,CAAC;;6BAA0D,CAAC;oBAA8B,CAAC;0BAAkE,CAAC;;qBAA2C,CAAC;mBAAiC,CAAC;;wBAA+C,CAAC;eAAmD,CAAC;iBAA4C,CAAC;2BAAyC,CAAC;;;;;;;;;yBAA4zC,CAAC;6BAAwC,CAAC;;;eAAkD,CAAC;mBAAuB,CAAC;;;;CADp7lB,CAAC"}
@@ -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;;CAqD9C,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,GAAI,SAAS,WAAW,GAAG,IAAI;;CAqD9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nextjs/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,aAAa,qBACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAG1B,CAAC;AACF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAG5D,CAAC;AACF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,IAAI,iBAAiB,EAC1C,KAAK,0BAA0B,IAAI,iBAAiB,GACrD,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nextjs/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,aAAa,GAAG,WAAW,OAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAG1B,CAAC;AACF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAG5D,CAAC;AACF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,IAAI,iBAAiB,EAC1C,KAAK,0BAA0B,IAAI,iBAAiB,GACrD,MAAM,wCAAwC,CAAC"}
@@ -7,14 +7,14 @@
7
7
  *
8
8
  * Option 2: use if other middleware is needed - default auth config
9
9
  * export default withAuth((request) => {
10
- * console.log('in custom middleware', request.nextUrl.pathname);
10
+ * logger.debug('in custom middleware', request.nextUrl.pathname);
11
11
  * return NextResponse.next();
12
12
  * })
13
13
  *
14
14
  * Option 3: use if other middleware is needed - specifying auth config
15
15
  * const withCivicAuth = auth({ loginUrl: '/login', include: ['/[.*]/user'] })
16
16
  * export default withCivicAuth((request) => {
17
- * console.log('in custom middleware', request.url);
17
+ * logger.debug('in custom middleware', request.url);
18
18
  * return NextResponse.next();
19
19
  * })
20
20
  *
@@ -36,7 +36,7 @@ export declare const authMiddleware: (authConfig?: OptionalAuthConfig) => (reque
36
36
  * Usage:
37
37
  *
38
38
  * export default withAuth(async (request) => {
39
- * console.log('my middleware');
39
+ * logger.debug('my middleware');
40
40
  * return NextResponse.next();
41
41
  * })
42
42
  */
@@ -47,7 +47,7 @@ export declare function withAuth(middleware: Middleware): (request: NextRequest)
47
47
  * Usage:
48
48
  *
49
49
  * export default auth(authConfig: AuthConfig ) => {
50
- * console.log('my middleware');
50
+ * logger.debug('my middleware');
51
51
  * return NextResponse.next();
52
52
  * })
53
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/nextjs/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,KAAK,UAAU,GAAG,CAChB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAkE1C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,gBACZ,kBAAkB,eACf,WAAW,KAAG,OAAO,CAAC,YAAY,CAOjD,CAAC;AAEJ;;;;;;;GAOG;AAEH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,GACrB,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,UAAU,GAAE,kBAAuB,gBAExC,UAAU,KACrB,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAQrD"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/nextjs/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAM7D,KAAK,UAAU,GAAG,CAChB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAkE1C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACxB,aAAY,kBAAuB,MAC7B,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAOjD,CAAC;AAEJ;;;;;;;GAOG;AAEH,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,GACrB,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,UAAU,GAAE,kBAAuB,IAEpD,YAAY,UAAU,KACrB,CAAC,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAQrD"}
@@ -1,6 +1,8 @@
1
1
  import { NextResponse } from "next/server.js";
2
2
  import picomatch from "picomatch";
3
3
  import { resolveAuthConfig } from "../nextjs/config.js";
4
+ import { loggers } from "../lib/logger.js";
5
+ const logger = loggers.nextjs.middleware;
4
6
  // Matches globs:
5
7
  // Examples:
6
8
  // /user
@@ -28,25 +30,25 @@ const applyAuth = async (authConfig, request) => {
28
30
  // skip auth check for redirect to login url
29
31
  if (request.nextUrl.pathname === authConfigWithDefaults.loginUrl &&
30
32
  request.method === "GET") {
31
- console.log("→ Skipping auth check - this is the login URL");
33
+ logger.debug("→ Skipping auth check - this is the login URL");
32
34
  return undefined;
33
35
  }
34
36
  if (!matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.include)) {
35
- console.log("→ Skipping auth check - path not in include patterns");
37
+ logger.debug("→ Skipping auth check - path not in include patterns");
36
38
  return undefined;
37
39
  }
38
40
  if (matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.exclude)) {
39
- console.log("→ Skipping auth check - path in exclude patterns");
41
+ logger.debug("→ Skipping auth check - path in exclude patterns");
40
42
  return undefined;
41
43
  }
42
44
  // Check for either token type
43
45
  if (!isAuthenticated) {
44
46
  const loginUrl = new URL(authConfigWithDefaults.loginUrl, request.nextUrl.origin);
45
47
  const redirectUrl = `${loginUrl.toString()}`;
46
- console.log(`→ No valid token found - redirecting to "${redirectUrl}"`);
48
+ logger.debug(`→ No valid token found - redirecting to "${redirectUrl}"`);
47
49
  return NextResponse.redirect(redirectUrl);
48
50
  }
49
- console.log("→ Auth check passed");
51
+ logger.debug("→ Auth check passed");
50
52
  return undefined;
51
53
  };
52
54
  /**
@@ -69,7 +71,7 @@ export const authMiddleware = (authConfig = {}) => async (request) => {
69
71
  * Usage:
70
72
  *
71
73
  * export default withAuth(async (request) => {
72
- * console.log('my middleware');
74
+ * logger.debug('my middleware');
73
75
  * return NextResponse.next();
74
76
  * })
75
77
  */
@@ -83,7 +85,7 @@ export function withAuth(middleware) {
83
85
  * Usage:
84
86
  *
85
87
  * export default auth(authConfig: AuthConfig ) => {
86
- * console.log('my middleware');
88
+ * logger.debug('my middleware');
87
89
  * return NextResponse.next();
88
90
  * })
89
91
  *
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/nextjs/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authenticates the user on all requests by checking the token cookie\n *\n * Usage:\n * Option 1: use if no other middleware (e.g. no next-intl etc)\n * export default authMiddleware();\n *\n * Option 2: use if other middleware is needed - default auth config\n * export default withAuth((request) => {\n * console.log('in custom middleware', request.nextUrl.pathname);\n * return NextResponse.next();\n * })\n *\n * Option 3: use if other middleware is needed - specifying auth config\n * const withCivicAuth = auth({ loginUrl: '/login', include: ['/[.*]/user'] })\n * export default withCivicAuth((request) => {\n * console.log('in custom middleware', request.url);\n * return NextResponse.next();\n * })\n *\n */\nimport type { NextRequest } from \"next/server.js\";\nimport { NextResponse } from \"next/server.js\";\nimport picomatch from \"picomatch\";\nimport type { OptionalAuthConfig } from \"@/nextjs/config.js\";\nimport { resolveAuthConfig } from \"@/nextjs/config.js\";\n\ntype Middleware = (\n request: NextRequest,\n) => Promise<NextResponse> | NextResponse;\n\n// Matches globs:\n// Examples:\n// /user\n// /user/*\n// /user/**/info\nconst matchGlob = (pathname: string, globPattern: string) => {\n const matches = picomatch(globPattern);\n return matches(pathname);\n};\n\n// Matches globs:\n// Examples:\n// /user\n// /user/*\n// /user/**/info\nconst matchesGlobs = (pathname: string, patterns: string[]) =>\n patterns.some((pattern) => {\n if (!pattern) return false;\n return matchGlob(pathname, pattern);\n });\n\n// internal - used by all exported functions\nconst applyAuth = async (\n authConfig: OptionalAuthConfig,\n request: NextRequest,\n): Promise<NextResponse | undefined> => {\n const authConfigWithDefaults = resolveAuthConfig(authConfig);\n // Check for any valid auth token\n const isAuthenticated = !!request.cookies.get(\"id_token\");\n\n // skip auth check for redirect to login url\n if (\n request.nextUrl.pathname === authConfigWithDefaults.loginUrl &&\n request.method === \"GET\"\n ) {\n console.log(\"→ Skipping auth check - this is the login URL\");\n return undefined;\n }\n\n if (!matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.include)) {\n console.log(\"→ Skipping auth check - path not in include patterns\");\n return undefined;\n }\n\n if (matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.exclude)) {\n console.log(\"→ Skipping auth check - path in exclude patterns\");\n return undefined;\n }\n\n // Check for either token type\n if (!isAuthenticated) {\n const loginUrl = new URL(\n authConfigWithDefaults.loginUrl,\n request.nextUrl.origin,\n );\n const redirectUrl = `${loginUrl.toString()}`;\n console.log(`→ No valid token found - redirecting to \"${redirectUrl}\"`);\n return NextResponse.redirect(redirectUrl);\n }\n\n console.log(\"→ Auth check passed\");\n return undefined;\n};\n\n/**\n *\n * Use this when auth is the only middleware you need.\n * Usage:\n *\n * export default authMiddleware({ loginUrl = '/login' }); // or just authMiddleware();\n *\n */\nexport const authMiddleware =\n (authConfig: OptionalAuthConfig = {}) =>\n async (request: NextRequest): Promise<NextResponse> => {\n const response = await applyAuth(authConfig, request);\n if (response) return response;\n\n // NextJS doesn't do middleware chaining yet, so this does not mean\n // \"call the next middleware\" - it means \"continue to the route handler\"\n return NextResponse.next();\n };\n\n/**\n * Usage:\n *\n * export default withAuth(async (request) => {\n * console.log('my middleware');\n * return NextResponse.next();\n * })\n */\n// use this when you have your own middleware to chain\nexport function withAuth(\n middleware: Middleware,\n): (request: NextRequest) => Promise<NextResponse> {\n return auth()(middleware);\n}\n\n/**\n * Use this when you want to configure the middleware here (an alternative is to do it in the next.config file)\n *\n * Usage:\n *\n * export default auth(authConfig: AuthConfig ) => {\n * console.log('my middleware');\n * return NextResponse.next();\n * })\n *\n */\nexport function auth(authConfig: OptionalAuthConfig = {}) {\n return (\n middleware: Middleware,\n ): ((request: NextRequest) => Promise<NextResponse>) => {\n return async (request: NextRequest): Promise<NextResponse> => {\n const response = await applyAuth(authConfig, request);\n if (response) return response;\n\n return middleware(request);\n };\n };\n}\n"]}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/nextjs/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authenticates the user on all requests by checking the token cookie\n *\n * Usage:\n * Option 1: use if no other middleware (e.g. no next-intl etc)\n * export default authMiddleware();\n *\n * Option 2: use if other middleware is needed - default auth config\n * export default withAuth((request) => {\n * logger.debug('in custom middleware', request.nextUrl.pathname);\n * return NextResponse.next();\n * })\n *\n * Option 3: use if other middleware is needed - specifying auth config\n * const withCivicAuth = auth({ loginUrl: '/login', include: ['/[.*]/user'] })\n * export default withCivicAuth((request) => {\n * logger.debug('in custom middleware', request.url);\n * return NextResponse.next();\n * })\n *\n */\nimport type { NextRequest } from \"next/server.js\";\nimport { NextResponse } from \"next/server.js\";\nimport picomatch from \"picomatch\";\nimport type { OptionalAuthConfig } from \"@/nextjs/config.js\";\nimport { resolveAuthConfig } from \"@/nextjs/config.js\";\nimport { loggers } from \"@/lib/logger.js\";\n\nconst logger = loggers.nextjs.middleware;\n\ntype Middleware = (\n request: NextRequest,\n) => Promise<NextResponse> | NextResponse;\n\n// Matches globs:\n// Examples:\n// /user\n// /user/*\n// /user/**/info\nconst matchGlob = (pathname: string, globPattern: string) => {\n const matches = picomatch(globPattern);\n return matches(pathname);\n};\n\n// Matches globs:\n// Examples:\n// /user\n// /user/*\n// /user/**/info\nconst matchesGlobs = (pathname: string, patterns: string[]) =>\n patterns.some((pattern) => {\n if (!pattern) return false;\n return matchGlob(pathname, pattern);\n });\n\n// internal - used by all exported functions\nconst applyAuth = async (\n authConfig: OptionalAuthConfig,\n request: NextRequest,\n): Promise<NextResponse | undefined> => {\n const authConfigWithDefaults = resolveAuthConfig(authConfig);\n // Check for any valid auth token\n const isAuthenticated = !!request.cookies.get(\"id_token\");\n\n // skip auth check for redirect to login url\n if (\n request.nextUrl.pathname === authConfigWithDefaults.loginUrl &&\n request.method === \"GET\"\n ) {\n logger.debug(\"→ Skipping auth check - this is the login URL\");\n return undefined;\n }\n\n if (!matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.include)) {\n logger.debug(\"→ Skipping auth check - path not in include patterns\");\n return undefined;\n }\n\n if (matchesGlobs(request.nextUrl.pathname, authConfigWithDefaults.exclude)) {\n logger.debug(\"→ Skipping auth check - path in exclude patterns\");\n return undefined;\n }\n\n // Check for either token type\n if (!isAuthenticated) {\n const loginUrl = new URL(\n authConfigWithDefaults.loginUrl,\n request.nextUrl.origin,\n );\n const redirectUrl = `${loginUrl.toString()}`;\n logger.debug(`→ No valid token found - redirecting to \"${redirectUrl}\"`);\n return NextResponse.redirect(redirectUrl);\n }\n\n logger.debug(\"→ Auth check passed\");\n return undefined;\n};\n\n/**\n *\n * Use this when auth is the only middleware you need.\n * Usage:\n *\n * export default authMiddleware({ loginUrl = '/login' }); // or just authMiddleware();\n *\n */\nexport const authMiddleware =\n (authConfig: OptionalAuthConfig = {}) =>\n async (request: NextRequest): Promise<NextResponse> => {\n const response = await applyAuth(authConfig, request);\n if (response) return response;\n\n // NextJS doesn't do middleware chaining yet, so this does not mean\n // \"call the next middleware\" - it means \"continue to the route handler\"\n return NextResponse.next();\n };\n\n/**\n * Usage:\n *\n * export default withAuth(async (request) => {\n * logger.debug('my middleware');\n * return NextResponse.next();\n * })\n */\n// use this when you have your own middleware to chain\nexport function withAuth(\n middleware: Middleware,\n): (request: NextRequest) => Promise<NextResponse> {\n return auth()(middleware);\n}\n\n/**\n * Use this when you want to configure the middleware here (an alternative is to do it in the next.config file)\n *\n * Usage:\n *\n * export default auth(authConfig: AuthConfig ) => {\n * logger.debug('my middleware');\n * return NextResponse.next();\n * })\n *\n */\nexport function auth(authConfig: OptionalAuthConfig = {}) {\n return (\n middleware: Middleware,\n ): ((request: NextRequest) => Promise<NextResponse>) => {\n return async (request: NextRequest): Promise<NextResponse> => {\n const response = await applyAuth(authConfig, request);\n if (response) return response;\n\n return middleware(request);\n };\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NextAuthProvider.d.ts","sourceRoot":"","sources":["../../../src/nextjs/providers/NextAuthProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAe5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAcrE,KAAK,kCAAkC,GAAG,IAAI,CAC5C,iBAAiB,EACjB,UAAU,CACX,GAAG;IACF,cAAc,EAAE,sBAAsB,CAAC;CACxC,CAAC;AACF,KAAK,0BAA0B,GAAG,IAAI,CACpC,kCAAkC,EAClC,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAC9C,CAAC;AA2HF,QAAA,MAAM,qBAAqB,2BAGxB,0BAA0B,qDA0C5B,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,CAAC"}
1
+ {"version":3,"file":"NextAuthProvider.d.ts","sourceRoot":"","sources":["../../../src/nextjs/providers/NextAuthProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAe5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAerE,KAAK,kCAAkC,GAAG,IAAI,CAC5C,iBAAiB,EACjB,UAAU,CACX,GAAG;IACF,cAAc,EAAE,sBAAsB,CAAC;CACxC,CAAC;AACF,KAAK,0BAA0B,GAAG,IAAI,CACpC,kCAAkC,EAClC,UAAU,GAAG,gBAAgB,GAAG,aAAa,CAC9C,CAAC;AAgIF,QAAA,MAAM,qBAAqB,GAAI,wBAG5B,0BAA0B,qDA0C5B,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,CAAC"}
@@ -24,9 +24,10 @@ import { AuthStatus } from "../../types.js";
24
24
  import { useRefresh } from "../../nextjs/hooks/useRefresh.js";
25
25
  import { useCurrentUrl, useSession } from "../../shared/hooks/index.js";
26
26
  import { BrowserCookieStorage } from "../../shared/index.js";
27
+ import { getIframeRef } from "../../shared/lib/iframeUtils.js";
27
28
  const CivicNextAuthTokenProviderInternal = ({ children, isLoading, displayMode = "iframe", user, fetchUser, ...props }) => {
28
29
  const { iframeMode, resolvedConfig } = props;
29
- const { iframeRef, setIframeIsVisible } = useIframe();
30
+ const { iframeRef, setIframeIsVisible, isIframeMounted, setIframeMounted } = useIframe();
30
31
  const civicAuthConfig = useCivicAuthConfig();
31
32
  const { challengeUrl } = resolvedConfig;
32
33
  const pkceConsumer = new ConfidentialClientPKCEConsumer(challengeUrl);
@@ -34,11 +35,12 @@ const CivicNextAuthTokenProviderInternal = ({ children, isLoading, displayMode =
34
35
  const currentUrl = useCurrentUrl();
35
36
  useEffect(() => {
36
37
  if (session?.authenticated) {
38
+ setIframeMounted(false);
37
39
  // the session is authenticated, so don't show the login iframe
38
40
  setIframeIsVisible(false);
39
41
  return;
40
42
  }
41
- }, [session?.authenticated, setIframeIsVisible]);
43
+ }, [session?.authenticated, setIframeIsVisible, setIframeMounted]);
42
44
  const postSignOut = useCallback(async () => {
43
45
  // user is signed out, manually update the user from cookies to not wait for polling
44
46
  await fetchUser();
@@ -50,9 +52,11 @@ const CivicNextAuthTokenProviderInternal = ({ children, isLoading, displayMode =
50
52
  displayMode,
51
53
  });
52
54
  useEffect(() => {
53
- if (civicAuthConfig &&
55
+ const ref = getIframeRef(iframeRef?.current, true);
56
+ if (isIframeMounted &&
57
+ civicAuthConfig &&
54
58
  !session?.authenticated &&
55
- iframeRef?.current &&
59
+ ref &&
56
60
  authStatus === AuthStatus.UNAUTHENTICATED &&
57
61
  displayMode === "iframe" &&
58
62
  !currentUrl?.includes("code=")) {
@@ -60,6 +64,7 @@ const CivicNextAuthTokenProviderInternal = ({ children, isLoading, displayMode =
60
64
  }
61
65
  // eslint-disable-next-line react-hooks/exhaustive-deps
62
66
  }, [
67
+ isIframeMounted,
63
68
  currentUrl,
64
69
  iframeMode,
65
70
  iframeRef,
@@ -1 +1 @@
1
- {"version":3,"file":"NextAuthProvider.js","sourceRoot":"","sources":["../../../src/nextjs/providers/NextAuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n/**\n * A very small context provider for the user object - it takes the user object from the cookie and provides it to the app.\n */\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n resolveAuthConfig,\n type AuthConfigWithDefaults,\n} from \"@/nextjs/config.js\";\nimport { resolveCallbackUrl } from \"@/nextjs/utils.js\";\nimport { ConfidentialClientPKCEConsumer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"@/shared/providers/UserProvider.js\";\nimport { useUserCookie } from \"@/nextjs/hooks/useUserCookie.js\";\nimport { CivicAuthConfigProvider } from \"@/shared/providers/CivicAuthConfigContext.js\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider.js\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider.js\";\nimport { useSignIn } from \"@/shared/hooks/useSignIn.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport { IFrameAndLoading } from \"@/shared/components/IFrameAndLoading.js\";\nimport { BlockDisplay } from \"@/shared/components/BlockDisplay.js\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport type { AuthProviderProps } from \"@/shared/providers/types.js\";\nimport { useIsInIframe } from \"@/shared/hooks/useIsInIframe.js\";\nimport { AuthStatus, type UnknownObject, type User } from \"@/types.js\";\nimport { useRefresh } from \"@/nextjs/hooks/useRefresh.js\";\nimport { useCurrentUrl, useSession } from \"@/shared/hooks/index.js\";\nimport { BrowserCookieStorage } from \"@/shared/index.js\";\n\ntype CivicNextAuthTokenProviderInternalProps<TUser extends UnknownObject> =\n NextCivicAuthProviderInternalProps & {\n isLoading: boolean;\n idToken?: string;\n user: User<TUser> | null;\n fetchUser: () => Promise<void>;\n };\ntype NextCivicAuthProviderInternalProps = Omit<\n AuthProviderProps,\n \"clientId\"\n> & {\n resolvedConfig: AuthConfigWithDefaults;\n};\ntype NextCivicAuthProviderProps = Omit<\n NextCivicAuthProviderInternalProps,\n \"clientId\" | \"resolvedConfig\" | \"redirectUrl\"\n>;\n\nconst CivicNextAuthTokenProviderInternal = <\n TUser extends UnknownObject = UnknownObject,\n>({\n children,\n isLoading,\n displayMode = \"iframe\",\n user,\n fetchUser,\n ...props\n}: CivicNextAuthTokenProviderInternalProps<TUser>) => {\n const { iframeMode, resolvedConfig } = props;\n const { iframeRef, setIframeIsVisible } = useIframe();\n const civicAuthConfig = useCivicAuthConfig();\n const { challengeUrl } = resolvedConfig;\n const pkceConsumer = new ConfidentialClientPKCEConsumer(challengeUrl);\n const { data: session } = useSession();\n const currentUrl = useCurrentUrl();\n\n useEffect(() => {\n if (session?.authenticated) {\n // the session is authenticated, so don't show the login iframe\n setIframeIsVisible(false);\n return;\n }\n }, [session?.authenticated, setIframeIsVisible]);\n\n const postSignOut = useCallback(async () => {\n // user is signed out, manually update the user from cookies to not wait for polling\n await fetchUser();\n await props?.onSignOut?.();\n }, [fetchUser, props]);\n\n const { signIn, startSignIn, signOut, authStatus } = useSignIn({\n postSignOut,\n pkceConsumer,\n displayMode,\n });\n\n useEffect(() => {\n if (\n civicAuthConfig &&\n !session?.authenticated &&\n iframeRef?.current &&\n authStatus === AuthStatus.UNAUTHENTICATED &&\n displayMode === \"iframe\" &&\n !currentUrl?.includes(\"code=\")\n ) {\n startSignIn();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n currentUrl,\n iframeMode,\n iframeRef,\n civicAuthConfig,\n session?.authenticated,\n authStatus,\n startSignIn,\n displayMode,\n ]);\n\n const { error: refreshError } = useRefresh(session);\n\n useEffect(() => {\n if (refreshError) {\n console.error(\"Error refreshing token, signing out...\", refreshError);\n signOut();\n }\n }, [refreshError, signOut]);\n\n return (\n <TokenProvider>\n <UserProvider\n storage={new BrowserCookieStorage()}\n user={user}\n signOut={signOut}\n signIn={signIn}\n displayMode={displayMode}\n authStatus={authStatus}\n >\n <IFrameAndLoading error={null} isLoading={isLoading} />\n {isLoading && (\n <BlockDisplay>\n <LoadingIcon />\n </BlockDisplay>\n )}\n {children}\n </UserProvider>\n </TokenProvider>\n );\n};\n\nconst CivicNextAuthProviderInternal = ({\n children,\n ...props\n}: NextCivicAuthProviderInternalProps) => {\n // if the SDK loads in an iframe, we show the loading spinner as the iframe\n // will be waiting to be minimized\n const isLoading = useIsInIframe();\n const { user, idToken, fetchUser } = useUserCookie();\n\n const session = {\n authenticated: !!user,\n idToken,\n };\n\n return (\n <SessionProvider data={session} isLoading={isLoading}>\n <CivicNextAuthTokenProviderInternal\n {...props}\n user={user}\n idToken={idToken}\n fetchUser={fetchUser}\n isLoading={isLoading}\n >\n {children}\n </CivicNextAuthTokenProviderInternal>\n </SessionProvider>\n );\n};\n\nconst CivicNextAuthProvider = ({\n children,\n ...props\n}: NextCivicAuthProviderProps) => {\n const resolvedConfig = resolveAuthConfig();\n const {\n clientId,\n oauthServer,\n callbackUrl,\n challengeUrl,\n logoutUrl,\n refreshUrl,\n logoutCallbackUrl,\n } = resolvedConfig;\n const [redirectUrl, setRedirectUrl] = useState<string>(\"\");\n\n useEffect(() => {\n if (typeof globalThis.window !== \"undefined\") {\n const appUrl = globalThis.window.location.origin;\n setRedirectUrl(resolveCallbackUrl(resolvedConfig, appUrl));\n }\n }, [callbackUrl, resolvedConfig]);\n\n return (\n <CivicAuthConfigProvider\n oauthServer={oauthServer}\n clientId={clientId}\n redirectUrl={redirectUrl}\n logoutRedirectUrl={logoutCallbackUrl}\n nonce={props?.nonce}\n challengeUrl={challengeUrl}\n refreshUrl={refreshUrl}\n logoutUrl={logoutUrl}\n logoutCallbackUrl={logoutCallbackUrl}\n >\n <IframeProvider iframeMode={props.iframeMode}>\n <CivicNextAuthProviderInternal\n {...props}\n resolvedConfig={resolvedConfig}\n >\n {children}\n </CivicNextAuthProviderInternal>\n </IframeProvider>\n </CivicAuthConfigProvider>\n );\n};\n\nexport { CivicNextAuthProvider, type NextCivicAuthProviderProps };\n"]}
1
+ {"version":3,"file":"NextAuthProvider.js","sourceRoot":"","sources":["../../../src/nextjs/providers/NextAuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n/**\n * A very small context provider for the user object - it takes the user object from the cookie and provides it to the app.\n */\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n resolveAuthConfig,\n type AuthConfigWithDefaults,\n} from \"@/nextjs/config.js\";\nimport { resolveCallbackUrl } from \"@/nextjs/utils.js\";\nimport { ConfidentialClientPKCEConsumer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"@/shared/providers/UserProvider.js\";\nimport { useUserCookie } from \"@/nextjs/hooks/useUserCookie.js\";\nimport { CivicAuthConfigProvider } from \"@/shared/providers/CivicAuthConfigContext.js\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider.js\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider.js\";\nimport { useSignIn } from \"@/shared/hooks/useSignIn.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport { IFrameAndLoading } from \"@/shared/components/IFrameAndLoading.js\";\nimport { BlockDisplay } from \"@/shared/components/BlockDisplay.js\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport type { AuthProviderProps } from \"@/shared/providers/types.js\";\nimport { useIsInIframe } from \"@/shared/hooks/useIsInIframe.js\";\nimport { AuthStatus, type UnknownObject, type User } from \"@/types.js\";\nimport { useRefresh } from \"@/nextjs/hooks/useRefresh.js\";\nimport { useCurrentUrl, useSession } from \"@/shared/hooks/index.js\";\nimport { BrowserCookieStorage } from \"@/shared/index.js\";\nimport { getIframeRef } from \"@/shared/lib/iframeUtils.js\";\n\ntype CivicNextAuthTokenProviderInternalProps<TUser extends UnknownObject> =\n NextCivicAuthProviderInternalProps & {\n isLoading: boolean;\n idToken?: string;\n user: User<TUser> | null;\n fetchUser: () => Promise<void>;\n };\ntype NextCivicAuthProviderInternalProps = Omit<\n AuthProviderProps,\n \"clientId\"\n> & {\n resolvedConfig: AuthConfigWithDefaults;\n};\ntype NextCivicAuthProviderProps = Omit<\n NextCivicAuthProviderInternalProps,\n \"clientId\" | \"resolvedConfig\" | \"redirectUrl\"\n>;\n\nconst CivicNextAuthTokenProviderInternal = <\n TUser extends UnknownObject = UnknownObject,\n>({\n children,\n isLoading,\n displayMode = \"iframe\",\n user,\n fetchUser,\n ...props\n}: CivicNextAuthTokenProviderInternalProps<TUser>) => {\n const { iframeMode, resolvedConfig } = props;\n const { iframeRef, setIframeIsVisible, isIframeMounted, setIframeMounted } =\n useIframe();\n const civicAuthConfig = useCivicAuthConfig();\n const { challengeUrl } = resolvedConfig;\n const pkceConsumer = new ConfidentialClientPKCEConsumer(challengeUrl);\n const { data: session } = useSession();\n const currentUrl = useCurrentUrl();\n\n useEffect(() => {\n if (session?.authenticated) {\n setIframeMounted(false);\n // the session is authenticated, so don't show the login iframe\n setIframeIsVisible(false);\n return;\n }\n }, [session?.authenticated, setIframeIsVisible, setIframeMounted]);\n\n const postSignOut = useCallback(async () => {\n // user is signed out, manually update the user from cookies to not wait for polling\n await fetchUser();\n await props?.onSignOut?.();\n }, [fetchUser, props]);\n\n const { signIn, startSignIn, signOut, authStatus } = useSignIn({\n postSignOut,\n pkceConsumer,\n displayMode,\n });\n\n useEffect(() => {\n const ref = getIframeRef(iframeRef?.current, true);\n if (\n isIframeMounted &&\n civicAuthConfig &&\n !session?.authenticated &&\n ref &&\n authStatus === AuthStatus.UNAUTHENTICATED &&\n displayMode === \"iframe\" &&\n !currentUrl?.includes(\"code=\")\n ) {\n startSignIn();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isIframeMounted,\n currentUrl,\n iframeMode,\n iframeRef,\n civicAuthConfig,\n session?.authenticated,\n authStatus,\n startSignIn,\n displayMode,\n ]);\n\n const { error: refreshError } = useRefresh(session);\n\n useEffect(() => {\n if (refreshError) {\n console.error(\"Error refreshing token, signing out...\", refreshError);\n signOut();\n }\n }, [refreshError, signOut]);\n\n return (\n <TokenProvider>\n <UserProvider\n storage={new BrowserCookieStorage()}\n user={user}\n signOut={signOut}\n signIn={signIn}\n displayMode={displayMode}\n authStatus={authStatus}\n >\n <IFrameAndLoading error={null} isLoading={isLoading} />\n {isLoading && (\n <BlockDisplay>\n <LoadingIcon />\n </BlockDisplay>\n )}\n {children}\n </UserProvider>\n </TokenProvider>\n );\n};\n\nconst CivicNextAuthProviderInternal = ({\n children,\n ...props\n}: NextCivicAuthProviderInternalProps) => {\n // if the SDK loads in an iframe, we show the loading spinner as the iframe\n // will be waiting to be minimized\n const isLoading = useIsInIframe();\n const { user, idToken, fetchUser } = useUserCookie();\n\n const session = {\n authenticated: !!user,\n idToken,\n };\n\n return (\n <SessionProvider data={session} isLoading={isLoading}>\n <CivicNextAuthTokenProviderInternal\n {...props}\n user={user}\n idToken={idToken}\n fetchUser={fetchUser}\n isLoading={isLoading}\n >\n {children}\n </CivicNextAuthTokenProviderInternal>\n </SessionProvider>\n );\n};\n\nconst CivicNextAuthProvider = ({\n children,\n ...props\n}: NextCivicAuthProviderProps) => {\n const resolvedConfig = resolveAuthConfig();\n const {\n clientId,\n oauthServer,\n callbackUrl,\n challengeUrl,\n logoutUrl,\n refreshUrl,\n logoutCallbackUrl,\n } = resolvedConfig;\n const [redirectUrl, setRedirectUrl] = useState<string>(\"\");\n\n useEffect(() => {\n if (typeof globalThis.window !== \"undefined\") {\n const appUrl = globalThis.window.location.origin;\n setRedirectUrl(resolveCallbackUrl(resolvedConfig, appUrl));\n }\n }, [callbackUrl, resolvedConfig]);\n\n return (\n <CivicAuthConfigProvider\n oauthServer={oauthServer}\n clientId={clientId}\n redirectUrl={redirectUrl}\n logoutRedirectUrl={logoutCallbackUrl}\n nonce={props?.nonce}\n challengeUrl={challengeUrl}\n refreshUrl={refreshUrl}\n logoutUrl={logoutUrl}\n logoutCallbackUrl={logoutCallbackUrl}\n >\n <IframeProvider iframeMode={props.iframeMode}>\n <CivicNextAuthProviderInternal\n {...props}\n resolvedConfig={resolvedConfig}\n >\n {children}\n </CivicNextAuthProviderInternal>\n </IframeProvider>\n </CivicAuthConfigProvider>\n );\n};\n\nexport { CivicNextAuthProvider, type NextCivicAuthProviderProps };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"routeHandler.d.ts","sourceRoot":"","sources":["../../src/nextjs/routeHandler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiR9C,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CAmDvB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,iCAEF,WAAW,KAAG,OAAO,CAAC,YAAY,CAkCjD,CAAC"}
1
+ {"version":3,"file":"routeHandler.d.ts","sourceRoot":"","sources":["../../src/nextjs/routeHandler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiR9C,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CAmDvB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,GACjB,eAAe,MACT,SAAS,WAAW,KAAG,OAAO,CAAC,YAAY,CAkCjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/nextjs/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,kBAAkB,WACrB,sBAAsB,YACpB,MAAM,KACf,MAGF,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/nextjs/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,sBAAsB,EAC9B,UAAU,MAAM,KACf,MAGF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonContentOrLoader.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/ButtonContentOrLoader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,8DAK/B;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qDA0CA,CAAC"}
1
+ {"version":3,"file":"ButtonContentOrLoader.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/ButtonContentOrLoader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAAI,2DAKnC;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qDA0CA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignInButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/SignInButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D,QAAA,MAAM,YAAY,uCAIf;IACD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,qDAwCA,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"SignInButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/SignInButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1D,QAAA,MAAM,YAAY,GAAI,oCAInB;IACD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,qDAwCA,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignOutButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/SignOutButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAKhE,QAAA,MAAM,aAAa,0BAGhB;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,qDAmCA,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"SignOutButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/SignOutButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAKhE,QAAA,MAAM,aAAa,GAAI,uBAGpB;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,qDAmCA,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/UserButton.tsx"],"names":[],"mappings":"AAEA,OAAc,EAKZ,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAuCf,QAAA,MAAM,UAAU,0DAKb;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B,qDA0OA,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"UserButton.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/UserButton.tsx"],"names":[],"mappings":"AAEA,OAAc,EAKZ,KAAK,aAAa,EACnB,MAAM,OAAO,CAAC;AAuCf,QAAA,MAAM,UAAU,GAAI,uDAKjB;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B,qDA0OA,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,eACf,UAAU,eACT,WAAW,sBACJ,OAAO,wBAe5B,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/reactjs/components/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,GAC3B,YAAY,UAAU,EACtB,aAAa,WAAW,EACxB,oBAAoB,OAAO,wBAe5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../src/reactjs/hooks/useUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAE5C,QAAA,MAAM,OAAO,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,+BAC9B,eAAe,CAAC,CAAC,CAQrB,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../src/reactjs/hooks/useUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAE5C,QAAA,MAAM,OAAO,GACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OACtD,eAAe,CAAC,CAAC,CAQrB,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/AuthProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAgBrE,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,YAAY,8EAOf,yBAAyB,qDA8F3B,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/AuthProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAiBrE,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,2EAOnB,yBAAyB,qDA+F3B,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -11,6 +11,7 @@ import { IFrameAndLoading } from "../../shared/components/IFrameAndLoading.js";
11
11
  import { useIsInIframe } from "../../shared/hooks/useIsInIframe.js";
12
12
  import { useCurrentUrl } from "../../shared/hooks/useCurrentUrl.js";
13
13
  import { useRefresh } from "../../shared/hooks/useRefresh.js";
14
+ import { getIframeRef } from "../../shared/lib/iframeUtils.js";
14
15
  // Global this object setup
15
16
  let globalThisObject;
16
17
  if (typeof window !== "undefined") {
@@ -47,9 +48,10 @@ const AuthProvider = ({ children, onSignIn, onSignOut, pkceConsumer, iframeMode
47
48
  return !!localSessionData?.idToken;
48
49
  }, [localSessionData]);
49
50
  useEffect(() => {
51
+ const ref = getIframeRef(iframeRef?.current, true);
50
52
  if (redirectUrl &&
51
53
  !isAuthenticated &&
52
- iframeRef?.current &&
54
+ ref &&
53
55
  displayMode === "iframe" &&
54
56
  !currentUrl?.includes("code=")) {
55
57
  startSignIn();
@@ -1 +1 @@
1
- {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../../src/reactjs/providers/AuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { type SessionData } from \"@/types.js\";\nimport { AuthContext } from \"@/shared/providers/AuthContext.js\";\nimport type { PKCEConsumer } from \"@/services/types.js\";\nimport { useSignIn } from \"@/shared/hooks/useSignIn.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport { useSession } from \"@/shared/hooks/useSession.js\";\nimport { IFrameAndLoading } from \"@/shared/components/IFrameAndLoading.js\";\nimport type { AuthProviderProps } from \"@/shared/providers/types.js\";\nimport { useIsInIframe } from \"@/shared/hooks/useIsInIframe.js\";\nimport { useCurrentUrl } from \"@/shared/hooks/useCurrentUrl.js\";\nimport { useRefresh } from \"@/shared/hooks/useRefresh.js\";\n\n// Global this object setup\nlet globalThisObject;\nif (typeof window !== \"undefined\") {\n globalThisObject = window;\n} else if (typeof global !== \"undefined\") {\n globalThisObject = global;\n} else {\n globalThisObject = Function(\"return this\")();\n}\nglobalThisObject.globalThis = globalThisObject;\n\nexport type InternalAuthProviderProps = AuthProviderProps & {\n sessionData?: SessionData;\n pkceConsumer?: PKCEConsumer;\n};\n\nconst AuthProvider = ({\n children,\n onSignIn,\n onSignOut,\n pkceConsumer,\n iframeMode = \"modal\",\n displayMode = \"iframe\",\n}: InternalAuthProviderProps) => {\n const authConfig = useCivicAuthConfig();\n const { redirectUrl } = authConfig || {};\n const { iframeRef } = useIframe();\n const currentUrl = useCurrentUrl();\n const { signIn, signOut, authStatus, startSignIn } = useSignIn({\n preSignOut: onSignOut,\n pkceConsumer,\n displayMode,\n });\n\n const [localSessionData, setLocalSessionData] =\n useState<SessionData | null>();\n\n const {\n data: session,\n error: tokenExchangeError,\n isLoading: tokenExchangeInProgress,\n } = useSession();\n\n useEffect(() => {\n if (session) {\n setLocalSessionData(session);\n if (session.authenticated) {\n onSignIn?.();\n }\n }\n }, [onSignIn, session]);\n\n const isAuthenticated = useMemo(() => {\n return !!localSessionData?.idToken;\n }, [localSessionData]);\n\n useEffect(() => {\n if (\n redirectUrl &&\n !isAuthenticated &&\n iframeRef?.current &&\n displayMode === \"iframe\" &&\n !currentUrl?.includes(\"code=\")\n ) {\n startSignIn();\n }\n }, [\n currentUrl,\n iframeMode,\n redirectUrl,\n isAuthenticated,\n iframeRef,\n displayMode,\n startSignIn,\n ]);\n\n const isInIframe = useIsInIframe();\n // if the SDK loads in an iframe, we show the loading spinner as the iframe\n // will be waiting to be minimized\n const isLoading = tokenExchangeInProgress || !authConfig || isInIframe;\n\n const { error: refreshError } = useRefresh(session);\n\n useEffect(() => {\n if (refreshError) {\n console.error(\"Error refreshing token, signingOut...\", refreshError);\n signOut();\n }\n }, [refreshError, signOut]);\n\n const value = useMemo(\n () => ({\n isLoading,\n error: tokenExchangeError as Error | null,\n signOut,\n authStatus,\n isAuthenticated,\n signIn,\n displayMode,\n }),\n [\n isLoading,\n tokenExchangeError,\n signOut,\n authStatus,\n isAuthenticated,\n signIn,\n displayMode,\n ],\n );\n\n return (\n <AuthContext.Provider value={value}>\n <IFrameAndLoading error={tokenExchangeError} isLoading={isLoading} />\n {children}\n </AuthContext.Provider>\n );\n};\n\nexport { AuthProvider };\n"]}
1
+ {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../../src/reactjs/providers/AuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { type SessionData } from \"@/types.js\";\nimport { AuthContext } from \"@/shared/providers/AuthContext.js\";\nimport type { PKCEConsumer } from \"@/services/types.js\";\nimport { useSignIn } from \"@/shared/hooks/useSignIn.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport { useSession } from \"@/shared/hooks/useSession.js\";\nimport { IFrameAndLoading } from \"@/shared/components/IFrameAndLoading.js\";\nimport type { AuthProviderProps } from \"@/shared/providers/types.js\";\nimport { useIsInIframe } from \"@/shared/hooks/useIsInIframe.js\";\nimport { useCurrentUrl } from \"@/shared/hooks/useCurrentUrl.js\";\nimport { useRefresh } from \"@/shared/hooks/useRefresh.js\";\nimport { getIframeRef } from \"@/shared/lib/iframeUtils.js\";\n\n// Global this object setup\nlet globalThisObject;\nif (typeof window !== \"undefined\") {\n globalThisObject = window;\n} else if (typeof global !== \"undefined\") {\n globalThisObject = global;\n} else {\n globalThisObject = Function(\"return this\")();\n}\nglobalThisObject.globalThis = globalThisObject;\n\nexport type InternalAuthProviderProps = AuthProviderProps & {\n sessionData?: SessionData;\n pkceConsumer?: PKCEConsumer;\n};\n\nconst AuthProvider = ({\n children,\n onSignIn,\n onSignOut,\n pkceConsumer,\n iframeMode = \"modal\",\n displayMode = \"iframe\",\n}: InternalAuthProviderProps) => {\n const authConfig = useCivicAuthConfig();\n const { redirectUrl } = authConfig || {};\n const { iframeRef } = useIframe();\n const currentUrl = useCurrentUrl();\n const { signIn, signOut, authStatus, startSignIn } = useSignIn({\n preSignOut: onSignOut,\n pkceConsumer,\n displayMode,\n });\n\n const [localSessionData, setLocalSessionData] =\n useState<SessionData | null>();\n\n const {\n data: session,\n error: tokenExchangeError,\n isLoading: tokenExchangeInProgress,\n } = useSession();\n\n useEffect(() => {\n if (session) {\n setLocalSessionData(session);\n if (session.authenticated) {\n onSignIn?.();\n }\n }\n }, [onSignIn, session]);\n\n const isAuthenticated = useMemo(() => {\n return !!localSessionData?.idToken;\n }, [localSessionData]);\n\n useEffect(() => {\n const ref = getIframeRef(iframeRef?.current, true);\n if (\n redirectUrl &&\n !isAuthenticated &&\n ref &&\n displayMode === \"iframe\" &&\n !currentUrl?.includes(\"code=\")\n ) {\n startSignIn();\n }\n }, [\n currentUrl,\n iframeMode,\n redirectUrl,\n isAuthenticated,\n iframeRef,\n displayMode,\n startSignIn,\n ]);\n\n const isInIframe = useIsInIframe();\n // if the SDK loads in an iframe, we show the loading spinner as the iframe\n // will be waiting to be minimized\n const isLoading = tokenExchangeInProgress || !authConfig || isInIframe;\n\n const { error: refreshError } = useRefresh(session);\n\n useEffect(() => {\n if (refreshError) {\n console.error(\"Error refreshing token, signingOut...\", refreshError);\n signOut();\n }\n }, [refreshError, signOut]);\n\n const value = useMemo(\n () => ({\n isLoading,\n error: tokenExchangeError as Error | null,\n signOut,\n authStatus,\n isAuthenticated,\n signIn,\n displayMode,\n }),\n [\n isLoading,\n tokenExchangeError,\n signOut,\n authStatus,\n isAuthenticated,\n signIn,\n displayMode,\n ],\n );\n\n return (\n <AuthContext.Provider value={value}>\n <IFrameAndLoading error={tokenExchangeError} isLoading={isLoading} />\n {children}\n </AuthContext.Provider>\n );\n};\n\nexport { AuthProvider };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CivicAuthProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,KAAK,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAqCtE,QAAA,MAAM,iBAAiB,2BAA4B,sBAAsB,qDAgBxE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"CivicAuthProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,KAAK,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAqCtE,QAAA,MAAM,iBAAiB,GAAI,wBAAwB,sBAAsB,qDAgBxE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClientTokenExchangeSessionProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,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,qDAmJvC,CAAC;AAEF,YAAY,EAAE,qCAAqC,IAAI,kBAAkB,EAAE,CAAC;AAC5E,OAAO,EACL,kCAAkC,EAClC,iCAAiC,GAClC,CAAC"}
1
+ {"version":3,"file":"ClientTokenExchangeSessionProvider.d.ts","sourceRoot":"","sources":["../../../src/reactjs/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,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,GAAI,eAEzC,qCAAqC,qDAmJvC,CAAC;AAEF,YAAY,EAAE,qCAAqC,IAAI,kBAAkB,EAAE,CAAC;AAC5E,OAAO,EACL,kCAAkC,EAClC,iCAAiC,GAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockDisplay.d.ts","sourceRoot":"","sources":["../../../src/shared/components/BlockDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,QAAA,MAAM,YAAY,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,qDAmC1D,CAAC;AACF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"BlockDisplay.d.ts","sourceRoot":"","sources":["../../../src/shared/components/BlockDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,QAAA,MAAM,YAAY,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,qDAmC1D,CAAC;AACF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CivicAuthIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,KAAK,6BAA6B,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAeF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,oDAkFA;AAED,QAAA,MAAM,wBAAwB,kCAG3B,6BAA6B,qDA4G/B,CAAC;AAEF,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"CivicAuthIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,KAAK,6BAA6B,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAeF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,oDAkFA;AAED,QAAA,MAAM,wBAAwB,GAAI,+BAG/B,6BAA6B,qDAiH/B,CAAC;AAEF,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -74,7 +74,10 @@ const CivicAuthIframeContainer = ({ onClose, closeOnRedirect = true, }) => {
74
74
  const config = useCivicAuthConfig();
75
75
  const [tokenExchangeUrl, setTokenExchangeUrl] = useState(null);
76
76
  const { doTokenExchange } = useClientTokenExchangeSession();
77
- const { iframeRef, iframeMode, backgroundColor } = useIframe();
77
+ const { iframeRef, iframeMode, backgroundColor, setIframeMounted } = useIframe();
78
+ useEffect(() => {
79
+ setIframeMounted(true);
80
+ }, [setIframeMounted]);
78
81
  useEffect(() => {
79
82
  if (tokenExchangeUrl) {
80
83
  doTokenExchange?.(tokenExchangeUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"CivicAuthIframeContainer.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { CloseIcon } from \"@/shared/components/CloseIcon.js\";\nimport { CivicAuthIframe } from \"@/shared/components/CivicAuthIframe.js\";\nimport { useIframe } from \"@/shared/hooks/index.js\";\nimport { TOKEN_EXCHANGE_TRIGGER_TEXT } from \"@/constants.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/index.js\";\nimport { useClientTokenExchangeSession } from \"@/shared/hooks/index.js\";\nimport { getIframeRef } from \"../lib/iframeUtils.js\";\n\ntype CivicAuthIframeContainerProps = {\n onClose?: () => void;\n closeOnRedirect?: boolean;\n};\n\nfunction NoChrome({\n children,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <div data-testid=\"civic-iframe-no-chrome\" style={{ position: \"relative\" }}>\n {children}\n </div>\n );\n}\n\nexport function IframeChrome({\n children,\n onClose,\n isFrameLoaded,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n isFrameLoaded: boolean;\n}) {\n const { setIframeAborted, iframeMode, backgroundColor } = useIframe();\n\n const iframeContainerStyleOverrides =\n iframeMode === \"embedded\"\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : {\n ...(isFrameLoaded\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : { borderRadius: \"0.5rem\", paddingTop: \"0\" }),\n };\n return (\n <div\n style={{\n position: \"fixed\", // Change to fixed to stay in viewport\n left: 0,\n top: 0,\n zIndex: 50,\n display: \"flex\",\n height: \"100vh\",\n width: \"100vw\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(17, 24, 39, 0.5)\", // Semi-transparent dark background\n backdropFilter: \"blur(4px)\", // Optional: adds slight blur to background\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <div\n data-testid=\"iframe-chrome\"\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n backgroundColor,\n paddingLeft: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n // paddingTop gets added in style overrides\n ...iframeContainerStyleOverrides,\n boxShadow:\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n minWidth: \"20rem\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {isFrameLoaded && (\n <button\n style={{\n position: \"absolute\",\n right: \"1rem\",\n top: \"1rem\",\n display: \"flex\",\n cursor: \"pointer\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n backgroundColor: \"transparent\",\n padding: \"0.25rem\",\n color: \"#9ca3af\",\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <CloseIcon />\n </button>\n )}\n\n {children}\n </div>\n </div>\n );\n}\n\nconst CivicAuthIframeContainer = ({\n onClose,\n closeOnRedirect = true,\n}: CivicAuthIframeContainerProps) => {\n const config = useCivicAuthConfig();\n const [tokenExchangeUrl, setTokenExchangeUrl] = useState<string | null>(null);\n const { doTokenExchange } = useClientTokenExchangeSession();\n const { iframeRef, iframeMode, backgroundColor } = useIframe();\n\n useEffect(() => {\n if (tokenExchangeUrl) {\n doTokenExchange?.(tokenExchangeUrl);\n }\n }, [doTokenExchange, tokenExchangeUrl]);\n\n const processIframeUrl = useCallback(() => {\n if (!config) return;\n if (iframeRef && iframeRef.current) {\n const ref = getIframeRef(iframeRef.current)!;\n if (ref.contentWindow) {\n try {\n const iframeUrl = ref.contentWindow.location.href;\n // we know that oauth has finished when the iframe redirects to our redirectUrl\n if (iframeUrl.startsWith(config.redirectUrl)) {\n const iframeBody = ref.contentWindow.document.body.innerHTML;\n\n // If we're doing a server token exchange, we need to call the server a second time\n // using a fetch so that we're on the same domain and cookies can be sent and read\n // The server will use the presence of the code_verifier cookie to determine whether to do a token exchange or not.\n // On the initial (3rd party) redirect from the auth server, the cookie won't be sent, so the server-side callback route will just render a blank page,\n // and we'll do the exchange request from here, which will include the cookies.\n if (iframeBody.includes(TOKEN_EXCHANGE_TRIGGER_TEXT)) {\n const params = new URL(iframeUrl).searchParams;\n const appUrl = globalThis.window?.location?.origin;\n fetch(\n `${config.redirectUrl}?${params.toString()}&appUrl=${appUrl}`,\n );\n } else {\n // if we're doing token-exchange in the client, we can just set the authResponseUrl\n // to be handled by the auth provider\n // iframeRef.current.setAttribute(\"src\", \"\");\n setTokenExchangeUrl(iframeUrl);\n }\n\n if (closeOnRedirect) onClose?.();\n return true; // Successfully processed the URL\n }\n } catch {\n // ignore errors while waiting for redirect\n }\n }\n }\n return false; // Haven't processed the URL yet\n }, [closeOnRedirect, config, iframeRef, onClose]);\n\n const intervalId = useRef<NodeJS.Timeout>();\n\n const handleEscape = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose?.();\n }\n },\n [onClose],\n );\n\n // handle Escape\n useEffect(() => {\n window.addEventListener(\"keydown\", handleEscape);\n\n return () => window.removeEventListener(\"keydown\", handleEscape);\n });\n\n const [isIframeContentLoaded, setIsIframeContentLoaded] = useState(false);\n const handleIframeLoad = useCallback(() => {\n setIsIframeContentLoaded(true);\n\n const iframeHasUrl = processIframeUrl();\n if (iframeHasUrl && intervalId.current) {\n clearInterval(intervalId.current);\n }\n }, [processIframeUrl, intervalId]);\n\n const WrapperComponent = iframeMode === \"embedded\" ? NoChrome : IframeChrome;\n\n const showLoadingIcon = !isIframeContentLoaded && iframeMode === \"embedded\";\n return (\n <WrapperComponent onClose={onClose} isFrameLoaded={isIframeContentLoaded}>\n {showLoadingIcon ? (\n <div\n id=\"civic-auth-loading-icon-wrapper\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor,\n borderRadius: \"24px\",\n }}\n >\n <LoadingIcon />\n </div>\n ) : null}\n <CivicAuthIframe\n ref={iframeRef}\n id={\"civic-auth-iframe\"}\n onLoad={handleIframeLoad}\n />\n </WrapperComponent>\n );\n};\n\nexport type { CivicAuthIframeContainerProps };\n\nexport { CivicAuthIframeContainer };\n"]}
1
+ {"version":3,"file":"CivicAuthIframeContainer.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { CloseIcon } from \"@/shared/components/CloseIcon.js\";\nimport { CivicAuthIframe } from \"@/shared/components/CivicAuthIframe.js\";\nimport { useIframe } from \"@/shared/hooks/index.js\";\nimport { TOKEN_EXCHANGE_TRIGGER_TEXT } from \"@/constants.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/index.js\";\nimport { useClientTokenExchangeSession } from \"@/shared/hooks/index.js\";\nimport { getIframeRef } from \"../lib/iframeUtils.js\";\n\ntype CivicAuthIframeContainerProps = {\n onClose?: () => void;\n closeOnRedirect?: boolean;\n};\n\nfunction NoChrome({\n children,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <div data-testid=\"civic-iframe-no-chrome\" style={{ position: \"relative\" }}>\n {children}\n </div>\n );\n}\n\nexport function IframeChrome({\n children,\n onClose,\n isFrameLoaded,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n isFrameLoaded: boolean;\n}) {\n const { setIframeAborted, iframeMode, backgroundColor } = useIframe();\n\n const iframeContainerStyleOverrides =\n iframeMode === \"embedded\"\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : {\n ...(isFrameLoaded\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : { borderRadius: \"0.5rem\", paddingTop: \"0\" }),\n };\n return (\n <div\n style={{\n position: \"fixed\", // Change to fixed to stay in viewport\n left: 0,\n top: 0,\n zIndex: 50,\n display: \"flex\",\n height: \"100vh\",\n width: \"100vw\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(17, 24, 39, 0.5)\", // Semi-transparent dark background\n backdropFilter: \"blur(4px)\", // Optional: adds slight blur to background\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <div\n data-testid=\"iframe-chrome\"\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n backgroundColor,\n paddingLeft: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n // paddingTop gets added in style overrides\n ...iframeContainerStyleOverrides,\n boxShadow:\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n minWidth: \"20rem\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {isFrameLoaded && (\n <button\n style={{\n position: \"absolute\",\n right: \"1rem\",\n top: \"1rem\",\n display: \"flex\",\n cursor: \"pointer\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n backgroundColor: \"transparent\",\n padding: \"0.25rem\",\n color: \"#9ca3af\",\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <CloseIcon />\n </button>\n )}\n\n {children}\n </div>\n </div>\n );\n}\n\nconst CivicAuthIframeContainer = ({\n onClose,\n closeOnRedirect = true,\n}: CivicAuthIframeContainerProps) => {\n const config = useCivicAuthConfig();\n const [tokenExchangeUrl, setTokenExchangeUrl] = useState<string | null>(null);\n const { doTokenExchange } = useClientTokenExchangeSession();\n const { iframeRef, iframeMode, backgroundColor, setIframeMounted } =\n useIframe();\n\n useEffect(() => {\n setIframeMounted(true);\n }, [setIframeMounted]);\n\n useEffect(() => {\n if (tokenExchangeUrl) {\n doTokenExchange?.(tokenExchangeUrl);\n }\n }, [doTokenExchange, tokenExchangeUrl]);\n\n const processIframeUrl = useCallback(() => {\n if (!config) return;\n if (iframeRef && iframeRef.current) {\n const ref = getIframeRef(iframeRef.current)!;\n if (ref.contentWindow) {\n try {\n const iframeUrl = ref.contentWindow.location.href;\n // we know that oauth has finished when the iframe redirects to our redirectUrl\n if (iframeUrl.startsWith(config.redirectUrl)) {\n const iframeBody = ref.contentWindow.document.body.innerHTML;\n\n // If we're doing a server token exchange, we need to call the server a second time\n // using a fetch so that we're on the same domain and cookies can be sent and read\n // The server will use the presence of the code_verifier cookie to determine whether to do a token exchange or not.\n // On the initial (3rd party) redirect from the auth server, the cookie won't be sent, so the server-side callback route will just render a blank page,\n // and we'll do the exchange request from here, which will include the cookies.\n if (iframeBody.includes(TOKEN_EXCHANGE_TRIGGER_TEXT)) {\n const params = new URL(iframeUrl).searchParams;\n const appUrl = globalThis.window?.location?.origin;\n fetch(\n `${config.redirectUrl}?${params.toString()}&appUrl=${appUrl}`,\n );\n } else {\n // if we're doing token-exchange in the client, we can just set the authResponseUrl\n // to be handled by the auth provider\n // iframeRef.current.setAttribute(\"src\", \"\");\n setTokenExchangeUrl(iframeUrl);\n }\n\n if (closeOnRedirect) onClose?.();\n return true; // Successfully processed the URL\n }\n } catch {\n // ignore errors while waiting for redirect\n }\n }\n }\n return false; // Haven't processed the URL yet\n }, [closeOnRedirect, config, iframeRef, onClose]);\n\n const intervalId = useRef<NodeJS.Timeout>();\n\n const handleEscape = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose?.();\n }\n },\n [onClose],\n );\n\n // handle Escape\n useEffect(() => {\n window.addEventListener(\"keydown\", handleEscape);\n\n return () => window.removeEventListener(\"keydown\", handleEscape);\n });\n\n const [isIframeContentLoaded, setIsIframeContentLoaded] = useState(false);\n const handleIframeLoad = useCallback(() => {\n setIsIframeContentLoaded(true);\n\n const iframeHasUrl = processIframeUrl();\n if (iframeHasUrl && intervalId.current) {\n clearInterval(intervalId.current);\n }\n }, [processIframeUrl, intervalId]);\n\n const WrapperComponent = iframeMode === \"embedded\" ? NoChrome : IframeChrome;\n\n const showLoadingIcon = !isIframeContentLoaded && iframeMode === \"embedded\";\n return (\n <WrapperComponent onClose={onClose} isFrameLoaded={isIframeContentLoaded}>\n {showLoadingIcon ? (\n <div\n id=\"civic-auth-loading-icon-wrapper\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor,\n borderRadius: \"24px\",\n }}\n >\n <LoadingIcon />\n </div>\n ) : null}\n <CivicAuthIframe\n ref={iframeRef}\n id={\"civic-auth-iframe\"}\n onLoad={handleIframeLoad}\n />\n </WrapperComponent>\n );\n};\n\nexport type { CivicAuthIframeContainerProps };\n\nexport { CivicAuthIframeContainer };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CivicAuthLogoutIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthLogoutIframeContainer.tsx"],"names":[],"mappings":"AAQA,KAAK,mCAAmC,GAAG;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,8BAA8B,mBAEjC,mCAAmC,qDA0BrC,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
1
+ {"version":3,"file":"CivicAuthLogoutIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthLogoutIframeContainer.tsx"],"names":[],"mappings":"AAQA,KAAK,mCAAmC,GAAG;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,8BAA8B,GAAI,gBAErC,mCAAmC,qDA0BrC,CAAC;AAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IFrameAndLoading.d.ts","sourceRoot":"","sources":["../../../src/shared/components/IFrameAndLoading.tsx"],"names":[],"mappings":"AAQA,QAAA,MAAM,gBAAgB,8CAInB;IACD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,qDAuEA,CAAC;AACF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"IFrameAndLoading.d.ts","sourceRoot":"","sources":["../../../src/shared/components/IFrameAndLoading.tsx"],"names":[],"mappings":"AAQA,QAAA,MAAM,gBAAgB,GAAI,2CAIvB;IACD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,qDAuEA,CAAC;AACF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingIcon.d.ts","sourceRoot":"","sources":["../../../src/shared/components/LoadingIcon.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,WAAW;;;sDAgDhB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"LoadingIcon.d.ts","sourceRoot":"","sources":["../../../src/shared/components/LoadingIcon.tsx"],"names":[],"mappings":"AAEA,QAAA,MAAM,WAAW,GAAI;;;CAAiC,qDAgDrD,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}