@civic/auth 0.2.5 → 0.3.0-alpha.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 (593) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/dist/cjs/constants.d.ts +1 -2
  3. package/dist/cjs/constants.d.ts.map +1 -1
  4. package/dist/cjs/constants.js +1 -3
  5. package/dist/cjs/constants.js.map +1 -1
  6. package/dist/cjs/lib/cookies.d.ts +12 -1
  7. package/dist/cjs/lib/cookies.d.ts.map +1 -1
  8. package/dist/cjs/lib/cookies.js +30 -2
  9. package/dist/cjs/lib/cookies.js.map +1 -1
  10. package/dist/cjs/nextjs/config.d.ts.map +1 -1
  11. package/dist/cjs/nextjs/config.js +8 -1
  12. package/dist/cjs/nextjs/config.js.map +1 -1
  13. package/dist/cjs/nextjs/cookies.d.ts.map +1 -1
  14. package/dist/cjs/nextjs/cookies.js +2 -43
  15. package/dist/cjs/nextjs/cookies.js.map +1 -1
  16. package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +1 -1
  17. package/dist/cjs/nextjs/hooks/useRefresh.js +7 -5
  18. package/dist/cjs/nextjs/hooks/useRefresh.js.map +1 -1
  19. package/dist/cjs/nextjs/index.d.ts +3 -1
  20. package/dist/cjs/nextjs/index.d.ts.map +1 -1
  21. package/dist/cjs/nextjs/index.js +8 -3
  22. package/dist/cjs/nextjs/index.js.map +1 -1
  23. package/dist/cjs/nextjs/routeHandler.d.ts.map +1 -1
  24. package/dist/cjs/nextjs/routeHandler.js +10 -11
  25. package/dist/cjs/nextjs/routeHandler.js.map +1 -1
  26. package/dist/cjs/reactjs/hooks/useSignIn.d.ts +6 -0
  27. package/dist/cjs/reactjs/hooks/useSignIn.d.ts.map +1 -0
  28. package/dist/cjs/reactjs/hooks/useSignIn.js +38 -0
  29. package/dist/cjs/reactjs/hooks/useSignIn.js.map +1 -0
  30. package/dist/cjs/server/index.d.ts +1 -1
  31. package/dist/cjs/server/index.d.ts.map +1 -1
  32. package/dist/cjs/server/index.js +3 -1
  33. package/dist/cjs/server/index.js.map +1 -1
  34. package/dist/cjs/services/AuthenticationService.d.ts.map +1 -1
  35. package/dist/cjs/services/AuthenticationService.js +12 -20
  36. package/dist/cjs/services/AuthenticationService.js.map +1 -1
  37. package/dist/cjs/services/UserinfoService.d.ts +5 -0
  38. package/dist/cjs/services/UserinfoService.d.ts.map +1 -0
  39. package/dist/cjs/services/UserinfoService.js +15 -0
  40. package/dist/cjs/services/UserinfoService.js.map +1 -0
  41. package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts.map +1 -1
  42. package/dist/cjs/shared/lib/BrowserCookieStorage.js +8 -7
  43. package/dist/cjs/shared/lib/BrowserCookieStorage.js.map +1 -1
  44. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  45. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js +6 -6
  46. package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  47. package/dist/cjs/shared/lib/session.d.ts +8 -1
  48. package/dist/cjs/shared/lib/session.d.ts.map +1 -1
  49. package/dist/cjs/shared/lib/session.js +44 -12
  50. package/dist/cjs/shared/lib/session.js.map +1 -1
  51. package/dist/cjs/shared/lib/types.d.ts +3 -3
  52. package/dist/cjs/shared/lib/types.d.ts.map +1 -1
  53. package/dist/cjs/shared/lib/types.js +3 -3
  54. package/dist/cjs/shared/lib/types.js.map +1 -1
  55. package/dist/cjs/shared/lib/util.d.ts +1 -3
  56. package/dist/cjs/shared/lib/util.d.ts.map +1 -1
  57. package/dist/cjs/shared/lib/util.js +11 -28
  58. package/dist/cjs/shared/lib/util.js.map +1 -1
  59. package/dist/cjs/shared/version.d.ts +1 -1
  60. package/dist/cjs/shared/version.d.ts.map +1 -1
  61. package/dist/cjs/shared/version.js +1 -1
  62. package/dist/cjs/shared/version.js.map +1 -1
  63. package/dist/cjs/types.d.ts +3 -2
  64. package/dist/cjs/types.d.ts.map +1 -1
  65. package/dist/cjs/types.js +1 -7
  66. package/dist/cjs/types.js.map +1 -1
  67. package/dist/cjs/utils.d.ts +2 -2
  68. package/dist/cjs/utils.d.ts.map +1 -1
  69. package/dist/cjs/utils.js +1 -1
  70. package/dist/cjs/utils.js.map +1 -1
  71. package/dist/esm/constants.d.ts +1 -2
  72. package/dist/esm/constants.d.ts.map +1 -1
  73. package/dist/esm/constants.js +1 -2
  74. package/dist/esm/constants.js.map +1 -1
  75. package/dist/esm/lib/cookies.d.ts +12 -1
  76. package/dist/esm/lib/cookies.d.ts.map +1 -1
  77. package/dist/esm/lib/cookies.js +29 -2
  78. package/dist/esm/lib/cookies.js.map +1 -1
  79. package/dist/esm/nextjs/config.d.ts.map +1 -1
  80. package/dist/esm/nextjs/config.js +8 -1
  81. package/dist/esm/nextjs/config.js.map +1 -1
  82. package/dist/esm/nextjs/cookies.d.ts.map +1 -1
  83. package/dist/esm/nextjs/cookies.js +3 -11
  84. package/dist/esm/nextjs/cookies.js.map +1 -1
  85. package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +1 -1
  86. package/dist/esm/nextjs/hooks/useRefresh.js +8 -6
  87. package/dist/esm/nextjs/hooks/useRefresh.js.map +1 -1
  88. package/dist/esm/nextjs/index.d.ts +3 -1
  89. package/dist/esm/nextjs/index.d.ts.map +1 -1
  90. package/dist/esm/nextjs/index.js +7 -3
  91. package/dist/esm/nextjs/index.js.map +1 -1
  92. package/dist/esm/nextjs/routeHandler.d.ts.map +1 -1
  93. package/dist/esm/nextjs/routeHandler.js +11 -12
  94. package/dist/esm/nextjs/routeHandler.js.map +1 -1
  95. package/dist/esm/reactjs/hooks/useSignIn.d.ts +6 -0
  96. package/dist/esm/reactjs/hooks/useSignIn.d.ts.map +1 -0
  97. package/dist/esm/reactjs/hooks/useSignIn.js +34 -0
  98. package/dist/esm/reactjs/hooks/useSignIn.js.map +1 -0
  99. package/dist/esm/server/index.d.ts +1 -1
  100. package/dist/esm/server/index.d.ts.map +1 -1
  101. package/dist/esm/server/index.js +1 -1
  102. package/dist/esm/server/index.js.map +1 -1
  103. package/dist/esm/services/AuthenticationService.d.ts.map +1 -1
  104. package/dist/esm/services/AuthenticationService.js +13 -20
  105. package/dist/esm/services/AuthenticationService.js.map +1 -1
  106. package/dist/esm/shared/lib/BrowserCookieStorage.d.ts.map +1 -1
  107. package/dist/esm/shared/lib/BrowserCookieStorage.js +8 -7
  108. package/dist/esm/shared/lib/BrowserCookieStorage.js.map +1 -1
  109. package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
  110. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js +7 -7
  111. package/dist/esm/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
  112. package/dist/esm/shared/lib/session.d.ts +8 -1
  113. package/dist/esm/shared/lib/session.d.ts.map +1 -1
  114. package/dist/esm/shared/lib/session.js +41 -12
  115. package/dist/esm/shared/lib/session.js.map +1 -1
  116. package/dist/esm/shared/lib/types.d.ts +3 -3
  117. package/dist/esm/shared/lib/types.d.ts.map +1 -1
  118. package/dist/esm/shared/lib/types.js +2 -2
  119. package/dist/esm/shared/lib/types.js.map +1 -1
  120. package/dist/esm/shared/lib/util.d.ts +1 -3
  121. package/dist/esm/shared/lib/util.d.ts.map +1 -1
  122. package/dist/esm/shared/lib/util.js +11 -26
  123. package/dist/esm/shared/lib/util.js.map +1 -1
  124. package/dist/esm/shared/version.d.ts +1 -1
  125. package/dist/esm/shared/version.d.ts.map +1 -1
  126. package/dist/esm/shared/version.js +1 -1
  127. package/dist/esm/shared/version.js.map +1 -1
  128. package/dist/esm/types.d.ts +3 -2
  129. package/dist/esm/types.d.ts.map +1 -1
  130. package/dist/esm/types.js +1 -7
  131. package/dist/esm/types.js.map +1 -1
  132. package/dist/esm/utils.d.ts +2 -2
  133. package/dist/esm/utils.d.ts.map +1 -1
  134. package/dist/esm/utils.js +2 -1
  135. package/dist/esm/utils.js.map +1 -1
  136. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  137. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  138. package/package.json +19 -29
  139. package/dist/generateVersion.d.ts +0 -2
  140. package/dist/generateVersion.d.ts.map +0 -1
  141. package/dist/generateVersion.js +0 -12
  142. package/dist/generateVersion.js.map +0 -1
  143. package/dist/package.json +0 -118
  144. package/dist/src/browser/storage.d.ts +0 -9
  145. package/dist/src/browser/storage.d.ts.map +0 -1
  146. package/dist/src/browser/storage.js +0 -17
  147. package/dist/src/browser/storage.js.map +0 -1
  148. package/dist/src/config.d.ts +0 -3
  149. package/dist/src/config.d.ts.map +0 -1
  150. package/dist/src/config.js +0 -5
  151. package/dist/src/config.js.map +0 -1
  152. package/dist/src/constants.d.ts +0 -8
  153. package/dist/src/constants.d.ts.map +0 -1
  154. package/dist/src/constants.js +0 -16
  155. package/dist/src/constants.js.map +0 -1
  156. package/dist/src/index.d.ts +0 -6
  157. package/dist/src/index.d.ts.map +0 -1
  158. package/dist/src/index.js +0 -4
  159. package/dist/src/index.js.map +0 -1
  160. package/dist/src/lib/cookies.d.ts +0 -7
  161. package/dist/src/lib/cookies.d.ts.map +0 -1
  162. package/dist/src/lib/cookies.js +0 -25
  163. package/dist/src/lib/cookies.js.map +0 -1
  164. package/dist/src/lib/jwt.d.ts +0 -3
  165. package/dist/src/lib/jwt.d.ts.map +0 -1
  166. package/dist/src/lib/jwt.js +0 -9
  167. package/dist/src/lib/jwt.js.map +0 -1
  168. package/dist/src/lib/logger.d.ts +0 -26
  169. package/dist/src/lib/logger.d.ts.map +0 -1
  170. package/dist/src/lib/logger.js +0 -55
  171. package/dist/src/lib/logger.js.map +0 -1
  172. package/dist/src/lib/oauth.d.ts +0 -19
  173. package/dist/src/lib/oauth.d.ts.map +0 -1
  174. package/dist/src/lib/oauth.js +0 -61
  175. package/dist/src/lib/oauth.js.map +0 -1
  176. package/dist/src/lib/obj.d.ts +0 -3
  177. package/dist/src/lib/obj.d.ts.map +0 -1
  178. package/dist/src/lib/obj.js +0 -18
  179. package/dist/src/lib/obj.js.map +0 -1
  180. package/dist/src/lib/postMessage.d.ts +0 -4
  181. package/dist/src/lib/postMessage.d.ts.map +0 -1
  182. package/dist/src/lib/postMessage.js +0 -15
  183. package/dist/src/lib/postMessage.js.map +0 -1
  184. package/dist/src/lib/windowUtil.d.ts +0 -4
  185. package/dist/src/lib/windowUtil.d.ts.map +0 -1
  186. package/dist/src/lib/windowUtil.js +0 -31
  187. package/dist/src/lib/windowUtil.js.map +0 -1
  188. package/dist/src/nextjs/GetUser.d.ts +0 -6
  189. package/dist/src/nextjs/GetUser.d.ts.map +0 -1
  190. package/dist/src/nextjs/GetUser.js +0 -7
  191. package/dist/src/nextjs/GetUser.js.map +0 -1
  192. package/dist/src/nextjs/config.d.ts +0 -181
  193. package/dist/src/nextjs/config.d.ts.map +0 -1
  194. package/dist/src/nextjs/config.js +0 -177
  195. package/dist/src/nextjs/config.js.map +0 -1
  196. package/dist/src/nextjs/cookies.d.ts +0 -30
  197. package/dist/src/nextjs/cookies.d.ts.map +0 -1
  198. package/dist/src/nextjs/cookies.js +0 -112
  199. package/dist/src/nextjs/cookies.js.map +0 -1
  200. package/dist/src/nextjs/hooks/index.d.ts +0 -2
  201. package/dist/src/nextjs/hooks/index.d.ts.map +0 -1
  202. package/dist/src/nextjs/hooks/index.js +0 -2
  203. package/dist/src/nextjs/hooks/index.js.map +0 -1
  204. package/dist/src/nextjs/hooks/usePrevious.d.ts +0 -2
  205. package/dist/src/nextjs/hooks/usePrevious.d.ts.map +0 -1
  206. package/dist/src/nextjs/hooks/usePrevious.js +0 -9
  207. package/dist/src/nextjs/hooks/usePrevious.js.map +0 -1
  208. package/dist/src/nextjs/hooks/useUserCookie.d.ts +0 -8
  209. package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +0 -1
  210. package/dist/src/nextjs/hooks/useUserCookie.js +0 -88
  211. package/dist/src/nextjs/hooks/useUserCookie.js.map +0 -1
  212. package/dist/src/nextjs/index.d.ts +0 -7
  213. package/dist/src/nextjs/index.d.ts.map +0 -1
  214. package/dist/src/nextjs/index.js +0 -8
  215. package/dist/src/nextjs/index.js.map +0 -1
  216. package/dist/src/nextjs/middleware/index.d.ts +0 -2
  217. package/dist/src/nextjs/middleware/index.d.ts.map +0 -1
  218. package/dist/src/nextjs/middleware/index.js +0 -4
  219. package/dist/src/nextjs/middleware/index.js.map +0 -1
  220. package/dist/src/nextjs/middleware.d.ts +0 -59
  221. package/dist/src/nextjs/middleware.d.ts.map +0 -1
  222. package/dist/src/nextjs/middleware.js +0 -107
  223. package/dist/src/nextjs/middleware.js.map +0 -1
  224. package/dist/src/nextjs/providers/NextAuthProvider.d.ts +0 -13
  225. package/dist/src/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
  226. package/dist/src/nextjs/providers/NextAuthProvider.js +0 -94
  227. package/dist/src/nextjs/providers/NextAuthProvider.js.map +0 -1
  228. package/dist/src/nextjs/routeHandler.d.ts +0 -19
  229. package/dist/src/nextjs/routeHandler.d.ts.map +0 -1
  230. package/dist/src/nextjs/routeHandler.js +0 -309
  231. package/dist/src/nextjs/routeHandler.js.map +0 -1
  232. package/dist/src/nextjs/utils.d.ts +0 -3
  233. package/dist/src/nextjs/utils.d.ts.map +0 -1
  234. package/dist/src/nextjs/utils.js +0 -5
  235. package/dist/src/nextjs/utils.js.map +0 -1
  236. package/dist/src/reactjs/components/SignInButton.d.ts +0 -8
  237. package/dist/src/reactjs/components/SignInButton.d.ts.map +0 -1
  238. package/dist/src/reactjs/components/SignInButton.js +0 -14
  239. package/dist/src/reactjs/components/SignInButton.js.map +0 -1
  240. package/dist/src/reactjs/components/SignOutButton.d.ts +0 -6
  241. package/dist/src/reactjs/components/SignOutButton.d.ts.map +0 -1
  242. package/dist/src/reactjs/components/SignOutButton.js +0 -14
  243. package/dist/src/reactjs/components/SignOutButton.js.map +0 -1
  244. package/dist/src/reactjs/components/UserButton.d.ts +0 -6
  245. package/dist/src/reactjs/components/UserButton.d.ts.map +0 -1
  246. package/dist/src/reactjs/components/UserButton.js +0 -118
  247. package/dist/src/reactjs/components/UserButton.js.map +0 -1
  248. package/dist/src/reactjs/components/index.d.ts +0 -6
  249. package/dist/src/reactjs/components/index.d.ts.map +0 -1
  250. package/dist/src/reactjs/components/index.js +0 -6
  251. package/dist/src/reactjs/components/index.js.map +0 -1
  252. package/dist/src/reactjs/hooks/index.d.ts +0 -6
  253. package/dist/src/reactjs/hooks/index.d.ts.map +0 -1
  254. package/dist/src/reactjs/hooks/index.js +0 -6
  255. package/dist/src/reactjs/hooks/index.js.map +0 -1
  256. package/dist/src/reactjs/hooks/useAuth.d.ts +0 -3
  257. package/dist/src/reactjs/hooks/useAuth.d.ts.map +0 -1
  258. package/dist/src/reactjs/hooks/useAuth.js +0 -12
  259. package/dist/src/reactjs/hooks/useAuth.js.map +0 -1
  260. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts +0 -3
  261. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
  262. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js +0 -13
  263. package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js.map +0 -1
  264. package/dist/src/reactjs/hooks/useUser.d.ts +0 -4
  265. package/dist/src/reactjs/hooks/useUser.d.ts.map +0 -1
  266. package/dist/src/reactjs/hooks/useUser.js +0 -12
  267. package/dist/src/reactjs/hooks/useUser.js.map +0 -1
  268. package/dist/src/reactjs/index.d.ts +0 -6
  269. package/dist/src/reactjs/index.d.ts.map +0 -1
  270. package/dist/src/reactjs/index.js +0 -10
  271. package/dist/src/reactjs/index.js.map +0 -1
  272. package/dist/src/reactjs/providers/AuthProvider.d.ts +0 -11
  273. package/dist/src/reactjs/providers/AuthProvider.d.ts.map +0 -1
  274. package/dist/src/reactjs/providers/AuthProvider.js +0 -76
  275. package/dist/src/reactjs/providers/AuthProvider.js.map +0 -1
  276. package/dist/src/reactjs/providers/CivicAuthProvider.d.ts +0 -6
  277. package/dist/src/reactjs/providers/CivicAuthProvider.d.ts.map +0 -1
  278. package/dist/src/reactjs/providers/CivicAuthProvider.js +0 -32
  279. package/dist/src/reactjs/providers/CivicAuthProvider.js.map +0 -1
  280. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +0 -17
  281. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +0 -1
  282. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js +0 -148
  283. package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +0 -1
  284. package/dist/src/reactjs/providers/index.d.ts +0 -8
  285. package/dist/src/reactjs/providers/index.d.ts.map +0 -1
  286. package/dist/src/reactjs/providers/index.js +0 -7
  287. package/dist/src/reactjs/providers/index.js.map +0 -1
  288. package/dist/src/server/ServerAuthenticationResolver.d.ts +0 -20
  289. package/dist/src/server/ServerAuthenticationResolver.d.ts.map +0 -1
  290. package/dist/src/server/ServerAuthenticationResolver.js +0 -67
  291. package/dist/src/server/ServerAuthenticationResolver.js.map +0 -1
  292. package/dist/src/server/config.d.ts +0 -10
  293. package/dist/src/server/config.d.ts.map +0 -1
  294. package/dist/src/server/config.js +0 -2
  295. package/dist/src/server/config.js.map +0 -1
  296. package/dist/src/server/index.d.ts +0 -7
  297. package/dist/src/server/index.d.ts.map +0 -1
  298. package/dist/src/server/index.js +0 -7
  299. package/dist/src/server/index.js.map +0 -1
  300. package/dist/src/server/login.d.ts +0 -21
  301. package/dist/src/server/login.d.ts.map +0 -1
  302. package/dist/src/server/login.js +0 -56
  303. package/dist/src/server/login.js.map +0 -1
  304. package/dist/src/server/refresh.d.ts +0 -7
  305. package/dist/src/server/refresh.d.ts.map +0 -1
  306. package/dist/src/server/refresh.js +0 -13
  307. package/dist/src/server/refresh.js.map +0 -1
  308. package/dist/src/services/AuthenticationService.d.ts +0 -91
  309. package/dist/src/services/AuthenticationService.d.ts.map +0 -1
  310. package/dist/src/services/AuthenticationService.js +0 -322
  311. package/dist/src/services/AuthenticationService.js.map +0 -1
  312. package/dist/src/services/PKCE.d.ts +0 -20
  313. package/dist/src/services/PKCE.d.ts.map +0 -1
  314. package/dist/src/services/PKCE.js +0 -44
  315. package/dist/src/services/PKCE.js.map +0 -1
  316. package/dist/src/services/types.d.ts +0 -24
  317. package/dist/src/services/types.d.ts.map +0 -1
  318. package/dist/src/services/types.js +0 -7
  319. package/dist/src/services/types.js.map +0 -1
  320. package/dist/src/shared/components/BlockDisplay.d.ts +0 -7
  321. package/dist/src/shared/components/BlockDisplay.d.ts.map +0 -1
  322. package/dist/src/shared/components/BlockDisplay.js +0 -25
  323. package/dist/src/shared/components/BlockDisplay.js.map +0 -1
  324. package/dist/src/shared/components/CivicAuthIframe.d.ts +0 -9
  325. package/dist/src/shared/components/CivicAuthIframe.d.ts.map +0 -1
  326. package/dist/src/shared/components/CivicAuthIframe.js +0 -8
  327. package/dist/src/shared/components/CivicAuthIframe.js.map +0 -1
  328. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts +0 -13
  329. package/dist/src/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
  330. package/dist/src/shared/components/CivicAuthIframeContainer.js +0 -138
  331. package/dist/src/shared/components/CivicAuthIframeContainer.js.map +0 -1
  332. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts +0 -7
  333. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +0 -1
  334. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js +0 -22
  335. package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js.map +0 -1
  336. package/dist/src/shared/components/CloseIcon.d.ts +0 -4
  337. package/dist/src/shared/components/CloseIcon.d.ts.map +0 -1
  338. package/dist/src/shared/components/CloseIcon.js +0 -6
  339. package/dist/src/shared/components/CloseIcon.js.map +0 -1
  340. package/dist/src/shared/components/IFrameAndLoading.d.ts +0 -8
  341. package/dist/src/shared/components/IFrameAndLoading.d.ts.map +0 -1
  342. package/dist/src/shared/components/IFrameAndLoading.js +0 -27
  343. package/dist/src/shared/components/IFrameAndLoading.js.map +0 -1
  344. package/dist/src/shared/components/LoadingIcon.d.ts +0 -4
  345. package/dist/src/shared/components/LoadingIcon.d.ts.map +0 -1
  346. package/dist/src/shared/components/LoadingIcon.js +0 -30
  347. package/dist/src/shared/components/LoadingIcon.js.map +0 -1
  348. package/dist/src/shared/hooks/index.d.ts +0 -11
  349. package/dist/src/shared/hooks/index.d.ts.map +0 -1
  350. package/dist/src/shared/hooks/index.js +0 -11
  351. package/dist/src/shared/hooks/index.js.map +0 -1
  352. package/dist/src/shared/hooks/useAuth.d.ts +0 -3
  353. package/dist/src/shared/hooks/useAuth.d.ts.map +0 -1
  354. package/dist/src/shared/hooks/useAuth.js +0 -12
  355. package/dist/src/shared/hooks/useAuth.js.map +0 -1
  356. package/dist/src/shared/hooks/useCivicAuthConfig.d.ts +0 -3
  357. package/dist/src/shared/hooks/useCivicAuthConfig.d.ts.map +0 -1
  358. package/dist/src/shared/hooks/useCivicAuthConfig.js +0 -10
  359. package/dist/src/shared/hooks/useCivicAuthConfig.js.map +0 -1
  360. package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts +0 -3
  361. package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
  362. package/dist/src/shared/hooks/useClientTokenExchangeSession.js +0 -13
  363. package/dist/src/shared/hooks/useClientTokenExchangeSession.js.map +0 -1
  364. package/dist/src/shared/hooks/useCurrentUrl.d.ts +0 -3
  365. package/dist/src/shared/hooks/useCurrentUrl.d.ts.map +0 -1
  366. package/dist/src/shared/hooks/useCurrentUrl.js +0 -24
  367. package/dist/src/shared/hooks/useCurrentUrl.js.map +0 -1
  368. package/dist/src/shared/hooks/useIframe.d.ts +0 -3
  369. package/dist/src/shared/hooks/useIframe.d.ts.map +0 -1
  370. package/dist/src/shared/hooks/useIframe.js +0 -13
  371. package/dist/src/shared/hooks/useIframe.js.map +0 -1
  372. package/dist/src/shared/hooks/useIsInIframe.d.ts +0 -3
  373. package/dist/src/shared/hooks/useIsInIframe.d.ts.map +0 -1
  374. package/dist/src/shared/hooks/useIsInIframe.js +0 -14
  375. package/dist/src/shared/hooks/useIsInIframe.js.map +0 -1
  376. package/dist/src/shared/hooks/useOAuthEndpoints.d.ts +0 -4
  377. package/dist/src/shared/hooks/useOAuthEndpoints.d.ts.map +0 -1
  378. package/dist/src/shared/hooks/useOAuthEndpoints.js +0 -14
  379. package/dist/src/shared/hooks/useOAuthEndpoints.js.map +0 -1
  380. package/dist/src/shared/hooks/useRefresh.d.ts +0 -4
  381. package/dist/src/shared/hooks/useRefresh.d.ts.map +0 -1
  382. package/dist/src/shared/hooks/useRefresh.js +0 -38
  383. package/dist/src/shared/hooks/useRefresh.js.map +0 -1
  384. package/dist/src/shared/hooks/useSession.d.ts +0 -3
  385. package/dist/src/shared/hooks/useSession.d.ts.map +0 -1
  386. package/dist/src/shared/hooks/useSession.js +0 -13
  387. package/dist/src/shared/hooks/useSession.js.map +0 -1
  388. package/dist/src/shared/hooks/useSignIn.d.ts +0 -15
  389. package/dist/src/shared/hooks/useSignIn.d.ts.map +0 -1
  390. package/dist/src/shared/hooks/useSignIn.js +0 -126
  391. package/dist/src/shared/hooks/useSignIn.js.map +0 -1
  392. package/dist/src/shared/hooks/useToken.d.ts +0 -3
  393. package/dist/src/shared/hooks/useToken.d.ts.map +0 -1
  394. package/dist/src/shared/hooks/useToken.js +0 -12
  395. package/dist/src/shared/hooks/useToken.js.map +0 -1
  396. package/dist/src/shared/hooks/useWindowFocused.d.ts +0 -5
  397. package/dist/src/shared/hooks/useWindowFocused.d.ts.map +0 -1
  398. package/dist/src/shared/hooks/useWindowFocused.js +0 -21
  399. package/dist/src/shared/hooks/useWindowFocused.js.map +0 -1
  400. package/dist/src/shared/index.d.ts +0 -5
  401. package/dist/src/shared/index.d.ts.map +0 -1
  402. package/dist/src/shared/index.js +0 -16
  403. package/dist/src/shared/index.js.map +0 -1
  404. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts +0 -20
  405. package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
  406. package/dist/src/shared/lib/GenericAuthenticationRefresher.js +0 -73
  407. package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
  408. package/dist/src/shared/lib/UserSession.d.ts +0 -12
  409. package/dist/src/shared/lib/UserSession.d.ts.map +0 -1
  410. package/dist/src/shared/lib/UserSession.js +0 -20
  411. package/dist/src/shared/lib/UserSession.js.map +0 -1
  412. package/dist/src/shared/lib/session.d.ts +0 -3
  413. package/dist/src/shared/lib/session.d.ts.map +0 -1
  414. package/dist/src/shared/lib/session.js +0 -21
  415. package/dist/src/shared/lib/session.js.map +0 -1
  416. package/dist/src/shared/lib/storage.d.ts +0 -25
  417. package/dist/src/shared/lib/storage.d.ts.map +0 -1
  418. package/dist/src/shared/lib/storage.js +0 -17
  419. package/dist/src/shared/lib/storage.js.map +0 -1
  420. package/dist/src/shared/lib/types.d.ts +0 -36
  421. package/dist/src/shared/lib/types.d.ts.map +0 -1
  422. package/dist/src/shared/lib/types.js +0 -18
  423. package/dist/src/shared/lib/types.js.map +0 -1
  424. package/dist/src/shared/lib/util.d.ts +0 -34
  425. package/dist/src/shared/lib/util.d.ts.map +0 -1
  426. package/dist/src/shared/lib/util.js +0 -137
  427. package/dist/src/shared/lib/util.js.map +0 -1
  428. package/dist/src/shared/providers/AuthContext.d.ts +0 -11
  429. package/dist/src/shared/providers/AuthContext.d.ts.map +0 -1
  430. package/dist/src/shared/providers/AuthContext.js +0 -3
  431. package/dist/src/shared/providers/AuthContext.js.map +0 -1
  432. package/dist/src/shared/providers/AuthProvider.d.ts +0 -22
  433. package/dist/src/shared/providers/AuthProvider.d.ts.map +0 -1
  434. package/dist/src/shared/providers/AuthProvider.js +0 -72
  435. package/dist/src/shared/providers/AuthProvider.js.map +0 -1
  436. package/dist/src/shared/providers/CivicAuthConfigContext.d.ts +0 -18
  437. package/dist/src/shared/providers/CivicAuthConfigContext.d.ts.map +0 -1
  438. package/dist/src/shared/providers/CivicAuthConfigContext.js +0 -52
  439. package/dist/src/shared/providers/CivicAuthConfigContext.js.map +0 -1
  440. package/dist/src/shared/providers/CivicAuthProvider.d.ts +0 -6
  441. package/dist/src/shared/providers/CivicAuthProvider.d.ts.map +0 -1
  442. package/dist/src/shared/providers/CivicAuthProvider.js +0 -32
  443. package/dist/src/shared/providers/CivicAuthProvider.js.map +0 -1
  444. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts +0 -17
  445. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +0 -1
  446. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js +0 -131
  447. package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js.map +0 -1
  448. package/dist/src/shared/providers/IframeProvider.d.ts +0 -22
  449. package/dist/src/shared/providers/IframeProvider.d.ts.map +0 -1
  450. package/dist/src/shared/providers/IframeProvider.js +0 -35
  451. package/dist/src/shared/providers/IframeProvider.js.map +0 -1
  452. package/dist/src/shared/providers/SessionProvider.d.ts +0 -19
  453. package/dist/src/shared/providers/SessionProvider.d.ts.map +0 -1
  454. package/dist/src/shared/providers/SessionProvider.js +0 -23
  455. package/dist/src/shared/providers/SessionProvider.js.map +0 -1
  456. package/dist/src/shared/providers/TokenProvider.d.ts +0 -18
  457. package/dist/src/shared/providers/TokenProvider.d.ts.map +0 -1
  458. package/dist/src/shared/providers/TokenProvider.js +0 -42
  459. package/dist/src/shared/providers/TokenProvider.js.map +0 -1
  460. package/dist/src/shared/providers/UserProvider.d.ts +0 -24
  461. package/dist/src/shared/providers/UserProvider.d.ts.map +0 -1
  462. package/dist/src/shared/providers/UserProvider.js +0 -52
  463. package/dist/src/shared/providers/UserProvider.js.map +0 -1
  464. package/dist/src/shared/providers/types.d.ts +0 -15
  465. package/dist/src/shared/providers/types.d.ts.map +0 -1
  466. package/dist/src/shared/providers/types.js +0 -2
  467. package/dist/src/shared/providers/types.js.map +0 -1
  468. package/dist/src/shared/version.d.ts +0 -2
  469. package/dist/src/shared/version.d.ts.map +0 -1
  470. package/dist/src/shared/version.js +0 -3
  471. package/dist/src/shared/version.js.map +0 -1
  472. package/dist/src/types.d.ts +0 -148
  473. package/dist/src/types.d.ts.map +0 -1
  474. package/dist/src/types.js +0 -4
  475. package/dist/src/types.js.map +0 -1
  476. package/dist/src/utils.d.ts +0 -15
  477. package/dist/src/utils.d.ts.map +0 -1
  478. package/dist/src/utils.js +0 -43
  479. package/dist/src/utils.js.map +0 -1
  480. package/dist/src/version.d.ts +0 -2
  481. package/dist/src/version.d.ts.map +0 -1
  482. package/dist/src/version.js +0 -3
  483. package/dist/src/version.js.map +0 -1
  484. package/dist/test/integration/sdk.test.d.ts +0 -2
  485. package/dist/test/integration/sdk.test.d.ts.map +0 -1
  486. package/dist/test/integration/sdk.test.js +0 -237
  487. package/dist/test/integration/sdk.test.js.map +0 -1
  488. package/dist/test/support/fixtures.d.ts +0 -26
  489. package/dist/test/support/fixtures.d.ts.map +0 -1
  490. package/dist/test/support/fixtures.js +0 -55
  491. package/dist/test/support/fixtures.js.map +0 -1
  492. package/dist/test/support/tokens.json +0 -26
  493. package/dist/test/unit/lib/oauth.test.d.ts +0 -2
  494. package/dist/test/unit/lib/oauth.test.d.ts.map +0 -1
  495. package/dist/test/unit/lib/oauth.test.js +0 -56
  496. package/dist/test/unit/lib/oauth.test.js.map +0 -1
  497. package/dist/test/unit/lib/obj.test.d.ts +0 -2
  498. package/dist/test/unit/lib/obj.test.d.ts.map +0 -1
  499. package/dist/test/unit/lib/obj.test.js +0 -37
  500. package/dist/test/unit/lib/obj.test.js.map +0 -1
  501. package/dist/test/unit/logger.test.d.ts +0 -2
  502. package/dist/test/unit/logger.test.d.ts.map +0 -1
  503. package/dist/test/unit/logger.test.js +0 -141
  504. package/dist/test/unit/logger.test.js.map +0 -1
  505. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +0 -2
  506. package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts.map +0 -1
  507. package/dist/test/unit/nextjs/NextAuthProvider.test.js +0 -31
  508. package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +0 -1
  509. package/dist/test/unit/nextjs/config.test.d.ts +0 -2
  510. package/dist/test/unit/nextjs/config.test.d.ts.map +0 -1
  511. package/dist/test/unit/nextjs/config.test.js +0 -203
  512. package/dist/test/unit/nextjs/config.test.js.map +0 -1
  513. package/dist/test/unit/nextjs/getUser.test.d.ts +0 -2
  514. package/dist/test/unit/nextjs/getUser.test.d.ts.map +0 -1
  515. package/dist/test/unit/nextjs/getUser.test.js +0 -22
  516. package/dist/test/unit/nextjs/getUser.test.js.map +0 -1
  517. package/dist/test/unit/nextjs/handler.test.d.ts +0 -2
  518. package/dist/test/unit/nextjs/handler.test.d.ts.map +0 -1
  519. package/dist/test/unit/nextjs/handler.test.js +0 -207
  520. package/dist/test/unit/nextjs/handler.test.js.map +0 -1
  521. package/dist/test/unit/nextjs/middleware.test.d.ts +0 -2
  522. package/dist/test/unit/nextjs/middleware.test.d.ts.map +0 -1
  523. package/dist/test/unit/nextjs/middleware.test.js +0 -113
  524. package/dist/test/unit/nextjs/middleware.test.js.map +0 -1
  525. package/dist/test/unit/nextjs/utils.test.d.ts +0 -2
  526. package/dist/test/unit/nextjs/utils.test.d.ts.map +0 -1
  527. package/dist/test/unit/nextjs/utils.test.js +0 -13
  528. package/dist/test/unit/nextjs/utils.test.js.map +0 -1
  529. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +0 -2
  530. package/dist/test/unit/publicApi/apiSnapshot.test.d.ts.map +0 -1
  531. package/dist/test/unit/publicApi/apiSnapshot.test.js +0 -10
  532. package/dist/test/unit/publicApi/apiSnapshot.test.js.map +0 -1
  533. package/dist/test/unit/react/components/SignInButton.test.d.ts +0 -2
  534. package/dist/test/unit/react/components/SignInButton.test.d.ts.map +0 -1
  535. package/dist/test/unit/react/components/SignInButton.test.js +0 -31
  536. package/dist/test/unit/react/components/SignInButton.test.js.map +0 -1
  537. package/dist/test/unit/react/components/SignOutButton.test.d.ts +0 -2
  538. package/dist/test/unit/react/components/SignOutButton.test.d.ts.map +0 -1
  539. package/dist/test/unit/react/components/SignOutButton.test.js +0 -30
  540. package/dist/test/unit/react/components/SignOutButton.test.js.map +0 -1
  541. package/dist/test/unit/server/login.test.d.ts +0 -2
  542. package/dist/test/unit/server/login.test.d.ts.map +0 -1
  543. package/dist/test/unit/server/login.test.js +0 -184
  544. package/dist/test/unit/server/login.test.js.map +0 -1
  545. package/dist/test/unit/server/refresh.test.d.ts +0 -2
  546. package/dist/test/unit/server/refresh.test.d.ts.map +0 -1
  547. package/dist/test/unit/server/refresh.test.js +0 -55
  548. package/dist/test/unit/server/refresh.test.js.map +0 -1
  549. package/dist/test/unit/server/session.test.d.ts +0 -2
  550. package/dist/test/unit/server/session.test.d.ts.map +0 -1
  551. package/dist/test/unit/server/session.test.js +0 -41
  552. package/dist/test/unit/server/session.test.js.map +0 -1
  553. package/dist/test/unit/services/AuthenticationService.test.d.ts +0 -2
  554. package/dist/test/unit/services/AuthenticationService.test.d.ts.map +0 -1
  555. package/dist/test/unit/services/AuthenticationService.test.js +0 -301
  556. package/dist/test/unit/services/AuthenticationService.test.js.map +0 -1
  557. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +0 -2
  558. package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts.map +0 -1
  559. package/dist/test/unit/services/ServerAuthenticationResolver.test.js +0 -75
  560. package/dist/test/unit/services/ServerAuthenticationResolver.test.js.map +0 -1
  561. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +0 -2
  562. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts.map +0 -1
  563. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js +0 -144
  564. package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js.map +0 -1
  565. package/dist/test/unit/shared/UserSession.test.d.ts +0 -2
  566. package/dist/test/unit/shared/UserSession.test.d.ts.map +0 -1
  567. package/dist/test/unit/shared/UserSession.test.js +0 -37
  568. package/dist/test/unit/shared/UserSession.test.js.map +0 -1
  569. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +0 -2
  570. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts.map +0 -1
  571. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +0 -122
  572. package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +0 -1
  573. package/dist/test/unit/shared/printVersion.test.d.ts +0 -2
  574. package/dist/test/unit/shared/printVersion.test.d.ts.map +0 -1
  575. package/dist/test/unit/shared/printVersion.test.js +0 -39
  576. package/dist/test/unit/shared/printVersion.test.js.map +0 -1
  577. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts +0 -2
  578. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts.map +0 -1
  579. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js +0 -108
  580. package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js.map +0 -1
  581. package/dist/test/unit/shared/storage.test.d.ts +0 -2
  582. package/dist/test/unit/shared/storage.test.d.ts.map +0 -1
  583. package/dist/test/unit/shared/storage.test.js +0 -53
  584. package/dist/test/unit/shared/storage.test.js.map +0 -1
  585. package/dist/test/unit/utils.test.d.ts +0 -2
  586. package/dist/test/unit/utils.test.d.ts.map +0 -1
  587. package/dist/test/unit/utils.test.js +0 -40
  588. package/dist/test/unit/utils.test.js.map +0 -1
  589. package/dist/tsconfig.tsbuildinfo +0 -1
  590. package/dist/vitest.config.d.ts +0 -3
  591. package/dist/vitest.config.d.ts.map +0 -1
  592. package/dist/vitest.config.js +0 -44
  593. package/dist/vitest.config.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,7 +1,3 @@
