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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/.turbo/turbo-lint$colon$fix.log +16 -0
  3. package/.turbo/turbo-test.log +552 -1077
  4. package/dist/{src/shared/providers → cjs/src/shared}/AuthProvider.d.ts +7 -9
  5. package/dist/cjs/src/shared/AuthProvider.d.ts.map +1 -0
  6. package/dist/{src/shared/providers → cjs/src/shared}/AuthProvider.js +70 -87
  7. package/dist/cjs/src/shared/AuthProvider.js.map +1 -0
  8. package/dist/{src/shared/providers → cjs/src/shared}/CivicAuthProvider.d.ts +3 -3
  9. package/dist/cjs/src/shared/CivicAuthProvider.d.ts.map +1 -0
  10. package/dist/cjs/src/shared/CivicAuthProvider.js +19 -0
  11. package/dist/cjs/src/shared/CivicAuthProvider.js.map +1 -0
  12. package/dist/{src/shared/lib → cjs/src/shared}/GenericAuthenticationRefresher.d.ts +4 -4
  13. package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts.map +1 -0
  14. package/dist/{src/shared/lib → cjs/src/shared}/GenericAuthenticationRefresher.js +11 -7
  15. package/dist/cjs/src/shared/GenericAuthenticationRefresher.js.map +1 -0
  16. package/dist/{src/shared/providers → cjs/src/shared}/UserProvider.d.ts +6 -7
  17. package/dist/cjs/src/shared/UserProvider.d.ts.map +1 -0
  18. package/dist/cjs/src/shared/UserProvider.js +42 -0
  19. package/dist/cjs/src/shared/UserProvider.js.map +1 -0
  20. package/dist/cjs/src/shared/UserSession.d.ts +12 -0
  21. package/dist/cjs/src/shared/UserSession.d.ts.map +1 -0
  22. package/dist/cjs/src/shared/UserSession.js +24 -0
  23. package/dist/cjs/src/shared/UserSession.js.map +1 -0
  24. package/dist/cjs/src/shared/session.d.ts +3 -0
  25. package/dist/cjs/src/shared/session.d.ts.map +1 -0
  26. package/dist/cjs/src/shared/session.js +13 -0
  27. package/dist/cjs/src/shared/session.js.map +1 -0
  28. package/dist/{src/shared/lib → cjs/src/shared}/util.d.ts +10 -4
  29. package/dist/cjs/src/shared/util.d.ts.map +1 -0
  30. package/dist/cjs/src/shared/util.js +162 -0
  31. package/dist/cjs/src/shared/util.js.map +1 -0
  32. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  33. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  34. package/dist/src/nextjs/cookies.d.ts.map +1 -1
  35. package/dist/src/nextjs/cookies.js +12 -8
  36. package/dist/src/nextjs/cookies.js.map +1 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +3 -3
  39. package/.turbo/turbo-lint.log +0 -14
  40. package/civic-auth-0.0.1-beta.15.tgz +0 -0
  41. package/civic-auth-0.0.1-beta.17.tgz +0 -0
  42. package/dist/AuthProvider-BYZ8w92b.d.mts +0 -15
  43. package/dist/AuthProvider-BgOwv9h8.d.ts +0 -15
  44. package/dist/AuthProvider-Bj_Prt1x.d.ts +0 -21
  45. package/dist/AuthProvider-DUAoX4G9.d.mts +0 -21
  46. package/dist/UserProvider-BA2uflVB.d.ts +0 -16
  47. package/dist/UserProvider-Bl3j1PUO.d.mts +0 -16
  48. package/dist/UserProvider-CMLaYOUD.d.ts +0 -16
  49. package/dist/UserProvider-Cbm8MZkJ.d.mts +0 -16
  50. package/dist/chunk-4PLCDPEN.mjs +0 -599
  51. package/dist/chunk-4PLCDPEN.mjs.map +0 -1
  52. package/dist/chunk-5UQQYXCX.js +0 -1
  53. package/dist/chunk-5UQQYXCX.js.map +0 -1
  54. package/dist/chunk-63YGK3A7.mjs +0 -223
  55. package/dist/chunk-63YGK3A7.mjs.map +0 -1
  56. package/dist/chunk-6RFRDWIP.js +0 -223
  57. package/dist/chunk-6RFRDWIP.js.map +0 -1
  58. package/dist/chunk-7K3QN2AT.js +0 -599
  59. package/dist/chunk-7K3QN2AT.js.map +0 -1
  60. package/dist/chunk-AM2Y662I.js +0 -601
  61. package/dist/chunk-AM2Y662I.js.map +0 -1
  62. package/dist/chunk-AP4627CS.mjs +0 -223
  63. package/dist/chunk-AP4627CS.mjs.map +0 -1
  64. package/dist/chunk-CRTRMMJ7.js +0 -59
  65. package/dist/chunk-CRTRMMJ7.js.map +0 -1
  66. package/dist/chunk-CTVJJBBA.js +0 -118
  67. package/dist/chunk-CTVJJBBA.js.map +0 -1
  68. package/dist/chunk-EKLYHP2D.mjs +0 -711
  69. package/dist/chunk-EKLYHP2D.mjs.map +0 -1
  70. package/dist/chunk-FHRZSX3C.js +0 -710
  71. package/dist/chunk-FHRZSX3C.js.map +0 -1
  72. package/dist/chunk-GB3H3I47.js +0 -711
  73. package/dist/chunk-GB3H3I47.js.map +0 -1
  74. package/dist/chunk-JDZPCA3P.js +0 -173
  75. package/dist/chunk-JDZPCA3P.js.map +0 -1
  76. package/dist/chunk-JEOPLLWO.js +0 -223
  77. package/dist/chunk-JEOPLLWO.js.map +0 -1
  78. package/dist/chunk-MK7557NR.mjs +0 -118
  79. package/dist/chunk-MK7557NR.mjs.map +0 -1
  80. package/dist/chunk-NLRREFOX.mjs +0 -710
  81. package/dist/chunk-NLRREFOX.mjs.map +0 -1
  82. package/dist/chunk-O3WGNLRO.mjs +0 -173
  83. package/dist/chunk-O3WGNLRO.mjs.map +0 -1
  84. package/dist/chunk-OXXUQ36U.mjs +0 -283
  85. package/dist/chunk-OXXUQ36U.mjs.map +0 -1
  86. package/dist/chunk-PMJAV4JJ.mjs +0 -1
  87. package/dist/chunk-PMJAV4JJ.mjs.map +0 -1
  88. package/dist/chunk-Q7DSPTUG.mjs +0 -601
  89. package/dist/chunk-Q7DSPTUG.mjs.map +0 -1
  90. package/dist/chunk-RGHW4PYM.mjs +0 -59
  91. package/dist/chunk-RGHW4PYM.mjs.map +0 -1
  92. package/dist/chunk-TH6FI2XI.js +0 -283
  93. package/dist/chunk-TH6FI2XI.js.map +0 -1
  94. package/dist/index.css +0 -340
  95. package/dist/index.css.map +0 -1
  96. package/dist/index.d.mts +0 -5
  97. package/dist/index.d.ts +0 -5
  98. package/dist/index.js +0 -3
  99. package/dist/index.js.map +0 -1
  100. package/dist/index.mjs +0 -3
  101. package/dist/index.mjs.map +0 -1
  102. package/dist/nextjs/client.css +0 -340
  103. package/dist/nextjs/client.css.map +0 -1
  104. package/dist/nextjs/client.d.mts +0 -10
  105. package/dist/nextjs/client.d.ts +0 -10
  106. package/dist/nextjs/client.js +0 -185
  107. package/dist/nextjs/client.js.map +0 -1
  108. package/dist/nextjs/client.mjs +0 -185
  109. package/dist/nextjs/client.mjs.map +0 -1
  110. package/dist/nextjs.d.mts +0 -267
  111. package/dist/nextjs.d.ts +0 -267
  112. package/dist/nextjs.js +0 -315
  113. package/dist/nextjs.js.map +0 -1
  114. package/dist/nextjs.mjs +0 -315
  115. package/dist/nextjs.mjs.map +0 -1
  116. package/dist/react.d.mts +0 -65
  117. package/dist/react.d.ts +0 -65
  118. package/dist/react.js +0 -226
  119. package/dist/react.js.map +0 -1
  120. package/dist/react.mjs +0 -226
  121. package/dist/react.mjs.map +0 -1
  122. package/dist/server.d.mts +0 -35
  123. package/dist/server.d.ts +0 -35
  124. package/dist/server.js +0 -20
  125. package/dist/server.js.map +0 -1
  126. package/dist/server.mjs +0 -20
  127. package/dist/server.mjs.map +0 -1
  128. package/dist/src/browser/storage.d.ts +0 -6
  129. package/dist/src/browser/storage.d.ts.map +0 -1
  130. package/dist/src/browser/storage.js +0 -9
  131. package/dist/src/browser/storage.js.map +0 -1
  132. package/dist/src/config.d.ts +0 -3
  133. package/dist/src/config.d.ts.map +0 -1
  134. package/dist/src/config.js +0 -5
  135. package/dist/src/config.js.map +0 -1
  136. package/dist/src/constants.d.ts +0 -9
  137. package/dist/src/constants.d.ts.map +0 -1
  138. package/dist/src/constants.js +0 -17
  139. package/dist/src/constants.js.map +0 -1
  140. package/dist/src/index.d.ts +0 -4
  141. package/dist/src/index.d.ts.map +0 -1
  142. package/dist/src/index.js +0 -2
  143. package/dist/src/index.js.map +0 -1
  144. package/dist/src/lib/cookies.d.ts +0 -7
  145. package/dist/src/lib/cookies.d.ts.map +0 -1
  146. package/dist/src/lib/cookies.js +0 -23
  147. package/dist/src/lib/cookies.js.map +0 -1
  148. package/dist/src/lib/jwt.d.ts +0 -3
  149. package/dist/src/lib/jwt.d.ts.map +0 -1
  150. package/dist/src/lib/jwt.js +0 -9
  151. package/dist/src/lib/jwt.js.map +0 -1
  152. package/dist/src/lib/logger.d.ts +0 -26
  153. package/dist/src/lib/logger.d.ts.map +0 -1
  154. package/dist/src/lib/logger.js +0 -55
  155. package/dist/src/lib/logger.js.map +0 -1
  156. package/dist/src/lib/oauth.d.ts +0 -19
  157. package/dist/src/lib/oauth.d.ts.map +0 -1
  158. package/dist/src/lib/oauth.js +0 -60
  159. package/dist/src/lib/oauth.js.map +0 -1
  160. package/dist/src/lib/postMessage.d.ts +0 -4
  161. package/dist/src/lib/postMessage.d.ts.map +0 -1
  162. package/dist/src/lib/postMessage.js +0 -15
  163. package/dist/src/lib/postMessage.js.map +0 -1
  164. package/dist/src/lib/windowUtil.d.ts +0 -4
  165. package/dist/src/lib/windowUtil.d.ts.map +0 -1
  166. package/dist/src/lib/windowUtil.js +0 -30
  167. package/dist/src/lib/windowUtil.js.map +0 -1
  168. package/dist/src/nextjs/GetUser.d.ts +0 -6
  169. package/dist/src/nextjs/GetUser.d.ts.map +0 -1
  170. package/dist/src/nextjs/GetUser.js +0 -18
  171. package/dist/src/nextjs/GetUser.js.map +0 -1
  172. package/dist/src/nextjs/config.d.ts +0 -178
  173. package/dist/src/nextjs/config.d.ts.map +0 -1
  174. package/dist/src/nextjs/config.js +0 -164
  175. package/dist/src/nextjs/config.js.map +0 -1
  176. package/dist/src/nextjs/cookies.d.ts +0 -30
  177. package/dist/src/nextjs/hooks/index.d.ts +0 -2
  178. package/dist/src/nextjs/hooks/index.d.ts.map +0 -1
  179. package/dist/src/nextjs/hooks/index.js +0 -2
  180. package/dist/src/nextjs/hooks/index.js.map +0 -1
  181. package/dist/src/nextjs/hooks/useTokenCookie.d.ts +0 -3
  182. package/dist/src/nextjs/hooks/useTokenCookie.d.ts.map +0 -1
  183. package/dist/src/nextjs/hooks/useTokenCookie.js +0 -37
  184. package/dist/src/nextjs/hooks/useTokenCookie.js.map +0 -1
  185. package/dist/src/nextjs/hooks/useUserCookie.d.ts +0 -3
  186. package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  187. package/dist/src/nextjs/hooks/useUserCookie.js +0 -36
  188. package/dist/src/nextjs/hooks/useUserCookie.js.map +0 -1
  189. package/dist/src/nextjs/index.d.ts +0 -7
  190. package/dist/src/nextjs/index.d.ts.map +0 -1
  191. package/dist/src/nextjs/index.js +0 -6
  192. package/dist/src/nextjs/index.js.map +0 -1
  193. package/dist/src/nextjs/middleware/index.d.ts +0 -2
  194. package/dist/src/nextjs/middleware/index.d.ts.map +0 -1
  195. package/dist/src/nextjs/middleware/index.js +0 -2
  196. package/dist/src/nextjs/middleware/index.js.map +0 -1
  197. package/dist/src/nextjs/middleware.d.ts +0 -59
  198. package/dist/src/nextjs/middleware.d.ts.map +0 -1
  199. package/dist/src/nextjs/middleware.js +0 -107
  200. package/dist/src/nextjs/middleware.js.map +0 -1
  201. package/dist/src/nextjs/providers/NextAuthProvider.d.ts +0 -9
  202. package/dist/src/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  203. package/dist/src/nextjs/providers/NextAuthProvider.js +0 -50
  204. package/dist/src/nextjs/providers/NextAuthProvider.js.map +0 -1
  205. package/dist/src/nextjs/routeHandler.d.ts +0 -18
  206. package/dist/src/nextjs/routeHandler.d.ts.map +0 -1
  207. package/dist/src/nextjs/routeHandler.js +0 -216
  208. package/dist/src/nextjs/routeHandler.js.map +0 -1
  209. package/dist/src/nextjs/utils.d.ts +0 -3
  210. package/dist/src/nextjs/utils.d.ts.map +0 -1
  211. package/dist/src/nextjs/utils.js +0 -5
  212. package/dist/src/nextjs/utils.js.map +0 -1
  213. package/dist/src/reactjs/components/SignInButton.d.ts +0 -8
  214. package/dist/src/reactjs/components/SignInButton.d.ts.map +0 -1
  215. package/dist/src/reactjs/components/SignInButton.js +0 -14
  216. package/dist/src/reactjs/components/SignInButton.js.map +0 -1
  217. package/dist/src/reactjs/components/SignOutButton.d.ts +0 -6
  218. package/dist/src/reactjs/components/SignOutButton.d.ts.map +0 -1
  219. package/dist/src/reactjs/components/SignOutButton.js +0 -14
  220. package/dist/src/reactjs/components/SignOutButton.js.map +0 -1
  221. package/dist/src/reactjs/components/UserButton.d.ts +0 -8
  222. package/dist/src/reactjs/components/UserButton.d.ts.map +0 -1
  223. package/dist/src/reactjs/components/UserButton.js +0 -110
  224. package/dist/src/reactjs/components/UserButton.js.map +0 -1
  225. package/dist/src/reactjs/components/index.d.ts +0 -6
  226. package/dist/src/reactjs/components/index.d.ts.map +0 -1
  227. package/dist/src/reactjs/components/index.js +0 -6
  228. package/dist/src/reactjs/components/index.js.map +0 -1
  229. package/dist/src/reactjs/hooks/index.d.ts +0 -8
  230. package/dist/src/reactjs/hooks/index.d.ts.map +0 -1
  231. package/dist/src/reactjs/hooks/index.js +0 -8
  232. package/dist/src/reactjs/hooks/index.js.map +0 -1
  233. package/dist/src/reactjs/hooks/useAuth.d.ts +0 -3
  234. package/dist/src/reactjs/hooks/useAuth.d.ts.map +0 -1
  235. package/dist/src/reactjs/hooks/useAuth.js +0 -12
  236. package/dist/src/reactjs/hooks/useAuth.js.map +0 -1
  237. package/dist/src/reactjs/hooks/useUser.d.ts +0 -4
  238. package/dist/src/reactjs/hooks/useUser.d.ts.map +0 -1
  239. package/dist/src/reactjs/hooks/useUser.js +0 -12
  240. package/dist/src/reactjs/hooks/useUser.js.map +0 -1
  241. package/dist/src/reactjs/index.d.ts +0 -6
  242. package/dist/src/reactjs/index.d.ts.map +0 -1
  243. package/dist/src/reactjs/index.js +0 -8
  244. package/dist/src/reactjs/index.js.map +0 -1
  245. package/dist/src/reactjs/providers/index.d.ts +0 -8
  246. package/dist/src/reactjs/providers/index.d.ts.map +0 -1
  247. package/dist/src/reactjs/providers/index.js +0 -7
  248. package/dist/src/reactjs/providers/index.js.map +0 -1
  249. package/dist/src/server/ServerAuthenticationResolver.d.ts +0 -18
  250. package/dist/src/server/ServerAuthenticationResolver.d.ts.map +0 -1
  251. package/dist/src/server/ServerAuthenticationResolver.js +0 -62
  252. package/dist/src/server/ServerAuthenticationResolver.js.map +0 -1
  253. package/dist/src/server/config.d.ts +0 -16
  254. package/dist/src/server/config.d.ts.map +0 -1
  255. package/dist/src/server/config.js +0 -2
  256. package/dist/src/server/config.js.map +0 -1
  257. package/dist/src/server/index.d.ts +0 -6
  258. package/dist/src/server/index.d.ts.map +0 -1
  259. package/dist/src/server/index.js +0 -5
  260. package/dist/src/server/index.js.map +0 -1
  261. package/dist/src/server/login.d.ts +0 -17
  262. package/dist/src/server/login.d.ts.map +0 -1
  263. package/dist/src/server/login.js +0 -37
  264. package/dist/src/server/login.js.map +0 -1
  265. package/dist/src/server/refresh.d.ts +0 -7
  266. package/dist/src/server/refresh.d.ts.map +0 -1
  267. package/dist/src/server/refresh.js +0 -13
  268. package/dist/src/server/refresh.js.map +0 -1
  269. package/dist/src/services/AuthenticationService.d.ts +0 -87
  270. package/dist/src/services/AuthenticationService.d.ts.map +0 -1
  271. package/dist/src/services/AuthenticationService.js +0 -222
  272. package/dist/src/services/AuthenticationService.js.map +0 -1
  273. package/dist/src/services/PKCE.d.ts +0 -20
  274. package/dist/src/services/PKCE.d.ts.map +0 -1
  275. package/dist/src/services/PKCE.js +0 -44
  276. package/dist/src/services/PKCE.js.map +0 -1
  277. package/dist/src/services/types.d.ts +0 -23
  278. package/dist/src/services/types.d.ts.map +0 -1
  279. package/dist/src/services/types.js +0 -7
  280. package/dist/src/services/types.js.map +0 -1
  281. package/dist/src/shared/components/CivicAuthIframe.d.ts +0 -8
  282. package/dist/src/shared/components/CivicAuthIframe.d.ts.map +0 -1
  283. package/dist/src/shared/components/CivicAuthIframe.js +0 -9
  284. package/dist/src/shared/components/CivicAuthIframe.js.map +0 -1
  285. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts +0 -9
  286. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  287. package/dist/src/shared/components/CivicAuthIframeContainer.js +0 -130
  288. package/dist/src/shared/components/CivicAuthIframeContainer.js.map +0 -1
  289. package/dist/src/shared/components/CloseIcon.d.ts +0 -4
  290. package/dist/src/shared/components/CloseIcon.d.ts.map +0 -1
  291. package/dist/src/shared/components/CloseIcon.js +0 -6
  292. package/dist/src/shared/components/CloseIcon.js.map +0 -1
  293. package/dist/src/shared/components/LoadingIcon.d.ts +0 -4
  294. package/dist/src/shared/components/LoadingIcon.d.ts.map +0 -1
  295. package/dist/src/shared/components/LoadingIcon.js +0 -24
  296. package/dist/src/shared/components/LoadingIcon.js.map +0 -1
  297. package/dist/src/shared/hooks/index.d.ts +0 -5
  298. package/dist/src/shared/hooks/index.d.ts.map +0 -1
  299. package/dist/src/shared/hooks/index.js +0 -5
  300. package/dist/src/shared/hooks/index.js.map +0 -1
  301. package/dist/src/shared/hooks/useAuth.d.ts +0 -3
  302. package/dist/src/shared/hooks/useAuth.d.ts.map +0 -1
  303. package/dist/src/shared/hooks/useAuth.js +0 -12
  304. package/dist/src/shared/hooks/useAuth.js.map +0 -1
  305. package/dist/src/shared/hooks/useConfig.d.ts +0 -3
  306. package/dist/src/shared/hooks/useConfig.d.ts.map +0 -1
  307. package/dist/src/shared/hooks/useConfig.js +0 -13
  308. package/dist/src/shared/hooks/useConfig.js.map +0 -1
  309. package/dist/src/shared/hooks/useIframe.d.ts +0 -3
  310. package/dist/src/shared/hooks/useIframe.d.ts.map +0 -1
  311. package/dist/src/shared/hooks/useIframe.js +0 -13
  312. package/dist/src/shared/hooks/useIframe.js.map +0 -1
  313. package/dist/src/shared/hooks/useSession.d.ts +0 -3
  314. package/dist/src/shared/hooks/useSession.d.ts.map +0 -1
  315. package/dist/src/shared/hooks/useSession.js +0 -13
  316. package/dist/src/shared/hooks/useSession.js.map +0 -1
  317. package/dist/src/shared/hooks/useToken.d.ts +0 -3
  318. package/dist/src/shared/hooks/useToken.d.ts.map +0 -1
  319. package/dist/src/shared/hooks/useToken.js +0 -12
  320. package/dist/src/shared/hooks/useToken.js.map +0 -1
  321. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  322. package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  323. package/dist/src/shared/lib/UserSession.d.ts +0 -12
  324. package/dist/src/shared/lib/UserSession.d.ts.map +0 -1
  325. package/dist/src/shared/lib/UserSession.js +0 -20
  326. package/dist/src/shared/lib/UserSession.js.map +0 -1
  327. package/dist/src/shared/lib/session.d.ts +0 -3
  328. package/dist/src/shared/lib/session.d.ts.map +0 -1
  329. package/dist/src/shared/lib/session.js +0 -10
  330. package/dist/src/shared/lib/session.js.map +0 -1
  331. package/dist/src/shared/lib/storage.d.ts +0 -25
  332. package/dist/src/shared/lib/storage.d.ts.map +0 -1
  333. package/dist/src/shared/lib/storage.js +0 -17
  334. package/dist/src/shared/lib/storage.js.map +0 -1
  335. package/dist/src/shared/lib/types.d.ts +0 -22
  336. package/dist/src/shared/lib/types.d.ts.map +0 -1
  337. package/dist/src/shared/lib/types.js +0 -16
  338. package/dist/src/shared/lib/types.js.map +0 -1
  339. package/dist/src/shared/lib/util.d.ts.map +0 -1
  340. package/dist/src/shared/lib/util.js +0 -126
  341. package/dist/src/shared/lib/util.js.map +0 -1
  342. package/dist/src/shared/providers/AuthContext.d.ts +0 -10
  343. package/dist/src/shared/providers/AuthContext.d.ts.map +0 -1
  344. package/dist/src/shared/providers/AuthContext.js +0 -3
  345. package/dist/src/shared/providers/AuthContext.js.map +0 -1
  346. package/dist/src/shared/providers/AuthProvider.d.ts.map +0 -1
  347. package/dist/src/shared/providers/AuthProvider.js.map +0 -1
  348. package/dist/src/shared/providers/CivicAuthProvider.d.ts.map +0 -1
  349. package/dist/src/shared/providers/CivicAuthProvider.js +0 -15
  350. package/dist/src/shared/providers/CivicAuthProvider.js.map +0 -1
  351. package/dist/src/shared/providers/ConfigProvider.d.ts +0 -21
  352. package/dist/src/shared/providers/ConfigProvider.d.ts.map +0 -1
  353. package/dist/src/shared/providers/ConfigProvider.js +0 -19
  354. package/dist/src/shared/providers/ConfigProvider.js.map +0 -1
  355. package/dist/src/shared/providers/IframeProvider.d.ts +0 -16
  356. package/dist/src/shared/providers/IframeProvider.d.ts.map +0 -1
  357. package/dist/src/shared/providers/IframeProvider.js +0 -11
  358. package/dist/src/shared/providers/IframeProvider.js.map +0 -1
  359. package/dist/src/shared/providers/SessionProvider.d.ts +0 -13
  360. package/dist/src/shared/providers/SessionProvider.d.ts.map +0 -1
  361. package/dist/src/shared/providers/SessionProvider.js +0 -13
  362. package/dist/src/shared/providers/SessionProvider.js.map +0 -1
  363. package/dist/src/shared/providers/TokenProvider.d.ts +0 -18
  364. package/dist/src/shared/providers/TokenProvider.d.ts.map +0 -1
  365. package/dist/src/shared/providers/TokenProvider.js +0 -53
  366. package/dist/src/shared/providers/TokenProvider.js.map +0 -1
  367. package/dist/src/shared/providers/UserProvider.d.ts.map +0 -1
  368. package/dist/src/shared/providers/UserProvider.js +0 -38
  369. package/dist/src/shared/providers/UserProvider.js.map +0 -1
  370. package/dist/src/types.d.ts +0 -146
  371. package/dist/src/types.d.ts.map +0 -1
  372. package/dist/src/types.js +0 -2
  373. package/dist/src/types.js.map +0 -1
  374. package/dist/src/utils.d.ts +0 -15
  375. package/dist/src/utils.d.ts.map +0 -1
  376. package/dist/src/utils.js +0 -43
  377. package/dist/src/utils.js.map +0 -1
  378. package/dist/storage-ANmRwpZ3.d.ts +0 -25
  379. package/dist/storage-B2eAQNdv.d.ts +0 -25
  380. package/dist/storage-BJPUpxhm.d.mts +0 -25
  381. package/dist/storage-BJyqsZwC.d.mts +0 -25
  382. package/dist/test/integration/sdk.test.d.ts +0 -2
  383. package/dist/test/integration/sdk.test.d.ts.map +0 -1
  384. package/dist/test/integration/sdk.test.js +0 -183
  385. package/dist/test/integration/sdk.test.js.map +0 -1
  386. package/dist/test/support/fixtures.d.ts +0 -26
  387. package/dist/test/support/fixtures.d.ts.map +0 -1
  388. package/dist/test/support/fixtures.js +0 -55
  389. package/dist/test/support/fixtures.js.map +0 -1
  390. package/dist/test/support/tokens.json +0 -26
  391. package/dist/test/unit/lib/oauth.test.d.ts +0 -2
  392. package/dist/test/unit/lib/oauth.test.d.ts.map +0 -1
  393. package/dist/test/unit/lib/oauth.test.js +0 -55
  394. package/dist/test/unit/lib/oauth.test.js.map +0 -1
  395. package/dist/test/unit/logger.test.d.ts +0 -2
  396. package/dist/test/unit/logger.test.d.ts.map +0 -1
  397. package/dist/test/unit/logger.test.js +0 -141
  398. package/dist/test/unit/logger.test.js.map +0 -1
  399. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +0 -2
  400. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts.map +0 -1
  401. package/dist/test/unit/nextjs/NextAuthProvider.test.js +0 -29
  402. package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +0 -1
  403. package/dist/test/unit/nextjs/config.test.d.ts +0 -2
  404. package/dist/test/unit/nextjs/config.test.d.ts.map +0 -1
  405. package/dist/test/unit/nextjs/config.test.js +0 -189
  406. package/dist/test/unit/nextjs/config.test.js.map +0 -1
  407. package/dist/test/unit/nextjs/getUser.test.d.ts +0 -2
  408. package/dist/test/unit/nextjs/getUser.test.d.ts.map +0 -1
  409. package/dist/test/unit/nextjs/getUser.test.js +0 -36
  410. package/dist/test/unit/nextjs/getUser.test.js.map +0 -1
  411. package/dist/test/unit/nextjs/middleware.test.d.ts +0 -2
  412. package/dist/test/unit/nextjs/middleware.test.d.ts.map +0 -1
  413. package/dist/test/unit/nextjs/middleware.test.js +0 -113
  414. package/dist/test/unit/nextjs/middleware.test.js.map +0 -1
  415. package/dist/test/unit/nextjs/utils.test.d.ts +0 -2
  416. package/dist/test/unit/nextjs/utils.test.d.ts.map +0 -1
  417. package/dist/test/unit/nextjs/utils.test.js +0 -13
  418. package/dist/test/unit/nextjs/utils.test.js.map +0 -1
  419. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +0 -2
  420. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts.map +0 -1
  421. package/dist/test/unit/publicApi/apiSnapshot.test.js +0 -10
  422. package/dist/test/unit/publicApi/apiSnapshot.test.js.map +0 -1
  423. package/dist/test/unit/react/components/SignInButton.test.d.ts +0 -2
  424. package/dist/test/unit/react/components/SignInButton.test.d.ts.map +0 -1
  425. package/dist/test/unit/react/components/SignInButton.test.js +0 -31
  426. package/dist/test/unit/react/components/SignInButton.test.js.map +0 -1
  427. package/dist/test/unit/react/components/SignOutButton.test.d.ts +0 -2
  428. package/dist/test/unit/react/components/SignOutButton.test.d.ts.map +0 -1
  429. package/dist/test/unit/react/components/SignOutButton.test.js +0 -30
  430. package/dist/test/unit/react/components/SignOutButton.test.js.map +0 -1
  431. package/dist/test/unit/server/login.test.d.ts +0 -2
  432. package/dist/test/unit/server/login.test.d.ts.map +0 -1
  433. package/dist/test/unit/server/login.test.js +0 -127
  434. package/dist/test/unit/server/login.test.js.map +0 -1
  435. package/dist/test/unit/server/session.test.d.ts +0 -2
  436. package/dist/test/unit/server/session.test.d.ts.map +0 -1
  437. package/dist/test/unit/server/session.test.js +0 -41
  438. package/dist/test/unit/server/session.test.js.map +0 -1
  439. package/dist/test/unit/services/AuthenticationService.test.d.ts +0 -2
  440. package/dist/test/unit/services/AuthenticationService.test.d.ts.map +0 -1
  441. package/dist/test/unit/services/AuthenticationService.test.js +0 -104
  442. package/dist/test/unit/services/AuthenticationService.test.js.map +0 -1
  443. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +0 -2
  444. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts.map +0 -1
  445. package/dist/test/unit/services/ServerAuthenticationResolver.test.js +0 -74
  446. package/dist/test/unit/services/ServerAuthenticationResolver.test.js.map +0 -1
  447. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +0 -2
  448. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts.map +0 -1
  449. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js +0 -61
  450. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js.map +0 -1
  451. package/dist/test/unit/shared/UserSession.test.d.ts +0 -2
  452. package/dist/test/unit/shared/UserSession.test.d.ts.map +0 -1
  453. package/dist/test/unit/shared/UserSession.test.js +0 -37
  454. package/dist/test/unit/shared/UserSession.test.js.map +0 -1
  455. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +0 -2
  456. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts.map +0 -1
  457. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +0 -120
  458. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +0 -1
  459. package/dist/test/unit/shared/storage.test.d.ts +0 -2
  460. package/dist/test/unit/shared/storage.test.d.ts.map +0 -1
  461. package/dist/test/unit/shared/storage.test.js +0 -53
  462. package/dist/test/unit/shared/storage.test.js.map +0 -1
  463. package/dist/test/unit/utils.test.d.ts +0 -2
  464. package/dist/test/unit/utils.test.d.ts.map +0 -1
  465. package/dist/test/unit/utils.test.js +0 -40
  466. package/dist/test/unit/utils.test.js.map +0 -1
  467. package/dist/types-Bqm9OCZN.d.mts +0 -22
  468. package/dist/types-Bqm9OCZN.d.ts +0 -22
  469. package/dist/types-BxAubCqO.d.mts +0 -58
  470. package/dist/types-BxAubCqO.d.ts +0 -58
  471. package/dist/types-DOfl9w7j.d.mts +0 -23
  472. package/dist/types-DOfl9w7j.d.ts +0 -23
  473. package/dist/types-HdCjGldB.d.mts +0 -58
  474. package/dist/types-HdCjGldB.d.ts +0 -58
  475. package/dist/vitest.config.d.ts +0 -3
  476. package/dist/vitest.config.d.ts.map +0 -1
  477. package/dist/vitest.config.js +0 -40
  478. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUser = getUser;
