@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
@@ -26,12 +26,10 @@ export declare function generateOauthLogoutUrl(config: {
26
26
  }): Promise<URL>;
27
27
  export declare function buildOauth2Client(clientId: string, redirectUri: string, endpoints: Endpoints): OAuth2Client;
28
28
  export declare function exchangeTokens(code: string, state: string, pkceProducer: PKCEProducer, oauth2Client: OAuth2Client, oauthServer: string, endpoints: Endpoints): Promise<OIDCTokenResponseBody>;
29
- export declare function setAccessTokenExpiresAt(storage: AuthStorage, tokens: OIDCTokenResponseBody): Promise<void>;
30
29
  export declare function storeTokens(storage: AuthStorage, tokens: OIDCTokenResponseBody): Promise<void>;
31
30
  export declare function clearTokens(storage: AuthStorage): Promise<void>;
32
- export declare function clearAuthServerSession(storage: AuthStorage): Promise<void>;
33
31
  export declare function clearUser(storage: AuthStorage): Promise<void>;
34
32
  export declare function retrieveTokens(storage: AuthStorage): Promise<OIDCTokenResponseBody | null>;
35
- export declare function retrieveAccessTokenExpiresAt(storage: AuthStorage): Promise<number>;
33
+ export declare function retrieveTokenExpiration(storage: AuthStorage): Promise<string | null>;
36
34
  export declare function validateOauth2Tokens(tokens: OIDCTokenResponseBody, endpoints: Endpoints, oauth2Client: OAuth2Client, issuer: string): Promise<ParsedTokens>;
37
35
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAItE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,GAAG,MAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,OAAO,CAAC,SAAS,CAAM,GACzC,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CA2Bf;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC,GAAG,CAAC,CAcf;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,GACnB,YAAY,CAId;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,kCAoBrB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAkB9B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAS9B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAKrD;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,iBAEhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,iBAGnD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAmBvC;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,OAAO,GAAG,MAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,iBAAiB,GAAE,OAAO,CAAC,SAAS,CAAM,GACzC,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CA2Bf;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACxC,GAAG,OAAO,CAAC,GAAG,CAAC,CAcf;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,GACnB,YAAY,CAId;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,kCAoBrB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAY9B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAKrD;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,iBAGnD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgBvC;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,WAAW,0BAEjE;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,qBAAqB,EAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
@@ -1,10 +1,9 @@
1
- import { AUTH_SERVER_SESSION, OAuthTokens } from "./types.js";
1
+ import { OAuthTokens } from "./types.js";
2
2
  import { OAuth2Client } from "oslo/oauth2";
3
3
  import { getIssuerVariations, getOauthEndpoints } from "../../lib/oauth.js";
4
4
  import * as jose from "jose";
5
5
  import { withoutUndefined } from "../../utils.js";
6
6
  import { GenericUserSession } from "../../shared/lib/UserSession.js";
7
- import { parseJWT } from "oslo/jwt";
8
7
  /**
9
8
  * Given a PKCE code verifier, derive the code challenge using SHA
10
9
  */
@@ -79,20 +78,6 @@ export async function exchangeTokens(code, state, pkceProducer, oauth2Client, oa
79
78
  }
80
79
  return tokens;
81
80
  }
82
- export async function setAccessTokenExpiresAt(storage, tokens) {
83
- // try to extract absolut expiry time from access token but fallback to calculation if not possible
84
- const parsedAccessToken = parseJWT(tokens.access_token);
85
- if (parsedAccessToken && parsedAccessToken?.expiresAt) {
86
- await storage.set(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT, parsedAccessToken.expiresAt?.getTime().toString());
87
- }
88
- else if (tokens.expires_in) {
89
- const now = Math.floor(new Date().getTime() / 1000);
90
- await storage.set(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT, (now + tokens.expires_in).toString());
91
- }
92
- else {
93
- throw new Error("Cannot determine access token expiry!");
94
- }
95
- }
96
81
  export async function storeTokens(storage, tokens) {
97
82
  // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )
98
83
  await storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);
@@ -100,7 +85,10 @@ export async function storeTokens(storage, tokens) {
100
85
  if (tokens.refresh_token) {
101
86
  await storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);
102
87
  }
103
- await setAccessTokenExpiresAt(storage, tokens);
88
+ if (tokens.expires_in) {
89
+ await storage.set(OAuthTokens.EXPIRES_IN, tokens.expires_in.toString());
90
+ await storage.set(OAuthTokens.TIMESTAMP, new Date().getTime().toString());
91
+ }
104
92
  }
105
93
  export async function clearTokens(storage) {
106
94
  const clearOAuthPromises = Object.values(OAuthTokens).map(async (key) => {
@@ -108,9 +96,6 @@ export async function clearTokens(storage) {
108
96
  });
109
97
  await Promise.all([...clearOAuthPromises]);
110
98
  }
111
- export async function clearAuthServerSession(storage) {
112
- await storage.set(AUTH_SERVER_SESSION, "");
113
- }
114
99
  export async function clearUser(storage) {
115
100
  const userSession = new GenericUserSession(storage);
116
101
  await userSession.set(null);
@@ -119,20 +104,20 @@ export async function retrieveTokens(storage) {
119
104
  const idToken = await storage.get(OAuthTokens.ID_TOKEN);
120
105
  const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);
121
106
  const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);
122
- const accessTokenExpiresAt = await storage.get(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT);
107
+ const expiresIn = await storage.get(OAuthTokens.EXPIRES_IN);
108
+ const timestamp = await storage.get(OAuthTokens.TIMESTAMP);
123
109
  if (!idToken || !accessToken)
124
110
  return null;
125
111
  return {
126
112
  id_token: idToken,
127
113
  access_token: accessToken,
128
114
  refresh_token: refreshToken ?? undefined,
129
- access_token_expires_at: accessTokenExpiresAt !== null
130
- ? parseInt(accessTokenExpiresAt, 10)
131
- : undefined, // Convert string to number
115
+ expires_in: expiresIn ? parseInt(expiresIn, 10) : undefined, // Convert string to number
116
+ timestamp: timestamp ? parseInt(timestamp, 10) : undefined, // Convert string to number
132
117
  };
133
118
  }
