@civic/auth 0.1.1-beta.0 → 0.1.2-beta.0

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 (342) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/CHANGELOG.md +5 -0
  3. package/dist/cjs/src/reactjs/components/UserButton.js +1 -1
  4. package/dist/cjs/src/reactjs/components/UserButton.js.map +1 -1
  5. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts +1 -0
  6. package/dist/cjs/src/server/ServerAuthenticationResolver.d.ts.map +1 -1
  7. package/dist/cjs/src/server/ServerAuthenticationResolver.js +6 -2
  8. package/dist/cjs/src/server/ServerAuthenticationResolver.js.map +1 -1
  9. package/dist/cjs/src/server/config.d.ts +1 -8
  10. package/dist/cjs/src/server/config.d.ts.map +1 -1
  11. package/dist/cjs/src/server/config.js.map +1 -1
  12. package/dist/cjs/src/server/index.d.ts +1 -0
  13. package/dist/cjs/src/server/index.d.ts.map +1 -1
  14. package/dist/cjs/src/server/index.js.map +1 -1
  15. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts +1 -0
  16. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  17. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js +5 -1
  18. package/dist/cjs/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  19. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  20. package/dist/esm/src/reactjs/components/UserButton.js +1 -1
  21. package/dist/esm/src/reactjs/components/UserButton.js.map +1 -1
  22. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts +1 -0
  23. package/dist/esm/src/server/ServerAuthenticationResolver.d.ts.map +1 -1
  24. package/dist/esm/src/server/ServerAuthenticationResolver.js +6 -2
  25. package/dist/esm/src/server/ServerAuthenticationResolver.js.map +1 -1
  26. package/dist/esm/src/server/config.d.ts +1 -8
  27. package/dist/esm/src/server/config.d.ts.map +1 -1
  28. package/dist/esm/src/server/config.js.map +1 -1
  29. package/dist/esm/src/server/index.d.ts +1 -0
  30. package/dist/esm/src/server/index.d.ts.map +1 -1
  31. package/dist/esm/src/server/index.js.map +1 -1
  32. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts +1 -0
  33. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  34. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js +5 -1
  35. package/dist/esm/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  36. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  37. package/dist/src/browser/storage.d.ts +6 -0
  38. package/dist/src/browser/storage.d.ts.map +1 -0
  39. package/dist/src/browser/storage.js +9 -0
  40. package/dist/src/browser/storage.js.map +1 -0
  41. package/dist/src/config.d.ts +3 -0
  42. package/dist/src/config.d.ts.map +1 -0
  43. package/dist/src/config.js +5 -0
  44. package/dist/src/config.js.map +1 -0
  45. package/dist/src/constants.d.ts +9 -0
  46. package/dist/src/constants.d.ts.map +1 -0
  47. package/dist/src/constants.js +17 -0
  48. package/dist/src/constants.js.map +1 -0
  49. package/dist/src/index.d.ts +4 -0
  50. package/dist/src/index.d.ts.map +1 -0
  51. package/dist/src/index.js +2 -0
  52. package/dist/src/index.js.map +1 -0
  53. package/dist/src/lib/cookies.d.ts +7 -0
  54. package/dist/src/lib/cookies.d.ts.map +1 -0
  55. package/dist/src/lib/cookies.js +23 -0
  56. package/dist/src/lib/cookies.js.map +1 -0
  57. package/dist/src/lib/jwt.d.ts +3 -0
  58. package/dist/src/lib/jwt.d.ts.map +1 -0
  59. package/dist/src/lib/jwt.js +9 -0
  60. package/dist/src/lib/jwt.js.map +1 -0
  61. package/dist/src/lib/logger.d.ts +26 -0
  62. package/dist/src/lib/logger.d.ts.map +1 -0
  63. package/dist/src/lib/logger.js +55 -0
  64. package/dist/src/lib/logger.js.map +1 -0
  65. package/dist/src/lib/oauth.d.ts +19 -0
  66. package/dist/src/lib/oauth.d.ts.map +1 -0
  67. package/dist/src/lib/oauth.js +60 -0
  68. package/dist/src/lib/oauth.js.map +1 -0
  69. package/dist/src/lib/postMessage.d.ts +4 -0
  70. package/dist/src/lib/postMessage.d.ts.map +1 -0
  71. package/dist/src/lib/postMessage.js +15 -0
  72. package/dist/src/lib/postMessage.js.map +1 -0
  73. package/dist/src/lib/windowUtil.d.ts +4 -0
  74. package/dist/src/lib/windowUtil.d.ts.map +1 -0
  75. package/dist/src/lib/windowUtil.js +30 -0
  76. package/dist/src/lib/windowUtil.js.map +1 -0
  77. package/dist/src/nextjs/GetUser.d.ts +6 -0
  78. package/dist/src/nextjs/GetUser.js +18 -0
  79. package/dist/src/nextjs/GetUser.js.map +1 -0
  80. package/dist/src/nextjs/config.d.ts +178 -0
  81. package/dist/src/nextjs/cookies.d.ts +30 -0
  82. package/dist/src/nextjs/hooks/index.d.ts +2 -0
  83. package/dist/src/nextjs/hooks/index.d.ts.map +1 -0
  84. package/dist/src/nextjs/hooks/index.js +2 -0
  85. package/dist/src/nextjs/hooks/index.js.map +1 -0
  86. package/dist/src/nextjs/hooks/useTokenCookie.d.ts +3 -0
  87. package/dist/src/nextjs/hooks/useTokenCookie.d.ts.map +1 -0
  88. package/dist/src/nextjs/hooks/useTokenCookie.js +37 -0
  89. package/dist/src/nextjs/hooks/useTokenCookie.js.map +1 -0
  90. package/dist/src/nextjs/hooks/useUserCookie.d.ts +3 -0
  91. package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +1 -0
  92. package/dist/src/nextjs/hooks/useUserCookie.js +36 -0
  93. package/dist/src/nextjs/hooks/useUserCookie.js.map +1 -0
  94. package/dist/src/nextjs/index.d.ts +7 -0
  95. package/dist/src/nextjs/index.js +6 -0
  96. package/dist/src/nextjs/index.js.map +1 -0
  97. package/dist/src/nextjs/middleware/index.d.ts +2 -0
  98. package/dist/src/nextjs/middleware/index.d.ts.map +1 -0
  99. package/dist/src/nextjs/middleware/index.js +2 -0
  100. package/dist/src/nextjs/middleware/index.js.map +1 -0
  101. package/dist/src/nextjs/middleware.d.ts +59 -0
  102. package/dist/src/nextjs/middleware.d.ts.map +1 -0
  103. package/dist/src/nextjs/middleware.js +107 -0
  104. package/dist/src/nextjs/middleware.js.map +1 -0
  105. package/dist/src/nextjs/providers/NextAuthProvider.d.ts +9 -0
  106. package/dist/src/nextjs/providers/NextAuthProvider.js +50 -0
  107. package/dist/src/nextjs/providers/NextAuthProvider.js.map +1 -0
  108. package/dist/src/nextjs/routeHandler.d.ts +18 -0
  109. package/dist/src/nextjs/utils.d.ts +3 -0
  110. package/dist/src/nextjs/utils.d.ts.map +1 -0
  111. package/dist/src/nextjs/utils.js +5 -0
  112. package/dist/src/nextjs/utils.js.map +1 -0
  113. package/dist/src/reactjs/components/SignInButton.d.ts +8 -0
  114. package/dist/src/reactjs/components/SignInButton.d.ts.map +1 -0
  115. package/dist/src/reactjs/components/SignInButton.js +14 -0
  116. package/dist/src/reactjs/components/SignInButton.js.map +1 -0
  117. package/dist/src/reactjs/components/SignOutButton.d.ts +6 -0
  118. package/dist/src/reactjs/components/SignOutButton.d.ts.map +1 -0
  119. package/dist/src/reactjs/components/SignOutButton.js +14 -0
  120. package/dist/src/reactjs/components/SignOutButton.js.map +1 -0
  121. package/dist/src/reactjs/components/UserButton.d.ts +8 -0
  122. package/dist/src/reactjs/components/UserButton.js +110 -0
  123. package/dist/src/reactjs/components/UserButton.js.map +1 -0
  124. package/dist/src/reactjs/components/index.d.ts +6 -0
  125. package/dist/src/reactjs/components/index.js +6 -0
  126. package/dist/src/reactjs/components/index.js.map +1 -0
  127. package/dist/src/reactjs/hooks/useAuth.d.ts +3 -0
  128. package/dist/src/reactjs/hooks/useAuth.d.ts.map +1 -0
  129. package/dist/src/reactjs/hooks/useAuth.js +12 -0
  130. package/dist/src/reactjs/hooks/useAuth.js.map +1 -0
  131. package/dist/src/reactjs/hooks/useUser.d.ts +4 -0
  132. package/dist/src/reactjs/hooks/useUser.d.ts.map +1 -0
  133. package/dist/src/reactjs/hooks/useUser.js +12 -0
  134. package/dist/src/reactjs/hooks/useUser.js.map +1 -0
  135. package/dist/src/reactjs/index.d.ts +6 -0
  136. package/dist/src/reactjs/index.js +8 -0
  137. package/dist/src/reactjs/index.js.map +1 -0
  138. package/dist/src/reactjs/providers/index.d.ts +8 -0
  139. package/dist/src/reactjs/providers/index.js +7 -0
  140. package/dist/src/reactjs/providers/index.js.map +1 -0
  141. package/dist/src/server/ServerAuthenticationResolver.d.ts +19 -0
  142. package/dist/src/server/ServerAuthenticationResolver.d.ts.map +1 -1
  143. package/dist/src/server/ServerAuthenticationResolver.js +6 -2
  144. package/dist/src/server/ServerAuthenticationResolver.js.map +1 -1
  145. package/dist/src/server/config.d.ts +9 -0
  146. package/dist/src/server/config.d.ts.map +1 -0
  147. package/dist/src/server/config.js +2 -0
  148. package/dist/src/server/config.js.map +1 -0
  149. package/dist/src/server/index.d.ts +7 -0
  150. package/dist/src/server/index.d.ts.map +1 -1
  151. package/dist/src/server/index.js +5 -0
  152. package/dist/src/server/index.js.map +1 -0
  153. package/dist/src/server/refresh.d.ts +7 -0
  154. package/dist/src/server/refresh.js +13 -0
  155. package/dist/src/server/refresh.js.map +1 -0
  156. package/dist/src/services/PKCE.d.ts +20 -0
  157. package/dist/src/services/types.d.ts +23 -0
  158. package/dist/src/services/types.d.ts.map +1 -0
  159. package/dist/src/services/types.js +7 -0
  160. package/dist/src/services/types.js.map +1 -0
  161. package/dist/src/shared/components/CivicAuthIframe.d.ts +8 -0
  162. package/dist/src/shared/components/CivicAuthIframe.d.ts.map +1 -0
  163. package/dist/src/shared/components/CivicAuthIframe.js +9 -0
  164. package/dist/src/shared/components/CivicAuthIframe.js.map +1 -0
  165. package/dist/src/shared/components/CloseIcon.d.ts +4 -0
  166. package/dist/src/shared/components/CloseIcon.d.ts.map +1 -0
  167. package/dist/src/shared/components/CloseIcon.js +6 -0
  168. package/dist/src/shared/components/CloseIcon.js.map +1 -0
  169. package/dist/src/shared/components/LoadingIcon.d.ts +4 -0
  170. package/dist/src/shared/hooks/index.d.ts +5 -0
  171. package/dist/src/shared/hooks/index.d.ts.map +1 -0
  172. package/dist/src/shared/hooks/index.js +5 -0
  173. package/dist/src/shared/hooks/index.js.map +1 -0
  174. package/dist/src/shared/hooks/useAuth.d.ts +3 -0
  175. package/dist/src/shared/hooks/useAuth.d.ts.map +1 -0
  176. package/dist/src/shared/hooks/useAuth.js +12 -0
  177. package/dist/src/shared/hooks/useAuth.js.map +1 -0
  178. package/dist/src/shared/hooks/useConfig.d.ts +3 -0
  179. package/dist/src/shared/hooks/useConfig.d.ts.map +1 -0
  180. package/dist/src/shared/hooks/useConfig.js +13 -0
  181. package/dist/src/shared/hooks/useConfig.js.map +1 -0
  182. package/dist/src/shared/hooks/useIframe.d.ts +3 -0
  183. package/dist/src/shared/hooks/useIframe.d.ts.map +1 -0
  184. package/dist/src/shared/hooks/useIframe.js +13 -0
  185. package/dist/src/shared/hooks/useIframe.js.map +1 -0
  186. package/dist/src/shared/hooks/useSession.d.ts +3 -0
  187. package/dist/src/shared/hooks/useSession.d.ts.map +1 -0
  188. package/dist/src/shared/hooks/useSession.js +13 -0
  189. package/dist/src/shared/hooks/useSession.js.map +1 -0
  190. package/dist/src/shared/hooks/useToken.d.ts +3 -0
  191. package/dist/src/shared/hooks/useToken.d.ts.map +1 -0
  192. package/dist/src/shared/hooks/useToken.js +12 -0
  193. package/dist/src/shared/hooks/useToken.js.map +1 -0
  194. package/dist/{cjs/src/shared → src/shared/lib}/GenericAuthenticationRefresher.d.ts +5 -4
  195. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  196. package/dist/src/shared/lib/GenericAuthenticationRefresher.js +5 -1
  197. package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  198. package/dist/{cjs/src/shared → src/shared/lib}/UserSession.d.ts +1 -1
  199. package/dist/src/shared/lib/session.d.ts +3 -0
  200. package/dist/src/shared/lib/session.js +10 -0
  201. package/dist/src/shared/lib/session.js.map +1 -0
  202. package/dist/src/shared/lib/storage.d.ts +25 -0
  203. package/dist/src/shared/lib/storage.d.ts.map +1 -0
  204. package/dist/src/shared/lib/storage.js +17 -0
  205. package/dist/src/shared/lib/storage.js.map +1 -0
  206. package/dist/src/shared/lib/types.d.ts +22 -0
  207. package/dist/src/shared/lib/types.d.ts.map +1 -0
  208. package/dist/src/shared/lib/types.js +16 -0
  209. package/dist/src/shared/lib/types.js.map +1 -0
  210. package/dist/src/shared/providers/AuthContext.d.ts +10 -0
  211. package/dist/src/shared/providers/AuthContext.d.ts.map +1 -0
  212. package/dist/src/shared/providers/AuthContext.js +3 -0
  213. package/dist/src/shared/providers/AuthContext.js.map +1 -0
  214. package/dist/{cjs/src/shared → src/shared/providers}/CivicAuthProvider.d.ts +3 -3
  215. package/dist/src/shared/providers/CivicAuthProvider.js +15 -0
  216. package/dist/src/shared/providers/CivicAuthProvider.js.map +1 -0
  217. package/dist/src/shared/providers/ConfigProvider.d.ts +21 -0
  218. package/dist/src/shared/providers/ConfigProvider.d.ts.map +1 -0
  219. package/dist/src/shared/providers/ConfigProvider.js +19 -0
  220. package/dist/src/shared/providers/ConfigProvider.js.map +1 -0
  221. package/dist/src/shared/providers/IframeProvider.d.ts +16 -0
  222. package/dist/src/shared/providers/IframeProvider.d.ts.map +1 -0
  223. package/dist/src/shared/providers/IframeProvider.js +11 -0
  224. package/dist/src/shared/providers/IframeProvider.js.map +1 -0
  225. package/dist/src/shared/providers/SessionProvider.d.ts +13 -0
  226. package/dist/src/shared/providers/SessionProvider.d.ts.map +1 -0
  227. package/dist/src/shared/providers/SessionProvider.js +13 -0
  228. package/dist/src/shared/providers/SessionProvider.js.map +1 -0
  229. package/dist/src/shared/providers/TokenProvider.d.ts +18 -0
  230. package/dist/src/shared/providers/TokenProvider.d.ts.map +1 -0
  231. package/dist/src/shared/providers/TokenProvider.js +53 -0
  232. package/dist/src/shared/providers/TokenProvider.js.map +1 -0
  233. package/dist/{cjs/src/shared → src/shared/providers}/UserProvider.d.ts +7 -6
  234. package/dist/src/shared/providers/UserProvider.d.ts.map +1 -0
  235. package/dist/src/shared/providers/UserProvider.js +38 -0
  236. package/dist/src/shared/providers/UserProvider.js.map +1 -0
  237. package/dist/src/types.d.ts +146 -0
  238. package/dist/src/types.d.ts.map +1 -0
  239. package/dist/src/types.js +2 -0
  240. package/dist/src/types.js.map +1 -0
  241. package/dist/src/utils.d.ts +15 -0
  242. package/dist/src/utils.d.ts.map +1 -0
  243. package/dist/src/utils.js +43 -0
  244. package/dist/src/utils.js.map +1 -0
  245. package/dist/test/integration/sdk.test.d.ts +2 -0
  246. package/dist/test/integration/sdk.test.js +183 -0
  247. package/dist/test/integration/sdk.test.js.map +1 -0
  248. package/dist/test/support/fixtures.d.ts +26 -0
  249. package/dist/test/support/fixtures.d.ts.map +1 -0
  250. package/dist/test/support/fixtures.js +55 -0
  251. package/dist/test/support/fixtures.js.map +1 -0
  252. package/dist/test/support/tokens.json +26 -0
  253. package/dist/test/unit/lib/oauth.test.d.ts +2 -0
  254. package/dist/test/unit/lib/oauth.test.d.ts.map +1 -0
  255. package/dist/test/unit/lib/oauth.test.js +55 -0
  256. package/dist/test/unit/lib/oauth.test.js.map +1 -0
  257. package/dist/test/unit/logger.test.d.ts +2 -0
  258. package/dist/test/unit/logger.test.d.ts.map +1 -0
  259. package/dist/test/unit/logger.test.js +141 -0
  260. package/dist/test/unit/logger.test.js.map +1 -0
  261. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +2 -0
  262. package/dist/test/unit/nextjs/NextAuthProvider.test.js +29 -0
  263. package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +1 -0
  264. package/dist/test/unit/nextjs/config.test.d.ts +2 -0
  265. package/dist/test/unit/nextjs/config.test.d.ts.map +1 -0
  266. package/dist/test/unit/nextjs/config.test.js +189 -0
  267. package/dist/test/unit/nextjs/config.test.js.map +1 -0
  268. package/dist/test/unit/nextjs/getUser.test.d.ts +2 -0
  269. package/dist/test/unit/nextjs/getUser.test.js +36 -0
  270. package/dist/test/unit/nextjs/getUser.test.js.map +1 -0
  271. package/dist/test/unit/nextjs/middleware.test.d.ts +2 -0
  272. package/dist/test/unit/nextjs/middleware.test.d.ts.map +1 -0
  273. package/dist/test/unit/nextjs/middleware.test.js +113 -0
  274. package/dist/test/unit/nextjs/middleware.test.js.map +1 -0
  275. package/dist/test/unit/nextjs/utils.test.d.ts +2 -0
  276. package/dist/test/unit/nextjs/utils.test.d.ts.map +1 -0
  277. package/dist/test/unit/nextjs/utils.test.js +13 -0
  278. package/dist/test/unit/nextjs/utils.test.js.map +1 -0
  279. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +2 -0
  280. package/dist/test/unit/publicApi/apiSnapshot.test.js +10 -0
  281. package/dist/test/unit/publicApi/apiSnapshot.test.js.map +1 -0
  282. package/dist/test/unit/react/components/SignInButton.test.d.ts +2 -0
  283. package/dist/test/unit/react/components/SignInButton.test.js +31 -0
  284. package/dist/test/unit/react/components/SignInButton.test.js.map +1 -0
  285. package/dist/test/unit/react/components/SignOutButton.test.d.ts +2 -0
  286. package/dist/test/unit/react/components/SignOutButton.test.js +30 -0
  287. package/dist/test/unit/react/components/SignOutButton.test.js.map +1 -0
  288. package/dist/test/unit/server/login.test.d.ts +2 -0
  289. package/dist/test/unit/server/session.test.d.ts +2 -0
  290. package/dist/test/unit/services/AuthenticationService.test.d.ts +2 -0
  291. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +2 -0
  292. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +2 -0
  293. package/dist/test/unit/shared/UserSession.test.d.ts +2 -0
  294. package/dist/test/unit/shared/UserSession.test.d.ts.map +1 -0
  295. package/dist/test/unit/shared/UserSession.test.js +37 -0
  296. package/dist/test/unit/shared/UserSession.test.js.map +1 -0
  297. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +2 -0
  298. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +120 -0
  299. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +1 -0
  300. package/dist/test/unit/shared/storage.test.d.ts +2 -0
  301. package/dist/test/unit/shared/storage.test.d.ts.map +1 -0
  302. package/dist/test/unit/shared/storage.test.js +53 -0
  303. package/dist/test/unit/shared/storage.test.js.map +1 -0
  304. package/dist/test/unit/utils.test.d.ts +2 -0
  305. package/dist/test/unit/utils.test.d.ts.map +1 -0
  306. package/dist/test/unit/utils.test.js +40 -0
  307. package/dist/test/unit/utils.test.js.map +1 -0
  308. package/dist/tsconfig.tsbuildinfo +1 -1
  309. package/dist/vitest.config.d.ts +3 -0
  310. package/dist/vitest.config.d.ts.map +1 -0
  311. package/dist/vitest.config.js +40 -0
  312. package/dist/vitest.config.js.map +1 -0
  313. package/package.json +2 -2
  314. package/src/reactjs/components/UserButton.tsx +1 -1
  315. package/src/server/ServerAuthenticationResolver.ts +7 -2
  316. package/src/server/config.ts +1 -9
  317. package/src/server/index.ts +1 -0
  318. package/src/shared/lib/GenericAuthenticationRefresher.ts +6 -1
  319. package/dist/cjs/src/shared/AuthProvider.d.ts +0 -18
  320. package/dist/cjs/src/shared/AuthProvider.d.ts.map +0 -1
  321. package/dist/cjs/src/shared/AuthProvider.js +0 -246
  322. package/dist/cjs/src/shared/AuthProvider.js.map +0 -1
  323. package/dist/cjs/src/shared/CivicAuthProvider.d.ts.map +0 -1
  324. package/dist/cjs/src/shared/CivicAuthProvider.js +0 -19
  325. package/dist/cjs/src/shared/CivicAuthProvider.js.map +0 -1
  326. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts.map +0 -1
  327. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js +0 -47
  328. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js.map +0 -1
  329. package/dist/cjs/src/shared/UserProvider.d.ts.map +0 -1
  330. package/dist/cjs/src/shared/UserProvider.js +0 -42
  331. package/dist/cjs/src/shared/UserProvider.js.map +0 -1
  332. package/dist/cjs/src/shared/UserSession.d.ts.map +0 -1
  333. package/dist/cjs/src/shared/UserSession.js +0 -24
  334. package/dist/cjs/src/shared/UserSession.js.map +0 -1
  335. package/dist/cjs/src/shared/session.d.ts +0 -3
  336. package/dist/cjs/src/shared/session.d.ts.map +0 -1
  337. package/dist/cjs/src/shared/session.js +0 -13
  338. package/dist/cjs/src/shared/session.js.map +0 -1
  339. package/dist/cjs/src/shared/util.d.ts +0 -39
  340. package/dist/cjs/src/shared/util.d.ts.map +0 -1
  341. package/dist/cjs/src/shared/util.js +0 -162
  342. package/dist/cjs/src/shared/util.js.map +0 -1