4
+ const util_js_js_1 = require("../shared/lib/util.js.js");
5
+ const jwt_1 = require("oslo/jwt");
6
+ async function getUser(storage) {
7
+ const tokens = await (0, util_js_js_1.retrieveTokens)(storage);
8
+ if (!tokens)
9
+ return null;
10
+ // Assumes all information is in the ID token
11
+ return (0, jwt_1.parseJWT)(tokens.id_token)?.payload ?? null;
12
+ }
13
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/shared/session.ts"],"names":[],"mappings":";;AAIA,0BAMC;AAVD,wDAAyD;AACzD,kCAAoC;AAG7B,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,6CAA6C;IAC7C,OAAQ,IAAA,cAAQ,EAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAgB,IAAI,IAAI,CAAC;AAC9D,CAAC","sourcesContent":["import { retrieveTokens } from \"@/shared/lib/util.js.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"]}
@@ -1,11 +1,17 @@
1
- import type { AuthStorage, Endpoints, OIDCTokenResponseBody, ParsedTokens } from "@/types.js";
1
+ import type { AuthStorage, Endpoints, OIDCTokenResponseBody, ParsedTokens } from "../types.js";
2
2
  import { OAuth2Client } from "oslo/oauth2";
3
- import type { PKCEConsumer, PKCEProducer } from "@/services/types.js";
3
+ import type { PKCEConsumer, PKCEProducer } from "../services/types.js";
4
4
  /**
5
5
  * Given a PKCE code verifier, derive the code challenge using SHA
6
6
  */
