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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (701) hide show
  1. package/README.md +4 -26
  2. package/dist/chunk-3UIVD6NR.mjs +268 -0
  3. package/dist/chunk-3UIVD6NR.mjs.map +1 -0
  4. package/dist/chunk-CRTRMMJ7.js +59 -0
  5. package/dist/chunk-CRTRMMJ7.js.map +1 -0
  6. package/dist/chunk-KBDRDCE5.mjs +239 -0
  7. package/dist/chunk-KBDRDCE5.mjs.map +1 -0
  8. package/dist/chunk-NQPMNXBL.mjs +154 -0
  9. package/dist/chunk-NQPMNXBL.mjs.map +1 -0
  10. package/dist/chunk-OLT5HB3G.js +239 -0
  11. package/dist/chunk-OLT5HB3G.js.map +1 -0
  12. package/dist/chunk-RGHW4PYM.mjs +59 -0
  13. package/dist/chunk-RGHW4PYM.mjs.map +1 -0
  14. package/dist/chunk-T47HULF6.js +268 -0
  15. package/dist/chunk-T47HULF6.js.map +1 -0
  16. package/dist/chunk-WPISYQG3.js +154 -0
  17. package/dist/chunk-WPISYQG3.js.map +1 -0
  18. package/dist/index-DoDoIY_K.d.mts +79 -0
  19. package/dist/index-DoDoIY_K.d.ts +79 -0
  20. package/dist/index.css +339 -0
  21. package/dist/index.css.map +1 -0
  22. package/dist/index.d.mts +3 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/index.mjs +2 -0
  27. package/dist/index.mjs.map +1 -0
  28. package/dist/nextjs.d.mts +225 -0
  29. package/dist/nextjs.d.ts +225 -0
  30. package/dist/nextjs.js +253 -0
  31. package/dist/nextjs.js.map +1 -0
  32. package/dist/nextjs.mjs +253 -0
  33. package/dist/nextjs.mjs.map +1 -0
  34. package/dist/react.d.mts +119 -0
  35. package/dist/react.d.ts +119 -0
  36. package/dist/react.js +1179 -0
  37. package/dist/react.js.map +1 -0
  38. package/dist/react.mjs +1179 -0
  39. package/dist/react.mjs.map +1 -0
  40. package/dist/server.d.mts +61 -0
  41. package/dist/server.d.ts +61 -0
  42. package/dist/server.js +19 -0
  43. package/dist/server.js.map +1 -0
  44. package/dist/server.mjs +19 -0
  45. package/dist/server.mjs.map +1 -0
  46. package/package.json +42 -52
  47. package/.eslintignore +0 -3
  48. package/.eslintrc.json +0 -10
  49. package/.prettierignore +0 -3
  50. package/.prettierrc +0 -1
  51. package/.turbo/turbo-build.log +0 -13
  52. package/.turbo/turbo-lint$colon$fix.log +0 -16
  53. package/.turbo/turbo-test.log +0 -1153
  54. package/dist/cjs/src/browser/storage.d.ts +0 -6
  55. package/dist/cjs/src/browser/storage.d.ts.map +0 -1
  56. package/dist/cjs/src/browser/storage.js +0 -13
  57. package/dist/cjs/src/browser/storage.js.map +0 -1
  58. package/dist/cjs/src/config.d.ts +0 -3
  59. package/dist/cjs/src/config.d.ts.map +0 -1
  60. package/dist/cjs/src/config.js +0 -8
  61. package/dist/cjs/src/config.js.map +0 -1
  62. package/dist/cjs/src/constants.d.ts +0 -9
  63. package/dist/cjs/src/constants.d.ts.map +0 -1
  64. package/dist/cjs/src/constants.js +0 -26
  65. package/dist/cjs/src/constants.js.map +0 -1
  66. package/dist/cjs/src/index.d.ts +0 -4
  67. package/dist/cjs/src/index.d.ts.map +0 -1
  68. package/dist/cjs/src/index.js +0 -3
  69. package/dist/cjs/src/index.js.map +0 -1
  70. package/dist/cjs/src/lib/cookies.d.ts +0 -7
  71. package/dist/cjs/src/lib/cookies.d.ts.map +0 -1
  72. package/dist/cjs/src/lib/cookies.js +0 -26
  73. package/dist/cjs/src/lib/cookies.js.map +0 -1
  74. package/dist/cjs/src/lib/jwt.d.ts +0 -3
  75. package/dist/cjs/src/lib/jwt.d.ts.map +0 -1
  76. package/dist/cjs/src/lib/jwt.js +0 -13
  77. package/dist/cjs/src/lib/jwt.js.map +0 -1
  78. package/dist/cjs/src/lib/logger.d.ts +0 -26
  79. package/dist/cjs/src/lib/logger.d.ts.map +0 -1
  80. package/dist/cjs/src/lib/logger.js +0 -62
  81. package/dist/cjs/src/lib/logger.js.map +0 -1
  82. package/dist/cjs/src/lib/oauth.d.ts +0 -19
  83. package/dist/cjs/src/lib/oauth.d.ts.map +0 -1
  84. package/dist/cjs/src/lib/oauth.js +0 -67
  85. package/dist/cjs/src/lib/oauth.js.map +0 -1
  86. package/dist/cjs/src/lib/postMessage.d.ts +0 -4
  87. package/dist/cjs/src/lib/postMessage.d.ts.map +0 -1
  88. package/dist/cjs/src/lib/postMessage.js +0 -18
  89. package/dist/cjs/src/lib/postMessage.js.map +0 -1
  90. package/dist/cjs/src/lib/windowUtil.d.ts +0 -4
  91. package/dist/cjs/src/lib/windowUtil.d.ts.map +0 -1
  92. package/dist/cjs/src/lib/windowUtil.js +0 -34
  93. package/dist/cjs/src/lib/windowUtil.js.map +0 -1
  94. package/dist/cjs/src/nextjs/GetUser.d.ts +0 -6
  95. package/dist/cjs/src/nextjs/GetUser.d.ts.map +0 -1
  96. package/dist/cjs/src/nextjs/GetUser.js +0 -22
  97. package/dist/cjs/src/nextjs/GetUser.js.map +0 -1
  98. package/dist/cjs/src/nextjs/config.d.ts +0 -178
  99. package/dist/cjs/src/nextjs/config.d.ts.map +0 -1
  100. package/dist/cjs/src/nextjs/config.js +0 -167
  101. package/dist/cjs/src/nextjs/config.js.map +0 -1
  102. package/dist/cjs/src/nextjs/cookies.d.ts +0 -30
  103. package/dist/cjs/src/nextjs/cookies.d.ts.map +0 -1
  104. package/dist/cjs/src/nextjs/cookies.js +0 -119
  105. package/dist/cjs/src/nextjs/cookies.js.map +0 -1
  106. package/dist/cjs/src/nextjs/hooks/index.d.ts +0 -2
  107. package/dist/cjs/src/nextjs/hooks/index.d.ts.map +0 -1
  108. package/dist/cjs/src/nextjs/hooks/index.js +0 -6
  109. package/dist/cjs/src/nextjs/hooks/index.js.map +0 -1
  110. package/dist/cjs/src/nextjs/hooks/useTokenCookie.d.ts +0 -3
  111. package/dist/cjs/src/nextjs/hooks/useTokenCookie.d.ts.map +0 -1
  112. package/dist/cjs/src/nextjs/hooks/useTokenCookie.js +0 -41
  113. package/dist/cjs/src/nextjs/hooks/useTokenCookie.js.map +0 -1
  114. package/dist/cjs/src/nextjs/hooks/useUserCookie.d.ts +0 -3
  115. package/dist/cjs/src/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  116. package/dist/cjs/src/nextjs/hooks/useUserCookie.js +0 -40
  117. package/dist/cjs/src/nextjs/hooks/useUserCookie.js.map +0 -1
  118. package/dist/cjs/src/nextjs/index.d.ts +0 -7
  119. package/dist/cjs/src/nextjs/index.d.ts.map +0 -1
  120. package/dist/cjs/src/nextjs/index.js +0 -18
  121. package/dist/cjs/src/nextjs/index.js.map +0 -1
  122. package/dist/cjs/src/nextjs/middleware/index.d.ts +0 -2
  123. package/dist/cjs/src/nextjs/middleware/index.d.ts.map +0 -1
  124. package/dist/cjs/src/nextjs/middleware/index.js +0 -8
  125. package/dist/cjs/src/nextjs/middleware/index.js.map +0 -1
  126. package/dist/cjs/src/nextjs/middleware.d.ts +0 -59
  127. package/dist/cjs/src/nextjs/middleware.d.ts.map +0 -1
  128. package/dist/cjs/src/nextjs/middleware.js +0 -116
  129. package/dist/cjs/src/nextjs/middleware.js.map +0 -1
  130. package/dist/cjs/src/nextjs/providers/NextAuthProvider.d.ts +0 -9
  131. package/dist/cjs/src/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  132. package/dist/cjs/src/nextjs/providers/NextAuthProvider.js +0 -76
  133. package/dist/cjs/src/nextjs/providers/NextAuthProvider.js.map +0 -1
  134. package/dist/cjs/src/nextjs/routeHandler.d.ts +0 -18
  135. package/dist/cjs/src/nextjs/routeHandler.d.ts.map +0 -1
  136. package/dist/cjs/src/nextjs/routeHandler.js +0 -217
  137. package/dist/cjs/src/nextjs/routeHandler.js.map +0 -1
  138. package/dist/cjs/src/nextjs/utils.d.ts +0 -3
  139. package/dist/cjs/src/nextjs/utils.d.ts.map +0 -1
  140. package/dist/cjs/src/nextjs/utils.js +0 -9
  141. package/dist/cjs/src/nextjs/utils.js.map +0 -1
  142. package/dist/cjs/src/reactjs/components/SignInButton.d.ts +0 -8
  143. package/dist/cjs/src/reactjs/components/SignInButton.d.ts.map +0 -1
  144. package/dist/cjs/src/reactjs/components/SignInButton.js +0 -20
  145. package/dist/cjs/src/reactjs/components/SignInButton.js.map +0 -1
  146. package/dist/cjs/src/reactjs/components/SignOutButton.d.ts +0 -6
  147. package/dist/cjs/src/reactjs/components/SignOutButton.d.ts.map +0 -1
  148. package/dist/cjs/src/reactjs/components/SignOutButton.js +0 -20
  149. package/dist/cjs/src/reactjs/components/SignOutButton.js.map +0 -1
  150. package/dist/cjs/src/reactjs/components/UserButton.d.ts +0 -8
  151. package/dist/cjs/src/reactjs/components/UserButton.d.ts.map +0 -1
  152. package/dist/cjs/src/reactjs/components/UserButton.js +0 -136
  153. package/dist/cjs/src/reactjs/components/UserButton.js.map +0 -1
  154. package/dist/cjs/src/reactjs/components/index.d.ts +0 -6
  155. package/dist/cjs/src/reactjs/components/index.d.ts.map +0 -1
  156. package/dist/cjs/src/reactjs/components/index.js +0 -14
  157. package/dist/cjs/src/reactjs/components/index.js.map +0 -1
  158. package/dist/cjs/src/reactjs/hooks/index.d.ts +0 -7
  159. package/dist/cjs/src/reactjs/hooks/index.d.ts.map +0 -1
  160. package/dist/cjs/src/reactjs/hooks/index.js +0 -16
  161. package/dist/cjs/src/reactjs/hooks/index.js.map +0 -1
  162. package/dist/cjs/src/reactjs/hooks/useAuth.d.ts +0 -3
  163. package/dist/cjs/src/reactjs/hooks/useAuth.d.ts.map +0 -1
  164. package/dist/cjs/src/reactjs/hooks/useAuth.js +0 -15
  165. package/dist/cjs/src/reactjs/hooks/useAuth.js.map +0 -1
  166. package/dist/cjs/src/reactjs/hooks/useUser.d.ts +0 -4
  167. package/dist/cjs/src/reactjs/hooks/useUser.d.ts.map +0 -1
  168. package/dist/cjs/src/reactjs/hooks/useUser.js +0 -15
  169. package/dist/cjs/src/reactjs/hooks/useUser.js.map +0 -1
  170. package/dist/cjs/src/reactjs/index.d.ts +0 -6
  171. package/dist/cjs/src/reactjs/index.d.ts.map +0 -1
  172. package/dist/cjs/src/reactjs/index.js +0 -30
  173. package/dist/cjs/src/reactjs/index.js.map +0 -1
  174. package/dist/cjs/src/reactjs/providers/index.d.ts +0 -8
  175. package/dist/cjs/src/reactjs/providers/index.d.ts.map +0 -1
  176. package/dist/cjs/src/reactjs/providers/index.js +0 -19
  177. package/dist/cjs/src/reactjs/providers/index.js.map +0 -1
  178. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts +0 -18
  179. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts.map +0 -1
  180. package/dist/cjs/src/server/ServerAuthenticationResolver.js +0 -61
  181. package/dist/cjs/src/server/ServerAuthenticationResolver.js.map +0 -1
  182. package/dist/cjs/src/server/config.d.ts +0 -16
  183. package/dist/cjs/src/server/config.d.ts.map +0 -1
  184. package/dist/cjs/src/server/config.js +0 -3
  185. package/dist/cjs/src/server/config.js.map +0 -1
  186. package/dist/cjs/src/server/index.d.ts +0 -6
  187. package/dist/cjs/src/server/index.d.ts.map +0 -1
  188. package/dist/cjs/src/server/index.js +0 -14
  189. package/dist/cjs/src/server/index.js.map +0 -1
  190. package/dist/cjs/src/server/login.d.ts +0 -17
  191. package/dist/cjs/src/server/login.d.ts.map +0 -1
  192. package/dist/cjs/src/server/login.js +0 -42
  193. package/dist/cjs/src/server/login.js.map +0 -1
  194. package/dist/cjs/src/server/refresh.d.ts +0 -7
  195. package/dist/cjs/src/server/refresh.d.ts.map +0 -1
  196. package/dist/cjs/src/server/refresh.js +0 -16
  197. package/dist/cjs/src/server/refresh.js.map +0 -1
  198. package/dist/cjs/src/services/AuthenticationService.d.ts +0 -87
  199. package/dist/cjs/src/services/AuthenticationService.d.ts.map +0 -1
  200. package/dist/cjs/src/services/AuthenticationService.js +0 -218
  201. package/dist/cjs/src/services/AuthenticationService.js.map +0 -1
  202. package/dist/cjs/src/services/PKCE.d.ts +0 -20
  203. package/dist/cjs/src/services/PKCE.d.ts.map +0 -1
  204. package/dist/cjs/src/services/PKCE.js +0 -50
  205. package/dist/cjs/src/services/PKCE.js.map +0 -1
  206. package/dist/cjs/src/services/types.d.ts +0 -23
  207. package/dist/cjs/src/services/types.d.ts.map +0 -1
  208. package/dist/cjs/src/services/types.js +0 -11
  209. package/dist/cjs/src/services/types.js.map +0 -1
  210. package/dist/cjs/src/shared/AuthProvider.d.ts +0 -18
  211. package/dist/cjs/src/shared/AuthProvider.d.ts.map +0 -1
  212. package/dist/cjs/src/shared/AuthProvider.js +0 -246
  213. package/dist/cjs/src/shared/AuthProvider.js.map +0 -1
  214. package/dist/cjs/src/shared/CivicAuthProvider.d.ts +0 -6
  215. package/dist/cjs/src/shared/CivicAuthProvider.d.ts.map +0 -1
  216. package/dist/cjs/src/shared/CivicAuthProvider.js +0 -19
  217. package/dist/cjs/src/shared/CivicAuthProvider.js.map +0 -1
  218. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts +0 -15
  219. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts.map +0 -1
  220. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js +0 -47
  221. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js.map +0 -1
  222. package/dist/cjs/src/shared/UserProvider.d.ts +0 -17
  223. package/dist/cjs/src/shared/UserProvider.d.ts.map +0 -1
  224. package/dist/cjs/src/shared/UserProvider.js +0 -42
  225. package/dist/cjs/src/shared/UserProvider.js.map +0 -1
  226. package/dist/cjs/src/shared/UserSession.d.ts +0 -12
  227. package/dist/cjs/src/shared/UserSession.d.ts.map +0 -1
  228. package/dist/cjs/src/shared/UserSession.js +0 -24
  229. package/dist/cjs/src/shared/UserSession.js.map +0 -1
  230. package/dist/cjs/src/shared/components/CivicAuthIframe.d.ts +0 -8
  231. package/dist/cjs/src/shared/components/CivicAuthIframe.d.ts.map +0 -1
  232. package/dist/cjs/src/shared/components/CivicAuthIframe.js +0 -35
  233. package/dist/cjs/src/shared/components/CivicAuthIframe.js.map +0 -1
  234. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.d.ts +0 -9
  235. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  236. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js +0 -154
  237. package/dist/cjs/src/shared/components/CivicAuthIframeContainer.js.map +0 -1
  238. package/dist/cjs/src/shared/components/CloseIcon.d.ts +0 -4
  239. package/dist/cjs/src/shared/components/CloseIcon.d.ts.map +0 -1
  240. package/dist/cjs/src/shared/components/CloseIcon.js +0 -12
  241. package/dist/cjs/src/shared/components/CloseIcon.js.map +0 -1
  242. package/dist/cjs/src/shared/components/LoadingIcon.d.ts +0 -4
  243. package/dist/cjs/src/shared/components/LoadingIcon.d.ts.map +0 -1
  244. package/dist/cjs/src/shared/components/LoadingIcon.js +0 -36
  245. package/dist/cjs/src/shared/components/LoadingIcon.js.map +0 -1
  246. package/dist/cjs/src/shared/hooks/index.d.ts +0 -5
  247. package/dist/cjs/src/shared/hooks/index.d.ts.map +0 -1
  248. package/dist/cjs/src/shared/hooks/index.js +0 -12
  249. package/dist/cjs/src/shared/hooks/index.js.map +0 -1
  250. package/dist/cjs/src/shared/hooks/useAuth.d.ts +0 -3
  251. package/dist/cjs/src/shared/hooks/useAuth.d.ts.map +0 -1
  252. package/dist/cjs/src/shared/hooks/useAuth.js +0 -15
  253. package/dist/cjs/src/shared/hooks/useAuth.js.map +0 -1
  254. package/dist/cjs/src/shared/hooks/useConfig.d.ts +0 -3
  255. package/dist/cjs/src/shared/hooks/useConfig.d.ts.map +0 -1
  256. package/dist/cjs/src/shared/hooks/useConfig.js +0 -16
  257. package/dist/cjs/src/shared/hooks/useConfig.js.map +0 -1
  258. package/dist/cjs/src/shared/hooks/useIframe.d.ts +0 -3
  259. package/dist/cjs/src/shared/hooks/useIframe.d.ts.map +0 -1
  260. package/dist/cjs/src/shared/hooks/useIframe.js +0 -16
  261. package/dist/cjs/src/shared/hooks/useIframe.js.map +0 -1
  262. package/dist/cjs/src/shared/hooks/useSession.d.ts +0 -3
  263. package/dist/cjs/src/shared/hooks/useSession.d.ts.map +0 -1
  264. package/dist/cjs/src/shared/hooks/useSession.js +0 -16
  265. package/dist/cjs/src/shared/hooks/useSession.js.map +0 -1
  266. package/dist/cjs/src/shared/hooks/useToken.d.ts +0 -3
  267. package/dist/cjs/src/shared/hooks/useToken.d.ts.map +0 -1
  268. package/dist/cjs/src/shared/hooks/useToken.js +0 -15
  269. package/dist/cjs/src/shared/hooks/useToken.js.map +0 -1
  270. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts +0 -15
  271. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  272. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js +0 -43
  273. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  274. package/dist/cjs/src/shared/lib/UserSession.d.ts +0 -12
  275. package/dist/cjs/src/shared/lib/UserSession.d.ts.map +0 -1
  276. package/dist/cjs/src/shared/lib/UserSession.js +0 -24
  277. package/dist/cjs/src/shared/lib/UserSession.js.map +0 -1
  278. package/dist/cjs/src/shared/lib/session.d.ts +0 -3
  279. package/dist/cjs/src/shared/lib/session.d.ts.map +0 -1
  280. package/dist/cjs/src/shared/lib/session.js +0 -13
  281. package/dist/cjs/src/shared/lib/session.js.map +0 -1
  282. package/dist/cjs/src/shared/lib/storage.d.ts +0 -25
  283. package/dist/cjs/src/shared/lib/storage.d.ts.map +0 -1
  284. package/dist/cjs/src/shared/lib/storage.js +0 -21
  285. package/dist/cjs/src/shared/lib/storage.js.map +0 -1
  286. package/dist/cjs/src/shared/lib/types.d.ts +0 -22
  287. package/dist/cjs/src/shared/lib/types.d.ts.map +0 -1
  288. package/dist/cjs/src/shared/lib/types.js +0 -19
  289. package/dist/cjs/src/shared/lib/types.js.map +0 -1
  290. package/dist/cjs/src/shared/lib/util.d.ts +0 -33
  291. package/dist/cjs/src/shared/lib/util.d.ts.map +0 -1
  292. package/dist/cjs/src/shared/lib/util.js +0 -163
  293. package/dist/cjs/src/shared/lib/util.js.map +0 -1
  294. package/dist/cjs/src/shared/providers/AuthContext.d.ts +0 -10
  295. package/dist/cjs/src/shared/providers/AuthContext.d.ts.map +0 -1
  296. package/dist/cjs/src/shared/providers/AuthContext.js +0 -6
  297. package/dist/cjs/src/shared/providers/AuthContext.js.map +0 -1
  298. package/dist/cjs/src/shared/providers/AuthProvider.d.ts +0 -20
  299. package/dist/cjs/src/shared/providers/AuthProvider.d.ts.map +0 -1
  300. package/dist/cjs/src/shared/providers/AuthProvider.js +0 -289
  301. package/dist/cjs/src/shared/providers/AuthProvider.js.map +0 -1
  302. package/dist/cjs/src/shared/providers/CivicAuthProvider.d.ts +0 -6
  303. package/dist/cjs/src/shared/providers/CivicAuthProvider.d.ts.map +0 -1
  304. package/dist/cjs/src/shared/providers/CivicAuthProvider.js +0 -21
  305. package/dist/cjs/src/shared/providers/CivicAuthProvider.js.map +0 -1
  306. package/dist/cjs/src/shared/providers/ConfigProvider.d.ts +0 -21
  307. package/dist/cjs/src/shared/providers/ConfigProvider.d.ts.map +0 -1
  308. package/dist/cjs/src/shared/providers/ConfigProvider.js +0 -46
  309. package/dist/cjs/src/shared/providers/ConfigProvider.js.map +0 -1
  310. package/dist/cjs/src/shared/providers/IframeProvider.d.ts +0 -16
  311. package/dist/cjs/src/shared/providers/IframeProvider.d.ts.map +0 -1
  312. package/dist/cjs/src/shared/providers/IframeProvider.js +0 -38
  313. package/dist/cjs/src/shared/providers/IframeProvider.js.map +0 -1
  314. package/dist/cjs/src/shared/providers/SessionProvider.d.ts +0 -13
  315. package/dist/cjs/src/shared/providers/SessionProvider.d.ts.map +0 -1
  316. package/dist/cjs/src/shared/providers/SessionProvider.js +0 -40
  317. package/dist/cjs/src/shared/providers/SessionProvider.js.map +0 -1
  318. package/dist/cjs/src/shared/providers/TokenProvider.d.ts +0 -18
  319. package/dist/cjs/src/shared/providers/TokenProvider.d.ts.map +0 -1
  320. package/dist/cjs/src/shared/providers/TokenProvider.js +0 -80
  321. package/dist/cjs/src/shared/providers/TokenProvider.js.map +0 -1
  322. package/dist/cjs/src/shared/providers/UserProvider.d.ts +0 -18
  323. package/dist/cjs/src/shared/providers/UserProvider.d.ts.map +0 -1
  324. package/dist/cjs/src/shared/providers/UserProvider.js +0 -65
  325. package/dist/cjs/src/shared/providers/UserProvider.js.map +0 -1
  326. package/dist/cjs/src/shared/session.d.ts +0 -3
  327. package/dist/cjs/src/shared/session.d.ts.map +0 -1
  328. package/dist/cjs/src/shared/session.js +0 -13
  329. package/dist/cjs/src/shared/session.js.map +0 -1
  330. package/dist/cjs/src/shared/util.d.ts +0 -39
  331. package/dist/cjs/src/shared/util.d.ts.map +0 -1
  332. package/dist/cjs/src/shared/util.js +0 -162
  333. package/dist/cjs/src/shared/util.js.map +0 -1
  334. package/dist/cjs/src/types.d.ts +0 -146
  335. package/dist/cjs/src/types.d.ts.map +0 -1
  336. package/dist/cjs/src/types.js +0 -3
  337. package/dist/cjs/src/types.js.map +0 -1
  338. package/dist/cjs/src/utils.d.ts +0 -15
  339. package/dist/cjs/src/utils.d.ts.map +0 -1
  340. package/dist/cjs/src/utils.js +0 -47
  341. package/dist/cjs/src/utils.js.map +0 -1
  342. package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
  343. package/dist/esm/src/browser/storage.d.ts +0 -6
  344. package/dist/esm/src/browser/storage.d.ts.map +0 -1
  345. package/dist/esm/src/browser/storage.js +0 -9
  346. package/dist/esm/src/browser/storage.js.map +0 -1
  347. package/dist/esm/src/config.d.ts +0 -3
  348. package/dist/esm/src/config.d.ts.map +0 -1
  349. package/dist/esm/src/config.js +0 -5
  350. package/dist/esm/src/config.js.map +0 -1
  351. package/dist/esm/src/constants.d.ts +0 -9
  352. package/dist/esm/src/constants.d.ts.map +0 -1
  353. package/dist/esm/src/constants.js +0 -17
  354. package/dist/esm/src/constants.js.map +0 -1
  355. package/dist/esm/src/index.d.ts +0 -4
  356. package/dist/esm/src/index.d.ts.map +0 -1
  357. package/dist/esm/src/index.js +0 -2
  358. package/dist/esm/src/index.js.map +0 -1
  359. package/dist/esm/src/lib/cookies.d.ts +0 -7
  360. package/dist/esm/src/lib/cookies.d.ts.map +0 -1
  361. package/dist/esm/src/lib/cookies.js +0 -23
  362. package/dist/esm/src/lib/cookies.js.map +0 -1
  363. package/dist/esm/src/lib/jwt.d.ts +0 -3
  364. package/dist/esm/src/lib/jwt.d.ts.map +0 -1
  365. package/dist/esm/src/lib/jwt.js +0 -9
  366. package/dist/esm/src/lib/jwt.js.map +0 -1
  367. package/dist/esm/src/lib/logger.d.ts +0 -26
  368. package/dist/esm/src/lib/logger.d.ts.map +0 -1
  369. package/dist/esm/src/lib/logger.js +0 -55
  370. package/dist/esm/src/lib/logger.js.map +0 -1
  371. package/dist/esm/src/lib/oauth.d.ts +0 -19
  372. package/dist/esm/src/lib/oauth.d.ts.map +0 -1
  373. package/dist/esm/src/lib/oauth.js +0 -60
  374. package/dist/esm/src/lib/oauth.js.map +0 -1
  375. package/dist/esm/src/lib/postMessage.d.ts +0 -4
  376. package/dist/esm/src/lib/postMessage.d.ts.map +0 -1
  377. package/dist/esm/src/lib/postMessage.js +0 -15
  378. package/dist/esm/src/lib/postMessage.js.map +0 -1
  379. package/dist/esm/src/lib/windowUtil.d.ts +0 -4
  380. package/dist/esm/src/lib/windowUtil.d.ts.map +0 -1
  381. package/dist/esm/src/lib/windowUtil.js +0 -30
  382. package/dist/esm/src/lib/windowUtil.js.map +0 -1
  383. package/dist/esm/src/nextjs/GetUser.d.ts +0 -6
  384. package/dist/esm/src/nextjs/GetUser.d.ts.map +0 -1
  385. package/dist/esm/src/nextjs/GetUser.js +0 -18
  386. package/dist/esm/src/nextjs/GetUser.js.map +0 -1
  387. package/dist/esm/src/nextjs/config.d.ts +0 -178
  388. package/dist/esm/src/nextjs/config.d.ts.map +0 -1
  389. package/dist/esm/src/nextjs/config.js +0 -162
  390. package/dist/esm/src/nextjs/config.js.map +0 -1
  391. package/dist/esm/src/nextjs/cookies.d.ts +0 -30
  392. package/dist/esm/src/nextjs/cookies.d.ts.map +0 -1
  393. package/dist/esm/src/nextjs/cookies.js +0 -112
  394. package/dist/esm/src/nextjs/cookies.js.map +0 -1
  395. package/dist/esm/src/nextjs/hooks/index.d.ts +0 -2
  396. package/dist/esm/src/nextjs/hooks/index.d.ts.map +0 -1
  397. package/dist/esm/src/nextjs/hooks/index.js +0 -2
  398. package/dist/esm/src/nextjs/hooks/index.js.map +0 -1
  399. package/dist/esm/src/nextjs/hooks/useTokenCookie.d.ts +0 -3
  400. package/dist/esm/src/nextjs/hooks/useTokenCookie.d.ts.map +0 -1
  401. package/dist/esm/src/nextjs/hooks/useTokenCookie.js +0 -37
  402. package/dist/esm/src/nextjs/hooks/useTokenCookie.js.map +0 -1
  403. package/dist/esm/src/nextjs/hooks/useUserCookie.d.ts +0 -3
  404. package/dist/esm/src/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  405. package/dist/esm/src/nextjs/hooks/useUserCookie.js +0 -36
  406. package/dist/esm/src/nextjs/hooks/useUserCookie.js.map +0 -1
  407. package/dist/esm/src/nextjs/index.d.ts +0 -7
  408. package/dist/esm/src/nextjs/index.d.ts.map +0 -1
  409. package/dist/esm/src/nextjs/index.js +0 -6
  410. package/dist/esm/src/nextjs/index.js.map +0 -1
  411. package/dist/esm/src/nextjs/middleware/index.d.ts +0 -2
  412. package/dist/esm/src/nextjs/middleware/index.d.ts.map +0 -1
  413. package/dist/esm/src/nextjs/middleware/index.js +0 -2
  414. package/dist/esm/src/nextjs/middleware/index.js.map +0 -1
  415. package/dist/esm/src/nextjs/middleware.d.ts +0 -59
  416. package/dist/esm/src/nextjs/middleware.d.ts.map +0 -1
  417. package/dist/esm/src/nextjs/middleware.js +0 -107
  418. package/dist/esm/src/nextjs/middleware.js.map +0 -1
  419. package/dist/esm/src/nextjs/providers/NextAuthProvider.d.ts +0 -9
  420. package/dist/esm/src/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  421. package/dist/esm/src/nextjs/providers/NextAuthProvider.js +0 -50
  422. package/dist/esm/src/nextjs/providers/NextAuthProvider.js.map +0 -1
  423. package/dist/esm/src/nextjs/routeHandler.d.ts +0 -18
  424. package/dist/esm/src/nextjs/routeHandler.d.ts.map +0 -1
  425. package/dist/esm/src/nextjs/routeHandler.js +0 -212
  426. package/dist/esm/src/nextjs/routeHandler.js.map +0 -1
  427. package/dist/esm/src/nextjs/utils.d.ts +0 -3
  428. package/dist/esm/src/nextjs/utils.d.ts.map +0 -1
  429. package/dist/esm/src/nextjs/utils.js +0 -5
  430. package/dist/esm/src/nextjs/utils.js.map +0 -1
  431. package/dist/esm/src/reactjs/components/SignInButton.d.ts +0 -8
  432. package/dist/esm/src/reactjs/components/SignInButton.d.ts.map +0 -1
  433. package/dist/esm/src/reactjs/components/SignInButton.js +0 -14
  434. package/dist/esm/src/reactjs/components/SignInButton.js.map +0 -1
  435. package/dist/esm/src/reactjs/components/SignOutButton.d.ts +0 -6
  436. package/dist/esm/src/reactjs/components/SignOutButton.d.ts.map +0 -1
  437. package/dist/esm/src/reactjs/components/SignOutButton.js +0 -14
  438. package/dist/esm/src/reactjs/components/SignOutButton.js.map +0 -1
  439. package/dist/esm/src/reactjs/components/UserButton.d.ts +0 -8
  440. package/dist/esm/src/reactjs/components/UserButton.d.ts.map +0 -1
  441. package/dist/esm/src/reactjs/components/UserButton.js +0 -110
  442. package/dist/esm/src/reactjs/components/UserButton.js.map +0 -1
  443. package/dist/esm/src/reactjs/components/index.d.ts +0 -6
  444. package/dist/esm/src/reactjs/components/index.d.ts.map +0 -1
  445. package/dist/esm/src/reactjs/components/index.js +0 -6
  446. package/dist/esm/src/reactjs/components/index.js.map +0 -1
  447. package/dist/esm/src/reactjs/hooks/index.d.ts +0 -7
  448. package/dist/esm/src/reactjs/hooks/index.d.ts.map +0 -1
  449. package/dist/esm/src/reactjs/hooks/index.js +0 -7
  450. package/dist/esm/src/reactjs/hooks/index.js.map +0 -1
  451. package/dist/esm/src/reactjs/hooks/useAuth.d.ts +0 -3
  452. package/dist/esm/src/reactjs/hooks/useAuth.d.ts.map +0 -1
  453. package/dist/esm/src/reactjs/hooks/useAuth.js +0 -12
  454. package/dist/esm/src/reactjs/hooks/useAuth.js.map +0 -1
  455. package/dist/esm/src/reactjs/hooks/useUser.d.ts +0 -4
  456. package/dist/esm/src/reactjs/hooks/useUser.d.ts.map +0 -1
  457. package/dist/esm/src/reactjs/hooks/useUser.js +0 -12
  458. package/dist/esm/src/reactjs/hooks/useUser.js.map +0 -1
  459. package/dist/esm/src/reactjs/index.d.ts +0 -6
  460. package/dist/esm/src/reactjs/index.d.ts.map +0 -1
  461. package/dist/esm/src/reactjs/index.js +0 -8
  462. package/dist/esm/src/reactjs/index.js.map +0 -1
  463. package/dist/esm/src/reactjs/providers/index.d.ts +0 -8
  464. package/dist/esm/src/reactjs/providers/index.d.ts.map +0 -1
  465. package/dist/esm/src/reactjs/providers/index.js +0 -7
  466. package/dist/esm/src/reactjs/providers/index.js.map +0 -1
  467. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts +0 -18
  468. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts.map +0 -1
  469. package/dist/esm/src/server/ServerAuthenticationResolver.js +0 -57
  470. package/dist/esm/src/server/ServerAuthenticationResolver.js.map +0 -1
  471. package/dist/esm/src/server/config.d.ts +0 -16
  472. package/dist/esm/src/server/config.d.ts.map +0 -1
  473. package/dist/esm/src/server/config.js +0 -2
  474. package/dist/esm/src/server/config.js.map +0 -1
  475. package/dist/esm/src/server/index.d.ts +0 -6
  476. package/dist/esm/src/server/index.d.ts.map +0 -1
  477. package/dist/esm/src/server/index.js +0 -5
  478. package/dist/esm/src/server/index.js.map +0 -1
  479. package/dist/esm/src/server/login.d.ts +0 -17
  480. package/dist/esm/src/server/login.d.ts.map +0 -1
  481. package/dist/esm/src/server/login.js +0 -37
  482. package/dist/esm/src/server/login.js.map +0 -1
  483. package/dist/esm/src/server/refresh.d.ts +0 -7
  484. package/dist/esm/src/server/refresh.d.ts.map +0 -1
  485. package/dist/esm/src/server/refresh.js +0 -13
  486. package/dist/esm/src/server/refresh.js.map +0 -1
  487. package/dist/esm/src/services/AuthenticationService.d.ts +0 -87
  488. package/dist/esm/src/services/AuthenticationService.d.ts.map +0 -1
  489. package/dist/esm/src/services/AuthenticationService.js +0 -212
  490. package/dist/esm/src/services/AuthenticationService.js.map +0 -1
  491. package/dist/esm/src/services/PKCE.d.ts +0 -20
  492. package/dist/esm/src/services/PKCE.d.ts.map +0 -1
  493. package/dist/esm/src/services/PKCE.js +0 -44
  494. package/dist/esm/src/services/PKCE.js.map +0 -1
  495. package/dist/esm/src/services/types.d.ts +0 -23
  496. package/dist/esm/src/services/types.d.ts.map +0 -1
  497. package/dist/esm/src/services/types.js +0 -7
  498. package/dist/esm/src/services/types.js.map +0 -1
  499. package/dist/esm/src/shared/components/CivicAuthIframe.d.ts +0 -8
  500. package/dist/esm/src/shared/components/CivicAuthIframe.d.ts.map +0 -1
  501. package/dist/esm/src/shared/components/CivicAuthIframe.js +0 -9
  502. package/dist/esm/src/shared/components/CivicAuthIframe.js.map +0 -1
  503. package/dist/esm/src/shared/components/CivicAuthIframeContainer.d.ts +0 -9
  504. package/dist/esm/src/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  505. package/dist/esm/src/shared/components/CivicAuthIframeContainer.js +0 -128
  506. package/dist/esm/src/shared/components/CivicAuthIframeContainer.js.map +0 -1
  507. package/dist/esm/src/shared/components/CloseIcon.d.ts +0 -4
  508. package/dist/esm/src/shared/components/CloseIcon.d.ts.map +0 -1
  509. package/dist/esm/src/shared/components/CloseIcon.js +0 -6
  510. package/dist/esm/src/shared/components/CloseIcon.js.map +0 -1
  511. package/dist/esm/src/shared/components/LoadingIcon.d.ts +0 -4
  512. package/dist/esm/src/shared/components/LoadingIcon.d.ts.map +0 -1
  513. package/dist/esm/src/shared/components/LoadingIcon.js +0 -30
  514. package/dist/esm/src/shared/components/LoadingIcon.js.map +0 -1
  515. package/dist/esm/src/shared/hooks/index.d.ts +0 -5
  516. package/dist/esm/src/shared/hooks/index.d.ts.map +0 -1
  517. package/dist/esm/src/shared/hooks/index.js +0 -5
  518. package/dist/esm/src/shared/hooks/index.js.map +0 -1
  519. package/dist/esm/src/shared/hooks/useAuth.d.ts +0 -3
  520. package/dist/esm/src/shared/hooks/useAuth.d.ts.map +0 -1
  521. package/dist/esm/src/shared/hooks/useAuth.js +0 -12
  522. package/dist/esm/src/shared/hooks/useAuth.js.map +0 -1
  523. package/dist/esm/src/shared/hooks/useConfig.d.ts +0 -3
  524. package/dist/esm/src/shared/hooks/useConfig.d.ts.map +0 -1
  525. package/dist/esm/src/shared/hooks/useConfig.js +0 -13
  526. package/dist/esm/src/shared/hooks/useConfig.js.map +0 -1
  527. package/dist/esm/src/shared/hooks/useIframe.d.ts +0 -3
  528. package/dist/esm/src/shared/hooks/useIframe.d.ts.map +0 -1
  529. package/dist/esm/src/shared/hooks/useIframe.js +0 -13
  530. package/dist/esm/src/shared/hooks/useIframe.js.map +0 -1
  531. package/dist/esm/src/shared/hooks/useSession.d.ts +0 -3
  532. package/dist/esm/src/shared/hooks/useSession.d.ts.map +0 -1
  533. package/dist/esm/src/shared/hooks/useSession.js +0 -13
  534. package/dist/esm/src/shared/hooks/useSession.js.map +0 -1
  535. package/dist/esm/src/shared/hooks/useToken.d.ts +0 -3
  536. package/dist/esm/src/shared/hooks/useToken.d.ts.map +0 -1
  537. package/dist/esm/src/shared/hooks/useToken.js +0 -12
  538. package/dist/esm/src/shared/hooks/useToken.js.map +0 -1
  539. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts +0 -15
  540. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  541. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js +0 -39
  542. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  543. package/dist/esm/src/shared/lib/UserSession.d.ts +0 -12
  544. package/dist/esm/src/shared/lib/UserSession.d.ts.map +0 -1
  545. package/dist/esm/src/shared/lib/UserSession.js +0 -20
  546. package/dist/esm/src/shared/lib/UserSession.js.map +0 -1
  547. package/dist/esm/src/shared/lib/session.d.ts +0 -3
  548. package/dist/esm/src/shared/lib/session.d.ts.map +0 -1
  549. package/dist/esm/src/shared/lib/session.js +0 -10
  550. package/dist/esm/src/shared/lib/session.js.map +0 -1
  551. package/dist/esm/src/shared/lib/storage.d.ts +0 -25
  552. package/dist/esm/src/shared/lib/storage.d.ts.map +0 -1
  553. package/dist/esm/src/shared/lib/storage.js +0 -17
  554. package/dist/esm/src/shared/lib/storage.js.map +0 -1
  555. package/dist/esm/src/shared/lib/types.d.ts +0 -22
  556. package/dist/esm/src/shared/lib/types.d.ts.map +0 -1
  557. package/dist/esm/src/shared/lib/types.js +0 -16
  558. package/dist/esm/src/shared/lib/types.js.map +0 -1
  559. package/dist/esm/src/shared/lib/util.d.ts +0 -33
  560. package/dist/esm/src/shared/lib/util.d.ts.map +0 -1
  561. package/dist/esm/src/shared/lib/util.js +0 -127
  562. package/dist/esm/src/shared/lib/util.js.map +0 -1
  563. package/dist/esm/src/shared/providers/AuthContext.d.ts +0 -10
  564. package/dist/esm/src/shared/providers/AuthContext.d.ts.map +0 -1
  565. package/dist/esm/src/shared/providers/AuthContext.js +0 -3
  566. package/dist/esm/src/shared/providers/AuthContext.js.map +0 -1
  567. package/dist/esm/src/shared/providers/AuthProvider.d.ts +0 -20
  568. package/dist/esm/src/shared/providers/AuthProvider.d.ts.map +0 -1
  569. package/dist/esm/src/shared/providers/AuthProvider.js +0 -263
  570. package/dist/esm/src/shared/providers/AuthProvider.js.map +0 -1
  571. package/dist/esm/src/shared/providers/CivicAuthProvider.d.ts +0 -6
  572. package/dist/esm/src/shared/providers/CivicAuthProvider.d.ts.map +0 -1
  573. package/dist/esm/src/shared/providers/CivicAuthProvider.js +0 -15
  574. package/dist/esm/src/shared/providers/CivicAuthProvider.js.map +0 -1
  575. package/dist/esm/src/shared/providers/ConfigProvider.d.ts +0 -21
  576. package/dist/esm/src/shared/providers/ConfigProvider.d.ts.map +0 -1
  577. package/dist/esm/src/shared/providers/ConfigProvider.js +0 -19
  578. package/dist/esm/src/shared/providers/ConfigProvider.js.map +0 -1
  579. package/dist/esm/src/shared/providers/IframeProvider.d.ts +0 -16
  580. package/dist/esm/src/shared/providers/IframeProvider.d.ts.map +0 -1
  581. package/dist/esm/src/shared/providers/IframeProvider.js +0 -11
  582. package/dist/esm/src/shared/providers/IframeProvider.js.map +0 -1
  583. package/dist/esm/src/shared/providers/SessionProvider.d.ts +0 -13
  584. package/dist/esm/src/shared/providers/SessionProvider.d.ts.map +0 -1
  585. package/dist/esm/src/shared/providers/SessionProvider.js +0 -13
  586. package/dist/esm/src/shared/providers/SessionProvider.js.map +0 -1
  587. package/dist/esm/src/shared/providers/TokenProvider.d.ts +0 -18
  588. package/dist/esm/src/shared/providers/TokenProvider.d.ts.map +0 -1
  589. package/dist/esm/src/shared/providers/TokenProvider.js +0 -53
  590. package/dist/esm/src/shared/providers/TokenProvider.js.map +0 -1
  591. package/dist/esm/src/shared/providers/UserProvider.d.ts +0 -18
  592. package/dist/esm/src/shared/providers/UserProvider.d.ts.map +0 -1
  593. package/dist/esm/src/shared/providers/UserProvider.js +0 -38
  594. package/dist/esm/src/shared/providers/UserProvider.js.map +0 -1
  595. package/dist/esm/src/types.d.ts +0 -146
  596. package/dist/esm/src/types.d.ts.map +0 -1
  597. package/dist/esm/src/types.js +0 -2
  598. package/dist/esm/src/types.js.map +0 -1
  599. package/dist/esm/src/utils.d.ts +0 -15
  600. package/dist/esm/src/utils.d.ts.map +0 -1
  601. package/dist/esm/src/utils.js +0 -43
  602. package/dist/esm/src/utils.js.map +0 -1
  603. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
  604. package/dist/src/nextjs/cookies.d.ts.map +0 -1
  605. package/dist/src/nextjs/cookies.js +0 -113
  606. package/dist/src/nextjs/cookies.js.map +0 -1
  607. package/dist/tsconfig.tsbuildinfo +0 -1
  608. package/src/browser/storage.ts +0 -11
  609. package/src/config.ts +0 -6
  610. package/src/constants.ts +0 -29
  611. package/src/index.ts +0 -16
  612. package/src/lib/cookies.ts +0 -28
  613. package/src/lib/jwt.ts +0 -15
  614. package/src/lib/logger.ts +0 -72
  615. package/src/lib/oauth.ts +0 -83
  616. package/src/lib/postMessage.ts +0 -22
  617. package/src/lib/windowUtil.ts +0 -29
  618. package/src/nextjs/GetUser.ts +0 -22
  619. package/src/nextjs/config.ts +0 -205
  620. package/src/nextjs/cookies.ts +0 -162
  621. package/src/nextjs/hooks/index.ts +0 -1
  622. package/src/nextjs/hooks/useTokenCookie.ts +0 -41
  623. package/src/nextjs/hooks/useUserCookie.ts +0 -41
  624. package/src/nextjs/index.ts +0 -20
  625. package/src/nextjs/middleware/index.ts +0 -1
  626. package/src/nextjs/middleware.ts +0 -155
  627. package/src/nextjs/providers/NextAuthProvider.tsx +0 -87
  628. package/src/nextjs/routeHandler.ts +0 -297
  629. package/src/nextjs/utils.ts +0 -9
  630. package/src/reactjs/components/SignInButton.tsx +0 -32
  631. package/src/reactjs/components/SignOutButton.tsx +0 -24
  632. package/src/reactjs/components/UserButton.tsx +0 -215
  633. package/src/reactjs/components/index.ts +0 -5
  634. package/src/reactjs/hooks/index.ts +0 -6
  635. package/src/reactjs/hooks/useAuth.ts +0 -15
  636. package/src/reactjs/hooks/useUser.ts +0 -20
  637. package/src/reactjs/index.ts +0 -19
  638. package/src/reactjs/providers/index.ts +0 -27
  639. package/src/server/ServerAuthenticationResolver.ts +0 -102
  640. package/src/server/config.ts +0 -17
  641. package/src/server/index.ts +0 -12
  642. package/src/server/login.ts +0 -59
  643. package/src/server/refresh.ts +0 -23
  644. package/src/services/AuthenticationService.ts +0 -324
  645. package/src/services/PKCE.ts +0 -45
  646. package/src/services/types.ts +0 -54
  647. package/src/shared/components/CivicAuthIframe.tsx +0 -26
  648. package/src/shared/components/CivicAuthIframeContainer.tsx +0 -190
  649. package/src/shared/components/CloseIcon.tsx +0 -21
  650. package/src/shared/components/LoadingIcon.tsx +0 -53
  651. package/src/shared/hooks/index.ts +0 -4
  652. package/src/shared/hooks/useAuth.ts +0 -15
  653. package/src/shared/hooks/useConfig.ts +0 -14
  654. package/src/shared/hooks/useIframe.ts +0 -14
  655. package/src/shared/hooks/useSession.ts +0 -14
  656. package/src/shared/hooks/useToken.ts +0 -15
  657. package/src/shared/lib/GenericAuthenticationRefresher.ts +0 -70
  658. package/src/shared/lib/UserSession.ts +0 -25
  659. package/src/shared/lib/session.ts +0 -11
  660. package/src/shared/lib/storage.ts +0 -40
  661. package/src/shared/lib/types.ts +0 -26
  662. package/src/shared/lib/util.ts +0 -217
  663. package/src/shared/providers/AuthContext.tsx +0 -11
  664. package/src/shared/providers/AuthProvider.tsx +0 -390
  665. package/src/shared/providers/CivicAuthProvider.tsx +0 -31
  666. package/src/shared/providers/ConfigProvider.tsx +0 -50
  667. package/src/shared/providers/IframeProvider.tsx +0 -34
  668. package/src/shared/providers/SessionProvider.tsx +0 -29
  669. package/src/shared/providers/TokenProvider.tsx +0 -78
  670. package/src/shared/providers/UserProvider.tsx +0 -80
  671. package/src/types.ts +0 -227
  672. package/src/utils.ts +0 -58
  673. package/test/integration/sdk.test.tsx +0 -266
  674. package/test/support/fixtures.ts +0 -56
  675. package/test/support/tokens.json +0 -26
  676. package/test/unit/lib/oauth.test.ts +0 -72
  677. package/test/unit/logger.test.ts +0 -175
  678. package/test/unit/nextjs/NextAuthProvider.test.tsx +0 -38
  679. package/test/unit/nextjs/config.test.ts +0 -218
  680. package/test/unit/nextjs/getUser.test.ts +0 -41
  681. package/test/unit/nextjs/middleware.test.ts +0 -138
  682. package/test/unit/nextjs/routeHandler.test.ts.skipped +0 -369
  683. package/test/unit/nextjs/utils.test.ts +0 -17
  684. package/test/unit/publicApi/__snapshots__/apiSnapshot.test.ts.snap +0 -17
  685. package/test/unit/publicApi/apiSnapshot.test.ts +0 -11
  686. package/test/unit/react/components/SignInButton.test.tsx +0 -50
  687. package/test/unit/react/components/SignOutButton.test.tsx +0 -49
  688. package/test/unit/server/login.test.ts +0 -181
  689. package/test/unit/server/session.test.ts +0 -51
  690. package/test/unit/services/AuthenticationService.test.ts +0 -152
  691. package/test/unit/services/ServerAuthenticationResolver.test.ts +0 -115
  692. package/test/unit/shared/GenericAuthenticationRefresher.test.ts +0 -89
  693. package/test/unit/shared/UserSession.test.ts +0 -42
  694. package/test/unit/shared/components/CivicAuthIframeContainer.test.tsx +0 -154
  695. package/test/unit/shared/storage.test.ts +0 -67
  696. package/test/unit/utils.test.ts +0 -48
  697. package/tsconfig.build.json +0 -5
  698. package/tsconfig.cjs.json +0 -8
  699. package/tsconfig.esm.json +0 -7
  700. package/tsconfig.json +0 -42
  701. package/vitest.config.ts +0 -41