@@ -0,0 +1,7 @@
1
+ export class PopupError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ Object.setPrototypeOf(this, PopupError.prototype);
5
+ }
6
+ }
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/types.ts"],"names":[],"mappings":"AAgDA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["import type { OIDCTokenResponseBody, SessionData } from \"@/types.js\";\n\n// A PKCEConsumer can get a code challenge to use in the login process\n// A PKCEProducer can also generate and store verifiers. The producer must also be a consumer in order to get the challenge from an existing flow\n// Examples:\n// - Client-only SPA: The SPA generates the code challenge and verifier, stores the verifier in state and returns the code challenge\n// Note - The SPA should use PKCEProducer instead to do both\n// - Client-side of a client/server app: The client calls the backend to get the challenge.\n// - Server-side: The server should generate a new stored verifier and derive the challenge from it.\nexport interface PKCEConsumer {\n // Retrieve a new PKCE challenge\n getCodeChallenge(): Promise<string>;\n}\n\n// All producers are consumers, because the producer can get its own challenge\nexport interface PKCEProducer extends PKCEConsumer {\n // Retrieve the PKCE challenge from the session if one exists\n getCodeVerifier(): Promise<string | null>;\n}\n\n// A service that can initiate requests to login or log out\nexport interface AuthenticationInitiator {\n // trigger a new login\n signIn(iframeRef: HTMLIFrameElement | null): Promise<URL>;\n\n // trigger a new logout\n signOut(): Promise<URL>;\n}\n\n// A service that can resolve an authentication request according to the OAuth Auth Code grant types\nexport interface AuthenticationResolver {\n // Given an auth code, get the tokens from the auth server and store them. works in PKCE and non-PKCE environments\n // Note, if we choose later to implement other grants, this method would move into a subinterface specifically\n // for the authorization code grant type.\n // The return type is just for convenience and can be ignored, as the same data would be provided by getSessionData\n tokenExchange(code: string, state: string): Promise<OIDCTokenResponseBody>;\n\n // If the tokens have already been retrieved, return them\n getSessionData(): Promise<SessionData | null>;\n\n // If an existing session is found, validate it and return the session data\n validateExistingSession(): Promise<SessionData>;\n}\n\nexport interface AuthenticationRefresher {\n refreshTokens: () => Promise<OIDCTokenResponseBody>;\n}\n\nexport class PopupError extends Error {\n constructor(message: string) {\n super(message);\n Object.setPrototypeOf(this, PopupError.prototype);\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ type CivicAuthIframeProps = {
3
+ onLoad?: () => void;
4
+ };
5
+ declare const CivicAuthIframe: React.ForwardRefExoticComponent<CivicAuthIframeProps & React.RefAttributes<HTMLIFrameElement>>;
6
+ export type { CivicAuthIframeProps };
7
+ export { CivicAuthIframe };
8
+ //# sourceMappingURL=CivicAuthIframe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CivicAuthIframe.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,eAAe,gGAWpB,CAAC;AAIF,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { IFRAME_ID } from "@/constants.js";
3
+ import React, { forwardRef } from "react";
4
+ const CivicAuthIframe = forwardRef(({ onLoad }, ref) => {
5
+ return (React.createElement("iframe", { id: IFRAME_ID, ref: ref, style: { height: "26rem", width: "100%", border: "none" }, onLoad: onLoad }));
6
+ });
7
+ CivicAuthIframe.displayName = "CivicAuthIframe";
8
+ export { CivicAuthIframe };
9
+ //# sourceMappingURL=CivicAuthIframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CivicAuthIframe.js","sourceRoot":"","sources":["../../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAM1C,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;IAClB,OAAO,CACL,gCACE,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EACzD,MAAM,EAAE,MAAM,GACd,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAIhD,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { IFRAME_ID } from \"@/constants.js\";\nimport React, { forwardRef } from \"react\";\n\ntype CivicAuthIframeProps = {\n onLoad?: () => void;\n};\n\nconst CivicAuthIframe = forwardRef<HTMLIFrameElement, CivicAuthIframeProps>(\n ({ onLoad }, ref) => {\n return (\n <iframe\n id={IFRAME_ID}\n ref={ref}\n style={{ height: \"26rem\", width: \"100%\", border: \"none\" }}\n onLoad={onLoad}\n />\n );\n },\n);\n\nCivicAuthIframe.displayName = \"CivicAuthIframe\";\n\nexport type { CivicAuthIframeProps };\n\nexport { CivicAuthIframe };\n"]}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ declare const CloseIcon: () => React.JSX.Element;
3
+ export { CloseIcon };
4
+ //# sourceMappingURL=CloseIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/CloseIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAA,MAAM,SAAS,yBAgBd,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ const CloseIcon = () => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "lucide lucide-x" },
3
+ React.createElement("path", { d: "M18 6 6 18" }),
4
+ React.createElement("path", { d: "m6 6 12 12" })));
5
+ export { CloseIcon };
6
+ //# sourceMappingURL=CloseIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseIcon.js","sourceRoot":"","sources":["../../../../src/shared/components/CloseIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CACtB,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,iBAAiB;IAE3B,8BAAM,CAAC,EAAC,YAAY,GAAG;IACvB,8BAAM,CAAC,EAAC,YAAY,GAAG,CACnB,CACP,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import React from \"react\";\n\nconst CloseIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-x\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n);\n\nexport { CloseIcon };\n"]}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ declare const LoadingIcon: () => React.JSX.Element;
3
+ export { LoadingIcon };
4
+ //# sourceMappingURL=LoadingIcon.d.ts.map
@@ -0,0 +1,5 @@
1
+ export { useToken } from "@/shared/hooks/useToken.js";
2
+ export { useAuth } from "@/shared/hooks/useAuth.js";
3
+ export { useConfig } from "@/shared/hooks/useConfig.js";
4
+ export { useIframe } from "@/shared/hooks/useIframe.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { useToken } from "@/shared/hooks/useToken.js";
2
+ export { useAuth } from "@/shared/hooks/useAuth.js";
3
+ export { useConfig } from "@/shared/hooks/useConfig.js";
4
+ export { useIframe } from "@/shared/hooks/useIframe.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export { useToken } from \"@/shared/hooks/useToken.js\";\nexport { useAuth } from \"@/shared/hooks/useAuth.js\";\nexport { useConfig } from \"@/shared/hooks/useConfig.js\";\nexport { useIframe } from \"@/shared/hooks/useIframe.js\";\n"]}
@@ -0,0 +1,3 @@
1
+ declare const useAuth: () => import("@/shared/providers/AuthContext.js").AuthContextType;
2
+ export { useAuth };
3
+ //# sourceMappingURL=useAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useAuth.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,OAAO,mEAQZ,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useContext } from "react";
3
+ import { AuthContext } from "@/shared/providers/AuthContext.js";
4
+ const useAuth = () => {
5
+ const context = useContext(AuthContext);
6
+ if (!context) {
7
+ throw new Error("useAuth must be used within an AuthProvider");
8
+ }
9
+ return context;
10
+ };
11
+ export { useAuth };
12
+ //# sourceMappingURL=useAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../../src/shared/hooks/useAuth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { AuthContext } from \"@/shared/providers/AuthContext.js\";\n\nconst useAuth = () => {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n\n return context;\n};\n\nexport { useAuth };\n"]}
@@ -0,0 +1,3 @@
1
+ declare const useConfig: () => import("@/shared/providers/ConfigProvider.js").ConfigProviderOutput;
2
+ export { useConfig };
3
+ //# sourceMappingURL=useConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useConfig.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,SAAS,2EAMd,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useContext } from "react";
3
+ import { ConfigContext } from "@/shared/providers/ConfigProvider.js";
4
+ // TokenProvider will use this internal context to access Config
5
+ const useConfig = () => {
6
+ const context = useContext(ConfigContext);
7
+ if (!context) {
8
+ throw new Error("useConfig must be used within an ConfigProvider");
9
+ }
10
+ return context;
11
+ };
12
+ export { useConfig };
13
+ //# sourceMappingURL=useConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../../src/shared/hooks/useConfig.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,gEAAgE;AAChE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { ConfigContext } from \"@/shared/providers/ConfigProvider.js\";\n\n// TokenProvider will use this internal context to access Config\nconst useConfig = () => {\n const context = useContext(ConfigContext);\n if (!context) {\n throw new Error(\"useConfig must be used within an ConfigProvider\");\n }\n return context;\n};\n\nexport { useConfig };\n"]}
@@ -0,0 +1,3 @@
1
+ declare const useIframe: () => import("@/shared/providers/IframeProvider.js").IframeProviderOutput;
2
+ export { useIframe };
3
+ //# sourceMappingURL=useIframe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIframe.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useIframe.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,SAAS,2EAMd,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useContext } from "react";
3
+ import { IframeContext } from "@/shared/providers/IframeProvider.js";
4
+ // TokenProvider will use this internal context to access Iframe
5
+ const useIframe = () => {
6
+ const context = useContext(IframeContext);
7
+ if (!context) {
8
+ throw new Error("useIframe must be used within an IframeProvider");
9
+ }
10
+ return context;
11
+ };
12
+ export { useIframe };
13
+ //# sourceMappingURL=useIframe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIframe.js","sourceRoot":"","sources":["../../../../src/shared/hooks/useIframe.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,gEAAgE;AAChE,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { IframeContext } from \"@/shared/providers/IframeProvider.js\";\n\n// TokenProvider will use this internal context to access Iframe\nconst useIframe = () => {\n const context = useContext(IframeContext);\n if (!context) {\n throw new Error(\"useIframe must be used within an IframeProvider\");\n }\n return context;\n};\n\nexport { useIframe };\n"]}
@@ -0,0 +1,3 @@
1
+ declare const useSession: () => import("../../types.js").SessionData;
2
+ export { useSession };
3
+ //# sourceMappingURL=useSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useSession.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,UAAU,4CAMf,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { useContext } from "react";
3
+ import { SessionContext } from "@/shared/providers/SessionProvider.js";
4
+ // TokenProvider will use this internal context to access session
5
+ const useSession = () => {
6
+ const context = useContext(SessionContext);
7
+ if (!context) {
8
+ throw new Error("useSession must be used within an SessionProvider");
9
+ }
10
+ return context;
11
+ };
12
+ export { useSession };
13
+ //# sourceMappingURL=useSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSession.js","sourceRoot":"","sources":["../../../../src/shared/hooks/useSession.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,iEAAiE;AACjE,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { SessionContext } from \"@/shared/providers/SessionProvider.js\";\n\n// TokenProvider will use this internal context to access session\nconst useSession = () => {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error(\"useSession must be used within an SessionProvider\");\n }\n return context;\n};\n\nexport { useSession };\n"]}
@@ -0,0 +1,3 @@
1
+ declare const useToken: () => import("@/shared/providers/TokenProvider.js").TokenContextType;
2
+ export { useToken };
3
+ //# sourceMappingURL=useToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToken.d.ts","sourceRoot":"","sources":["../../../../src/shared/hooks/useToken.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,sEAQb,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use client";
2
+ import { useContext } from "react";
3
+ import { TokenContext } from "@/shared/providers/TokenProvider.js";
4
+ const useToken = () => {
5
+ const context = useContext(TokenContext);
6
+ if (!context) {
7
+ throw new Error("useToken must be used within a TokenProvider");
8
+ }
9
+ return context;
10
+ };
11
+ export { useToken };
12
+ //# sourceMappingURL=useToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToken.js","sourceRoot":"","sources":["../../../../src/shared/hooks/useToken.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { TokenContext } from \"@/shared/providers/TokenProvider.js\";\n\nconst useToken = () => {\n const context = useContext(TokenContext);\n\n if (!context) {\n throw new Error(\"useToken must be used within a TokenProvider\");\n }\n\n return context;\n};\n\nexport { useToken };\n"]}
@@ -1,6 +1,6 @@
1
- import type { AuthenticationRefresher } from "../services/types.ts";
2
- import type { AuthStorage, Endpoints } from "../types.js";
3
- import type { AuthConfig } from "../server/config.ts";
1
+ import type { AuthenticationRefresher } from "@/services/types.js";
2
+ import type { AuthStorage, Endpoints, OIDCTokenResponseBody } from "@/types.js";
3
+ import type { AuthConfig } from "@/server/config.js";
4
4
  export declare class GenericAuthenticationRefresher implements AuthenticationRefresher {
5
5
  private authConfig;
6
6
  private storage;
@@ -8,8 +8,9 @@ export declare class GenericAuthenticationRefresher implements AuthenticationRef
8
8
  private oauth2client;
9
9
  private endpoints;
10
10
  private constructor();
11
+ get oauthServer(): string;
11
12
  init(): Promise<this>;
12
13
  static build(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints>): Promise<GenericAuthenticationRefresher>;
13
- refreshTokens(): Promise<any>;
14
+ refreshTokens(): Promise<OIDCTokenResponseBody>;
14
15
  }