1
- # 0.2.5 fix idToken retrieval from cookie storage
2
- - fix a bug where the client was trying to retrieve the idToken using the server-only cookies() method
3
- - fix an issue with the build including the src and test files in the package
4
-
5
1
  # 0.2.4 fix multiple auth-signIn calls
6
2
  - fix a bug where signIn is called multiple times in embedded iframe mode
7
3
 
@@ -1,9 +1,8 @@
1
1
  declare const DEFAULT_SCOPES: string[];
2
2
  declare const DEFAULT_AUTH_SERVER = "https://auth.civic.com/oauth";
3
3
  declare const DEFAULT_OAUTH_GET_PARAMS: string[];
4
- declare const DEFAULT_EXPIRES_IN = 3600;
5
4
  declare const TOKEN_EXCHANGE_TRIGGER_TEXT = "sameDomainCodeExchangeRequired";
6
5
  declare const TOKEN_EXCHANGE_SUCCESS_TEXT = "serverSideTokenExchangeSuccess";
7
6
  declare const DEFAULT_DISPLAY_MODE = "iframe";
8
- export { DEFAULT_SCOPES, DEFAULT_OAUTH_GET_PARAMS, DEFAULT_DISPLAY_MODE, DEFAULT_AUTH_SERVER, DEFAULT_EXPIRES_IN, TOKEN_EXCHANGE_TRIGGER_TEXT, TOKEN_EXCHANGE_SUCCESS_TEXT, };
7
+ export { DEFAULT_SCOPES, DEFAULT_OAUTH_GET_PARAMS, DEFAULT_DISPLAY_MODE, DEFAULT_AUTH_SERVER, TOKEN_EXCHANGE_TRIGGER_TEXT, TOKEN_EXCHANGE_SUCCESS_TEXT, };
9
8
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,UAMnB,CAAC;AACF,QAAA,MAAM,mBAAmB,iCAAiC,CAAC;AAE3D,QAAA,MAAM,wBAAwB,UAA2B,CAAC;AAE1D,QAAA,MAAM,kBAAkB,OAAO,CAAC;AAIhC,QAAA,MAAM,2BAA2B,mCAAmC,CAAC;AAErE,QAAA,MAAM,2BAA2B,mCAAmC,CAAC;AAErE,QAAA,MAAM,oBAAoB,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,GAC5B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,UAMnB,CAAC;AACF,QAAA,MAAM,mBAAmB,iCAAiC,CAAC;AAE3D,QAAA,MAAM,wBAAwB,UAA2B,CAAC;AAI1D,QAAA,MAAM,2BAA2B,mCAAmC,CAAC;AAErE,QAAA,MAAM,2BAA2B,mCAAmC,CAAC;AAErE,QAAA,MAAM,oBAAoB,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,GAC5B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TOKEN_EXCHANGE_SUCCESS_TEXT = exports.TOKEN_EXCHANGE_TRIGGER_TEXT = exports.DEFAULT_EXPIRES_IN = exports.DEFAULT_AUTH_SERVER = exports.DEFAULT_DISPLAY_MODE = exports.DEFAULT_OAUTH_GET_PARAMS = exports.DEFAULT_SCOPES = void 0;
3
+ exports.TOKEN_EXCHANGE_SUCCESS_TEXT = exports.TOKEN_EXCHANGE_TRIGGER_TEXT = exports.DEFAULT_AUTH_SERVER = exports.DEFAULT_DISPLAY_MODE = exports.DEFAULT_OAUTH_GET_PARAMS = exports.DEFAULT_SCOPES = void 0;
4
4
  const DEFAULT_SCOPES = [
5
5
  "openid",
6
6
  "profile",
@@ -13,8 +13,6 @@ const DEFAULT_AUTH_SERVER = "https://auth.civic.com/oauth";
13
13
  exports.DEFAULT_AUTH_SERVER = DEFAULT_AUTH_SERVER;
14
14
  const DEFAULT_OAUTH_GET_PARAMS = ["code", "state", "iss"];
15
15
  exports.DEFAULT_OAUTH_GET_PARAMS = DEFAULT_OAUTH_GET_PARAMS;
16
- const DEFAULT_EXPIRES_IN = 3600; // 1 hour in seconds
17
- exports.DEFAULT_EXPIRES_IN = DEFAULT_EXPIRES_IN;
18
16
  // The server's callback handler renders this text if it needs the front-end to make an additional token exchange call,
19
17
  // for the iframe case where cookies are not sent along with the initial redirect.
20
18
  const TOKEN_EXCHANGE_TRIGGER_TEXT = "sameDomainCodeExchangeRequired";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,SAAS;IACT,OAAO;IACP,iBAAiB;IACjB,gBAAgB;CACjB,CAAC;AAeA,wCAAc;AAdhB,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAiBzD,kDAAmB;AAfrB,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAaxD,4DAAwB;AAX1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,oBAAoB;AAcnD,gDAAkB;AAZpB,uHAAuH;AACvH,kFAAkF;AAClF,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAWnE,kEAA2B;AAT7B,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAUnE,kEAA2B;AAR7B,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAIpC,oDAAoB","sourcesContent":["const DEFAULT_SCOPES = [\n \"openid\",\n \"profile\",\n \"email\",\n \"forwardedTokens\",\n \"offline_access\",\n];\nconst DEFAULT_AUTH_SERVER = \"https://auth.civic.com/oauth\";\n\nconst DEFAULT_OAUTH_GET_PARAMS = [\"code\", \"state\", \"iss\"];\n\nconst DEFAULT_EXPIRES_IN = 3600; // 1 hour in seconds\n\n// The server's callback handler renders this text if it needs the front-end to make an additional token exchange call,\n// for the iframe case where cookies are not sent along with the initial redirect.\nconst TOKEN_EXCHANGE_TRIGGER_TEXT = \"sameDomainCodeExchangeRequired\";\n\nconst TOKEN_EXCHANGE_SUCCESS_TEXT = \"serverSideTokenExchangeSuccess\";\n\nconst DEFAULT_DISPLAY_MODE = \"iframe\";\nexport {\n DEFAULT_SCOPES,\n DEFAULT_OAUTH_GET_PARAMS,\n DEFAULT_DISPLAY_MODE,\n DEFAULT_AUTH_SERVER,\n DEFAULT_EXPIRES_IN,\n TOKEN_EXCHANGE_TRIGGER_TEXT,\n TOKEN_EXCHANGE_SUCCESS_TEXT,\n};\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG;IACrB,QAAQ;IACR,SAAS;IACT,OAAO;IACP,iBAAiB;IACjB,gBAAgB;CACjB,CAAC;AAaA,wCAAc;AAZhB,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAezD,kDAAmB;AAbrB,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAWxD,4DAAwB;AAT1B,uHAAuH;AACvH,kFAAkF;AAClF,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AAUnE,kEAA2B;AAR7B,MAAM,2BAA2B,GAAG,gCAAgC,CAAC;AASnE,kEAA2B;AAP7B,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAIpC,oDAAoB","sourcesContent":["const DEFAULT_SCOPES = [\n \"openid\",\n \"profile\",\n \"email\",\n \"forwardedTokens\",\n \"offline_access\",\n];\nconst DEFAULT_AUTH_SERVER = \"https://auth.civic.com/oauth\";\n\nconst DEFAULT_OAUTH_GET_PARAMS = [\"code\", \"state\", \"iss\"];\n\n// The server's callback handler renders this text if it needs the front-end to make an additional token exchange call,\n// for the iframe case where cookies are not sent along with the initial redirect.\nconst TOKEN_EXCHANGE_TRIGGER_TEXT = \"sameDomainCodeExchangeRequired\";\n\nconst TOKEN_EXCHANGE_SUCCESS_TEXT = \"serverSideTokenExchangeSuccess\";\n\nconst DEFAULT_DISPLAY_MODE = \"iframe\";\nexport {\n DEFAULT_SCOPES,\n DEFAULT_OAUTH_GET_PARAMS,\n DEFAULT_DISPLAY_MODE,\n DEFAULT_AUTH_SERVER,\n TOKEN_EXCHANGE_TRIGGER_TEXT,\n TOKEN_EXCHANGE_SUCCESS_TEXT,\n};\n"]}
@@ -1,7 +1,18 @@
1
+ import { CookieStorage } from "../shared/lib/storage.js";
2
+ import type { OAuthTokens, TokensCookieConfig } from "../shared/lib/types.js";
1
3
  declare const getWindowCookieValue: (requests: {
2
4
  key: string;
3
5
  window: Window;
4
6
  parseJson?: boolean;
5
7
  }[]) => Record<string, string | Record<string, unknown>> | null;
6
- export { getWindowCookieValue };
8
+ declare class BrowserCookieStorage extends CookieStorage {
9
+ readonly config: Partial<TokensCookieConfig>;
10
+ constructor(config?: Partial<TokensCookieConfig>);
11
+ get(key: string): Promise<string | null>;
12
+ /**
13
+ * there is no client-side implementation for setting cookies
14
+ */
15
+ set(_key: OAuthTokens, _value: string): Promise<void>;
16
+ }
17
+ export { BrowserCookieStorage, getWindowCookieValue };
7
18
  //# sourceMappingURL=cookies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,oBAAoB,aACd;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EAAE,4DAqBJ,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE7E,QAAA,MAAM,oBAAoB,aACd;IACR,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,EAAE,4DAqBJ,CAAC;AAEF,cAAM,oBAAqB,SAAQ,aAAa;IAClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC;gBAAnC,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM;IAOvD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU9C;;OAEG;IAEG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D;AAED,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWindowCookieValue = void 0;
4
- // TODO REMOVE IN FAVOUR OF BrowserCookieStorage.get
3
+ exports.getWindowCookieValue = exports.BrowserCookieStorage = void 0;
4
+ const storage_js_1 = require("../shared/lib/storage.js");
5
5
  const getWindowCookieValue = (requests) => {
6
6
  const cookie = window.document.cookie;
7
7
  if (!cookie)
@@ -26,4 +26,32 @@ const getWindowCookieValue = (requests) => {
26
26
  return response;
27
27
  };
28
28
  exports.getWindowCookieValue = getWindowCookieValue;
29
+ class BrowserCookieStorage extends storage_js_1.CookieStorage {
30
+ config;
31
+ constructor(config = {}) {
32
+ super({
33
+ secure: true,
34
+ httpOnly: false,
35
+ });
36
+ this.config = config;
37
+ }
38
+ async get(key) {
39
+ if (!document?.cookie)
40
+ return null;
41
+ const value = `; ${document.cookie}`;
42
+ const parts = value.split(`; ${key}=`);
43
+ if (parts && parts.length === 2) {
44
+ return parts.pop()?.split(";").shift() ?? null;
45
+ }
46
+ return null;
47
+ }
48
+ /**
49
+ * there is no client-side implementation for setting cookies
50
+ */
51
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
+ async set(_key, _value) {
53
+ throw new Error("Not implemented.");
54
+ }
55
+ }
56
+ exports.BrowserCookieStorage = BrowserCookieStorage;
29
57
  //# sourceMappingURL=cookies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AACpD,MAAM,oBAAoB,GAAG,CAC3B,QAIG,EACH,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;oBACrC,CAAC,CAAC,uBAAuB,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEO,oDAAoB","sourcesContent":["// TODO REMOVE IN FAVOUR OF BrowserCookieStorage.get\nconst getWindowCookieValue = (\n requests: {\n key: string;\n window: Window;\n parseJson?: boolean;\n }[],\n) => {\n const cookie = window.document.cookie;\n if (!cookie) return null;\n const cookies = cookie.split(\";\");\n const response: Record<string, string | Record<string, unknown>> = {};\n for (const c of cookies) {\n const [name, value] = c.trim().split(\"=\");\n const request = requests.find((r) => r.key === name);\n if (value && request) {\n try {\n const decodeURIComponentValue = decodeURIComponent(value);\n response[request.key] = request.parseJson\n ? JSON.parse(decodeURIComponentValue)\n : decodeURIComponentValue;\n } catch {\n response[request.key] = value;\n }\n }\n }\n return response;\n};\n\nexport { getWindowCookieValue };\n"]}
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/lib/cookies.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AAGxD,MAAM,oBAAoB,GAAG,CAC3B,QAIG,EACH,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAqD,EAAE,CAAC;IACtE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;oBACrC,CAAC,CAAC,uBAAuB,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA6B6B,oDAAoB;AA3BnD,MAAM,oBAAqB,SAAQ,0BAAa;IACzB;IAArB,YAAqB,SAAsC,EAAE;QAC3D,KAAK,CAAC;YACJ,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAJgB,WAAM,GAAN,MAAM,CAAkC;IAK7D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,6DAA6D;IAC7D,KAAK,CAAC,GAAG,CAAC,IAAiB,EAAE,MAAc;QACzC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;CACF;AAEQ,oDAAoB","sourcesContent":["import { CookieStorage } from \"@/shared/lib/storage.js\";\nimport type { OAuthTokens, TokensCookieConfig } from \"@/shared/lib/types.js\";\n\nconst getWindowCookieValue = (\n requests: {\n key: string;\n window: Window;\n parseJson?: boolean;\n }[],\n) => {\n const cookie = window.document.cookie;\n if (!cookie) return null;\n const cookies = cookie.split(\";\");\n const response: Record<string, string | Record<string, unknown>> = {};\n for (const c of cookies) {\n const [name, value] = c.trim().split(\"=\");\n const request = requests.find((r) => r.key === name);\n if (value && request) {\n try {\n const decodeURIComponentValue = decodeURIComponent(value);\n response[request.key] = request.parseJson\n ? JSON.parse(decodeURIComponentValue)\n : decodeURIComponentValue;\n } catch {\n response[request.key] = value;\n }\n }\n }\n return response;\n};\n\nclass BrowserCookieStorage extends CookieStorage {\n constructor(readonly config: Partial<TokensCookieConfig> = {}) {\n super({\n secure: true,\n httpOnly: false,\n });\n }\n\n async get(key: string): Promise<string | null> {\n if (!document?.cookie) return null;\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${key}=`);\n if (parts && parts.length === 2) {\n return parts.pop()?.split(\";\").shift() ?? null;\n }\n return null;\n }\n\n /**\n * there is no client-side implementation for setting cookies\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async set(_key: OAuthTokens, _value: string): Promise<void> {\n throw new Error(\"Not implemented.\");\n }\n}\n\nexport { BrowserCookieStorage, getWindowCookieValue };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/nextjs/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,sBAAsB,GACtB;IACE,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;CACH,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAKnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CA+DtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,YACpB,OAAO,CAAC,UAAU,CAAC,KAC1B,sBAoCF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,qBAAqB,eAAgB,UAAU,mBACrC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyBy7Z,CAAC;6BAAsG,CAAC;;;sBAAke,CAAC;yBAA4H,CAAC;;;qBAA+H,CAAC;;;;;;;;;;;;;;;;;;iBAA8pE,CAAC;;;;;;;6BAAg6C,CAAC;sBAAoC,CAAC;;aAAoC,CAAC;;6BAA0D,CAAC;oBAA8B,CAAC;0BAAkE,CAAC;;qBAA2C,CAAC;mBAAiC,CAAC;;wBAA+C,CAAC;eAAmD,CAAC;iBAA4C,CAAC;2BAAyC,CAAC;;;;;;;;;yBAA4zC,CAAC;6BAAwC,CAAC;;;eAAkD,CAAC;mBAAuB,CAAC;;;;CADlwmB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/nextjs/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACpC,sBAAsB,GACtB;IACE,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,YAAY,CAAC;KACrB,CAAC;CACH,CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAKnE;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAsEtE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,YACpB,OAAO,CAAC,UAAU,CAAC,KAC1B,sBAoCF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,qBAAqB,eAAgB,UAAU,mBACrC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyB6tZ,CAAC;6BAAsG,CAAC;;;sBAAke,CAAC;yBAA4H,CAAC;;;qBAA+H,CAAC;;;;;;;;;;;;;;;;;;iBAA8pE,CAAC;;;;;;;6BAAg6C,CAAC;sBAAoC,CAAC;;aAAoC,CAAC;;6BAA0D,CAAC;oBAA8B,CAAC;0BAAkE,CAAC;;qBAA2C,CAAC;mBAAiC,CAAC;;wBAA+C,CAAC;eAAmD,CAAC;iBAA4C,CAAC;2BAAyC,CAAC;;;;;;;;;yBAA4zC,CAAC;6BAAwC,CAAC;;;eAAkD,CAAC;mBAAuB,CAAC;;;;CADtimB,CAAC"}
@@ -45,7 +45,14 @@ exports.defaultAuthConfig = {
45
45
  path: "/",
46
46
  maxAge: defaultCookiesMaxAge,
47
47
  },
48
- [types_js_1.OAuthTokens.ACCESS_TOKEN_EXPIRES_AT]: {
48
+ [types_js_1.OAuthTokens.EXPIRES_IN]: {
49
+ secure: defaultServerSecure,
50
+ httpOnly: false, // we need this to be available client-side
51
+ sameSite: "strict",
52
+ path: "/",
53
+ maxAge: defaultCookiesMaxAge,
54
+ },
55
+ [types_js_1.OAuthTokens.TIMESTAMP]: {
49
56
  secure: defaultServerSecure,
50
57
  httpOnly: false, // we need this to be available client-side
51
58
  sameSite: "strict",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/nextjs/config.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport type { NextConfig } from \"next\";\nimport { loggers } from \"@/lib/logger.js\";\nimport { withoutUndefined } from \"@/utils.js\";\nimport {\n CodeVerifier,\n type CookieConfig,\n OAuthTokens,\n type TokensCookieConfig,\n} from \"@/shared/lib/types.js\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport { merge } from \"ts-deepmerge\";\n\nconst logger = loggers.nextjs.handlers.auth;\n\nexport type CookiesConfigObject = {\n tokens: TokensCookieConfig;\n user: CookieConfig;\n};\n\nexport type AuthConfigWithDefaults = {\n clientId: string;\n oauthServer: string;\n callbackUrl: string;\n loginUrl: string;\n logoutUrl: string;\n logoutCallbackUrl: string;\n challengeUrl: string;\n refreshUrl: string;\n include: string[];\n exclude: string[];\n cookies: CookiesConfigObject;\n};\n\n/**\n * All possible config values for Civic Auth\n */\nexport type OptionalAuthConfig = Partial<\n | AuthConfigWithDefaults\n | {\n cookies?: {\n tokens?: Partial<TokensCookieConfig>;\n user?: CookieConfig;\n };\n }\n>;\n\n/**\n * Configuration values that are required for Civic Auth to work.\n */\nexport type AuthConfig = OptionalAuthConfig & { clientId: string };\n\nconst defaultServerSecure = !(process.env.NODE_ENV === \"development\");\nconst defaultCookiesMaxAge = 60 * 60; // 1 hour\n\n/**\n * Default configuration values that will be used if not overridden\n */\nexport const defaultAuthConfig: Omit<AuthConfigWithDefaults, \"clientId\"> = {\n oauthServer: DEFAULT_AUTH_SERVER,\n callbackUrl: \"/api/auth/callback\",\n challengeUrl: \"/api/auth/challenge\",\n refreshUrl: \"/api/auth/refresh\",\n logoutUrl: \"/api/auth/logout\",\n logoutCallbackUrl: \"/api/auth/logoutcallback\",\n loginUrl: \"/\",\n include: [\"/*\"],\n exclude: [],\n cookies: {\n tokens: {\n [OAuthTokens.ID_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.ACCESS_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.REFRESH_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.ACCESS_TOKEN_EXPIRES_AT]: {\n secure: defaultServerSecure,\n httpOnly: false, // we need this to be available client-side\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [CodeVerifier.COOKIE_NAME]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [CodeVerifier.APP_URL]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n },\n user: {\n secure: defaultServerSecure,\n httpOnly: false, // we need this to be available client-side\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n },\n};\n\n/**\n * Resolves the authentication configuration by combining:\n * 1. Default values\n * 2. Environment variables (set internally by the plugin)\n * 3. Explicitly passed configuration\n *\n * Config will be merged deeply, with arrays not merged, so that the\n * default include list (for example) [\"/*\"] will not be added\n *\n * Note: Developers should not set _civic_auth_* environment variables directly.\n * Instead, pass configuration to the createCivicAuthPlugin in next.config.js:\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * callbackUrl: '/custom/callback',\n * })\n * ```\n */\nexport const resolveAuthConfig = (\n config: Partial<AuthConfig> = {},\n): AuthConfigWithDefaults => {\n // Read configuration that was set by the plugin via environment variables\n const configFromEnv = withoutUndefined({\n clientId: process.env._civic_auth_client_id,\n oauthServer: process.env._civic_oauth_server,\n callbackUrl: process.env._civic_auth_callback_url,\n challengeUrl: process.env._civic_auth_challenge_url,\n loginUrl: process.env._civic_auth_login_url,\n logoutUrl: process.env._civic_auth_logout_url,\n logoutCallbackUrl: process.env._civic_auth_logout_callback_url,\n include: process.env._civic_auth_includes?.split(\",\"),\n exclude: process.env._civic_auth_excludes?.split(\",\"),\n cookies: process.env._civic_auth_cookie_config\n ? JSON.parse(process.env._civic_auth_cookie_config)\n : undefined,\n }) as AuthConfig;\n\n // Perform a deep merge of the configurations\n const mergedConfig = merge.withOptions(\n { mergeArrays: false },\n defaultAuthConfig,\n configFromEnv,\n config,\n );\n\n logger.debug(\n \"Config from environment:\",\n JSON.stringify(configFromEnv, null, 2),\n );\n logger.debug(\"Resolved config:\", JSON.stringify(mergedConfig, null, 2));\n\n if (mergedConfig.clientId === undefined) {\n throw new Error(\"Civic Auth client ID is required\");\n }\n\n return mergedConfig as AuthConfigWithDefaults & { clientId: string };\n};\n\n/**\n * Creates a Next.js plugin that handles auth configuration.\n *\n * This is the main configuration point for the auth system.\n * Do not set _civic_auth_* environment variables directly - instead,\n * pass your configuration here.\n *\n * The only required field is clientId.\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * clientId: 'my-client-id',\n * });\n * ```\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * clientId: 'my-client-id',\n * callbackUrl: '/custom/callback',\n * loginUrl: '/custom/login',\n * logoutUrl: '/custom/logout',\n * logoutCallbackUrl: '/custom/logoutcallback',\n * include: ['/protected/*'],\n * exclude: ['/public/*']\n * })\n * ```\n *\n * The plugin sets internal environment variables that are used by\n * the auth system. These variables should not be set manually.\n */\nexport const createCivicAuthPlugin = (authConfig: AuthConfig) => {\n return (nextConfig?: NextConfig) => {\n logger.debug(\n \"createCivicAuthPlugin nextConfig\",\n JSON.stringify(nextConfig, null, 2),\n );\n const resolvedConfig = resolveAuthConfig(authConfig);\n return {\n ...nextConfig,\n env: {\n ...nextConfig?.env,\n // Internal environment variables - do not set these manually\n _civic_auth_client_id: resolvedConfig.clientId,\n _civic_oauth_server: resolvedConfig.oauthServer,\n _civic_auth_callback_url: resolvedConfig.callbackUrl,\n _civic_auth_challenge_url: resolvedConfig.challengeUrl,\n _civic_auth_login_url: resolvedConfig.loginUrl,\n _civic_auth_logout_url: resolvedConfig.logoutUrl,\n _civic_auth_logout_callback_url: resolvedConfig.logoutCallbackUrl,\n _civic_auth_includes: resolvedConfig.include.join(\",\"),\n _civic_auth_excludes: resolvedConfig.exclude.join(\",\"),\n _civic_auth_cookie_config: JSON.stringify(resolvedConfig.cookies),\n },\n };\n };\n};\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/nextjs/config.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable turbo/no-undeclared-env-vars */\nimport type { NextConfig } from \"next\";\nimport { loggers } from \"@/lib/logger.js\";\nimport { withoutUndefined } from \"@/utils.js\";\nimport {\n CodeVerifier,\n type CookieConfig,\n OAuthTokens,\n type TokensCookieConfig,\n} from \"@/shared/lib/types.js\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport { merge } from \"ts-deepmerge\";\n\nconst logger = loggers.nextjs.handlers.auth;\n\nexport type CookiesConfigObject = {\n tokens: TokensCookieConfig;\n user: CookieConfig;\n};\n\nexport type AuthConfigWithDefaults = {\n clientId: string;\n oauthServer: string;\n callbackUrl: string;\n loginUrl: string;\n logoutUrl: string;\n logoutCallbackUrl: string;\n challengeUrl: string;\n refreshUrl: string;\n include: string[];\n exclude: string[];\n cookies: CookiesConfigObject;\n};\n\n/**\n * All possible config values for Civic Auth\n */\nexport type OptionalAuthConfig = Partial<\n | AuthConfigWithDefaults\n | {\n cookies?: {\n tokens?: Partial<TokensCookieConfig>;\n user?: CookieConfig;\n };\n }\n>;\n\n/**\n * Configuration values that are required for Civic Auth to work.\n */\nexport type AuthConfig = OptionalAuthConfig & { clientId: string };\n\nconst defaultServerSecure = !(process.env.NODE_ENV === \"development\");\nconst defaultCookiesMaxAge = 60 * 60; // 1 hour\n\n/**\n * Default configuration values that will be used if not overridden\n */\nexport const defaultAuthConfig: Omit<AuthConfigWithDefaults, \"clientId\"> = {\n oauthServer: DEFAULT_AUTH_SERVER,\n callbackUrl: \"/api/auth/callback\",\n challengeUrl: \"/api/auth/challenge\",\n refreshUrl: \"/api/auth/refresh\",\n logoutUrl: \"/api/auth/logout\",\n logoutCallbackUrl: \"/api/auth/logoutcallback\",\n loginUrl: \"/\",\n include: [\"/*\"],\n exclude: [],\n cookies: {\n tokens: {\n [OAuthTokens.ID_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.ACCESS_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.REFRESH_TOKEN]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.EXPIRES_IN]: {\n secure: defaultServerSecure,\n httpOnly: false, // we need this to be available client-side\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [OAuthTokens.TIMESTAMP]: {\n secure: defaultServerSecure,\n httpOnly: false, // we need this to be available client-side\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [CodeVerifier.COOKIE_NAME]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n [CodeVerifier.APP_URL]: {\n secure: defaultServerSecure,\n httpOnly: true,\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n },\n user: {\n secure: defaultServerSecure,\n httpOnly: false, // we need this to be available client-side\n sameSite: \"strict\",\n path: \"/\",\n maxAge: defaultCookiesMaxAge,\n },\n },\n};\n\n/**\n * Resolves the authentication configuration by combining:\n * 1. Default values\n * 2. Environment variables (set internally by the plugin)\n * 3. Explicitly passed configuration\n *\n * Config will be merged deeply, with arrays not merged, so that the\n * default include list (for example) [\"/*\"] will not be added\n *\n * Note: Developers should not set _civic_auth_* environment variables directly.\n * Instead, pass configuration to the createCivicAuthPlugin in next.config.js:\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * callbackUrl: '/custom/callback',\n * })\n * ```\n */\nexport const resolveAuthConfig = (\n config: Partial<AuthConfig> = {},\n): AuthConfigWithDefaults => {\n // Read configuration that was set by the plugin via environment variables\n const configFromEnv = withoutUndefined({\n clientId: process.env._civic_auth_client_id,\n oauthServer: process.env._civic_oauth_server,\n callbackUrl: process.env._civic_auth_callback_url,\n challengeUrl: process.env._civic_auth_challenge_url,\n loginUrl: process.env._civic_auth_login_url,\n logoutUrl: process.env._civic_auth_logout_url,\n logoutCallbackUrl: process.env._civic_auth_logout_callback_url,\n include: process.env._civic_auth_includes?.split(\",\"),\n exclude: process.env._civic_auth_excludes?.split(\",\"),\n cookies: process.env._civic_auth_cookie_config\n ? JSON.parse(process.env._civic_auth_cookie_config)\n : undefined,\n }) as AuthConfig;\n\n // Perform a deep merge of the configurations\n const mergedConfig = merge.withOptions(\n { mergeArrays: false },\n defaultAuthConfig,\n configFromEnv,\n config,\n );\n\n logger.debug(\n \"Config from environment:\",\n JSON.stringify(configFromEnv, null, 2),\n );\n logger.debug(\"Resolved config:\", JSON.stringify(mergedConfig, null, 2));\n\n if (mergedConfig.clientId === undefined) {\n throw new Error(\"Civic Auth client ID is required\");\n }\n\n return mergedConfig as AuthConfigWithDefaults & { clientId: string };\n};\n\n/**\n * Creates a Next.js plugin that handles auth configuration.\n *\n * This is the main configuration point for the auth system.\n * Do not set _civic_auth_* environment variables directly - instead,\n * pass your configuration here.\n *\n * The only required field is clientId.\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * clientId: 'my-client-id',\n * });\n * ```\n *\n * @example\n * ```js\n * // next.config.js\n * export default createCivicAuthPlugin({\n * clientId: 'my-client-id',\n * callbackUrl: '/custom/callback',\n * loginUrl: '/custom/login',\n * logoutUrl: '/custom/logout',\n * logoutCallbackUrl: '/custom/logoutcallback',\n * include: ['/protected/*'],\n * exclude: ['/public/*']\n * })\n * ```\n *\n * The plugin sets internal environment variables that are used by\n * the auth system. These variables should not be set manually.\n */\nexport const createCivicAuthPlugin = (authConfig: AuthConfig) => {\n return (nextConfig?: NextConfig) => {\n logger.debug(\n \"createCivicAuthPlugin nextConfig\",\n JSON.stringify(nextConfig, null, 2),\n );\n const resolvedConfig = resolveAuthConfig(authConfig);\n return {\n ...nextConfig,\n env: {\n ...nextConfig?.env,\n // Internal environment variables - do not set these manually\n _civic_auth_client_id: resolvedConfig.clientId,\n _civic_oauth_server: resolvedConfig.oauthServer,\n _civic_auth_callback_url: resolvedConfig.callbackUrl,\n _civic_auth_challenge_url: resolvedConfig.challengeUrl,\n _civic_auth_login_url: resolvedConfig.loginUrl,\n _civic_auth_logout_url: resolvedConfig.logoutUrl,\n _civic_auth_logout_callback_url: resolvedConfig.logoutCallbackUrl,\n _civic_auth_includes: resolvedConfig.include.join(\",\"),\n _civic_auth_excludes: resolvedConfig.exclude.join(\",\"),\n _civic_auth_cookie_config: JSON.stringify(resolvedConfig.cookies),\n },\n };\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/nextjs/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD;;GAEG;AACH,QAAA,MAAM,kBAAkB,aACZ,QAAQ,eACL,WAAW,UAChB,UAAU,SA+BnB,CAAC;AAcF;;GAEG;AACH,QAAA,MAAM,oBAAoB,aACd,QAAQ,QACZ,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,eACnB,WAAW,UAChB,UAAU,SA4BnB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,gBAAgB,qBAKrB,CAAC;AAEF,KAAK,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAC1D,cAAM,mBAAoB,SAAQ,aAAa;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAAhD,MAAM,GAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAM;IAOpE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOxD;AAED,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../src/nextjs/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,QAAA,MAAM,kBAAkB,aACZ,QAAQ,eACL,WAAW,UAChB,UAAU,SA4BnB,CAAC;AAcF;;GAEG;AACH,QAAA,MAAM,oBAAoB,aACd,QAAQ,QACZ,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,eACnB,WAAW,UAChB,UAAU,SAyBnB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,gBAAgB,qBAIrB,CAAC;AAEF,KAAK,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAC1D,cAAM,mBAAoB,SAAQ,aAAa;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAAhD,MAAM,GAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAM;IAOpE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOxD;AAED,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,CAAC"}
@@ -1,51 +1,14 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.NextjsCookieStorage = exports.clearAuthCookies = exports.createUserInfoCookie = exports.createTokenCookies = void 0;
37
4
  const headers_js_1 = require("next/headers.js");
38
5
  const util_js_1 = require("../shared/lib/util.js");
39
6
  const storage_js_1 = require("../shared/lib/storage.js");
40
- const constants = __importStar(require("../constants.js"));
41
7
  /**
42
8
  * Creates HTTP-only cookies for authentication tokens
43
9
  */
44
10
  const createTokenCookies = (response, sessionData, config) => {
45
- const now = Math.floor(Date.now() / 1000);
46
- const maxAge = sessionData.accessTokenExpiresAt
47
- ? sessionData.accessTokenExpiresAt - now
48
- : constants.DEFAULT_EXPIRES_IN;
11
+ const maxAge = sessionData.expiresIn ?? 3600;
49
12
  const cookieOptions = {
50
13
  ...config.cookies?.tokens,
51
14
  maxAge,
@@ -85,10 +48,7 @@ const createUserInfoCookie = (response, user, sessionData, config) => {
85
48
  });
86
49
  return;
87
50
  }
88
- const now = Math.floor(Date.now() / 1000);
89
- const maxAge = sessionData.accessTokenExpiresAt
90
- ? sessionData.accessTokenExpiresAt - now
91
- : constants.DEFAULT_EXPIRES_IN;
51
+ const maxAge = sessionData.expiresIn ?? 3600;
92
52
  // TODO select fields to include in the user cookie
93
53
  const frontendUser = {
94
54
  ...user,
@@ -109,7 +69,6 @@ const clearAuthCookies = async () => {
109
69
  const cookieStorage = new NextjsCookieStorage(); // no cookie storage needed to simply clear it
110
70
  await (0, util_js_1.clearTokens)(cookieStorage);
111
71
  await (0, util_js_1.clearUser)(cookieStorage);
112
- await (0, util_js_1.clearAuthServerSession)(cookieStorage);
113
72
  };
114
73
  exports.clearAuthCookies = clearAuthCookies;
115
74
  class NextjsCookieStorage extends storage_js_1.CookieStorage {
@@ -1 +1 @@
1
- {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/nextjs/cookies.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SessionData, UnknownObject, User } from \"@/types.js\";\nimport type { AuthConfig } from \"@/nextjs/config.js\";\nimport { cookies } from \"next/headers.js\";\nimport {\n clearAuthServerSession,\n clearTokens,\n clearUser,\n} from \"@/shared/lib/util.js\";\nimport type { UserStorage } from \"@/shared/lib/types.js\";\nimport {\n type CodeVerifier,\n type CookieConfig,\n type OAuthTokens,\n} from \"@/shared/lib/types.js\";\nimport { CookieStorage } from \"@/shared/lib/storage.js\";\nimport * as constants from \"@/constants.js\";\n\n/**\n * Creates HTTP-only cookies for authentication tokens\n */\nconst createTokenCookies = (\n response: Response,\n sessionData: SessionData,\n config: AuthConfig,\n) => {\n const now = Math.floor(Date.now() / 1000);\n const maxAge = sessionData.accessTokenExpiresAt\n ? sessionData.accessTokenExpiresAt - now\n : constants.DEFAULT_EXPIRES_IN;\n const cookieOptions = {\n ...config.cookies?.tokens,\n maxAge,\n };\n\n if (sessionData.accessToken) {\n setCookie(response, \"access_token\", sessionData.accessToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n\n if (sessionData.idToken) {\n setCookie(response, \"id_token\", sessionData.idToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n\n if (sessionData.refreshToken) {\n setCookie(response, \"refresh_token\", sessionData.refreshToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n};\n\nconst setCookie = (\n response: Response,\n key: string,\n value: string,\n cookieData: CookieConfig,\n) => {\n response.headers.set(\n \"Set-Cookie\",\n `${key}=${value}; Path=${cookieData.path}; Domain=${cookieData.domain}; Max-Age=${cookieData.maxAge}; Secure; HttpOnly; SameSite=${cookieData.sameSite}`,\n );\n};\n\n/**\n * Creates a client-readable cookie with user info\n */\nconst createUserInfoCookie = (\n response: Response,\n user: User<UnknownObject> | null,\n sessionData: SessionData,\n config: AuthConfig,\n) => {\n if (!user) {\n // unset the \"user\" cookie\n setCookie(response, \"user\", \"\", {\n ...config.cookies?.user,\n maxAge: 0,\n });\n return;\n }\n const now = Math.floor(Date.now() / 1000);\n const maxAge = sessionData.accessTokenExpiresAt\n ? sessionData.accessTokenExpiresAt - now\n : constants.DEFAULT_EXPIRES_IN;\n\n // TODO select fields to include in the user cookie\n const frontendUser = {\n ...user,\n };\n\n // TODO make call to get user info from the\n // auth server /userinfo endpoint when it's available\n // then add to the default claims above\n\n setCookie(response, \"user\", JSON.stringify(frontendUser), {\n ...config.cookies?.user,\n maxAge,\n });\n};\n\n/**\n * Clears all authentication cookies on server. Note, this can only be called by the server\n */\nconst clearAuthCookies = async () => {\n const cookieStorage = new NextjsCookieStorage(); // no cookie storage needed to simply clear it\n await clearTokens(cookieStorage);\n await clearUser(cookieStorage);\n await clearAuthServerSession(cookieStorage);\n};\n\ntype KeySetter = OAuthTokens | CodeVerifier | UserStorage;\nclass NextjsCookieStorage extends CookieStorage {\n constructor(readonly config: Partial<Record<KeySetter, CookieConfig>> = {}) {\n super({\n secure: true,\n httpOnly: true,\n });\n }\n\n async get(key: string): Promise<string | null> {\n const cookieStore = await cookies();\n return cookieStore.get(key)?.value || null;\n }\n\n async set(key: KeySetter, value: string): Promise<void> {\n const cookieStore = await cookies();\n const cookieSettings = this.config?.[key as KeySetter] || {\n ...this.settings,\n };\n cookieStore.set(key, value, cookieSettings);\n }\n}\n\nexport {\n createTokenCookies,\n createUserInfoCookie,\n clearAuthCookies,\n NextjsCookieStorage,\n};\n"]}
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../../src/nextjs/cookies.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SessionData, UnknownObject, User } from \"@/types.js\";\nimport type { AuthConfig } from \"@/nextjs/config.js\";\nimport { cookies } from \"next/headers.js\";\nimport { clearTokens, clearUser } from \"@/shared/lib/util.js\";\nimport type { UserStorage } from \"@/shared/lib/types.js\";\nimport {\n type CodeVerifier,\n type CookieConfig,\n type OAuthTokens,\n} from \"@/shared/lib/types.js\";\nimport { CookieStorage } from \"@/shared/lib/storage.js\";\n\n/**\n * Creates HTTP-only cookies for authentication tokens\n */\nconst createTokenCookies = (\n response: Response,\n sessionData: SessionData,\n config: AuthConfig,\n) => {\n const maxAge = sessionData.expiresIn ?? 3600;\n const cookieOptions = {\n ...config.cookies?.tokens,\n maxAge,\n };\n\n if (sessionData.accessToken) {\n setCookie(response, \"access_token\", sessionData.accessToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n\n if (sessionData.idToken) {\n setCookie(response, \"id_token\", sessionData.idToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n\n if (sessionData.refreshToken) {\n setCookie(response, \"refresh_token\", sessionData.refreshToken, {\n ...cookieOptions,\n httpOnly: true,\n });\n }\n};\n\nconst setCookie = (\n response: Response,\n key: string,\n value: string,\n cookieData: CookieConfig,\n) => {\n response.headers.set(\n \"Set-Cookie\",\n `${key}=${value}; Path=${cookieData.path}; Domain=${cookieData.domain}; Max-Age=${cookieData.maxAge}; Secure; HttpOnly; SameSite=${cookieData.sameSite}`,\n );\n};\n\n/**\n * Creates a client-readable cookie with user info\n */\nconst createUserInfoCookie = (\n response: Response,\n user: User<UnknownObject> | null,\n sessionData: SessionData,\n config: AuthConfig,\n) => {\n if (!user) {\n // unset the \"user\" cookie\n setCookie(response, \"user\", \"\", {\n ...config.cookies?.user,\n maxAge: 0,\n });\n return;\n }\n const maxAge = sessionData.expiresIn ?? 3600;\n\n // TODO select fields to include in the user cookie\n const frontendUser = {\n ...user,\n };\n\n // TODO make call to get user info from the\n // auth server /userinfo endpoint when it's available\n // then add to the default claims above\n\n setCookie(response, \"user\", JSON.stringify(frontendUser), {\n ...config.cookies?.user,\n maxAge,\n });\n};\n\n/**\n * Clears all authentication cookies on server. Note, this can only be called by the server\n */\nconst clearAuthCookies = async () => {\n const cookieStorage = new NextjsCookieStorage(); // no cookie storage needed to simply clear it\n await clearTokens(cookieStorage);\n await clearUser(cookieStorage);\n};\n\ntype KeySetter = OAuthTokens | CodeVerifier | UserStorage;\nclass NextjsCookieStorage extends CookieStorage {\n constructor(readonly config: Partial<Record<KeySetter, CookieConfig>> = {}) {\n super({\n secure: true,\n httpOnly: true,\n });\n }\n\n async get(key: string): Promise<string | null> {\n const cookieStore = await cookies();\n return cookieStore.get(key)?.value || null;\n }\n\n async set(key: KeySetter, value: string): Promise<void> {\n const cookieStore = await cookies();\n const cookieSettings = this.config?.[key as KeySetter] || {\n ...this.settings,\n };\n cookieStore.set(key, value, cookieSettings);\n }\n}\n\nexport {\n createTokenCookies,\n createUserInfoCookie,\n clearAuthCookies,\n NextjsCookieStorage,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI,SA0C9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI,SA2C9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -4,10 +4,14 @@ exports.useRefresh = void 0;
4
4
  const useCivicAuthConfig_js_1 = require("../../shared/hooks/useCivicAuthConfig.js");
5
5
  const react_1 = require("react");
6
6
  const NextClientAuthenticationRefresher_js_1 = require("../../nextjs/NextClientAuthenticationRefresher.js");
7
- const index_js_1 = require("../../shared/index.js");
8
- const config_js_1 = require("../config.js");
7
+ const config_js_1 = require("../../nextjs/config.js");
8
+ const cookies_js_1 = require("../../lib/cookies.js");
9
9
  const useRefresh = (session) => {
10
10
  const authConfig = (0, useCivicAuthConfig_js_1.useCivicAuthConfig)();
11
+ const storage = (0, react_1.useMemo)(() => {
12
+ const config = (0, config_js_1.resolveAuthConfig)(authConfig ?? {});
13
+ return new cookies_js_1.BrowserCookieStorage(config?.cookies?.tokens ?? {});
14
+ }, [authConfig]);
11
15
  // setup token autorefresh
12
16
  const [refresher, setRefresher] = (0, react_1.useState)(undefined);
13
17
  (0, react_1.useEffect)(() => {
@@ -15,8 +19,6 @@ const useRefresh = (session) => {
15
19
  return;
16
20
  const abortController = new AbortController();
17
21
  const currentRefresher = refresher;
18
- const config = (0, config_js_1.resolveAuthConfig)(authConfig ?? {});
19
- const storage = new index_js_1.BrowserCookieStorage(config.cookies.tokens.access_token);
20
22
  NextClientAuthenticationRefresher_js_1.NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then((newRefresher) => {
21
23
  if (abortController.signal.aborted)
22
24
  return;
@@ -28,7 +30,7 @@ const useRefresh = (session) => {
28
30
  currentRefresher?.clearAutorefresh();
29
31
  };
30
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
31
- }, [authConfig]); // Only depend on what actually changes
33
+ }, [authConfig, storage]); // Only depend on what actually changes
32
34
  (0, react_1.useEffect)(() => {
33
35
  if (session?.authenticated) {
34
36
  refresher?.setupAutorefresh();
@@ -1 +1 @@
1
- {"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":";;;AAAA,gFAA0E;AAE1E,iCAA4C;AAC5C,wGAAkG;AAClG,gDAAyD;AACzD,4CAAiD;AAEjD,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,IAAA,0CAAkB,GAAE,CAAC;IAExC,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAExC,SAAS,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QACnC,MAAM,MAAM,GAAG,IAAA,6BAAiB,EAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,+BAAoB,CACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACnC,CAAC;QAEF,wEAAiC,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,YAAY,EAAE,EAAE;YACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAEzD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEO,gCAAU","sourcesContent":["import { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { useEffect, useState } from \"react\";\nimport { NextClientAuthenticationRefresher } from \"@/nextjs/NextClientAuthenticationRefresher.js\";\nimport { BrowserCookieStorage } from \"@/shared/index.js\";\nimport { resolveAuthConfig } from \"../config.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n NextClientAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n const config = resolveAuthConfig(authConfig ?? {});\n const storage = new BrowserCookieStorage(\n config.cookies.tokens.access_token,\n );\n\n NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then(\n (newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\n },\n );\n\n return () => {\n abortController.abort();\n currentRefresher?.clearAutorefresh();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authConfig]); // Only depend on what actually changes\n\n useEffect(() => {\n if (session?.authenticated) {\n refresher?.setupAutorefresh();\n } else {\n refresher?.clearAutorefresh();\n }\n\n return () => refresher?.clearAutorefresh();\n }, [refresher, session?.authenticated]);\n};\n\nexport { useRefresh };\n"]}
1
+ {"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../../src/nextjs/hooks/useRefresh.ts"],"names":[],"mappings":";;;AAAA,gFAA0E;AAE1E,iCAAqD;AACrD,wGAAkG;AAClG,kDAAuD;AACvD,iDAAwD;AAExD,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,IAAA,0CAAkB,GAAE,CAAC;IAExC,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC3B,MAAM,MAAM,GAAG,IAAA,6BAAiB,EAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,iCAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAExC,SAAS,CAAC,CAAC;IAEb,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAEnC,wEAAiC,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CACtE,CAAC,YAAY,EAAE,EAAE;YACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QAEF,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAElE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEO,gCAAU","sourcesContent":["import { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { NextClientAuthenticationRefresher } from \"@/nextjs/NextClientAuthenticationRefresher.js\";\nimport { resolveAuthConfig } from \"@/nextjs/config.js\";\nimport { BrowserCookieStorage } from \"@/lib/cookies.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n\n const storage = useMemo(() => {\n const config = resolveAuthConfig(authConfig ?? {});\n return new BrowserCookieStorage(config?.cookies?.tokens ?? {});\n }, [authConfig]);\n\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n NextClientAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n\n NextClientAuthenticationRefresher.build({ ...authConfig }, storage).then(\n (newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\n },\n );\n\n return () => {\n abortController.abort();\n currentRefresher?.clearAutorefresh();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authConfig, storage]); // Only depend on what actually changes\n\n useEffect(() => {\n if (session?.authenticated) {\n refresher?.setupAutorefresh();\n } else {\n refresher?.clearAutorefresh();\n }\n\n return () => refresher?.clearAutorefresh();\n }, [refresher, session?.authenticated]);\n};\n\nexport { useRefresh };\n"]}
@@ -1,6 +1,8 @@
1
+ import { type ClaimOptions } from "../shared/lib/session.js";
1
2
  import type { OAuthTokens, User } from "../types.js";
2
3
  export { createCivicAuthPlugin, defaultAuthConfig } from "../nextjs/config.js";
3
- export declare const getUser: () => Promise<User | null>;
4
+ export declare const getClaim: (userinfoEndpoint: string, claimName: string, options?: ClaimOptions) => Promise<string | null>;
5
+ export declare const getUser: (options?: ClaimOptions, userinfoEndpoint?: string) => Promise<User | null>;
4
6
  export declare const getTokens: () => Promise<OAuthTokens | null>;
5
7
  export { handler } from "../nextjs/routeHandler.js";
6
8
  export { NextjsCookieStorage } from "../nextjs/cookies.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,GAAG,IAAI,CAGnD,CAAC;AACF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAG5D,CAAC;AACF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,IAAI,iBAAiB,EAC1C,KAAK,0BAA0B,IAAI,iBAAiB,GACrD,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,eAAO,MAAM,QAAQ,qBACD,MAAM,aACb,MAAM,YACR,YAAY,KACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAGvB,CAAC;AACF,eAAO,MAAM,OAAO,aACT,YAAY,qBACF,MAAM,KACxB,OAAO,CAAC,IAAI,GAAG,IAAI,CAGrB,CAAC;AACF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,WAAW,GAAG,IAAI,CAG5D,CAAC;AACF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,IAAI,iBAAiB,EAC1C,KAAK,0BAA0B,IAAI,iBAAiB,GACrD,MAAM,wCAAwC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CivicAuthProvider = exports.NextjsCookieStorage = exports.handler = exports.getTokens = exports.getUser = exports.defaultAuthConfig = exports.createCivicAuthPlugin = void 0;
3
+ exports.CivicAuthProvider = exports.NextjsCookieStorage = exports.handler = exports.getTokens = exports.getUser = exports.getClaim = exports.defaultAuthConfig = exports.createCivicAuthPlugin = void 0;
4
4
  const cookies_js_1 = require("../nextjs/cookies.js");
5
5
  const index_js_1 = require("../shared/index.js");
6
6
  (0, index_js_1.printVersion)();
@@ -8,9 +8,14 @@ const session_js_1 = require("../shared/lib/session.js");
8
8
  var config_js_1 = require("../nextjs/config.js");
9
9
  Object.defineProperty(exports, "createCivicAuthPlugin", { enumerable: true, get: function () { return config_js_1.createCivicAuthPlugin; } });
10
10
  Object.defineProperty(exports, "defaultAuthConfig", { enumerable: true, get: function () { return config_js_1.defaultAuthConfig; } });
11
- const getUser = async () => {
11
+ const getClaim = async (userinfoEndpoint, claimName, options = session_js_1.defaultClaimOptions) => {
12
12
  const clientStorage = new cookies_js_1.NextjsCookieStorage();
13
- return (0, session_js_1.getUser)(clientStorage);
13
+ return (0, session_js_1.getClaim)(clientStorage, claimName, options, userinfoEndpoint);
14
+ };
15
+ exports.getClaim = getClaim;
16
+ const getUser = async (options = session_js_1.defaultClaimOptions, userinfoEndpoint) => {
17
+ const clientStorage = new cookies_js_1.NextjsCookieStorage();
18
+ return (0, session_js_1.getUser)(clientStorage, options, userinfoEndpoint);
14
19
  };
15
20
  exports.getUser = getUser;
16
21
  const getTokens = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0D;AAC1D,gDAAiD;AACjD,IAAA,uBAAY,GAAE,CAAC;AACf,wDAGiC;AAGjC,gDAA8E;AAArE,kHAAA,qBAAqB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAE1C,MAAM,OAAO,GAAG,KAAK,IAA0B,EAAE;IACtD,MAAM,aAAa,GAAG,IAAI,gCAAmB,EAAE,CAAC;IAChD,OAAO,IAAA,oBAAc,EAAC,aAAa,CAAC,CAAC;AACvC,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AACK,MAAM,SAAS,GAAG,KAAK,IAAiC,EAAE;IAC/D,MAAM,aAAa,GAAG,IAAI,gCAAmB,EAAE,CAAC;IAChD,OAAO,IAAA,sBAAgB,EAAC,aAAa,CAAC,CAAC;AACzC,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB;AACF,4DAAmD;AAA1C,0GAAA,OAAO,OAAA;AAChB,kDAA0D;AAAjD,iHAAA,mBAAmB,OAAA;AAM5B,8EAGgD;AAF9C,wHAAA,qBAAqB,OAAqB","sourcesContent":["import { NextjsCookieStorage } from \"@/nextjs/cookies.js\";\nimport { printVersion } from \"@/shared/index.js\";\nprintVersion();\nimport {\n getTokens as getSessionTokens,\n getUser as getSessionUser,\n} from \"@/shared/lib/session.js\";\nimport type { OAuthTokens, User } from \"@/types.js\";\n\nexport { createCivicAuthPlugin, defaultAuthConfig } from \"@/nextjs/config.js\";\n\nexport const getUser = async (): Promise<User | null> => {\n const clientStorage = new NextjsCookieStorage();\n return getSessionUser(clientStorage);\n};\nexport const getTokens = async (): Promise<OAuthTokens | null> => {\n const clientStorage = new NextjsCookieStorage();\n return getSessionTokens(clientStorage);\n};\nexport { handler } from \"@/nextjs/routeHandler.js\";\nexport { NextjsCookieStorage } from \"@/nextjs/cookies.js\";\nexport type {\n AuthConfig,\n CookiesConfigObject,\n AuthConfigWithDefaults,\n} from \"@/nextjs/config.js\";\nexport {\n CivicNextAuthProvider as CivicAuthProvider,\n type NextCivicAuthProviderProps as AuthProviderProps,\n} from \"@/nextjs/providers/NextAuthProvider.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nextjs/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0D;AAC1D,gDAAiD;AACjD,IAAA,uBAAY,GAAE,CAAC;AACf,wDAMiC;AAGjC,gDAA8E;AAArE,kHAAA,qBAAqB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAE1C,MAAM,QAAQ,GAAG,KAAK,EAC3B,gBAAwB,EACxB,SAAiB,EACjB,UAAwB,gCAAmB,EACnB,EAAE;IAC1B,MAAM,aAAa,GAAG,IAAI,gCAAmB,EAAE,CAAC;IAChD,OAAO,IAAA,qBAAe,EAAC,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC9E,CAAC,CAAC;AAPW,QAAA,QAAQ,YAOnB;AACK,MAAM,OAAO,GAAG,KAAK,EAC1B,UAAwB,gCAAmB,EAC3C,gBAAyB,EACH,EAAE;IACxB,MAAM,aAAa,GAAG,IAAI,gCAAmB,EAAE,CAAC;IAChD,OAAO,IAAA,oBAAc,EAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAClE,CAAC,CAAC;AANW,QAAA,OAAO,WAMlB;AACK,MAAM,SAAS,GAAG,KAAK,IAAiC,EAAE;IAC/D,MAAM,aAAa,GAAG,IAAI,gCAAmB,EAAE,CAAC;IAChD,OAAO,IAAA,sBAAgB,EAAC,aAAa,CAAC,CAAC;AACzC,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB;AACF,4DAAmD;AAA1C,0GAAA,OAAO,OAAA;AAChB,kDAA0D;AAAjD,iHAAA,mBAAmB,OAAA;AAM5B,8EAGgD;AAF9C,wHAAA,qBAAqB,OAAqB","sourcesContent":["import { NextjsCookieStorage } from \"@/nextjs/cookies.js\";\nimport { printVersion } from \"@/shared/index.js\";\nprintVersion();\nimport {\n getTokens as getSessionTokens,\n getUser as getSessionUser,\n getClaim as getSessionClaim,\n type ClaimOptions,\n defaultClaimOptions,\n} from \"@/shared/lib/session.js\";\nimport type { OAuthTokens, User } from \"@/types.js\";\n\nexport { createCivicAuthPlugin, defaultAuthConfig } from \"@/nextjs/config.js\";\n\nexport const getClaim = async (\n userinfoEndpoint: string,\n claimName: string,\n options: ClaimOptions = defaultClaimOptions,\n): Promise<string | null> => {\n const clientStorage = new NextjsCookieStorage();\n return getSessionClaim(clientStorage, claimName, options, userinfoEndpoint);\n};\nexport const getUser = async (\n options: ClaimOptions = defaultClaimOptions,\n userinfoEndpoint?: string,\n): Promise<User | null> => {\n const clientStorage = new NextjsCookieStorage();\n return getSessionUser(clientStorage, options, userinfoEndpoint);\n};\nexport const getTokens = async (): Promise<OAuthTokens | null> => {\n const clientStorage = new NextjsCookieStorage();\n return getSessionTokens(clientStorage);\n};\nexport { handler } from \"@/nextjs/routeHandler.js\";\nexport { NextjsCookieStorage } from \"@/nextjs/cookies.js\";\nexport type {\n AuthConfig,\n CookiesConfigObject,\n AuthConfigWithDefaults,\n} from \"@/nextjs/config.js\";\nexport {\n CivicNextAuthProvider as CivicAuthProvider,\n type NextCivicAuthProviderProps as AuthProviderProps,\n} from \"@/nextjs/providers/NextAuthProvider.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"routeHandler.d.ts","sourceRoot":"","sources":["../../../src/nextjs/routeHandler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA0Q9C,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CA2DvB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,iCAEF,WAAW,KAAG,OAAO,CAAC,YAAY,CAkCjD,CAAC"}
1
+ {"version":3,"file":"routeHandler.d.ts","sourceRoot":"","sources":["../../../src/nextjs/routeHandler.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAYrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA0Q9C,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,YAAY,CAAC,CA8DvB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,iCAEF,WAAW,KAAG,OAAO,CAAC,YAAY,CAkCjD,CAAC"}
@@ -68,12 +68,12 @@ async function performTokenExchangeAndSetCookies(config, code, state, appUrl) {
68
68
  logger.error("Token exchange failed:", error);
69
69
  throw new AuthError("Failed to authenticate user", 401);
70
70
  }
71
- const user = await (0, index_js_1.getUser)();
71
+ const user = await (0, index_js_1.getUser)({ allClaims: false, localOnly: true });
72
72
  if (!user) {
73
73
  throw new AuthError("Failed to get user info", 401);
74
74
  }
75
75
  const userSession = new UserSession_js_1.GenericUserSession(cookieStorage);
76
- await userSession.set(user);
76
+ userSession.set(user);
77
77
  }
78
78
  async function handleRefresh(request, config) {
79
79
  const resolvedConfigs = (0, config_js_1.resolveAuthConfig)(config);
@@ -213,18 +213,13 @@ const revalidateUrlPath = async (url) => {
213
213
  };
214
214
  async function handleLogout(request, config) {
215
215
  const resolvedConfigs = (0, config_js_1.resolveAuthConfig)(config);
216
- const postLogoutUrl = new URL(resolvedConfigs.logoutCallbackUrl, getAppUrl(request) || request.url);
217
216
  // read the id_token from the cookies
218
217
  const idToken = await getIdToken(resolvedConfigs);
219
218
  // read the state from the query parameters
220
219
  const state = request.nextUrl.searchParams.get("state");
221
- if (!state || !idToken) {
222
- logger.error("handleLogout: missing state or idToken", { state, idToken });
223
- // if token or state is missing, the logout call to the server will fail,
224
- // (token has potentially expired already) so go straight to the postLogoutUrl
225
- // so the user can be signed out.
226
- return server_js_1.NextResponse.redirect(`${postLogoutUrl}`);
227
- }
220
+ if (!state || !idToken)
221
+ throw new AuthError(`Bad parameters`, 400);
222
+ const postLogoutUrl = new URL(resolvedConfigs.logoutCallbackUrl, getAppUrl(request) || request.url);
228
223
  const logoutUrl = await (0, util_js_1.generateOauthLogoutUrl)({
229
224
  clientId: resolvedConfigs.clientId,
230
225
  idToken,
@@ -237,9 +232,13 @@ async function handleLogout(request, config) {
237
232
  async function handleLogoutCallback(request, config) {
238
233
  const resolvedConfigs = (0, config_js_1.resolveAuthConfig)(config);
239
234
  const state = request.nextUrl.searchParams.get("state") || "";
235
+ if (!state)
236
+ throw new AuthError("Bad parameters", 400);
240
237
  const displayMode = (0, oauth_js_1.displayModeFromState)(state, "iframe");
241
238
  const canAccessCookies = !!(await getIdToken(resolvedConfigs));
242
- await (0, cookies_js_1.clearAuthCookies)();
239
+ if (canAccessCookies) {
240
+ await (0, cookies_js_1.clearAuthCookies)();
241
+ }
243
242
  let response;
244
243
  // handle logout for iframe display mode
245
244
  if (displayMode === "iframe") {