@@ -1,127 +0,0 @@
1
- import { CodeVerifier, OAuthTokens } from "./types.js";
2
- import { OAuth2Client } from "oslo/oauth2";
3
- import { getIssuerVariations, getOauthEndpoints } from "../../lib/oauth.js";
4
- import * as jose from "jose";
5
- import { withoutUndefined } from "../../utils.js";
6
- import { GenericUserSession } from "../../shared/lib/UserSession.js";
7
- /**
8
- * Given a PKCE code verifier, derive the code challenge using SHA
9
- */
10
- export async function deriveCodeChallenge(codeVerifier, method = "S256") {
11
- if (method === "Plain") {
12
- console.warn("Using insecure plain code challenge method");
13
- return codeVerifier;
14
- }
15
- const encoder = new TextEncoder();
16
- const data = encoder.encode(codeVerifier);
17
- const digest = await crypto.subtle.digest("SHA-256", data);
18
- return btoa(String.fromCharCode(...new Uint8Array(digest)))
19
- .replace(/\+/g, "-")
20
- .replace(/\//g, "_")
21
- .replace(/=+$/, "");
22
- }
23
- export async function getEndpointsWithOverrides(oauthServer, endpointOverrides = {}) {
24
- const endpoints = await getOauthEndpoints(oauthServer);
25
- return {
26
- ...endpoints,
27
- ...endpointOverrides,
28
- };
29
- }
30
- export async function generateOauthLoginUrl(config) {
31
- const endpoints = await getEndpointsWithOverrides(config.oauthServer, config.endpointOverrides);
32
- const oauth2Client = buildOauth2Client(config.clientId, config.redirectUrl, endpoints);
33
- const challenge = await config.pkceConsumer.getCodeChallenge();
34
- const oAuthUrl = await oauth2Client.createAuthorizationURL({
35
- state: config.state,
36
- scopes: config.scopes,
37
- });
38
- // The OAuth2 client supports PKCE, but does not allow passing in a code challenge from some other source
39
- // It only allows passing in a code verifier which it then hashes itself.
40
- oAuthUrl.searchParams.append("code_challenge", challenge);
41
- oAuthUrl.searchParams.append("code_challenge_method", "S256");
42
- if (config.nonce) {
43
- // nonce isn't supported by oslo, so we add it manually
44
- oAuthUrl.searchParams.append("nonce", config.nonce);
45
- }
46
- // Required by the auth server for offline_access scope
47
- oAuthUrl.searchParams.append("prompt", "consent");
48
- return oAuthUrl;
49
- }
50
- export async function generateOauthLogoutUrl(config) {
51
- // TODO TECH-676: Implement logout
52
- console.log("generateOauthLogoutUrl not implemented", config);
53
- return new URL("http://localhost");
54
- }
55
- export function buildOauth2Client(clientId, redirectUri, endpoints) {
56
- return new OAuth2Client(clientId, endpoints.auth, endpoints.token, {
57
- redirectURI: redirectUri,
58
- });
59
- }
60
- export async function exchangeTokens(code, state, pkceProducer, oauth2Client, oauthServer, endpoints) {
61
- const codeVerifier = await pkceProducer.getCodeVerifier();
62
- if (!codeVerifier)
63
- throw new Error("Code verifier not found in state");
64
- const tokens = await oauth2Client.validateAuthorizationCode(code, {
65
- codeVerifier,
66
- });
67
- // Validate relevant tokens
68
- try {
69
- await validateOauth2Tokens(tokens, endpoints, oauth2Client, oauthServer);
70
- }
71
- catch (error) {
72
- console.error("tokenExchange error", { error, tokens });
73
- throw new Error(`OIDC tokens validation failed: ${error.message}`);
74
- }
75
- return tokens;
76
- }
77
- export async function storeTokens(storage, tokens) {
78
- // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )
79
- await storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);
80
- await storage.set(OAuthTokens.ACCESS_TOKEN, tokens.access_token);
81
- if (tokens.refresh_token) {
82
- await storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);
83
- }
84
- }
85
- export async function clearTokens(storage) {
86
- const clearOAuthPromises = Object.values(OAuthTokens).map((cookie) => {
87
- storage.set(cookie, "");
88
- });
89
- const clearCodeVerifierPromises = Object.values(CodeVerifier.COOKIE_NAME).map((cookie) => {
90
- storage.set(cookie, "");
91
- });
92
- await Promise.all([...clearOAuthPromises, ...clearCodeVerifierPromises]);
93
- }
94
- export async function clearUser(storage) {
95
- const userSession = new GenericUserSession(storage);
96
- await userSession.set(null);
97
- }
98
- export async function retrieveTokens(storage) {
99
- const idToken = await storage.get(OAuthTokens.ID_TOKEN);
100
- const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);
101
- const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);
102
- if (!idToken || !accessToken)
103
- return null;
104
- return {
105
- id_token: idToken,
106
- access_token: accessToken,
107
- refresh_token: refreshToken ?? undefined,
108
- };
109
- }
110
- export async function validateOauth2Tokens(tokens, endpoints, oauth2Client, issuer) {
111
- const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));
112
- // validate the ID token
113
- const idTokenResponse = await jose.jwtVerify(tokens.id_token, JWKS, {
114
- issuer: getIssuerVariations(issuer),
115
- audience: oauth2Client.clientId,
116
- });
117
- // validate the access token
118
- const accessTokenResponse = await jose.jwtVerify(tokens.access_token, JWKS, {
119
- issuer: getIssuerVariations(issuer),
120
- });
121
- return withoutUndefined({
122
- id_token: idTokenResponse.payload,
123
- access_token: accessTokenResponse.payload,
124
- refresh_token: tokens.refresh_token,
125
- });
126
- }
127
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/shared/lib/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Utility functions shared by auth server and client integrations\n// Typically these functions should be used inside AuthenticationInitiator and AuthenticationResolver implementations\nimport type {\n AuthStorage,\n Endpoints,\n JWTPayload,\n OIDCTokenResponseBody,\n ParsedTokens,\n} from \"@/types.js\";\nimport { CodeVerifier, OAuthTokens } from \"./types.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport { getIssuerVariations, getOauthEndpoints } from \"@/lib/oauth.js\";\nimport * as jose from \"jose\";\nimport { withoutUndefined } from \"@/utils.js\";\nimport type { PKCEConsumer, PKCEProducer } from \"@/services/types.js\";\nimport { GenericUserSession } from \"@/shared/lib/UserSession.js\";\n\n/**\n * Given a PKCE code verifier, derive the code challenge using SHA\n */\nexport async function deriveCodeChallenge(\n codeVerifier: string,\n method: \"Plain\" | \"S256\" = \"S256\",\n): Promise<string> {\n if (method === \"Plain\") {\n console.warn(\"Using insecure plain code challenge method\");\n return codeVerifier;\n }\n\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest(\"SHA-256\", data);\n return btoa(String.fromCharCode(...new Uint8Array(digest)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nexport async function getEndpointsWithOverrides(\n oauthServer: string,\n endpointOverrides: Partial<Endpoints> = {},\n): Promise<Endpoints> {\n const endpoints = await getOauthEndpoints(oauthServer);\n return {\n ...endpoints,\n ...endpointOverrides,\n };\n}\n\nexport async function generateOauthLoginUrl(config: {\n clientId: string;\n scopes: string[];\n state: string;\n redirectUrl: string;\n oauthServer: string;\n nonce?: string;\n endpointOverrides?: Partial<Endpoints>;\n // used to get the PKCE challenge\n pkceConsumer: PKCEConsumer;\n}): Promise<URL> {\n const endpoints = await getEndpointsWithOverrides(\n config.oauthServer,\n config.endpointOverrides,\n );\n const oauth2Client = buildOauth2Client(\n config.clientId,\n config.redirectUrl,\n endpoints,\n );\n const challenge = await config.pkceConsumer.getCodeChallenge();\n const oAuthUrl = await oauth2Client.createAuthorizationURL({\n state: config.state,\n scopes: config.scopes,\n });\n // The OAuth2 client supports PKCE, but does not allow passing in a code challenge from some other source\n // It only allows passing in a code verifier which it then hashes itself.\n oAuthUrl.searchParams.append(\"code_challenge\", challenge);\n oAuthUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n if (config.nonce) {\n // nonce isn't supported by oslo, so we add it manually\n oAuthUrl.searchParams.append(\"nonce\", config.nonce);\n }\n // Required by the auth server for offline_access scope\n oAuthUrl.searchParams.append(\"prompt\", \"consent\");\n\n return oAuthUrl;\n}\n\nexport async function generateOauthLogoutUrl(config: {\n clientId: string;\n scopes: string[];\n oauthServer: string;\n endpointOverrides?: Partial<Endpoints>;\n // used to get the PKCE challenge\n pkceConsumer: PKCEConsumer;\n}): Promise<URL> {\n // TODO TECH-676: Implement logout\n console.log(\"generateOauthLogoutUrl not implemented\", config);\n return new URL(\"http://localhost\");\n}\n\nexport function buildOauth2Client(\n clientId: string,\n redirectUri: string,\n endpoints: Endpoints,\n): OAuth2Client {\n return new OAuth2Client(clientId, endpoints.auth, endpoints.token, {\n redirectURI: redirectUri,\n });\n}\n\nexport async function exchangeTokens(\n code: string,\n state: string,\n pkceProducer: PKCEProducer,\n oauth2Client: OAuth2Client,\n oauthServer: string,\n endpoints: Endpoints,\n) {\n const codeVerifier = await pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in state\");\n\n const tokens =\n await oauth2Client.validateAuthorizationCode<OIDCTokenResponseBody>(code, {\n codeVerifier,\n });\n\n // Validate relevant tokens\n try {\n await validateOauth2Tokens(tokens, endpoints, oauth2Client, oauthServer);\n } catch (error) {\n console.error(\"tokenExchange error\", { error, tokens });\n throw new Error(\n `OIDC tokens validation failed: ${(error as Error).message}`,\n );\n }\n\n return tokens;\n}\n\nexport async function storeTokens(\n storage: AuthStorage,\n tokens: OIDCTokenResponseBody,\n) {\n // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )\n await storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);\n await storage.set(OAuthTokens.ACCESS_TOKEN, tokens.access_token);\n if (tokens.refresh_token) {\n await storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);\n }\n}\n\nexport async function clearTokens(storage: AuthStorage) {\n const clearOAuthPromises = Object.values(OAuthTokens).map((cookie) => {\n storage.set(cookie, \"\");\n });\n const clearCodeVerifierPromises = Object.values(CodeVerifier.COOKIE_NAME).map(\n (cookie) => {\n storage.set(cookie, \"\");\n },\n );\n await Promise.all([...clearOAuthPromises, ...clearCodeVerifierPromises]);\n}\nexport async function clearUser(storage: AuthStorage) {\n const userSession = new GenericUserSession(storage);\n await userSession.set(null);\n}\n\nexport async function retrieveTokens(\n storage: AuthStorage,\n): Promise<OIDCTokenResponseBody | null> {\n const idToken = await storage.get(OAuthTokens.ID_TOKEN);\n const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);\n const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);\n\n if (!idToken || !accessToken) return null;\n\n return {\n id_token: idToken,\n access_token: accessToken,\n refresh_token: refreshToken ?? undefined,\n };\n}\n\nexport async function validateOauth2Tokens(\n tokens: OIDCTokenResponseBody,\n endpoints: Endpoints,\n oauth2Client: OAuth2Client,\n issuer: string,\n): Promise<ParsedTokens> {\n const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));\n\n // validate the ID token\n const idTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.id_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n audience: oauth2Client.clientId,\n },\n );\n\n // validate the access token\n const accessTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.access_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n },\n );\n\n return withoutUndefined({\n id_token: idTokenResponse.payload,\n access_token: accessTokenResponse.payload,\n refresh_token: tokens.refresh_token,\n });\n}\n"]}
@@ -1,10 +0,0 @@
1
- import type { DisplayMode } from "../../types.js";
2
- export type AuthContextType = {
3
- signIn: (displayMode?: DisplayMode) => Promise<void>;
4
- isAuthenticated: boolean;
5
- isLoading: boolean;
6
- error: Error | null;
7
- signOut: () => Promise<void>;
8
- };
9
- export declare const AuthContext: import("react").Context<AuthContextType | null>;
10
- //# sourceMappingURL=AuthContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthContext.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/AuthContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AACF,eAAO,MAAM,WAAW,iDAA8C,CAAC"}
@@ -1,3 +0,0 @@
1
- import { createContext } from "react";
2
- export const AuthContext = createContext(null);
3
- //# sourceMappingURL=AuthContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthContext.js","sourceRoot":"","sources":["../../../../../src/shared/providers/AuthContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAUtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAyB,IAAI,CAAC,CAAC","sourcesContent":["import { createContext } from \"react\";\nimport type { DisplayMode } from \"@/types.js\";\n\nexport type AuthContextType = {\n signIn: (displayMode?: DisplayMode) => Promise<void>;\n isAuthenticated: boolean;\n isLoading: boolean;\n error: Error | null;\n signOut: () => Promise<void>;\n};\nexport const AuthContext = createContext<AuthContextType | null>(null);\n"]}
@@ -1,20 +0,0 @@
1
- import React, { type ReactNode } from "react";
2
- import type { Config, SessionData } from "../../types.js";
3
- import type { PKCEConsumer } from "../../services/types.js";
4
- export type AuthProviderProps = {
5
- children: ReactNode;
6
- clientId: string;
7
- nonce?: string;
8
- onSignIn?: (error?: Error) => void;
9
- onSignOut?: () => Promise<void>;
10
- modalIframe?: boolean;
11
- config?: Config;
12
- redirectUrl?: string;
13
- };
14
- export type InternalAuthProviderProps = AuthProviderProps & {
15
- sessionData?: SessionData;
16
- pkceConsumer?: PKCEConsumer;
17
- };
18
- declare const AuthProvider: ({ children, clientId, redirectUrl: inputRedirectUrl, config, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe, sessionData: inputSessionData, }: InternalAuthProviderProps) => React.JSX.Element | null;
19
- export { AuthProvider };
20
- //# sourceMappingURL=AuthProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/AuthProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,YAAY,CAAC;AAanE,OAAO,KAAK,EAA0B,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAqBhF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAkCF,QAAA,MAAM,YAAY,yJAWf,yBAAyB,6BA2R3B,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -1,263 +0,0 @@
1
- "use client";
2
- import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react";
3
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
4
- import { CivicAuthIframeContainer } from "../../shared/components/CivicAuthIframeContainer.js";
5
- import { TokenProvider } from "../../shared/providers/TokenProvider.js";
6
- import { SessionProvider } from "../../shared/providers/SessionProvider.js";
7
- import { DEFAULT_SCOPES } from "../../constants.js";
8
- import { authConfig } from "../../config.js";
9
- import { LoadingIcon } from "../../shared/components/LoadingIcon.js";
10
- import { isWindowInIframe } from "../../lib/windowUtil.js";
11
- import { AuthContext } from "../../shared/providers/AuthContext.js";
12
- import { BrowserAuthenticationInitiator, BrowserAuthenticationService, } from "../../services/AuthenticationService.js";
13
- import { PopupError } from "../../services/types.js";
14
- import { ConfidentialClientPKCEConsumer } from "../../services/PKCE.js";
15
- import { generateState } from "../../lib/oauth.js";
16
- import { LocalStorageAdapter } from "../../browser/storage.js";
17
- import { ConfigProvider } from "../../shared/providers/ConfigProvider.js";
18
- import { getUser } from "../lib/session.js";
19
- import { GenericUserSession } from "../lib/UserSession.js";
20
- import { IframeProvider } from "../../shared/providers/IframeProvider.js";
21
- // Global this object setup
22
- let globalThisObject;
23
- if (typeof window !== "undefined") {
24
- globalThisObject = window;
25
- }
26
- else if (typeof global !== "undefined") {
27
- globalThisObject = global;
28
- }
29
- else {
30
- globalThisObject = Function("return this")();
31
- }
32
- globalThisObject.globalThis = globalThisObject;
33
- function BlockDisplay({ children }) {
34
- return (React.createElement("div", { style: {
35
- position: "relative",
36
- left: 0,
37
- top: 0,
38
- zIndex: 50,
39
- display: "flex",
40
- height: "100vh",
41
- width: "100vw",
42
- alignItems: "center",
43
- justifyContent: "center",
44
- backgroundColor: "white",
45
- } },
46
- React.createElement("div", { style: {
47
- position: "absolute",
48
- inset: 0,
49
- display: "flex",
50
- alignItems: "center",
51
- justifyContent: "center",
52
- backgroundColor: "white",
53
- } }, children)));
54
- }
55
- const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, config = authConfig, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe = true, sessionData: inputSessionData, }) => {
56
- const [iframeUrl, setIframeUrl] = useState(null);
57
- const [currentUrl, setCurrentUrl] = useState(null);
58
- const [isInIframe, setIsInIframe] = useState(false);
59
- const [authResponseUrl, setAuthResponseUrl] = useState(null);
60
- const [tokenExchangeError, setTokenExchangeError] = useState();
61
- const [displayMode, setDisplayMode] = useState("iframe");
62
- const [browserAuthenticationInitiator, setBrowserAuthenticationInitiator] = useState();
63
- const [showIFrame, setShowIFrame] = useState(false);
64
- const [isRedirecting, setIsRedirecting] = useState(false);
65
- const queryClient = useQueryClient();
66
- const iframeRef = useRef(null);
67
- // TODO maybe we want to support or derive serverTokenExchange another way?
68
- const serverTokenExchange = pkceConsumer instanceof ConfidentialClientPKCEConsumer;
69
- // check if the current window is in an iframe with the iframe id, and set an isInIframe state
70
- useEffect(() => {
71
- if (typeof globalThis.window !== "undefined") {
72
- setCurrentUrl(globalThis.window.location.href);
73
- const isInIframeVal = isWindowInIframe(globalThis.window);
74
- setIsInIframe(isInIframeVal);
75
- }
76
- }, []);
77
- const redirectUrl = useMemo(() => (inputRedirectUrl || currentUrl || "").split("?")[0], [currentUrl, inputRedirectUrl]);
78
- const [authService, setAuthService] = useState();
79
- useEffect(() => {
80
- if (!currentUrl || !redirectUrl)
81
- return;
82
- BrowserAuthenticationService.build({
83
- clientId,
84
- redirectUrl,
85
- oauthServer: config.oauthServer,
86
- scopes: DEFAULT_SCOPES,
87
- displayMode,
88
- }).then(setAuthService);
89
- }, [currentUrl, clientId, redirectUrl, config, displayMode]);
90
- const { data: session, isLoading, error, } = useQuery({
91
- queryKey: [
92
- "session",
93
- authResponseUrl,
94
- iframeUrl,
95
- currentUrl,
96
- isInIframe,
97
- authService,
98
- ],
99
- queryFn: async () => {
100
- if (!authService) {
101
- return { authenticated: false };
102
- }
103
- if (inputSessionData) {
104
- return inputSessionData;
105
- }
106
- const url = new URL(authResponseUrl
107
- ? authResponseUrl
108
- : globalThis.window.location.href || "");
109
- // if we have existing tokens, then validate them and return the session data
110
- // otherwise check if we have a code in the url and exchange it for tokens
111
- // if we have neither, return undefined
112
- const existingSessionData = await authService.validateExistingSession();
113
- if (existingSessionData.authenticated) {
114
- return existingSessionData;
115
- }
116
- const code = url.searchParams.get("code");
117
- const state = url.searchParams.get("state");
118
- if (!serverTokenExchange && code && state && !isInIframe) {
119
- try {
120
- await authService.tokenExchange(code, state);
121
- const clientStorage = new LocalStorageAdapter();
122
- const user = await getUser(clientStorage);
123
- if (!user) {
124
- throw new Error("Failed to get user info");
125
- }
126
- const userSession = new GenericUserSession(clientStorage);
127
- userSession.set(user);
128
- onSignIn?.(); // Call onSignIn without an error if successful
129
- return authService.getSessionData();
130
- }
131
- catch (error) {
132
- setTokenExchangeError(error);
133
- onSignIn?.(error instanceof Error ? error : new Error("Failed to sign in")); // Pass the error to onSignIn
134
- return { authenticated: false };
135
- }
136
- }
137
- return existingSessionData;
138
- },
139
- });
140
- const signOutMutation = useMutation({
141
- mutationFn: async () => {
142
- await onSignOut?.();
143
- // Implement signOut logic here
144
- const authInitiator = getAuthInitiator();
145
- await authInitiator?.signOut();
146
- setIframeUrl(null);
147
- setShowIFrame(false);
148
- setAuthResponseUrl(null);
149
- },
150
- onSuccess: () => {
151
- queryClient.setQueryData([
152
- "session",
153
- authResponseUrl,
154
- iframeUrl,
155
- currentUrl,
156
- isInIframe,
157
- authService,
158
- ], null);
159
- },
160
- });
161
- const getAuthInitiator = useCallback((overrideDisplayMode) => {
162
- const useDisplayMode = overrideDisplayMode || displayMode;
163
- if (!pkceConsumer || !redirectUrl) {
164
- return null;
165
- }
166
- return (browserAuthenticationInitiator ||
167
- new BrowserAuthenticationInitiator({
168
- pkceConsumer, // generate and retrieve the challenge client-side
169
- clientId,
170
- redirectUrl,
171
- state: generateState(useDisplayMode, serverTokenExchange),
172
- scopes: DEFAULT_SCOPES,
173
- displayMode: useDisplayMode,
174
- oauthServer: config.oauthServer,
175
- // the endpoints to use for the login (if not obtained from the auth server
176
- endpointOverrides: config.endpoints,
177
- nonce,
178
- }));
179
- }, [
180
- serverTokenExchange,
181
- displayMode,
182
- browserAuthenticationInitiator,
183
- clientId,
184
- redirectUrl,
185
- config.oauthServer,
186
- config.endpoints,
187
- pkceConsumer,
188
- nonce,
189
- ]);
190
- const signIn = useCallback(async (overrideDisplayMode = "iframe") => {
191
- setDisplayMode(overrideDisplayMode);
192
- const authInitiator = getAuthInitiator(overrideDisplayMode);
193
- setBrowserAuthenticationInitiator(authInitiator);
194
- if (overrideDisplayMode === "iframe") {
195
- setShowIFrame(true);
196
- }
197
- else if (overrideDisplayMode === "redirect") {
198
- setIsRedirecting(true);
199
- }
200
- authInitiator?.signIn(iframeRef.current).catch((error) => {
201
- console.log("signIn error", {
202
- error,
203
- isPopupError: error instanceof PopupError,
204
- });
205
- // if we've tried to open a popup and it has failed, then fallback to redirect mode
206
- if (error instanceof PopupError) {
207
- signIn("redirect");
208
- }
209
- });
210
- }, [getAuthInitiator]);
211
- // remove event listeners when the component unmounts
212
- useEffect(() => {
213
- return () => {
214
- if (browserAuthenticationInitiator) {
215
- browserAuthenticationInitiator.cleanup();
216
- }
217
- };
218
- }, [browserAuthenticationInitiator]);
219
- const isAuthenticated = useMemo(() => (session ? session.authenticated : false), [session]);
220
- useQuery({
221
- queryKey: ["autoSignIn", modalIframe, redirectUrl, isAuthenticated],
222
- queryFn: async () => {
223
- if (!modalIframe &&
224
- redirectUrl &&
225
- !isAuthenticated &&
226
- iframeRef.current) {
227
- signIn("iframe");
228
- }
229
- return true;
230
- },
231
- refetchOnWindowFocus: false,
232
- });
233
- const value = useMemo(() => ({
234
- isLoading,
235
- error: error,
236
- signOut: async () => {
237
- await signOutMutation.mutateAsync();
238
- },
239
- isAuthenticated,
240
- signIn,
241
- }), [isLoading, error, signOutMutation, isAuthenticated, signIn]);
242
- if (!redirectUrl)
243
- return null;
244
- return (React.createElement(AuthContext.Provider, { value: value },
245
- React.createElement(ConfigProvider, { config: config, redirectUrl: redirectUrl, modalIframe: modalIframe, serverTokenExchange: serverTokenExchange },
246
- React.createElement(IframeProvider, { setAuthResponseUrl: setAuthResponseUrl, iframeRef: iframeRef },
247
- React.createElement(SessionProvider, { session: session },
248
- React.createElement(TokenProvider, null,
249
- modalIframe && !isInIframe && !session?.authenticated && (React.createElement("div", { style: showIFrame ? { display: "block" } : { display: "none" } },
250
- React.createElement(CivicAuthIframeContainer, { onClose: () => setShowIFrame(false) }))),
251
- modalIframe &&
252
- (isInIframe ||
253
- isRedirecting ||
254
- (isLoading && !serverTokenExchange)) && (React.createElement(BlockDisplay, null,
255
- React.createElement(LoadingIcon, null))),
256
- (tokenExchangeError || error) && (React.createElement(BlockDisplay, null,
257
- React.createElement("div", null,
258
- "Error: ",
259
- (tokenExchangeError || error).message))),
260
- children))))));
261
- };
262
- export { AuthProvider };
263
- //# sourceMappingURL=AuthProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../../../../src/shared/providers/AuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, {\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport type { Config, DisplayMode, SessionData } from \"@/types.js\";\nimport { CivicAuthIframeContainer } from \"@/shared/components/CivicAuthIframeContainer.js\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider.js\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider.js\";\nimport { DEFAULT_SCOPES } from \"@/constants.js\";\nimport { authConfig } from \"@/config.js\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { isWindowInIframe } from \"@/lib/windowUtil.js\";\nimport { AuthContext } from \"@/shared/providers/AuthContext.js\";\nimport {\n BrowserAuthenticationInitiator,\n BrowserAuthenticationService,\n} from \"@/services/AuthenticationService.js\";\nimport type { AuthenticationResolver, PKCEConsumer } from \"@/services/types.js\";\nimport { PopupError } from \"@/services/types.js\";\nimport { ConfidentialClientPKCEConsumer } from \"@/services/PKCE.js\";\nimport { generateState } from \"@/lib/oauth.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { ConfigProvider } from \"@/shared/providers/ConfigProvider.js\";\nimport { getUser } from \"../lib/session.js\";\nimport { GenericUserSession } from \"../lib/UserSession.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider.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 AuthProviderProps = {\n children: ReactNode;\n clientId: string;\n nonce?: string;\n onSignIn?: (error?: Error) => void;\n onSignOut?: () => Promise<void>;\n modalIframe?: boolean; // set to false if the iframe is being embedded in the client app\n config?: Config;\n redirectUrl?: string;\n};\n\nexport type InternalAuthProviderProps = AuthProviderProps & {\n sessionData?: SessionData;\n pkceConsumer?: PKCEConsumer;\n};\n\nfunction BlockDisplay({ children }: { children: ReactNode }) {\n return (\n <div\n style={{\n position: \"relative\",\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: \"white\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"white\",\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\nconst AuthProvider = ({\n children,\n clientId,\n redirectUrl: inputRedirectUrl,\n config = authConfig,\n onSignIn,\n onSignOut,\n pkceConsumer,\n nonce,\n modalIframe = true,\n sessionData: inputSessionData,\n}: InternalAuthProviderProps) => {\n const [iframeUrl, setIframeUrl] = useState<string | null>(null);\n const [currentUrl, setCurrentUrl] = useState<string | null>(null);\n const [isInIframe, setIsInIframe] = useState(false);\n const [authResponseUrl, setAuthResponseUrl] = useState<string | null>(null);\n const [tokenExchangeError, setTokenExchangeError] = useState<Error>();\n const [displayMode, setDisplayMode] = useState<DisplayMode>(\"iframe\");\n const [browserAuthenticationInitiator, setBrowserAuthenticationInitiator] =\n useState<BrowserAuthenticationInitiator | null>();\n const [showIFrame, setShowIFrame] = useState(false);\n const [isRedirecting, setIsRedirecting] = useState(false);\n const queryClient = useQueryClient();\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n // TODO maybe we want to support or derive serverTokenExchange another way?\n const serverTokenExchange =\n pkceConsumer instanceof ConfidentialClientPKCEConsumer;\n // check if the current window is in an iframe with the iframe id, and set an isInIframe state\n useEffect(() => {\n if (typeof globalThis.window !== \"undefined\") {\n setCurrentUrl(globalThis.window.location.href);\n const isInIframeVal = isWindowInIframe(globalThis.window);\n setIsInIframe(isInIframeVal);\n }\n }, []);\n\n const redirectUrl = useMemo(\n () => (inputRedirectUrl || currentUrl || \"\").split(\"?\")[0],\n [currentUrl, inputRedirectUrl],\n );\n\n const [authService, setAuthService] = useState<AuthenticationResolver>();\n\n useEffect(() => {\n if (!currentUrl || !redirectUrl) return;\n BrowserAuthenticationService.build({\n clientId,\n redirectUrl,\n oauthServer: config.oauthServer,\n scopes: DEFAULT_SCOPES,\n displayMode,\n }).then(setAuthService);\n }, [currentUrl, clientId, redirectUrl, config, displayMode]);\n\n const {\n data: session,\n isLoading,\n error,\n } = useQuery({\n queryKey: [\n \"session\",\n authResponseUrl,\n iframeUrl,\n currentUrl,\n isInIframe,\n authService,\n ],\n queryFn: async () => {\n if (!authService) {\n return { authenticated: false };\n }\n if (inputSessionData) {\n return inputSessionData;\n }\n const url = new URL(\n authResponseUrl\n ? authResponseUrl\n : globalThis.window.location.href || \"\",\n );\n // if we have existing tokens, then validate them and return the session data\n // otherwise check if we have a code in the url and exchange it for tokens\n // if we have neither, return undefined\n const existingSessionData = await authService.validateExistingSession();\n if (existingSessionData.authenticated) {\n return existingSessionData;\n }\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n if (!serverTokenExchange && code && state && !isInIframe) {\n try {\n await authService.tokenExchange(code, state);\n const clientStorage = new LocalStorageAdapter();\n const user = await getUser(clientStorage);\n if (!user) {\n throw new Error(\"Failed to get user info\");\n }\n\n const userSession = new GenericUserSession(clientStorage);\n userSession.set(user);\n\n onSignIn?.(); // Call onSignIn without an error if successful\n return authService.getSessionData();\n } catch (error) {\n setTokenExchangeError(error as Error);\n onSignIn?.(\n error instanceof Error ? error : new Error(\"Failed to sign in\"),\n ); // Pass the error to onSignIn\n return { authenticated: false };\n }\n }\n\n return existingSessionData;\n },\n });\n\n const signOutMutation = useMutation({\n mutationFn: async () => {\n await onSignOut?.();\n // Implement signOut logic here\n const authInitiator = getAuthInitiator();\n await authInitiator?.signOut();\n setIframeUrl(null);\n setShowIFrame(false);\n setAuthResponseUrl(null);\n },\n onSuccess: () => {\n queryClient.setQueryData(\n [\n \"session\",\n authResponseUrl,\n iframeUrl,\n currentUrl,\n isInIframe,\n authService,\n ],\n null,\n );\n },\n });\n\n const getAuthInitiator = useCallback(\n (overrideDisplayMode?: DisplayMode) => {\n const useDisplayMode = overrideDisplayMode || displayMode;\n if (!pkceConsumer || !redirectUrl) {\n return null;\n }\n return (\n browserAuthenticationInitiator ||\n new BrowserAuthenticationInitiator({\n pkceConsumer, // generate and retrieve the challenge client-side\n clientId,\n redirectUrl,\n state: generateState(useDisplayMode, serverTokenExchange),\n scopes: DEFAULT_SCOPES,\n displayMode: useDisplayMode,\n oauthServer: config.oauthServer,\n // the endpoints to use for the login (if not obtained from the auth server\n endpointOverrides: config.endpoints,\n nonce,\n })\n );\n },\n [\n serverTokenExchange,\n displayMode,\n browserAuthenticationInitiator,\n clientId,\n redirectUrl,\n config.oauthServer,\n config.endpoints,\n pkceConsumer,\n nonce,\n ],\n );\n\n const signIn = useCallback(\n async (overrideDisplayMode: DisplayMode = \"iframe\") => {\n setDisplayMode(overrideDisplayMode);\n const authInitiator = getAuthInitiator(overrideDisplayMode);\n setBrowserAuthenticationInitiator(authInitiator);\n if (overrideDisplayMode === \"iframe\") {\n setShowIFrame(true);\n } else if (overrideDisplayMode === \"redirect\") {\n setIsRedirecting(true);\n }\n authInitiator?.signIn(iframeRef.current).catch((error) => {\n console.log(\"signIn error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n // if we've tried to open a popup and it has failed, then fallback to redirect mode\n if (error instanceof PopupError) {\n signIn(\"redirect\");\n }\n });\n },\n [getAuthInitiator],\n );\n\n // remove event listeners when the component unmounts\n useEffect(() => {\n return () => {\n if (browserAuthenticationInitiator) {\n browserAuthenticationInitiator.cleanup();\n }\n };\n }, [browserAuthenticationInitiator]);\n\n const isAuthenticated = useMemo(\n () => (session ? session.authenticated : false),\n [session],\n );\n\n useQuery({\n queryKey: [\"autoSignIn\", modalIframe, redirectUrl, isAuthenticated],\n queryFn: async () => {\n if (\n !modalIframe &&\n redirectUrl &&\n !isAuthenticated &&\n iframeRef.current\n ) {\n signIn(\"iframe\");\n }\n return true;\n },\n refetchOnWindowFocus: false,\n });\n\n const value = useMemo(\n () => ({\n isLoading,\n error: error as Error | null,\n signOut: async () => {\n await signOutMutation.mutateAsync();\n },\n isAuthenticated,\n signIn,\n }),\n [isLoading, error, signOutMutation, isAuthenticated, signIn],\n );\n\n if (!redirectUrl) return null;\n\n return (\n <AuthContext.Provider value={value}>\n <ConfigProvider\n config={config}\n redirectUrl={redirectUrl}\n modalIframe={modalIframe}\n serverTokenExchange={serverTokenExchange}\n >\n <IframeProvider\n setAuthResponseUrl={setAuthResponseUrl}\n iframeRef={iframeRef}\n >\n <SessionProvider session={session}>\n <TokenProvider>\n {modalIframe && !isInIframe && !session?.authenticated && (\n <div\n style={\n showIFrame ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <CivicAuthIframeContainer\n onClose={() => setShowIFrame(false)}\n />\n </div>\n )}\n\n {modalIframe &&\n (isInIframe ||\n isRedirecting ||\n (isLoading && !serverTokenExchange)) && (\n <BlockDisplay>\n <LoadingIcon />\n </BlockDisplay>\n )}\n\n {(tokenExchangeError || error) && (\n <BlockDisplay>\n <div>\n Error: {(tokenExchangeError || (error as Error)).message}\n </div>\n </BlockDisplay>\n )}\n {children}\n </TokenProvider>\n </SessionProvider>\n </IframeProvider>\n </ConfigProvider>\n </AuthContext.Provider>\n );\n};\n\nexport { AuthProvider };\n"]}
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- import { type AuthProviderProps } from "../../shared/providers/AuthProvider.js";
3
- type CivicAuthProviderProps = Omit<AuthProviderProps, "pkceConsumer">;
4
- declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) => React.JSX.Element;
5
- export { CivicAuthProvider, type CivicAuthProviderProps };
6
- //# sourceMappingURL=CivicAuthProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CivicAuthProvider.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAQ5C,KAAK,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAEtE,QAAA,MAAM,iBAAiB,2BAA4B,sBAAsB,sBAaxE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- "use client";
2
- import React from "react";
3
- import { AuthProvider, } from "../../shared/providers/AuthProvider.js";
4
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
5
- import { BrowserPublicClientPKCEProducer } from "../../services/PKCE.js";
6
- import { UserProvider } from "./UserProvider.js";
7
- import { LocalStorageAdapter } from "../../browser/storage.js";
8
- const queryClient = new QueryClient();
9
- const CivicAuthProvider = ({ children, ...props }) => {
10
- return (React.createElement(QueryClientProvider, { client: queryClient },
11
- React.createElement(AuthProvider, { ...props, pkceConsumer: new BrowserPublicClientPKCEProducer() },
12
- React.createElement(UserProvider, { storage: new LocalStorageAdapter() }, children))));
13
- };
14
- export { CivicAuthProvider };
15
- //# sourceMappingURL=CivicAuthProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CivicAuthProvider.js","sourceRoot":"","sources":["../../../../../src/shared/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,GAEb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAItC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA0B,EAAE,EAAE;IAC3E,OAAO,CACL,oBAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW;QACtC,oBAAC,YAAY,OACP,KAAK,EACT,YAAY,EAAE,IAAI,+BAA+B,EAAE;YAEnD,oBAAC,YAAY,IAAC,OAAO,EAAE,IAAI,mBAAmB,EAAE,IAC7C,QAAQ,CACI,CACF,CACK,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAA+B,CAAC","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport {\n AuthProvider,\n type AuthProviderProps,\n} from \"@/shared/providers/AuthProvider.js\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"./UserProvider.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\n\nconst queryClient = new QueryClient();\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <UserProvider storage={new LocalStorageAdapter()}>\n {children}\n </UserProvider>\n </AuthProvider>\n </QueryClientProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n"]}
@@ -1,21 +0,0 @@
1
- import type { Config } from "../../types.js";
2
- import type { ReactNode } from "react";
3
- import React from "react";
4
- export type ConfigProviderOutput = {
5
- config: Config;
6
- redirectUrl: string;
7
- modalIframe: boolean;
8
- serverTokenExchange: boolean;
9
- };
10
- declare const ConfigContext: React.Context<ConfigProviderOutput>;
11
- type ConfigContextType = {
12
- children: ReactNode;
13
- config: Config;
14
- redirectUrl: string;
15
- modalIframe?: boolean;
16
- serverTokenExchange: boolean;
17
- };
18
- declare const ConfigProvider: ({ children, config, redirectUrl, modalIframe, serverTokenExchange, }: ConfigContextType) => React.JSX.Element;
19
- export type { ConfigContextType };
20
- export { ConfigProvider, ConfigContext };
21
- //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/ConfigProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAQF,QAAA,MAAM,aAAa,qCAAqD,CAAC;AAEzE,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,QAAA,MAAM,cAAc,yEAMjB,iBAAiB,sBAWnB,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
@@ -1,19 +0,0 @@
1
- "use client";
2
- import { authConfig } from "../../config.js";
3
- import React, { createContext } from "react";
4
- const defaultConfig = {
5
- config: authConfig,
6
- redirectUrl: "",
7
- modalIframe: true,
8
- serverTokenExchange: false,
9
- };
10
- // Context for exposing Config specifically to the TokenProvider
11
- const ConfigContext = createContext(defaultConfig);
12
- const ConfigProvider = ({ children, config, redirectUrl, modalIframe, serverTokenExchange, }) => (React.createElement(ConfigContext.Provider, { value: {
13
- config,
14
- redirectUrl,
15
- modalIframe: !!modalIframe,
16
- serverTokenExchange,
17
- } }, children));
18
- export { ConfigProvider, ConfigContext };
19
- //# sourceMappingURL=ConfigProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["../../../../../src/shared/providers/ConfigProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQ7C,MAAM,aAAa,GAAyB;IAC1C,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,IAAI;IACjB,mBAAmB,EAAE,KAAK;CAC3B,CAAC;AACF,gEAAgE;AAChE,MAAM,aAAa,GAAG,aAAa,CAAuB,aAAa,CAAC,CAAC;AAUzE,MAAM,cAAc,GAAG,CAAC,EACtB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,WAAW,EACX,mBAAmB,GACD,EAAE,EAAE,CAAC,CACvB,oBAAC,aAAa,CAAC,QAAQ,IACrB,KAAK,EAAE;QACL,MAAM;QACN,WAAW;QACX,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,mBAAmB;KACpB,IAEA,QAAQ,CACc,CAC1B,CAAC;AAGF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { authConfig } from \"@/config.js\";\nimport type { Config } from \"@/types.js\";\nimport type { ReactNode } from \"react\";\nimport React, { createContext } from \"react\";\n\nexport type ConfigProviderOutput = {\n config: Config;\n redirectUrl: string;\n modalIframe: boolean;\n serverTokenExchange: boolean;\n};\nconst defaultConfig: ConfigProviderOutput = {\n config: authConfig,\n redirectUrl: \"\",\n modalIframe: true,\n serverTokenExchange: false,\n};\n// Context for exposing Config specifically to the TokenProvider\nconst ConfigContext = createContext<ConfigProviderOutput>(defaultConfig);\n\ntype ConfigContextType = {\n children: ReactNode;\n config: Config;\n redirectUrl: string;\n modalIframe?: boolean;\n serverTokenExchange: boolean;\n};\n\nconst ConfigProvider = ({\n children,\n config,\n redirectUrl,\n modalIframe,\n serverTokenExchange,\n}: ConfigContextType) => (\n <ConfigContext.Provider\n value={{\n config,\n redirectUrl,\n modalIframe: !!modalIframe,\n serverTokenExchange,\n }}\n >\n {children}\n </ConfigContext.Provider>\n);\n\nexport type { ConfigContextType };\nexport { ConfigProvider, ConfigContext };\n"]}
@@ -1,16 +0,0 @@
1
- import type { Dispatch, ReactNode, RefObject, SetStateAction } from "react";
2
- import React from "react";
3
- export type IframeProviderOutput = {
4
- iframeRef: RefObject<HTMLIFrameElement> | null;
5
- setAuthResponseUrl: Dispatch<SetStateAction<string | null>>;
6
- };
7
- declare const IframeContext: React.Context<IframeProviderOutput>;
8
- type IframeContextType = {
9
- children: ReactNode;
10
- iframeRef: RefObject<HTMLIFrameElement> | null;
11
- setAuthResponseUrl: Dispatch<SetStateAction<string | null>>;
12
- };
13
- declare const IframeProvider: ({ children, iframeRef, setAuthResponseUrl, }: IframeContextType) => React.JSX.Element;
14
- export type { IframeContextType };
15
- export { IframeProvider, IframeContext };
16
- //# sourceMappingURL=IframeProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IframeProvider.d.ts","sourceRoot":"","sources":["../../../../../src/shared/providers/IframeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC/C,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC7D,CAAC;AAOF,QAAA,MAAM,aAAa,qCAAqD,CAAC;AAEzE,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC/C,kBAAkB,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF,QAAA,MAAM,cAAc,iDAIjB,iBAAiB,sBAInB,CAAC;AAEF,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}