134
- export async function retrieveAccessTokenExpiresAt(storage) {
135
- return Number(await storage.get(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT));
119
+ export async function retrieveTokenExpiration(storage) {
120
+ return await storage.get(OAuthTokens.EXPIRES_IN);
136
121
  }
137
122
  export async function validateOauth2Tokens(tokens, endpoints, oauth2Client, issuer) {
138
123
  const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/shared/lib/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Utility functions shared by auth server and client integrations\n// Typically these functions should be used inside AuthenticationInitiator and AuthenticationResolver implementations\nimport type {\n AuthStorage,\n Endpoints,\n JWTPayload,\n OIDCTokenResponseBody,\n ParsedTokens,\n} from \"@/types.js\";\nimport { AUTH_SERVER_SESSION, OAuthTokens } from \"./types.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport { getIssuerVariations, getOauthEndpoints } from \"@/lib/oauth.js\";\nimport * as jose from \"jose\";\nimport { withoutUndefined } from \"@/utils.js\";\nimport type { PKCEConsumer, PKCEProducer } from \"@/services/types.js\";\nimport { GenericUserSession } from \"@/shared/lib/UserSession.js\";\nimport { parseJWT } from \"oslo/jwt\";\n\n/**\n * Given a PKCE code verifier, derive the code challenge using SHA\n */\nexport async function deriveCodeChallenge(\n codeVerifier: string,\n method: \"Plain\" | \"S256\" = \"S256\",\n): Promise<string> {\n if (method === \"Plain\") {\n console.warn(\"Using insecure plain code challenge method\");\n return codeVerifier;\n }\n\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest(\"SHA-256\", data);\n return btoa(String.fromCharCode(...new Uint8Array(digest)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nexport async function getEndpointsWithOverrides(\n oauthServer: string,\n endpointOverrides: Partial<Endpoints> = {},\n): Promise<Endpoints> {\n const endpoints = await getOauthEndpoints(oauthServer);\n return {\n ...endpoints,\n ...endpointOverrides,\n };\n}\n\nexport async function generateOauthLoginUrl(config: {\n clientId: string;\n scopes: string[];\n state: string;\n redirectUrl: string;\n oauthServer: string;\n nonce?: string;\n endpointOverrides?: Partial<Endpoints>;\n // used to get the PKCE challenge\n pkceConsumer: PKCEConsumer;\n}): Promise<URL> {\n const endpoints = await getEndpointsWithOverrides(\n config.oauthServer,\n config.endpointOverrides,\n );\n const oauth2Client = buildOauth2Client(\n config.clientId,\n config.redirectUrl,\n endpoints,\n );\n const challenge = await config.pkceConsumer.getCodeChallenge();\n const oAuthUrl = await oauth2Client.createAuthorizationURL({\n state: config.state,\n scopes: config.scopes,\n });\n // The OAuth2 client supports PKCE, but does not allow passing in a code challenge from some other source\n // It only allows passing in a code verifier which it then hashes itself.\n oAuthUrl.searchParams.append(\"code_challenge\", challenge);\n oAuthUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n if (config.nonce) {\n // nonce isn't supported by oslo, so we add it manually\n oAuthUrl.searchParams.append(\"nonce\", config.nonce);\n }\n // Required by the auth server for offline_access scope\n oAuthUrl.searchParams.append(\"prompt\", \"consent\");\n\n return oAuthUrl;\n}\n\nexport async function generateOauthLogoutUrl(config: {\n clientId: string;\n redirectUrl: string;\n idToken: string;\n state: string;\n oauthServer: string;\n endpointOverrides?: Partial<Endpoints>;\n}): Promise<URL> {\n const endpoints = await getEndpointsWithOverrides(\n config.oauthServer,\n config.endpointOverrides,\n );\n const endSessionUrl = new URL(endpoints.endsession);\n endSessionUrl.searchParams.append(\"client_id\", config.clientId);\n endSessionUrl.searchParams.append(\"id_token_hint\", config.idToken);\n endSessionUrl.searchParams.append(\"state\", config.state);\n endSessionUrl.searchParams.append(\n \"post_logout_redirect_uri\",\n config.redirectUrl,\n );\n return endSessionUrl;\n}\n\nexport function buildOauth2Client(\n clientId: string,\n redirectUri: string,\n endpoints: Endpoints,\n): OAuth2Client {\n return new OAuth2Client(clientId, endpoints.auth, endpoints.token, {\n redirectURI: redirectUri,\n });\n}\n\nexport async function exchangeTokens(\n code: string,\n state: string,\n pkceProducer: PKCEProducer,\n oauth2Client: OAuth2Client,\n oauthServer: string,\n endpoints: Endpoints,\n) {\n const codeVerifier = await pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in state\");\n\n const tokens =\n await oauth2Client.validateAuthorizationCode<OIDCTokenResponseBody>(code, {\n codeVerifier,\n });\n\n // Validate relevant tokens\n try {\n await validateOauth2Tokens(tokens, endpoints, oauth2Client, oauthServer);\n } catch (error) {\n console.error(\"tokenExchange error\", { error, tokens });\n throw new Error(\n `OIDC tokens validation failed: ${(error as Error).message}`,\n );\n }\n return tokens;\n}\n\nexport async function setAccessTokenExpiresAt(\n storage: AuthStorage,\n tokens: OIDCTokenResponseBody,\n) {\n // try to extract absolut expiry time from access token but fallback to calculation if not possible\n const parsedAccessToken = parseJWT(tokens.access_token);\n if (parsedAccessToken && parsedAccessToken?.expiresAt) {\n await storage.set(\n OAuthTokens.ACCESS_TOKEN_EXPIRES_AT,\n parsedAccessToken.expiresAt?.getTime().toString(),\n );\n } else if (tokens.expires_in) {\n const now = Math.floor(new Date().getTime() / 1000);\n await storage.set(\n OAuthTokens.ACCESS_TOKEN_EXPIRES_AT,\n (now + tokens.expires_in).toString(),\n );\n } else {\n throw new Error(\"Cannot determine access token expiry!\");\n }\n}\n\nexport async function storeTokens(\n storage: AuthStorage,\n tokens: OIDCTokenResponseBody,\n) {\n // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )\n await storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);\n await storage.set(OAuthTokens.ACCESS_TOKEN, tokens.access_token);\n if (tokens.refresh_token) {\n await storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);\n }\n await setAccessTokenExpiresAt(storage, tokens);\n}\n\nexport async function clearTokens(storage: AuthStorage) {\n const clearOAuthPromises = Object.values(OAuthTokens).map(async (key) => {\n await storage.set(key, \"\");\n });\n await Promise.all([...clearOAuthPromises]);\n}\n\nexport async function clearAuthServerSession(storage: AuthStorage) {\n await storage.set(AUTH_SERVER_SESSION, \"\");\n}\n\nexport async function clearUser(storage: AuthStorage) {\n const userSession = new GenericUserSession(storage);\n await userSession.set(null);\n}\n\nexport async function retrieveTokens(\n storage: AuthStorage,\n): Promise<OIDCTokenResponseBody | null> {\n const idToken = await storage.get(OAuthTokens.ID_TOKEN);\n const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);\n const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);\n const accessTokenExpiresAt = await storage.get(\n OAuthTokens.ACCESS_TOKEN_EXPIRES_AT,\n );\n\n if (!idToken || !accessToken) return null;\n\n return {\n id_token: idToken,\n access_token: accessToken,\n refresh_token: refreshToken ?? undefined,\n access_token_expires_at:\n accessTokenExpiresAt !== null\n ? parseInt(accessTokenExpiresAt, 10)\n : undefined, // Convert string to number\n };\n}\n\nexport async function retrieveAccessTokenExpiresAt(\n storage: AuthStorage,\n): Promise<number> {\n return Number(await storage.get(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT));\n}\n\nexport async function validateOauth2Tokens(\n tokens: OIDCTokenResponseBody,\n endpoints: Endpoints,\n oauth2Client: OAuth2Client,\n issuer: string,\n): Promise<ParsedTokens> {\n const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));\n\n // validate the ID token\n const idTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.id_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n audience: oauth2Client.clientId,\n },\n );\n\n // validate the access token\n const accessTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.access_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n },\n );\n\n return withoutUndefined({\n id_token: idTokenResponse.payload,\n access_token: accessTokenResponse.payload,\n refresh_token: tokens.refresh_token,\n });\n}\n"]}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/shared/lib/util.ts"],"names":[],"mappings":"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","sourcesContent":["// Utility functions shared by auth server and client integrations\n// Typically these functions should be used inside AuthenticationInitiator and AuthenticationResolver implementations\nimport type {\n AuthStorage,\n Endpoints,\n JWTPayload,\n OIDCTokenResponseBody,\n ParsedTokens,\n} from \"@/types.js\";\nimport { OAuthTokens } from \"./types.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport { getIssuerVariations, getOauthEndpoints } from \"@/lib/oauth.js\";\nimport * as jose from \"jose\";\nimport { withoutUndefined } from \"@/utils.js\";\nimport type { PKCEConsumer, PKCEProducer } from \"@/services/types.js\";\nimport { GenericUserSession } from \"@/shared/lib/UserSession.js\";\n\n/**\n * Given a PKCE code verifier, derive the code challenge using SHA\n */\nexport async function deriveCodeChallenge(\n codeVerifier: string,\n method: \"Plain\" | \"S256\" = \"S256\",\n): Promise<string> {\n if (method === \"Plain\") {\n console.warn(\"Using insecure plain code challenge method\");\n return codeVerifier;\n }\n\n const encoder = new TextEncoder();\n const data = encoder.encode(codeVerifier);\n const digest = await crypto.subtle.digest(\"SHA-256\", data);\n return btoa(String.fromCharCode(...new Uint8Array(digest)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nexport async function getEndpointsWithOverrides(\n oauthServer: string,\n endpointOverrides: Partial<Endpoints> = {},\n): Promise<Endpoints> {\n const endpoints = await getOauthEndpoints(oauthServer);\n return {\n ...endpoints,\n ...endpointOverrides,\n };\n}\n\nexport async function generateOauthLoginUrl(config: {\n clientId: string;\n scopes: string[];\n state: string;\n redirectUrl: string;\n oauthServer: string;\n nonce?: string;\n endpointOverrides?: Partial<Endpoints>;\n // used to get the PKCE challenge\n pkceConsumer: PKCEConsumer;\n}): Promise<URL> {\n const endpoints = await getEndpointsWithOverrides(\n config.oauthServer,\n config.endpointOverrides,\n );\n const oauth2Client = buildOauth2Client(\n config.clientId,\n config.redirectUrl,\n endpoints,\n );\n const challenge = await config.pkceConsumer.getCodeChallenge();\n const oAuthUrl = await oauth2Client.createAuthorizationURL({\n state: config.state,\n scopes: config.scopes,\n });\n // The OAuth2 client supports PKCE, but does not allow passing in a code challenge from some other source\n // It only allows passing in a code verifier which it then hashes itself.\n oAuthUrl.searchParams.append(\"code_challenge\", challenge);\n oAuthUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n if (config.nonce) {\n // nonce isn't supported by oslo, so we add it manually\n oAuthUrl.searchParams.append(\"nonce\", config.nonce);\n }\n // Required by the auth server for offline_access scope\n oAuthUrl.searchParams.append(\"prompt\", \"consent\");\n\n return oAuthUrl;\n}\n\nexport async function generateOauthLogoutUrl(config: {\n clientId: string;\n redirectUrl: string;\n idToken: string;\n state: string;\n oauthServer: string;\n endpointOverrides?: Partial<Endpoints>;\n}): Promise<URL> {\n const endpoints = await getEndpointsWithOverrides(\n config.oauthServer,\n config.endpointOverrides,\n );\n const endSessionUrl = new URL(endpoints.endsession);\n endSessionUrl.searchParams.append(\"client_id\", config.clientId);\n endSessionUrl.searchParams.append(\"id_token_hint\", config.idToken);\n endSessionUrl.searchParams.append(\"state\", config.state);\n endSessionUrl.searchParams.append(\n \"post_logout_redirect_uri\",\n config.redirectUrl,\n );\n return endSessionUrl;\n}\n\nexport function buildOauth2Client(\n clientId: string,\n redirectUri: string,\n endpoints: Endpoints,\n): OAuth2Client {\n return new OAuth2Client(clientId, endpoints.auth, endpoints.token, {\n redirectURI: redirectUri,\n });\n}\n\nexport async function exchangeTokens(\n code: string,\n state: string,\n pkceProducer: PKCEProducer,\n oauth2Client: OAuth2Client,\n oauthServer: string,\n endpoints: Endpoints,\n) {\n const codeVerifier = await pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in state\");\n\n const tokens =\n await oauth2Client.validateAuthorizationCode<OIDCTokenResponseBody>(code, {\n codeVerifier,\n });\n\n // Validate relevant tokens\n try {\n await validateOauth2Tokens(tokens, endpoints, oauth2Client, oauthServer);\n } catch (error) {\n console.error(\"tokenExchange error\", { error, tokens });\n throw new Error(\n `OIDC tokens validation failed: ${(error as Error).message}`,\n );\n }\n return tokens;\n}\n\nexport async function storeTokens(\n storage: AuthStorage,\n tokens: OIDCTokenResponseBody,\n) {\n // store tokens in storage ( TODO we should probably store them against the state to allow multiple logins )\n await storage.set(OAuthTokens.ID_TOKEN, tokens.id_token);\n await storage.set(OAuthTokens.ACCESS_TOKEN, tokens.access_token);\n if (tokens.refresh_token) {\n await storage.set(OAuthTokens.REFRESH_TOKEN, tokens.refresh_token);\n }\n if (tokens.expires_in) {\n await storage.set(OAuthTokens.EXPIRES_IN, tokens.expires_in.toString());\n await storage.set(OAuthTokens.TIMESTAMP, new Date().getTime().toString());\n }\n}\n\nexport async function clearTokens(storage: AuthStorage) {\n const clearOAuthPromises = Object.values(OAuthTokens).map(async (key) => {\n await storage.set(key, \"\");\n });\n await Promise.all([...clearOAuthPromises]);\n}\n\nexport async function clearUser(storage: AuthStorage) {\n const userSession = new GenericUserSession(storage);\n await userSession.set(null);\n}\n\nexport async function retrieveTokens(\n storage: AuthStorage,\n): Promise<OIDCTokenResponseBody | null> {\n const idToken = await storage.get(OAuthTokens.ID_TOKEN);\n const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);\n const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);\n const expiresIn = await storage.get(OAuthTokens.EXPIRES_IN);\n const timestamp = await storage.get(OAuthTokens.TIMESTAMP);\n\n if (!idToken || !accessToken) return null;\n\n return {\n id_token: idToken,\n access_token: accessToken,\n refresh_token: refreshToken ?? undefined,\n expires_in: expiresIn ? parseInt(expiresIn, 10) : undefined, // Convert string to number\n timestamp: timestamp ? parseInt(timestamp, 10) : undefined, // Convert string to number\n };\n}\n\nexport async function retrieveTokenExpiration(storage: AuthStorage) {\n return await storage.get(OAuthTokens.EXPIRES_IN);\n}\n\nexport async function validateOauth2Tokens(\n tokens: OIDCTokenResponseBody,\n endpoints: Endpoints,\n oauth2Client: OAuth2Client,\n issuer: string,\n): Promise<ParsedTokens> {\n const JWKS = jose.createRemoteJWKSet(new URL(endpoints.jwks));\n\n // validate the ID token\n const idTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.id_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n audience: oauth2Client.clientId,\n },\n );\n\n // validate the access token\n const accessTokenResponse = await jose.jwtVerify<JWTPayload>(\n tokens.access_token,\n JWKS,\n {\n issuer: getIssuerVariations(issuer),\n },\n );\n\n return withoutUndefined({\n id_token: idTokenResponse.payload,\n access_token: accessTokenResponse.payload,\n refresh_token: tokens.refresh_token,\n });\n}\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "@civic/auth:0.2.5";
1
+ export declare const VERSION = "@civic/auth:0.3.0-alpha.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,sBAAsB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,8BAA8B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // This is an auto-generated file. Do not edit.
2
- export const VERSION = "@civic/auth:0.2.5";
2
+ export const VERSION = "@civic/auth:0.3.0-alpha.0";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,mBAAmB,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.2.5\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/shared/version.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,2BAA2B,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.3.0-alpha.0\";\n"]}
@@ -55,14 +55,15 @@ type SessionData = {
55
55
  accessToken?: string;
56
56
  refreshToken?: string;
57
57
  idToken?: string;
58
- accessTokenExpiresAt?: number;
58
+ timestamp?: number;
59
+ expiresIn?: number;
59
60
  codeVerifier?: string;
60
61
  displayMode?: DisplayMode;
61
62
  openerUrl?: string;
62
63
  };