7
7
  export declare function deriveCodeChallenge(codeVerifier: string, method?: "Plain" | "S256"): Promise<string>;
8
- export declare function getEndpointsWithOverrides(oauthServer: string, endpointOverrides?: Partial<Endpoints>): Promise<Endpoints>;
8
+ export declare function getEndpointsWithOverrides(oauthServer: string, endpointOverrides?: Partial<Endpoints>): Promise<{
9
+ jwks: string;
10
+ auth: string;
11
+ token: string;
12
+ userinfo: string;
13
+ challenge?: string;
14
+ }>;
9
15
  export declare function generateOauthLoginUrl(config: {
10
16
  clientId: string;
11
17
  scopes: string[];
@@ -28,6 +34,6 @@ export declare function exchangeTokens(code: string, state: string, pkceProducer
28
34
  export declare function storeTokens(storage: AuthStorage, tokens: OIDCTokenResponseBody): void;
29
35
  export declare function clearTokens(storage: AuthStorage): void;
30
36
  export declare function clearUser(storage: AuthStorage): void;
31
- export declare function retrieveTokens(storage: AuthStorage): OIDCTokenResponseBody | null;
37
+ export declare function retrieveTokens(storage: AuthStorage): Promise<OIDCTokenResponseBody | null>;
32
38
  export declare function validateOauth2Tokens(tokens: OIDCTokenResponseBody, endpoints: Endpoints, oauth2Client: OAuth2Client, issuer: string): Promise<ParsedTokens>;
33
39
  //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/shared/util.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,GAAG,MAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,OAAO,CAAC,SAAS,CAAM;;;;;;GAO3C;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CA2Bf;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CAGf;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,GACnB,YAAY,CAId;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,kCAqBrB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,QAO9B;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,QAO/C;AACD,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,QAG7C;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAYvC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ // Utility functions shared by auth server and client integrations
3
+ // Typically these functions should be used inside AuthenticationInitiator and AuthenticationResolver implementations
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.deriveCodeChallenge = deriveCodeChallenge;
29
+ exports.getEndpointsWithOverrides = getEndpointsWithOverrides;
30
+ exports.generateOauthLoginUrl = generateOauthLoginUrl;
31
+ exports.generateOauthLogoutUrl = generateOauthLogoutUrl;
32
+ exports.buildOauth2Client = buildOauth2Client;
33
+ exports.exchangeTokens = exchangeTokens;
34
+ exports.storeTokens = storeTokens;
35
+ exports.clearTokens = clearTokens;
36
+ exports.clearUser = clearUser;
37
+ exports.retrieveTokens = retrieveTokens;
38
+ exports.validateOauth2Tokens = validateOauth2Tokens;
39
+ const types_js_1 = require("./types.js");
40
+ const oauth2_1 = require("oslo/oauth2");
41
+ const oauth_js_1 = require("../lib/oauth.js");
42
+ const jose = __importStar(require("jose"));
43
+ const utils_js_1 = require("../utils.js");
44
+ const UserSession_js_1 = require("./UserSession.js");
45
+ /**
46
+ * Given a PKCE code verifier, derive the code challenge using SHA
47
+ */
48
+ async function deriveCodeChallenge(codeVerifier, method = "S256") {
49
+ if (method === "Plain") {
50
+ console.warn("Using insecure plain code challenge method");
51
+ return codeVerifier;
52
+ }
53
+ const encoder = new TextEncoder();
54
+ const data = encoder.encode(codeVerifier);
55
+ const digest = await crypto.subtle.digest("SHA-256", data);
56
+ return btoa(String.fromCharCode(...new Uint8Array(digest)))
57
+ .replace(/\+/g, "-")
58
+ .replace(/\//g, "_")
59
+ .replace(/=+$/, "");
60
+ }
61
+ async function getEndpointsWithOverrides(oauthServer, endpointOverrides = {}) {
62
+ const endpoints = await (0, oauth_js_1.getOauthEndpoints)(oauthServer);
63
+ return {
64
+ ...endpoints,
65
+ ...endpointOverrides,
66
+ };
67
+ }
68
+ async function generateOauthLoginUrl(config) {
69
+ const endpoints = await getEndpointsWithOverrides(config.oauthServer, config.endpointOverrides);
70
+ const oauth2Client = buildOauth2Client(config.clientId, config.redirectUrl, endpoints);
71
+ const challenge = await config.pkceConsumer.getCodeChallenge();
72
+ const oAuthUrl = await oauth2Client.createAuthorizationURL({
73
+ state: config.state,
74
+ scopes: config.scopes,
75
+ });
76
+ // The OAuth2 client supports PKCE, but does not allow passing in a code challenge from some other source
77
+ // It only allows passing in a code verifier which it then hashes itself.
78
+ oAuthUrl.searchParams.append("code_challenge", challenge);
79
+ oAuthUrl.searchParams.append("code_challenge_method", "S256");
80
+ if (config.nonce) {
81
+ // nonce isn't supported by oslo, so we add it manually
82
+ oAuthUrl.searchParams.append("nonce", config.nonce);
83
+ }
84
+ // Required by the auth server for offline_access scope
85
+ oAuthUrl.searchParams.append("prompt", "consent");
86
+ return oAuthUrl;
87
+ }
88
+ async function generateOauthLogoutUrl(config) {
89
+ // TODO
90
+ return new URL("http://localhost");
91
+ }
92
+ function buildOauth2Client(clientId, redirectUri, endpoints) {
93
+ return new oauth2_1.OAuth2Client(clientId, endpoints.auth, endpoints.token, {
94
+ redirectURI: redirectUri,
95
+ });
96
+ }
97
+ async function exchangeTokens(code, state, pkceProducer, oauth2Client, oauthServer, endpoints) {
98
+ const codeVerifier = await pkceProducer.getCodeVerifier();
99
+ if (!codeVerifier)
100
+ throw new Error("Code verifier not found in state");
101
+ const tokens = await oauth2Client.validateAuthorizationCode(code, {
102
+ codeVerifier,
103
+ });
104
+ // Validate relevant tokens
105
+ try {
106
+ await validateOauth2Tokens(tokens, endpoints, oauth2Client, oauthServer);
107
+ }
108
+ catch (error) {
109
+ console.error("tokenExchange error", { error, tokens });
110
+ throw new Error(`OIDC tokens validation failed: ${error.message}`);
111
+ }
112
+ return tokens;
113
+ }
114
+ function storeTokens(storage, tokens) {
115
+ // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )
116
+ storage.set(types_js_1.OAuthTokens.ID_TOKEN, tokens.id_token);
117
+ storage.set(types_js_1.OAuthTokens.ACCESS_TOKEN, tokens.access_token);
118
+ if (tokens.refresh_token)
119
+ storage.set(types_js_1.OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);
120
+ }
121
+ function clearTokens(storage) {
122
+ Object.values(types_js_1.OAuthTokens).forEach((cookie) => {
123
+ storage.set(cookie, "");
124
+ });
125
+ Object.values(types_js_1.CodeVerifier.COOKIE_NAME).forEach((cookie) => {
126
+ storage.set(cookie, "");
127
+ });
128
+ }
129
+ function clearUser(storage) {
130
+ const userSession = new UserSession_js_1.GenericUserSession(storage);
131
+ userSession.set(null);
132
+ }
133
+ async function retrieveTokens(storage) {
134
+ const idToken = await storage.get(types_js_1.OAuthTokens.ID_TOKEN);
135
+ const accessToken = await storage.get(types_js_1.OAuthTokens.ACCESS_TOKEN);
136
+ const refreshToken = await storage.get(types_js_1.OAuthTokens.REFRESH_TOKEN);
137
+ if (!idToken || !accessToken)
138
+ return null;
139
+ return {
140
+ id_token: idToken,
141
+ access_token: accessToken,
142
+ refresh_token: refreshToken ?? undefined,
143
+ };
144
+ }
145
+ async function validateOauth2Tokens(tokens, endpoints, oauth2Client, issuer) {
146
+ const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));
147
+ // validate the ID token
148
+ const idTokenResponse = await jose.jwtVerify(tokens.id_token, JWKS, {
149
+ issuer: (0, oauth_js_1.getIssuerVariations)(issuer),
150
+ audience: oauth2Client.clientId,
151
+ });
152
+ // validate the access token
153
+ const accessTokenResponse = await jose.jwtVerify(tokens.access_token, JWKS, {
154
+ issuer: (0, oauth_js_1.getIssuerVariations)(issuer),
155
+ });
156
+ return (0, utils_js_1.withoutUndefined)({
157
+ id_token: idTokenResponse.payload,
158
+ access_token: accessTokenResponse.payload,
159
+ refresh_token: tokens.refresh_token,
160
+ });
161
+ }
162
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/shared/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\n\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 \"./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) {\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\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 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 storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);\n storage.set(OAuthTokens.ACCESS_TOKEN, tokens.access_token);\n if (tokens.refresh_token)\n storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);\n}\n\nexport function clearTokens(storage: AuthStorage) {\n Object.values(OAuthTokens).forEach((cookie) => {\n storage.set(cookie, \"\");\n });\n Object.values(CodeVerifier.COOKIE_NAME).forEach((cookie) => {\n storage.set(cookie, \"\");\n });\n}\nexport function clearUser(storage: AuthStorage) {\n const userSession = new GenericUserSession(storage);\n 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"]}