15
16
  //# sourceMappingURL=GenericAuthenticationRefresher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,qBAAa,8BAA+B,YAAW,uBAAuB;IAK1E,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,iBAAiB,CAAC;IAN5B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO;IAMD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAkBd,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAWpC,aAAa;CAgBpB"}
1
+ {"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,qBAAa,8BAA+B,YAAW,uBAAuB;IAK1E,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,iBAAiB,CAAC;IAN5B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO;IAMP,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAkBd,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAWpC,aAAa;CAgBpB"}
@@ -1,5 +1,6 @@
1
1
  import { getEndpointsWithOverrides, retrieveTokens, storeTokens, } from "@/shared/lib/util.js";
2
2
  import { OAuth2Client } from "oslo/oauth2";
3
+ import { DEFAULT_AUTH_SERVER } from "@/constants.js";
3
4
  export class GenericAuthenticationRefresher {
4
5
  authConfig;
5
6
  storage;
@@ -11,9 +12,12 @@ export class GenericAuthenticationRefresher {
11
12
  this.storage = storage;
12
13
  this.endpointOverrides = endpointOverrides;
13
14
  }
15
+ get oauthServer() {
16
+ return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;
17
+ }
14
18
  async init() {
15
19
  // resolve oauth config
16
- this.endpoints = await getEndpointsWithOverrides(this.authConfig.oauthServer, this.endpointOverrides);
20
+ this.endpoints = await getEndpointsWithOverrides(this.oauthServer, this.endpointOverrides);
17
21
  this.oauth2client = new OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
18
22
  redirectURI: this.authConfig.redirectUrl,
19
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,8BAA8B;IAK/B;IACA;IACA;IANF,YAAY,CAA2B;IACvC,SAAS,CAAwB;IAEzC,YACU,UAAsB,EACtB,OAAoB,EACpB,iBAAsC;QAFtC,eAAU,GAAV,UAAU,CAAY;QACtB,YAAO,GAAP,OAAO,CAAa;QACpB,sBAAiB,GAAjB,iBAAiB,CAAqB;IAC7C,CAAC;IAEJ,KAAK,CAAC,IAAI;QACR,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,yBAAyB,CAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,EAC3B,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,EACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB;YACE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,UAAsB,EACtB,OAAoB,EACpB,iBAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,8BAA8B,CAClD,UAAU,EACV,OAAO,EACP,iBAAiB,CAClB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE1E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QACxC,MAAM,eAAe,GACnB,MAAM,YAAY,CAAC,kBAAkB,CACnC,MAAM,CAAC,aAAa,CACrB,CAAC;QAEJ,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import type { AuthenticationRefresher } from \"@/services/types.js\";\nimport type { AuthStorage, Endpoints, OIDCTokenResponseBody } from \"@/types.js\";\nimport {\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\n\nexport class GenericAuthenticationRefresher implements AuthenticationRefresher {\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n private authConfig: AuthConfig,\n private storage: AuthStorage,\n private endpointOverrides?: Partial<Endpoints>,\n ) {}\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.authConfig.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<GenericAuthenticationRefresher> {\n const refresher = new GenericAuthenticationRefresher(\n authConfig,\n storage,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n async refreshTokens() {\n if (!this.oauth2client) await this.init();\n\n const tokens = await retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n\n const oauth2Client = this.oauth2client!;\n const refreshedTokens =\n await oauth2Client.refreshAccessToken<OIDCTokenResponseBody>(\n tokens.refresh_token,\n );\n\n await storeTokens(this.storage, refreshedTokens);\n\n return tokens;\n }\n}\n"]}
1
+ {"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,OAAO,8BAA8B;IAK/B;IACA;IACA;IANF,YAAY,CAA2B;IACvC,SAAS,CAAwB;IAEzC,YACU,UAAsB,EACtB,OAAoB,EACpB,iBAAsC;QAFtC,eAAU,GAAV,UAAU,CAAY;QACtB,YAAO,GAAP,OAAO,CAAa;QACpB,sBAAiB,GAAjB,iBAAiB,CAAqB;IAC7C,CAAC;IAEJ,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,yBAAyB,CAC9C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,EACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB;YACE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,UAAsB,EACtB,OAAoB,EACpB,iBAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,8BAA8B,CAClD,UAAU,EACV,OAAO,EACP,iBAAiB,CAClB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE1E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QACxC,MAAM,eAAe,GACnB,MAAM,YAAY,CAAC,kBAAkB,CACnC,MAAM,CAAC,aAAa,CACrB,CAAC;QAEJ,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import type { AuthenticationRefresher } from \"@/services/types.js\";\nimport type { AuthStorage, Endpoints, OIDCTokenResponseBody } from \"@/types.js\";\nimport {\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\n\nexport class GenericAuthenticationRefresher implements AuthenticationRefresher {\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n private authConfig: AuthConfig,\n private storage: AuthStorage,\n private endpointOverrides?: Partial<Endpoints>,\n ) {}\n\n get oauthServer(): string {\n return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;\n }\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<GenericAuthenticationRefresher> {\n const refresher = new GenericAuthenticationRefresher(\n authConfig,\n storage,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n async refreshTokens() {\n if (!this.oauth2client) await this.init();\n\n const tokens = await retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n\n const oauth2Client = this.oauth2client!;\n const refreshedTokens =\n await oauth2Client.refreshAccessToken<OIDCTokenResponseBody>(\n tokens.refresh_token,\n );\n\n await storeTokens(this.storage, refreshedTokens);\n\n return tokens;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AuthStorage, User } from "../types.js";
1
+ import type { AuthStorage, User } from "@/types.js";
2
2
  export interface UserSession {
3
3
  get(): Promise<User | null>;
4
4
  set(user: User): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { AuthStorage, User } from "@/types.js";
2
+ export declare function getUser(storage: AuthStorage): Promise<User | null>;
3
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { retrieveTokens } from "@/shared/lib/util.js";
2
+ import { parseJWT } from "oslo/jwt";
3
+ export async function getUser(storage) {
4
+ const tokens = await retrieveTokens(storage);
5
+ if (!tokens)
6
+ return null;
7
+ // Assumes all information is in the ID token
8
+ return parseJWT(tokens.id_token)?.payload ?? null;
9
+ }
10
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/shared/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,6CAA6C;IAC7C,OAAQ,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAgB,IAAI,IAAI,CAAC;AAC9D,CAAC","sourcesContent":["import { retrieveTokens } from \"@/shared/lib/util.js\";\nimport { parseJWT } from \"oslo/jwt\";\nimport type { AuthStorage, User } from \"@/types.js\";\n\nexport async function getUser(storage: AuthStorage): Promise<User | null> {\n const tokens = await retrieveTokens(storage);\n if (!tokens) return null;\n\n // Assumes all information is in the ID token\n return (parseJWT(tokens.id_token)?.payload as User) ?? null;\n}\n"]}
@@ -0,0 +1,25 @@
1
+ import type { AuthStorage, SessionData, UnknownObject, User } from "@/types.js";
2
+ type SameSiteOption = "strict" | "lax" | "none";
3
+ export interface SessionStorage {
4
+ get(): SessionData;
5
+ getUser(): User<UnknownObject> | null;
6
+ set(data: Partial<SessionData>): void;
7
+ setUser(data: User<UnknownObject> | null): void;
8
+ clear(): void;
9
+ }
10
+ export type CookieStorageSettings = {
11
+ httpOnly: boolean;
12
+ secure: boolean;
13
+ sameSite: SameSiteOption;
14
+ expires: Date;
15
+ path: string;
16
+ };
17
+ export declare const DEFAULT_COOKIE_DURATION: number;
18
+ export declare abstract class CookieStorage implements AuthStorage {
19
+ protected settings: CookieStorageSettings;
20
+ protected constructor(settings?: Partial<CookieStorageSettings>);
21
+ abstract get(key: string): Promise<string | null>;
22
+ abstract set(key: string, value: string): Promise<void>;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhF,KAAK,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,GAAG,IAAI,WAAW,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACtC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAU,CAAC;AAE/C,8BAAsB,aAAc,YAAW,WAAW;IACxD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,SAAS,aAAa,QAAQ,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAanE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACxD"}
@@ -0,0 +1,17 @@
1
+ export const DEFAULT_COOKIE_DURATION = 60 * 15; // 15 minutes
2
+ export class CookieStorage {
3
+ settings;
4
+ constructor(settings = {}) {
5
+ this.settings = {
6
+ httpOnly: settings.httpOnly ?? true,
7
+ secure: settings.secure ?? true,
8
+ // the callback request comes the auth server
9
+ // 'lax' ensures the code_verifier cookie is sent with the request
10
+ sameSite: settings.sameSite ?? "lax",
11
+ expires: settings.expires ??
12
+ new Date(Date.now() + 1000 * DEFAULT_COOKIE_DURATION),
13
+ path: settings.path ?? "/",
14
+ };
15
+ }
16
+ }
17
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../src/shared/lib/storage.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa;AAE7D,MAAM,OAAgB,aAAa;IACvB,QAAQ,CAAwB;IAC1C,YAAsB,WAA2C,EAAE;QACjE,IAAI,CAAC,QAAQ,GAAG;YACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;YACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;YAC/B,6CAA6C;YAC7C,kEAAkE;YAClE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK;YACpC,OAAO,EACL,QAAQ,CAAC,OAAO;gBAChB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,uBAAuB,CAAC;YACvD,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,GAAG;SAC3B,CAAC;IACJ,CAAC;CAGF","sourcesContent":["import type { AuthStorage, SessionData, UnknownObject, User } from \"@/types.js\";\n\ntype SameSiteOption = \"strict\" | \"lax\" | \"none\";\n\nexport interface SessionStorage {\n get(): SessionData;\n getUser(): User<UnknownObject> | null;\n set(data: Partial<SessionData>): void;\n setUser(data: User<UnknownObject> | null): void;\n clear(): void;\n}\n\nexport type CookieStorageSettings = {\n httpOnly: boolean;\n secure: boolean;\n sameSite: SameSiteOption;\n expires: Date;\n path: string;\n};\n\nexport const DEFAULT_COOKIE_DURATION = 60 * 15; // 15 minutes\n\nexport abstract class CookieStorage implements AuthStorage {\n protected settings: CookieStorageSettings;\n protected constructor(settings: Partial<CookieStorageSettings> = {}) {\n this.settings = {\n httpOnly: settings.httpOnly ?? true,\n secure: settings.secure ?? true,\n // the callback request comes the auth server\n // 'lax' ensures the code_verifier cookie is sent with the request\n sameSite: settings.sameSite ?? \"lax\",\n expires:\n settings.expires ??\n new Date(Date.now() + 1000 * DEFAULT_COOKIE_DURATION),\n path: settings.path ?? \"/\",\n };\n }\n abstract get(key: string): Promise<string | null>;\n abstract set(key: string, value: string): Promise<void>;\n}\n"]}
@@ -0,0 +1,22 @@
1
+ export declare enum OAuthTokens {
2
+ ID_TOKEN = "id_token",
3
+ ACCESS_TOKEN = "access_token",
4
+ REFRESH_TOKEN = "refresh_token"
5
+ }
6
+ export declare enum CodeVerifier {
7
+ COOKIE_NAME = "code_verifier",
8
+ APP_URL = "app_url"
9
+ }
10
+ export declare enum UserStorage {
11
+ USER = "user"
12
+ }
13
+ export interface CookieConfig {
14
+ secure?: boolean;
15
+ sameSite?: "strict" | "lax" | "none";
16
+ domain?: string;
17
+ path?: string;
18
+ maxAge?: number;
19
+ httpOnly?: boolean;
20
+ }
21
+ export type TokensCookieConfig = Record<OAuthTokens | CodeVerifier, CookieConfig>;
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;CAChC;AAED,oBAAY,YAAY;IACtB,WAAW,kBAAkB;IAC7B,OAAO,YAAY;CACpB;AACD,oBAAY,WAAW;IACrB,IAAI,SAAS;CACd;AACD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC,WAAW,GAAG,YAAY,EAC1B,YAAY,CACb,CAAC"}
@@ -0,0 +1,16 @@
1
+ export var OAuthTokens;
2
+ (function (OAuthTokens) {
3
+ OAuthTokens["ID_TOKEN"] = "id_token";
4
+ OAuthTokens["ACCESS_TOKEN"] = "access_token";
5
+ OAuthTokens["REFRESH_TOKEN"] = "refresh_token";
6
+ })(OAuthTokens || (OAuthTokens = {}));
7
+ export var CodeVerifier;
8
+ (function (CodeVerifier) {
9
+ CodeVerifier["COOKIE_NAME"] = "code_verifier";
10
+ CodeVerifier["APP_URL"] = "app_url";
11
+ })(CodeVerifier || (CodeVerifier = {}));
12
+ export var UserStorage;
13
+ (function (UserStorage) {
14
+ UserStorage["USER"] = "user";
15
+ })(UserStorage || (UserStorage = {}));
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/shared/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;AACjC,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AACD,MAAM,CAAN,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,4BAAa,CAAA;AACf,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB","sourcesContent":["export enum OAuthTokens {\n ID_TOKEN = \"id_token\",\n ACCESS_TOKEN = \"access_token\",\n REFRESH_TOKEN = \"refresh_token\",\n}\n\nexport enum CodeVerifier {\n COOKIE_NAME = \"code_verifier\",\n APP_URL = \"app_url\",\n}\nexport enum UserStorage {\n USER = \"user\",\n}\nexport interface CookieConfig {\n secure?: boolean;\n sameSite?: \"strict\" | \"lax\" | \"none\";\n domain?: string;\n path?: string;\n maxAge?: number;\n httpOnly?: boolean;\n}\n\nexport type TokensCookieConfig = Record<\n OAuthTokens | CodeVerifier,\n CookieConfig\n>;\n"]}
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ export const AuthContext = createContext(null);
3
+ //# sourceMappingURL=AuthContext.js.map
@@ -0,0 +1 @@
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,6 +1,6 @@
1
- import { AuthProviderProps } from "./AuthProvider";
2
- import "@civic/auth/styles.css";
1
+ import React from "react";
2
+ import { type AuthProviderProps } from "@/shared/providers/AuthProvider.js";
3
3
  type CivicAuthProviderProps = Omit<AuthProviderProps, "pkceConsumer">;
4
- declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) => import("react").JSX.Element;
4
+ declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) => React.JSX.Element;
5
5
  export { CivicAuthProvider, type CivicAuthProviderProps };
6
6
  //# sourceMappingURL=CivicAuthProvider.d.ts.map
@@ -0,0 +1,15 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,21 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,16 @@
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
@@ -0,0 +1 @@
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"}