63
64
  type OIDCTokenResponseBody = TokenResponseBody & {
64
65
  id_token: string;
65
- access_token_expires_at?: number;
66
+ timestamp?: number;
66
67
  };
67
68
  type ParsedTokens = {
68
69
  id_token: JWTPayload;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/dist/esm/types.js CHANGED
@@ -7,12 +7,6 @@ export var AuthStatus;
7
7
  AuthStatus["SIGNING_OUT"] = "signing_out";
8
8
  })(AuthStatus || (AuthStatus = {}));
9
9
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
- const tokenKeys = [
11
- "sub",
12
- "idToken",
13
- "accessToken",
14
- "refreshToken",
15
- "forwardedTokens",
16
- ];
10
+ const tokenKeys = ["idToken", "accessToken", "refreshToken", "forwardedTokens"];
17
11
  export { tokenKeys };
18
12
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,6CAA+B,CAAA;IAC/B,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,6BAAe,CAAA;IACf,yCAA2B,CAAA;AAC7B,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AA4ID,6DAA6D;AAC7D,MAAM,SAAS,GAAG;IAChB,KAAK;IACL,SAAS;IACT,aAAa;IACb,cAAc;IACd,iBAAiB;CAClB,CAAC;AAgGF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import type { TokenResponseBody } from \"oslo/oauth2\";\nimport type { JWT } from \"oslo/jwt\";\n\ntype UnknownObject = Record<string, unknown>;\ntype EmptyObject = Record<string, never>;\n\nexport enum AuthStatus {\n AUTHENTICATED = \"authenticated\",\n UNAUTHENTICATED = \"unauthenticated\",\n AUTHENTICATING = \"authenticating\",\n ERROR = \"error\",\n SIGNING_OUT = \"signing_out\",\n}\n// Display modes for the auth flow\ntype DisplayMode = \"iframe\" | \"redirect\" | \"new_tab\" | \"custom_tab\";\n\n// Combined Auth and Session Service\ninterface AuthSessionService {\n // TODO DK NOTES: Should be in BrowserAuthSessionService, not relevant on backend\n loadAuthorizationUrl(\n authorizationURL: string,\n displayMode: DisplayMode,\n ): void;\n // TODO DK NOTES: overrideDisplayMode parameter not appropriate here - also - do we need both this and the above in the interface?\n getAuthorizationUrl(\n scopes: string[],\n overrideDisplayMode: DisplayMode,\n nonce?: string,\n ): Promise<string>;\n // TODO DK NOTES: display mode should be in browser version only. Also, do we need this and the above two in the top-level interface?\n signIn(\n displayMode: DisplayMode,\n scopes: string[],\n nonce?: string,\n ): Promise<void>;\n // TODO DK NOTES: Input should be an auth code - do not assume it comes via an url\n tokenExchange(responseUrl: string): Promise<SessionData>;\n // TODO DK NOTES: Should be async for flexibility\n getSessionData(): SessionData;\n // TODO DK NOTES: Should be async for flexibility\n updateSessionData(data: SessionData): void;\n getUserInfoService(): Promise<UserInfoService>;\n}\n\n// Token Service\ninterface TokenService {\n exchangeCodeForTokens(authCode: string): Promise<Tokens>;\n validateIdToken(idToken: string, nonce: string): boolean;\n refreshAccessToken(refreshToken: string): Promise<Tokens>;\n}\n\n// User Info Service\ninterface UserInfoService {\n getUserInfo<T extends UnknownObject>(\n accessToken: string,\n idToken: string | null,\n ): Promise<User<T> | null>;\n}\n\n// Resource Service\ninterface ResourceService {\n getProtectedResource(accessToken: string): Promise<unknown>;\n}\n\n// Auth Request (for internal use in AuthSessionService)\ntype AuthRequest = {\n clientId: string;\n redirectUri: string;\n state: string;\n nonce: string;\n scope: string;\n};\n\ntype Endpoints = {\n jwks: string;\n auth: string;\n token: string;\n userinfo: string;\n challenge?: string;\n endsession: string;\n};\n\ntype Config = {\n oauthServer: string;\n endpoints?: Endpoints;\n};\n\ntype SessionData = {\n authenticated: boolean; // TODO can this be inferred from the presence of the tokens?\n state?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: number;\n codeVerifier?: string;\n displayMode?: DisplayMode;\n openerUrl?: string;\n};\n\ntype OIDCTokenResponseBody = TokenResponseBody & {\n id_token: string;\n access_token_expires_at?: number;\n};\n\ntype ParsedTokens = {\n id_token: JWTPayload;\n access_token: JWTPayload;\n refresh_token?: string;\n};\n\n// The format we expose to the frontend via hooks\ntype ForwardedTokens = Record<\n string,\n {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n }\n>;\n\n// The format in the JWT payload\ntype ForwardedTokensJWT = Record<\n string,\n {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n scope?: string;\n }\n>;\n\ntype JWTPayload = JWT[\"payload\"] & {\n iss: string;\n aud: string;\n sub: string;\n iat: number;\n exp: number;\n};\n\ntype IdTokenPayload = JWTPayload & {\n forwardedTokens?: ForwardedTokensJWT;\n email?: string;\n name?: string;\n picture?: string;\n nonce: string;\n at_hash: string;\n};\n\ntype IdToken = Omit<JWT, \"payload\"> & {\n payload: IdTokenPayload;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tokenKeys = [\n \"sub\",\n \"idToken\",\n \"accessToken\",\n \"refreshToken\",\n \"forwardedTokens\",\n];\n\nexport type OAuthTokens = {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n};\n// Derive the Tokens type from the array\ntype Tokens = {\n [K in (typeof tokenKeys)[number]]: K extends \"forwardedTokens\"\n ? ForwardedTokens\n : string;\n};\n\n// Base user interface\ntype BaseUser = {\n id: string;\n email?: string;\n name?: string;\n given_name?: string;\n family_name?: string;\n picture?: string;\n updated_at?: Date;\n};\n\ntype User<T extends UnknownObject = EmptyObject> = BaseUser & T;\n\ntype OpenIdConfiguration = {\n authorization_endpoint: string;\n claims_parameter_supported: boolean;\n claims_supported: string[];\n code_challenge_methods_supported: string[];\n end_session_endpoint: string;\n grant_types_supported: string[];\n issuer: string;\n jwks_uri: string;\n authorization_response_iss_parameter_supported: boolean;\n response_modes_supported: string[];\n response_types_supported: string[];\n scopes_supported: string[];\n subject_types_supported: string[];\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n token_endpoint: string;\n id_token_signing_alg_values_supported: string[];\n pushed_authorization_request_endpoint: string;\n request_parameter_supported: boolean;\n request_uri_parameter_supported: boolean;\n userinfo_endpoint: string;\n claim_types_supported: string[];\n};\n\ntype LoginPostMessage = {\n source: string;\n type: string;\n clientId: string;\n data: {\n url: string;\n };\n};\n\nexport type IframeAuthMessage = {\n source: \"civicloginApp\";\n type: \"auth_error\" | \"auth_error_try_again\";\n clientId: string;\n data: {\n url?: string;\n error?: string;\n };\n};\n\nexport type {\n LoginPostMessage,\n AuthSessionService,\n TokenService,\n UserInfoService,\n ResourceService,\n AuthRequest,\n Tokens,\n Endpoints,\n Config,\n SessionData,\n OIDCTokenResponseBody,\n ParsedTokens,\n BaseUser,\n User,\n DisplayMode,\n UnknownObject,\n EmptyObject,\n ForwardedTokens,\n ForwardedTokensJWT,\n JWTPayload,\n IdTokenPayload,\n IdToken,\n OpenIdConfiguration,\n};\nexport { tokenKeys };\nexport interface AuthStorage {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n}\n\nexport type IframeMode = \"embedded\" | \"modal\";\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,6CAA+B,CAAA;IAC/B,iDAAmC,CAAA;IACnC,+CAAiC,CAAA;IACjC,6BAAe,CAAA;IACf,yCAA2B,CAAA;AAC7B,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AA6ID,6DAA6D;AAC7D,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAgGhF,OAAO,EAAE,SAAS,EAAE,CAAC","sourcesContent":["import type { TokenResponseBody } from \"oslo/oauth2\";\nimport type { JWT } from \"oslo/jwt\";\n\ntype UnknownObject = Record<string, unknown>;\ntype EmptyObject = Record<string, never>;\n\nexport enum AuthStatus {\n AUTHENTICATED = \"authenticated\",\n UNAUTHENTICATED = \"unauthenticated\",\n AUTHENTICATING = \"authenticating\",\n ERROR = \"error\",\n SIGNING_OUT = \"signing_out\",\n}\n// Display modes for the auth flow\ntype DisplayMode = \"iframe\" | \"redirect\" | \"new_tab\" | \"custom_tab\";\n\n// Combined Auth and Session Service\ninterface AuthSessionService {\n // TODO DK NOTES: Should be in BrowserAuthSessionService, not relevant on backend\n loadAuthorizationUrl(\n authorizationURL: string,\n displayMode: DisplayMode,\n ): void;\n // TODO DK NOTES: overrideDisplayMode parameter not appropriate here - also - do we need both this and the above in the interface?\n getAuthorizationUrl(\n scopes: string[],\n overrideDisplayMode: DisplayMode,\n nonce?: string,\n ): Promise<string>;\n // TODO DK NOTES: display mode should be in browser version only. Also, do we need this and the above two in the top-level interface?\n signIn(\n displayMode: DisplayMode,\n scopes: string[],\n nonce?: string,\n ): Promise<void>;\n // TODO DK NOTES: Input should be an auth code - do not assume it comes via an url\n tokenExchange(responseUrl: string): Promise<SessionData>;\n // TODO DK NOTES: Should be async for flexibility\n getSessionData(): SessionData;\n // TODO DK NOTES: Should be async for flexibility\n updateSessionData(data: SessionData): void;\n getUserInfoService(): Promise<UserInfoService>;\n}\n\n// Token Service\ninterface TokenService {\n exchangeCodeForTokens(authCode: string): Promise<Tokens>;\n validateIdToken(idToken: string, nonce: string): boolean;\n refreshAccessToken(refreshToken: string): Promise<Tokens>;\n}\n\n// User Info Service\ninterface UserInfoService {\n getUserInfo<T extends UnknownObject>(\n accessToken: string,\n idToken: string | null,\n ): Promise<User<T> | null>;\n}\n\n// Resource Service\ninterface ResourceService {\n getProtectedResource(accessToken: string): Promise<unknown>;\n}\n\n// Auth Request (for internal use in AuthSessionService)\ntype AuthRequest = {\n clientId: string;\n redirectUri: string;\n state: string;\n nonce: string;\n scope: string;\n};\n\ntype Endpoints = {\n jwks: string;\n auth: string;\n token: string;\n userinfo: string;\n challenge?: string;\n endsession: string;\n};\n\ntype Config = {\n oauthServer: string;\n endpoints?: Endpoints;\n};\n\ntype SessionData = {\n authenticated: boolean; // TODO can this be inferred from the presence of the tokens?\n state?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n timestamp?: number;\n expiresIn?: number;\n codeVerifier?: string;\n displayMode?: DisplayMode;\n openerUrl?: string;\n};\n\ntype OIDCTokenResponseBody = TokenResponseBody & {\n id_token: string;\n timestamp?: number;\n};\n\ntype ParsedTokens = {\n id_token: JWTPayload;\n access_token: JWTPayload;\n refresh_token?: string;\n};\n\n// The format we expose to the frontend via hooks\ntype ForwardedTokens = Record<\n string,\n {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n }\n>;\n\n// The format in the JWT payload\ntype ForwardedTokensJWT = Record<\n string,\n {\n id_token?: string;\n access_token?: string;\n refresh_token?: string;\n scope?: string;\n }\n>;\n\ntype JWTPayload = JWT[\"payload\"] & {\n iss: string;\n aud: string;\n sub: string;\n iat: number;\n exp: number;\n};\n\ntype IdTokenPayload = JWTPayload & {\n forwardedTokens?: ForwardedTokensJWT;\n email?: string;\n name?: string;\n picture?: string;\n nonce: string;\n at_hash: string;\n};\n\ntype IdToken = Omit<JWT, \"payload\"> & {\n payload: IdTokenPayload;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tokenKeys = [\"idToken\", \"accessToken\", \"refreshToken\", \"forwardedTokens\"];\n\nexport type OAuthTokens = {\n idToken?: string;\n accessToken?: string;\n refreshToken?: string;\n};\n// Derive the Tokens type from the array\ntype Tokens = {\n [K in (typeof tokenKeys)[number]]: K extends \"forwardedTokens\"\n ? ForwardedTokens\n : string;\n};\n\n// Base user interface\ntype BaseUser = {\n id: string;\n email?: string;\n name?: string;\n given_name?: string;\n family_name?: string;\n picture?: string;\n updated_at?: Date;\n};\n\ntype User<T extends UnknownObject = EmptyObject> = BaseUser & T;\n\ntype OpenIdConfiguration = {\n authorization_endpoint: string;\n claims_parameter_supported: boolean;\n claims_supported: string[];\n code_challenge_methods_supported: string[];\n end_session_endpoint: string;\n grant_types_supported: string[];\n issuer: string;\n jwks_uri: string;\n authorization_response_iss_parameter_supported: boolean;\n response_modes_supported: string[];\n response_types_supported: string[];\n scopes_supported: string[];\n subject_types_supported: string[];\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n token_endpoint: string;\n id_token_signing_alg_values_supported: string[];\n pushed_authorization_request_endpoint: string;\n request_parameter_supported: boolean;\n request_uri_parameter_supported: boolean;\n userinfo_endpoint: string;\n claim_types_supported: string[];\n};\n\ntype LoginPostMessage = {\n source: string;\n type: string;\n clientId: string;\n data: {\n url: string;\n };\n};\n\nexport type IframeAuthMessage = {\n source: \"civicloginApp\";\n type: \"auth_error\" | \"auth_error_try_again\";\n clientId: string;\n data: {\n url?: string;\n error?: string;\n };\n};\n\nexport type {\n LoginPostMessage,\n AuthSessionService,\n TokenService,\n UserInfoService,\n ResourceService,\n AuthRequest,\n Tokens,\n Endpoints,\n Config,\n SessionData,\n OIDCTokenResponseBody,\n ParsedTokens,\n BaseUser,\n User,\n DisplayMode,\n UnknownObject,\n EmptyObject,\n ForwardedTokens,\n ForwardedTokensJWT,\n JWTPayload,\n IdTokenPayload,\n IdToken,\n OpenIdConfiguration,\n};\nexport { tokenKeys };\nexport interface AuthStorage {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n}\n\nexport type IframeMode = \"embedded\" | \"modal\";\n"]}
@@ -6,10 +6,10 @@
6
6
  *
7
7
  * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.
8
8
  */
9
- export declare const isPopupBlocked: () => boolean;
9
+ declare const isPopupBlocked: () => boolean;
10
10
  type WithoutUndefined<T> = {
11
11
  [K in keyof T as undefined extends T[K] ? never : K]: T[K];
12
12
  };
13
13
  export declare const withoutUndefined: <T extends { [K in keyof T]: unknown; }>(obj: T) => WithoutUndefined<T>;
14
- export {};
14
+ export { isPopupBlocked };
15
15
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAO,OAsBjC,CAAC;AAOF,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AACF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,GAAE,OAC/D,CAAC,KACL,gBAAgB,CAAC,CAAC,CAapB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc,QAAO,OAsB1B,CAAC;AAOF,KAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC;AACF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,GAAE,OAC/D,CAAC,KACL,gBAAgB,CAAC,CAAC,CAapB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
package/dist/esm/utils.js CHANGED
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.
8
8
  */
9
- export const isPopupBlocked = () => {
9
+ const isPopupBlocked = () => {
10
10
  // First we try to open a small popup window. It either returns a window object or null.
11
11
  const popup = window.open("", "", "width=1,height=1");
12
12
  // If window.open() returns null, popup is definitely blocked
@@ -39,4 +39,5 @@ export const withoutUndefined = (obj) => {
39
39
  }
40
40
  return result;
41
41
  };
42
+ export { isPopupBlocked };
42
43
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE;IAC1C,wFAAwF;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEtD,6DAA6D;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAM,EACe,EAAE;IACvB,MAAM,MAAM,GAAG,EAAyB,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,4EAA4E;YAC5E,6BAA6B;YAC7B,8DAA8D;YAC7D,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["/**\n * Checks if a popup window is blocked by the browser.\n *\n * This function attempts to open a small popup window and then checks if it was successfully created.\n * If the popup is blocked by the browser, the function returns `true`. Otherwise, it returns `false`.\n *\n * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.\n */\nexport const isPopupBlocked = (): boolean => {\n // First we try to open a small popup window. It either returns a window object or null.\n const popup = window.open(\"\", \"\", \"width=1,height=1\");\n\n // If window.open() returns null, popup is definitely blocked\n if (!popup) {\n return true;\n }\n\n try {\n // Try to access a property of the popup to check if it's usable\n if (typeof popup.closed === \"undefined\") {\n throw new Error(\"Popup is blocked\");\n }\n } catch {\n // Accessing the popup's properties throws an error if the popup is blocked\n return true;\n }\n\n // Close the popup immediately if it was opened\n popup.close();\n return false;\n};\n\n// This type narrows T as far as it can by:\n// - removing all keys where the value is `undefined`\n// - making keys that are not undefined required\n// So, for example: given { a: string | undefined, b: string | undefined },\n// if you pass in { a: \"foo\" }, it returns an object of type: { a: string }\ntype WithoutUndefined<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n};\nexport const withoutUndefined = <T extends { [K in keyof T]: unknown }>(\n obj: T,\n): WithoutUndefined<T> => {\n const result = {} as WithoutUndefined<T>;\n\n for (const key in obj) {\n if (obj[key] !== undefined) {\n // TypeScript needs assurance that key is a valid key in WithoutUndefined<T>\n // We use type assertion here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (result as any)[key] = obj[key];\n }\n }\n\n return result;\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,GAAY,EAAE;IACnC,wFAAwF;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEtD,6DAA6D;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAM,EACe,EAAE;IACvB,MAAM,MAAM,GAAG,EAAyB,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,4EAA4E;YAC5E,6BAA6B;YAC7B,8DAA8D;YAC7D,MAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["/**\n * Checks if a popup window is blocked by the browser.\n *\n * This function attempts to open a small popup window and then checks if it was successfully created.\n * If the popup is blocked by the browser, the function returns `true`. Otherwise, it returns `false`.\n *\n * @returns {boolean} - `true` if the popup is blocked, `false` otherwise.\n */\nconst isPopupBlocked = (): boolean => {\n // First we try to open a small popup window. It either returns a window object or null.\n const popup = window.open(\"\", \"\", \"width=1,height=1\");\n\n // If window.open() returns null, popup is definitely blocked\n if (!popup) {\n return true;\n }\n\n try {\n // Try to access a property of the popup to check if it's usable\n if (typeof popup.closed === \"undefined\") {\n throw new Error(\"Popup is blocked\");\n }\n } catch {\n // Accessing the popup's properties throws an error if the popup is blocked\n return true;\n }\n\n // Close the popup immediately if it was opened\n popup.close();\n return false;\n};\n\n// This type narrows T as far as it can by:\n// - removing all keys where the value is `undefined`\n// - making keys that are not undefined required\n// So, for example: given { a: string | undefined, b: string | undefined },\n// if you pass in { a: \"foo\" }, it returns an object of type: { a: string }\ntype WithoutUndefined<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n};\nexport const withoutUndefined = <T extends { [K in keyof T]: unknown }>(\n obj: T,\n): WithoutUndefined<T> => {\n const result = {} as WithoutUndefined<T>;\n\n for (const key in obj) {\n if (obj[key] !== undefined) {\n // TypeScript needs assurance that key is a valid key in WithoutUndefined<T>\n // We use type assertion here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (result as any)[key] = obj[key];\n }\n }\n\n return result;\n};\n\nexport { isPopupBlocked };\n"]}