@civic/auth 0.3.6 → 0.3.8-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/browser/storage.d.ts +10 -0
- package/dist/cjs/browser/storage.d.ts.map +1 -0
- package/dist/cjs/browser/storage.js +24 -0
- package/dist/cjs/browser/storage.js.map +1 -0
- package/dist/cjs/config.d.ts +3 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +8 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/constants.d.ts +15 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +44 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/cookies.d.ts +7 -0
- package/dist/cjs/lib/cookies.d.ts.map +1 -0
- package/dist/cjs/lib/cookies.js +29 -0
- package/dist/cjs/lib/cookies.js.map +1 -0
- package/dist/cjs/lib/jwt.d.ts +3 -0
- package/dist/cjs/lib/jwt.d.ts.map +1 -0
- package/dist/cjs/lib/jwt.js +13 -0
- package/dist/cjs/lib/jwt.js.map +1 -0
- package/dist/cjs/lib/logger.d.ts +26 -0
- package/dist/cjs/lib/logger.d.ts.map +1 -0
- package/dist/cjs/lib/logger.js +62 -0
- package/dist/cjs/lib/logger.js.map +1 -0
- package/dist/cjs/lib/oauth.d.ts +19 -0
- package/dist/cjs/lib/oauth.d.ts.map +1 -0
- package/dist/cjs/lib/oauth.js +74 -0
- package/dist/cjs/lib/oauth.js.map +1 -0
- package/dist/cjs/lib/obj.d.ts +3 -0
- package/dist/cjs/lib/obj.d.ts.map +1 -0
- package/dist/cjs/lib/obj.js +21 -0
- package/dist/cjs/lib/obj.js.map +1 -0
- package/dist/cjs/lib/postMessage.d.ts +4 -0
- package/dist/cjs/lib/postMessage.d.ts.map +1 -0
- package/dist/cjs/lib/postMessage.js +16 -0
- package/dist/cjs/lib/postMessage.js.map +1 -0
- package/dist/cjs/lib/windowUtil.d.ts +4 -0
- package/dist/cjs/lib/windowUtil.d.ts.map +1 -0
- package/dist/cjs/lib/windowUtil.js +35 -0
- package/dist/cjs/lib/windowUtil.js.map +1 -0
- package/dist/cjs/nextjs/GetUser.d.ts +6 -0
- package/dist/cjs/nextjs/GetUser.d.ts.map +1 -0
- package/dist/cjs/nextjs/GetUser.js +11 -0
- package/dist/cjs/nextjs/GetUser.js.map +1 -0
- package/dist/cjs/nextjs/NextAuthenticationRefresherImpl.d.ts +11 -0
- package/dist/cjs/nextjs/NextAuthenticationRefresherImpl.d.ts.map +1 -0
- package/dist/cjs/nextjs/NextAuthenticationRefresherImpl.js +21 -0
- package/dist/cjs/nextjs/NextAuthenticationRefresherImpl.js.map +1 -0
- package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts +8 -0
- package/dist/cjs/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
- package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js +28 -0
- package/dist/cjs/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
- package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts +12 -0
- package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
- package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js +29 -0
- package/dist/cjs/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
- package/dist/cjs/nextjs/config.d.ts +209 -0
- package/dist/cjs/nextjs/config.d.ts.map +1 -0
- package/dist/cjs/nextjs/config.js +191 -0
- package/dist/cjs/nextjs/config.js.map +1 -0
- package/dist/cjs/nextjs/cookies.d.ts +16 -0
- package/dist/cjs/nextjs/cookies.d.ts.map +1 -0
- package/dist/cjs/nextjs/cookies.js +44 -0
- package/dist/cjs/nextjs/cookies.js.map +1 -0
- package/dist/cjs/nextjs/hooks/index.d.ts +2 -0
- package/dist/cjs/nextjs/hooks/index.d.ts.map +1 -0
- package/dist/cjs/nextjs/hooks/index.js +6 -0
- package/dist/cjs/nextjs/hooks/index.js.map +1 -0
- package/dist/cjs/nextjs/hooks/usePrevious.d.ts +2 -0
- package/dist/cjs/nextjs/hooks/usePrevious.d.ts.map +1 -0
- package/dist/cjs/nextjs/hooks/usePrevious.js +12 -0
- package/dist/cjs/nextjs/hooks/usePrevious.js.map +1 -0
- package/dist/cjs/nextjs/hooks/useRefresh.d.ts +6 -0
- package/dist/cjs/nextjs/hooks/useRefresh.d.ts.map +1 -0
- package/dist/cjs/nextjs/hooks/useRefresh.js +51 -0
- package/dist/cjs/nextjs/hooks/useRefresh.js.map +1 -0
- package/dist/cjs/nextjs/hooks/useUserCookie.d.ts +8 -0
- package/dist/cjs/nextjs/hooks/useUserCookie.d.ts.map +1 -0
- package/dist/cjs/nextjs/hooks/useUserCookie.js +93 -0
- package/dist/cjs/nextjs/hooks/useUserCookie.js.map +1 -0
- package/dist/cjs/nextjs/index.d.ts +9 -0
- package/dist/cjs/nextjs/index.d.ts.map +1 -0
- package/dist/cjs/nextjs/index.js +27 -0
- package/dist/cjs/nextjs/index.js.map +1 -0
- package/dist/cjs/nextjs/middleware/index.d.ts +2 -0
- package/dist/cjs/nextjs/middleware/index.d.ts.map +1 -0
- package/dist/cjs/nextjs/middleware/index.js +10 -0
- package/dist/cjs/nextjs/middleware/index.js.map +1 -0
- package/dist/cjs/nextjs/middleware.d.ts +57 -0
- package/dist/cjs/nextjs/middleware.d.ts.map +1 -0
- package/dist/cjs/nextjs/middleware.js +110 -0
- package/dist/cjs/nextjs/middleware.js.map +1 -0
- package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts +9 -0
- package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
- package/dist/cjs/nextjs/providers/NextAuthProvider.js +108 -0
- package/dist/cjs/nextjs/providers/NextAuthProvider.js.map +1 -0
- package/dist/cjs/nextjs/routeHandler.d.ts +19 -0
- package/dist/cjs/nextjs/routeHandler.d.ts.map +1 -0
- package/dist/cjs/nextjs/routeHandler.js +325 -0
- package/dist/cjs/nextjs/routeHandler.js.map +1 -0
- package/dist/cjs/nextjs/utils.d.ts +3 -0
- package/dist/cjs/nextjs/utils.d.ts.map +1 -0
- package/dist/cjs/nextjs/utils.js +9 -0
- package/dist/cjs/nextjs/utils.js.map +1 -0
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.js +40 -0
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.js.map +1 -0
- package/dist/cjs/reactjs/components/LoadingSpinner.d.ts +7 -0
- package/dist/cjs/reactjs/components/LoadingSpinner.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/LoadingSpinner.js +33 -0
- package/dist/cjs/reactjs/components/LoadingSpinner.js.map +1 -0
- package/dist/cjs/reactjs/components/SignInButton.d.ts +9 -0
- package/dist/cjs/reactjs/components/SignInButton.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/SignInButton.js +31 -0
- package/dist/cjs/reactjs/components/SignInButton.js.map +1 -0
- package/dist/cjs/reactjs/components/SignOutButton.d.ts +7 -0
- package/dist/cjs/reactjs/components/SignOutButton.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/SignOutButton.js +27 -0
- package/dist/cjs/reactjs/components/SignOutButton.js.map +1 -0
- package/dist/cjs/reactjs/components/UserButton.d.ts +9 -0
- package/dist/cjs/reactjs/components/UserButton.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/UserButton.js +145 -0
- package/dist/cjs/reactjs/components/UserButton.js.map +1 -0
- package/dist/cjs/reactjs/components/index.d.ts +6 -0
- package/dist/cjs/reactjs/components/index.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/index.js +14 -0
- package/dist/cjs/reactjs/components/index.js.map +1 -0
- package/dist/cjs/reactjs/components/utils.d.ts +13 -0
- package/dist/cjs/reactjs/components/utils.d.ts.map +1 -0
- package/dist/cjs/reactjs/components/utils.js +31 -0
- package/dist/cjs/reactjs/components/utils.js.map +1 -0
- package/dist/cjs/reactjs/hooks/index.d.ts +3 -0
- package/dist/cjs/reactjs/hooks/index.d.ts.map +1 -0
- package/dist/cjs/reactjs/hooks/index.js +8 -0
- package/dist/cjs/reactjs/hooks/index.js.map +1 -0
- package/dist/cjs/reactjs/hooks/useAuth.d.ts +3 -0
- package/dist/cjs/reactjs/hooks/useAuth.d.ts.map +1 -0
- package/dist/cjs/reactjs/hooks/useAuth.js +15 -0
- package/dist/cjs/reactjs/hooks/useAuth.js.map +1 -0
- package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js +16 -0
- package/dist/cjs/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/cjs/reactjs/hooks/useSignIn.d.ts +6 -0
- package/dist/cjs/reactjs/hooks/useSignIn.d.ts.map +1 -0
- package/dist/cjs/reactjs/hooks/useSignIn.js +38 -0
- package/dist/cjs/reactjs/hooks/useSignIn.js.map +1 -0
- package/dist/cjs/reactjs/hooks/useUser.d.ts +4 -0
- package/dist/cjs/reactjs/hooks/useUser.d.ts.map +1 -0
- package/dist/cjs/reactjs/hooks/useUser.js +15 -0
- package/dist/cjs/reactjs/hooks/useUser.js.map +1 -0
- package/dist/cjs/reactjs/index.d.ts +6 -0
- package/dist/cjs/reactjs/index.d.ts.map +1 -0
- package/dist/cjs/reactjs/index.js +32 -0
- package/dist/cjs/reactjs/index.js.map +1 -0
- package/dist/cjs/reactjs/providers/AuthProvider.d.ts +10 -0
- package/dist/cjs/reactjs/providers/AuthProvider.d.ts.map +1 -0
- package/dist/cjs/reactjs/providers/AuthProvider.js +99 -0
- package/dist/cjs/reactjs/providers/AuthProvider.js.map +1 -0
- package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts +5 -0
- package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/cjs/reactjs/providers/CivicAuthProvider.js +29 -0
- package/dist/cjs/reactjs/providers/CivicAuthProvider.js.map +1 -0
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js +146 -0
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/cjs/reactjs/providers/index.d.ts +8 -0
- package/dist/cjs/reactjs/providers/index.d.ts.map +1 -0
- package/dist/cjs/reactjs/providers/index.js +19 -0
- package/dist/cjs/reactjs/providers/index.js.map +1 -0
- package/dist/cjs/server/ServerAuthenticationResolver.d.ts +20 -0
- package/dist/cjs/server/ServerAuthenticationResolver.d.ts.map +1 -0
- package/dist/cjs/server/ServerAuthenticationResolver.js +71 -0
- package/dist/cjs/server/ServerAuthenticationResolver.js.map +1 -0
- package/dist/cjs/server/config.d.ts +11 -0
- package/dist/cjs/server/config.d.ts.map +1 -0
- package/dist/cjs/server/config.js +3 -0
- package/dist/cjs/server/config.js.map +1 -0
- package/dist/cjs/server/index.d.ts +9 -0
- package/dist/cjs/server/index.d.ts.map +1 -0
- package/dist/cjs/server/index.js +21 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/login.d.ts +17 -0
- package/dist/cjs/server/login.d.ts.map +1 -0
- package/dist/cjs/server/login.js +42 -0
- package/dist/cjs/server/login.js.map +1 -0
- package/dist/cjs/server/logout.d.ts +7 -0
- package/dist/cjs/server/logout.d.ts.map +1 -0
- package/dist/cjs/server/logout.js +26 -0
- package/dist/cjs/server/logout.js.map +1 -0
- package/dist/cjs/server/refresh.d.ts +7 -0
- package/dist/cjs/server/refresh.d.ts.map +1 -0
- package/dist/cjs/server/refresh.js +19 -0
- package/dist/cjs/server/refresh.js.map +1 -0
- package/dist/cjs/services/AuthenticationService.d.ts +93 -0
- package/dist/cjs/services/AuthenticationService.d.ts.map +1 -0
- package/dist/cjs/services/AuthenticationService.js +367 -0
- package/dist/cjs/services/AuthenticationService.js.map +1 -0
- package/dist/cjs/services/PKCE.d.ts +20 -0
- package/dist/cjs/services/PKCE.d.ts.map +1 -0
- package/dist/cjs/services/PKCE.js +50 -0
- package/dist/cjs/services/PKCE.js.map +1 -0
- package/dist/cjs/services/types.d.ts +24 -0
- package/dist/cjs/services/types.d.ts.map +1 -0
- package/dist/cjs/services/types.js +11 -0
- package/dist/cjs/services/types.js.map +1 -0
- package/dist/cjs/shared/components/BlockDisplay.d.ts +6 -0
- package/dist/cjs/shared/components/BlockDisplay.d.ts.map +1 -0
- package/dist/cjs/shared/components/BlockDisplay.js +32 -0
- package/dist/cjs/shared/components/BlockDisplay.js.map +1 -0
- package/dist/cjs/shared/components/CivicAuthIframe.d.ts +9 -0
- package/dist/cjs/shared/components/CivicAuthIframe.d.ts.map +1 -0
- package/dist/cjs/shared/components/CivicAuthIframe.js +72 -0
- package/dist/cjs/shared/components/CivicAuthIframe.js.map +1 -0
- package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts +14 -0
- package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
- package/dist/cjs/shared/components/CivicAuthIframeContainer.js +158 -0
- package/dist/cjs/shared/components/CivicAuthIframeContainer.js.map +1 -0
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js +21 -0
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
- package/dist/cjs/shared/components/CloseIcon.d.ts +3 -0
- package/dist/cjs/shared/components/CloseIcon.d.ts.map +1 -0
- package/dist/cjs/shared/components/CloseIcon.js +7 -0
- package/dist/cjs/shared/components/CloseIcon.js.map +1 -0
- package/dist/cjs/shared/components/IFrameAndLoading.d.ts +7 -0
- package/dist/cjs/shared/components/IFrameAndLoading.d.ts.map +1 -0
- package/dist/cjs/shared/components/IFrameAndLoading.js +39 -0
- package/dist/cjs/shared/components/IFrameAndLoading.js.map +1 -0
- package/dist/cjs/shared/components/LoadingIcon.d.ts +6 -0
- package/dist/cjs/shared/components/LoadingIcon.d.ts.map +1 -0
- package/dist/cjs/shared/components/LoadingIcon.js +28 -0
- package/dist/cjs/shared/components/LoadingIcon.js.map +1 -0
- package/dist/cjs/shared/components/SVGLoading.d.ts +4 -0
- package/dist/cjs/shared/components/SVGLoading.d.ts.map +1 -0
- package/dist/cjs/shared/components/SVGLoading.js +30 -0
- package/dist/cjs/shared/components/SVGLoading.js.map +1 -0
- package/dist/cjs/shared/hooks/index.d.ts +11 -0
- package/dist/cjs/shared/hooks/index.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/index.js +24 -0
- package/dist/cjs/shared/hooks/index.js.map +1 -0
- package/dist/cjs/shared/hooks/useAuth.d.ts +3 -0
- package/dist/cjs/shared/hooks/useAuth.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useAuth.js +15 -0
- package/dist/cjs/shared/hooks/useAuth.js.map +1 -0
- package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts +3 -0
- package/dist/cjs/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useCivicAuthConfig.js +13 -0
- package/dist/cjs/shared/hooks/useCivicAuthConfig.js.map +1 -0
- package/dist/cjs/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/cjs/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useClientTokenExchangeSession.js +16 -0
- package/dist/cjs/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/cjs/shared/hooks/useCurrentUrl.d.ts +3 -0
- package/dist/cjs/shared/hooks/useCurrentUrl.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useCurrentUrl.js +27 -0
- package/dist/cjs/shared/hooks/useCurrentUrl.js.map +1 -0
- package/dist/cjs/shared/hooks/useIframe.d.ts +3 -0
- package/dist/cjs/shared/hooks/useIframe.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useIframe.js +16 -0
- package/dist/cjs/shared/hooks/useIframe.js.map +1 -0
- package/dist/cjs/shared/hooks/useIsInIframe.d.ts +3 -0
- package/dist/cjs/shared/hooks/useIsInIframe.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useIsInIframe.js +17 -0
- package/dist/cjs/shared/hooks/useIsInIframe.js.map +1 -0
- package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts +4 -0
- package/dist/cjs/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useOAuthEndpoints.js +17 -0
- package/dist/cjs/shared/hooks/useOAuthEndpoints.js.map +1 -0
- package/dist/cjs/shared/hooks/useRefresh.d.ts +6 -0
- package/dist/cjs/shared/hooks/useRefresh.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useRefresh.js +49 -0
- package/dist/cjs/shared/hooks/useRefresh.js.map +1 -0
- package/dist/cjs/shared/hooks/useSession.d.ts +3 -0
- package/dist/cjs/shared/hooks/useSession.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useSession.js +16 -0
- package/dist/cjs/shared/hooks/useSession.js.map +1 -0
- package/dist/cjs/shared/hooks/useSignIn.d.ts +17 -0
- package/dist/cjs/shared/hooks/useSignIn.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useSignIn.js +171 -0
- package/dist/cjs/shared/hooks/useSignIn.js.map +1 -0
- package/dist/cjs/shared/hooks/useToken.d.ts +3 -0
- package/dist/cjs/shared/hooks/useToken.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useToken.js +15 -0
- package/dist/cjs/shared/hooks/useToken.js.map +1 -0
- package/dist/cjs/shared/hooks/useWindowFocused.d.ts +5 -0
- package/dist/cjs/shared/hooks/useWindowFocused.d.ts.map +1 -0
- package/dist/cjs/shared/hooks/useWindowFocused.js +24 -0
- package/dist/cjs/shared/hooks/useWindowFocused.js.map +1 -0
- package/dist/cjs/shared/index.d.ts +7 -0
- package/dist/cjs/shared/index.d.ts.map +1 -0
- package/dist/cjs/shared/index.js +25 -0
- package/dist/cjs/shared/index.js.map +1 -0
- package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
- package/dist/cjs/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
- package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js +55 -0
- package/dist/cjs/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
- package/dist/cjs/shared/lib/BrowserAuthenticationRefresher.d.ts +11 -0
- package/dist/cjs/shared/lib/BrowserAuthenticationRefresher.d.ts.map +1 -0
- package/dist/cjs/shared/lib/BrowserAuthenticationRefresher.js +63 -0
- package/dist/cjs/shared/lib/BrowserAuthenticationRefresher.js.map +1 -0
- package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts +9 -0
- package/dist/cjs/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
- package/dist/cjs/shared/lib/BrowserCookieStorage.js +60 -0
- package/dist/cjs/shared/lib/BrowserCookieStorage.js.map +1 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher copy.d.ts +18 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher copy.d.ts.map +1 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher copy.js +85 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher copy.js.map +1 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts +14 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js +38 -0
- package/dist/cjs/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
- package/dist/cjs/shared/lib/UserSession.d.ts +17 -0
- package/dist/cjs/shared/lib/UserSession.d.ts.map +1 -0
- package/dist/cjs/shared/lib/UserSession.js +27 -0
- package/dist/cjs/shared/lib/UserSession.js.map +1 -0
- package/dist/cjs/shared/lib/iframeUtils.d.ts +6 -0
- package/dist/cjs/shared/lib/iframeUtils.d.ts.map +1 -0
- package/dist/cjs/shared/lib/iframeUtils.js +11 -0
- package/dist/cjs/shared/lib/iframeUtils.js.map +1 -0
- package/dist/cjs/shared/lib/session.d.ts +4 -0
- package/dist/cjs/shared/lib/session.d.ts.map +1 -0
- package/dist/cjs/shared/lib/session.js +48 -0
- package/dist/cjs/shared/lib/session.js.map +1 -0
- package/dist/cjs/shared/lib/storage.d.ts +35 -0
- package/dist/cjs/shared/lib/storage.d.ts.map +1 -0
- package/dist/cjs/shared/lib/storage.js +21 -0
- package/dist/cjs/shared/lib/storage.js.map +1 -0
- package/dist/cjs/shared/lib/types.d.ts +39 -0
- package/dist/cjs/shared/lib/types.d.ts.map +1 -0
- package/dist/cjs/shared/lib/types.js +22 -0
- package/dist/cjs/shared/lib/types.js.map +1 -0
- package/dist/cjs/shared/lib/util.d.ts +40 -0
- package/dist/cjs/shared/lib/util.d.ts.map +1 -0
- package/dist/cjs/shared/lib/util.js +252 -0
- package/dist/cjs/shared/lib/util.js.map +1 -0
- package/dist/cjs/shared/providers/AuthContext.d.ts +12 -0
- package/dist/cjs/shared/providers/AuthContext.d.ts.map +1 -0
- package/dist/cjs/shared/providers/AuthContext.js +7 -0
- package/dist/cjs/shared/providers/AuthContext.js.map +1 -0
- package/dist/cjs/shared/providers/AuthProvider.d.ts +22 -0
- package/dist/cjs/shared/providers/AuthProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/AuthProvider.js +108 -0
- package/dist/cjs/shared/providers/AuthProvider.js.map +1 -0
- package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts +19 -0
- package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
- package/dist/cjs/shared/providers/CivicAuthConfigContext.js +59 -0
- package/dist/cjs/shared/providers/CivicAuthConfigContext.js.map +1 -0
- package/dist/cjs/shared/providers/CivicAuthProvider.d.ts +6 -0
- package/dist/cjs/shared/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/CivicAuthProvider.js +38 -0
- package/dist/cjs/shared/providers/CivicAuthProvider.js.map +1 -0
- package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.js +168 -0
- package/dist/cjs/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/cjs/shared/providers/IframeProvider.d.ts +25 -0
- package/dist/cjs/shared/providers/IframeProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/IframeProvider.js +63 -0
- package/dist/cjs/shared/providers/IframeProvider.js.map +1 -0
- package/dist/cjs/shared/providers/SessionProvider.d.ts +19 -0
- package/dist/cjs/shared/providers/SessionProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/SessionProvider.js +28 -0
- package/dist/cjs/shared/providers/SessionProvider.js.map +1 -0
- package/dist/cjs/shared/providers/TokenProvider.d.ts +17 -0
- package/dist/cjs/shared/providers/TokenProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/TokenProvider.js +39 -0
- package/dist/cjs/shared/providers/TokenProvider.js.map +1 -0
- package/dist/cjs/shared/providers/UserProvider.d.ts +26 -0
- package/dist/cjs/shared/providers/UserProvider.d.ts.map +1 -0
- package/dist/cjs/shared/providers/UserProvider.js +69 -0
- package/dist/cjs/shared/providers/UserProvider.js.map +1 -0
- package/dist/cjs/shared/providers/types.d.ts +15 -0
- package/dist/cjs/shared/providers/types.d.ts.map +1 -0
- package/dist/cjs/shared/providers/types.js +3 -0
- package/dist/cjs/shared/providers/types.js.map +1 -0
- package/dist/cjs/shared/version.d.ts +2 -0
- package/dist/cjs/shared/version.d.ts.map +1 -0
- package/dist/cjs/shared/version.js +6 -0
- package/dist/cjs/shared/version.js.map +1 -0
- package/dist/cjs/types.d.ts +163 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +20 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +15 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +47 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +6 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/browser/storage.d.ts +10 -0
- package/dist/esm/browser/storage.d.ts.map +1 -0
- package/dist/esm/browser/storage.js +20 -0
- package/dist/esm/browser/storage.js.map +1 -0
- package/dist/esm/config.d.ts +3 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js +5 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/constants.d.ts +15 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +29 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/cookies.d.ts +7 -0
- package/dist/esm/lib/cookies.d.ts.map +1 -0
- package/dist/esm/lib/cookies.js +26 -0
- package/dist/esm/lib/cookies.js.map +1 -0
- package/dist/esm/lib/jwt.d.ts +3 -0
- package/dist/esm/lib/jwt.d.ts.map +1 -0
- package/dist/esm/lib/jwt.js +9 -0
- package/dist/esm/lib/jwt.js.map +1 -0
- package/dist/esm/lib/logger.d.ts +26 -0
- package/dist/esm/lib/logger.d.ts.map +1 -0
- package/dist/esm/lib/logger.js +55 -0
- package/dist/esm/lib/logger.js.map +1 -0
- package/dist/esm/lib/oauth.d.ts +19 -0
- package/dist/esm/lib/oauth.d.ts.map +1 -0
- package/dist/esm/lib/oauth.js +67 -0
- package/dist/esm/lib/oauth.js.map +1 -0
- package/dist/esm/lib/obj.d.ts +3 -0
- package/dist/esm/lib/obj.d.ts.map +1 -0
- package/dist/esm/lib/obj.js +18 -0
- package/dist/esm/lib/obj.js.map +1 -0
- package/dist/esm/lib/postMessage.d.ts +4 -0
- package/dist/esm/lib/postMessage.d.ts.map +1 -0
- package/dist/esm/lib/postMessage.js +13 -0
- package/dist/esm/lib/postMessage.js.map +1 -0
- package/dist/esm/lib/windowUtil.d.ts +4 -0
- package/dist/esm/lib/windowUtil.d.ts.map +1 -0
- package/dist/esm/lib/windowUtil.js +31 -0
- package/dist/esm/lib/windowUtil.js.map +1 -0
- package/dist/esm/nextjs/GetUser.d.ts +6 -0
- package/dist/esm/nextjs/GetUser.d.ts.map +1 -0
- package/dist/esm/nextjs/GetUser.js +7 -0
- package/dist/esm/nextjs/GetUser.js.map +1 -0
- package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts +8 -0
- package/dist/esm/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -0
- package/dist/esm/nextjs/NextClientAuthenticationRefresher.js +24 -0
- package/dist/esm/nextjs/NextClientAuthenticationRefresher.js.map +1 -0
- package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts +12 -0
- package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -0
- package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js +25 -0
- package/dist/esm/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -0
- package/dist/esm/nextjs/config.d.ts +209 -0
- package/dist/esm/nextjs/config.d.ts.map +1 -0
- package/dist/esm/nextjs/config.js +186 -0
- package/dist/esm/nextjs/config.js.map +1 -0
- package/dist/esm/nextjs/cookies.d.ts +16 -0
- package/dist/esm/nextjs/cookies.d.ts.map +1 -0
- package/dist/esm/nextjs/cookies.js +41 -0
- package/dist/esm/nextjs/cookies.js.map +1 -0
- package/dist/esm/nextjs/hooks/index.d.ts +2 -0
- package/dist/esm/nextjs/hooks/index.d.ts.map +1 -0
- package/dist/esm/nextjs/hooks/index.js +2 -0
- package/dist/esm/nextjs/hooks/index.js.map +1 -0
- package/dist/esm/nextjs/hooks/usePrevious.d.ts +2 -0
- package/dist/esm/nextjs/hooks/usePrevious.d.ts.map +1 -0
- package/dist/esm/nextjs/hooks/usePrevious.js +9 -0
- package/dist/esm/nextjs/hooks/usePrevious.js.map +1 -0
- package/dist/esm/nextjs/hooks/useRefresh.d.ts +6 -0
- package/dist/esm/nextjs/hooks/useRefresh.d.ts.map +1 -0
- package/dist/esm/nextjs/hooks/useRefresh.js +48 -0
- package/dist/esm/nextjs/hooks/useRefresh.js.map +1 -0
- package/dist/esm/nextjs/hooks/useUserCookie.d.ts +8 -0
- package/dist/esm/nextjs/hooks/useUserCookie.d.ts.map +1 -0
- package/dist/esm/nextjs/hooks/useUserCookie.js +89 -0
- package/dist/esm/nextjs/hooks/useUserCookie.js.map +1 -0
- package/dist/esm/nextjs/index.d.ts +9 -0
- package/dist/esm/nextjs/index.d.ts.map +1 -0
- package/dist/esm/nextjs/index.js +17 -0
- package/dist/esm/nextjs/index.js.map +1 -0
- package/dist/esm/nextjs/middleware/index.d.ts +2 -0
- package/dist/esm/nextjs/middleware/index.d.ts.map +1 -0
- package/dist/esm/nextjs/middleware/index.js +4 -0
- package/dist/esm/nextjs/middleware/index.js.map +1 -0
- package/dist/esm/nextjs/middleware.d.ts +57 -0
- package/dist/esm/nextjs/middleware.d.ts.map +1 -0
- package/dist/esm/nextjs/middleware.js +101 -0
- package/dist/esm/nextjs/middleware.js.map +1 -0
- package/dist/esm/nextjs/providers/NextAuthProvider.d.ts +9 -0
- package/dist/esm/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
- package/dist/esm/nextjs/providers/NextAuthProvider.js +105 -0
- package/dist/esm/nextjs/providers/NextAuthProvider.js.map +1 -0
- package/dist/esm/nextjs/routeHandler.d.ts +19 -0
- package/dist/esm/nextjs/routeHandler.d.ts.map +1 -0
- package/dist/esm/nextjs/routeHandler.js +319 -0
- package/dist/esm/nextjs/routeHandler.js.map +1 -0
- package/dist/esm/nextjs/utils.d.ts +3 -0
- package/dist/esm/nextjs/utils.d.ts.map +1 -0
- package/dist/esm/nextjs/utils.js +5 -0
- package/dist/esm/nextjs/utils.js.map +1 -0
- package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts +17 -0
- package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -0
- package/dist/esm/reactjs/components/ButtonContentOrLoader.js +37 -0
- package/dist/esm/reactjs/components/ButtonContentOrLoader.js.map +1 -0
- package/dist/esm/reactjs/components/SignInButton.d.ts +9 -0
- package/dist/esm/reactjs/components/SignInButton.d.ts.map +1 -0
- package/dist/esm/reactjs/components/SignInButton.js +28 -0
- package/dist/esm/reactjs/components/SignInButton.js.map +1 -0
- package/dist/esm/reactjs/components/SignOutButton.d.ts +7 -0
- package/dist/esm/reactjs/components/SignOutButton.d.ts.map +1 -0
- package/dist/esm/reactjs/components/SignOutButton.js +24 -0
- package/dist/esm/reactjs/components/SignOutButton.js.map +1 -0
- package/dist/esm/reactjs/components/UserButton.d.ts +9 -0
- package/dist/esm/reactjs/components/UserButton.d.ts.map +1 -0
- package/dist/esm/reactjs/components/UserButton.js +142 -0
- package/dist/esm/reactjs/components/UserButton.js.map +1 -0
- package/dist/esm/reactjs/components/index.d.ts +6 -0
- package/dist/esm/reactjs/components/index.d.ts.map +1 -0
- package/dist/esm/reactjs/components/index.js +6 -0
- package/dist/esm/reactjs/components/index.js.map +1 -0
- package/dist/esm/reactjs/components/utils.d.ts +13 -0
- package/dist/esm/reactjs/components/utils.d.ts.map +1 -0
- package/dist/esm/reactjs/components/utils.js +27 -0
- package/dist/esm/reactjs/components/utils.js.map +1 -0
- package/dist/esm/reactjs/hooks/index.d.ts +3 -0
- package/dist/esm/reactjs/hooks/index.d.ts.map +1 -0
- package/dist/esm/reactjs/hooks/index.js +3 -0
- package/dist/esm/reactjs/hooks/index.js.map +1 -0
- package/dist/esm/reactjs/hooks/useAuth.d.ts +3 -0
- package/dist/esm/reactjs/hooks/useAuth.d.ts.map +1 -0
- package/dist/esm/reactjs/hooks/useAuth.js +12 -0
- package/dist/esm/reactjs/hooks/useAuth.js.map +1 -0
- package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js +13 -0
- package/dist/esm/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/esm/reactjs/hooks/useSignIn.d.ts +6 -0
- package/dist/esm/reactjs/hooks/useSignIn.d.ts.map +1 -0
- package/dist/esm/reactjs/hooks/useSignIn.js +34 -0
- package/dist/esm/reactjs/hooks/useSignIn.js.map +1 -0
- package/dist/esm/reactjs/hooks/useUser.d.ts +4 -0
- package/dist/esm/reactjs/hooks/useUser.d.ts.map +1 -0
- package/dist/esm/reactjs/hooks/useUser.js +12 -0
- package/dist/esm/reactjs/hooks/useUser.js.map +1 -0
- package/dist/esm/reactjs/index.d.ts +6 -0
- package/dist/esm/reactjs/index.d.ts.map +1 -0
- package/dist/esm/reactjs/index.js +10 -0
- package/dist/esm/reactjs/index.js.map +1 -0
- package/dist/esm/reactjs/providers/AuthProvider.d.ts +10 -0
- package/dist/esm/reactjs/providers/AuthProvider.d.ts.map +1 -0
- package/dist/esm/reactjs/providers/AuthProvider.js +97 -0
- package/dist/esm/reactjs/providers/AuthProvider.js.map +1 -0
- package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts +5 -0
- package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/esm/reactjs/providers/CivicAuthProvider.js +27 -0
- package/dist/esm/reactjs/providers/CivicAuthProvider.js.map +1 -0
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js +142 -0
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/esm/reactjs/providers/index.d.ts +8 -0
- package/dist/esm/reactjs/providers/index.d.ts.map +1 -0
- package/dist/esm/reactjs/providers/index.js +7 -0
- package/dist/esm/reactjs/providers/index.js.map +1 -0
- package/dist/esm/server/ServerAuthenticationResolver.d.ts +20 -0
- package/dist/esm/server/ServerAuthenticationResolver.d.ts.map +1 -0
- package/dist/esm/server/ServerAuthenticationResolver.js +67 -0
- package/dist/esm/server/ServerAuthenticationResolver.js.map +1 -0
- package/dist/esm/server/config.d.ts +11 -0
- package/dist/esm/server/config.d.ts.map +1 -0
- package/dist/esm/server/config.js +2 -0
- package/dist/esm/server/config.js.map +1 -0
- package/dist/esm/server/index.d.ts +9 -0
- package/dist/esm/server/index.d.ts.map +1 -0
- package/dist/esm/server/index.js +9 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/login.d.ts +17 -0
- package/dist/esm/server/login.d.ts.map +1 -0
- package/dist/esm/server/login.js +37 -0
- package/dist/esm/server/login.js.map +1 -0
- package/dist/esm/server/logout.d.ts +7 -0
- package/dist/esm/server/logout.d.ts.map +1 -0
- package/dist/esm/server/logout.js +23 -0
- package/dist/esm/server/logout.js.map +1 -0
- package/dist/esm/server/refresh.d.ts +7 -0
- package/dist/esm/server/refresh.d.ts.map +1 -0
- package/dist/esm/server/refresh.js +16 -0
- package/dist/esm/server/refresh.js.map +1 -0
- package/dist/esm/services/AuthenticationService.d.ts +93 -0
- package/dist/esm/services/AuthenticationService.d.ts.map +1 -0
- package/dist/esm/services/AuthenticationService.js +361 -0
- package/dist/esm/services/AuthenticationService.js.map +1 -0
- package/dist/esm/services/PKCE.d.ts +20 -0
- package/dist/esm/services/PKCE.d.ts.map +1 -0
- package/dist/esm/services/PKCE.js +44 -0
- package/dist/esm/services/PKCE.js.map +1 -0
- package/dist/esm/services/types.d.ts +24 -0
- package/dist/esm/services/types.d.ts.map +1 -0
- package/dist/esm/services/types.js +7 -0
- package/dist/esm/services/types.js.map +1 -0
- package/dist/esm/shared/components/BlockDisplay.d.ts +6 -0
- package/dist/esm/shared/components/BlockDisplay.d.ts.map +1 -0
- package/dist/esm/shared/components/BlockDisplay.js +29 -0
- package/dist/esm/shared/components/BlockDisplay.js.map +1 -0
- package/dist/esm/shared/components/CivicAuthIframe.d.ts +9 -0
- package/dist/esm/shared/components/CivicAuthIframe.d.ts.map +1 -0
- package/dist/esm/shared/components/CivicAuthIframe.js +33 -0
- package/dist/esm/shared/components/CivicAuthIframe.js.map +1 -0
- package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts +14 -0
- package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
- package/dist/esm/shared/components/CivicAuthIframeContainer.js +154 -0
- package/dist/esm/shared/components/CivicAuthIframeContainer.js.map +1 -0
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts +6 -0
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js +19 -0
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
- package/dist/esm/shared/components/CloseIcon.d.ts +3 -0
- package/dist/esm/shared/components/CloseIcon.d.ts.map +1 -0
- package/dist/esm/shared/components/CloseIcon.js +5 -0
- package/dist/esm/shared/components/CloseIcon.js.map +1 -0
- package/dist/esm/shared/components/IFrameAndLoading.d.ts +7 -0
- package/dist/esm/shared/components/IFrameAndLoading.d.ts.map +1 -0
- package/dist/esm/shared/components/IFrameAndLoading.js +36 -0
- package/dist/esm/shared/components/IFrameAndLoading.js.map +1 -0
- package/dist/esm/shared/components/LoadingIcon.d.ts +6 -0
- package/dist/esm/shared/components/LoadingIcon.d.ts.map +1 -0
- package/dist/esm/shared/components/LoadingIcon.js +26 -0
- package/dist/esm/shared/components/LoadingIcon.js.map +1 -0
- package/dist/esm/shared/components/SVGLoading.d.ts +4 -0
- package/dist/esm/shared/components/SVGLoading.d.ts.map +1 -0
- package/dist/esm/shared/components/SVGLoading.js +28 -0
- package/dist/esm/shared/components/SVGLoading.js.map +1 -0
- package/dist/esm/shared/hooks/index.d.ts +11 -0
- package/dist/esm/shared/hooks/index.d.ts.map +1 -0
- package/dist/esm/shared/hooks/index.js +11 -0
- package/dist/esm/shared/hooks/index.js.map +1 -0
- package/dist/esm/shared/hooks/useAuth.d.ts +3 -0
- package/dist/esm/shared/hooks/useAuth.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useAuth.js +12 -0
- package/dist/esm/shared/hooks/useAuth.js.map +1 -0
- package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts +3 -0
- package/dist/esm/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useCivicAuthConfig.js +10 -0
- package/dist/esm/shared/hooks/useCivicAuthConfig.js.map +1 -0
- package/dist/esm/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/esm/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useClientTokenExchangeSession.js +13 -0
- package/dist/esm/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/esm/shared/hooks/useCurrentUrl.d.ts +3 -0
- package/dist/esm/shared/hooks/useCurrentUrl.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useCurrentUrl.js +24 -0
- package/dist/esm/shared/hooks/useCurrentUrl.js.map +1 -0
- package/dist/esm/shared/hooks/useIframe.d.ts +3 -0
- package/dist/esm/shared/hooks/useIframe.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useIframe.js +13 -0
- package/dist/esm/shared/hooks/useIframe.js.map +1 -0
- package/dist/esm/shared/hooks/useIsInIframe.d.ts +3 -0
- package/dist/esm/shared/hooks/useIsInIframe.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useIsInIframe.js +14 -0
- package/dist/esm/shared/hooks/useIsInIframe.js.map +1 -0
- package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts +4 -0
- package/dist/esm/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useOAuthEndpoints.js +14 -0
- package/dist/esm/shared/hooks/useOAuthEndpoints.js.map +1 -0
- package/dist/esm/shared/hooks/useRefresh.d.ts +6 -0
- package/dist/esm/shared/hooks/useRefresh.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useRefresh.js +46 -0
- package/dist/esm/shared/hooks/useRefresh.js.map +1 -0
- package/dist/esm/shared/hooks/useSession.d.ts +3 -0
- package/dist/esm/shared/hooks/useSession.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useSession.js +13 -0
- package/dist/esm/shared/hooks/useSession.js.map +1 -0
- package/dist/esm/shared/hooks/useSignIn.d.ts +17 -0
- package/dist/esm/shared/hooks/useSignIn.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useSignIn.js +168 -0
- package/dist/esm/shared/hooks/useSignIn.js.map +1 -0
- package/dist/esm/shared/hooks/useToken.d.ts +3 -0
- package/dist/esm/shared/hooks/useToken.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useToken.js +12 -0
- package/dist/esm/shared/hooks/useToken.js.map +1 -0
- package/dist/esm/shared/hooks/useWindowFocused.d.ts +5 -0
- package/dist/esm/shared/hooks/useWindowFocused.d.ts.map +1 -0
- package/dist/esm/shared/hooks/useWindowFocused.js +21 -0
- package/dist/esm/shared/hooks/useWindowFocused.js.map +1 -0
- package/dist/esm/shared/index.d.ts +7 -0
- package/dist/esm/shared/index.d.ts.map +1 -0
- package/dist/esm/shared/index.js +18 -0
- package/dist/esm/shared/index.js.map +1 -0
- package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts +14 -0
- package/dist/esm/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -0
- package/dist/esm/shared/lib/AuthenticationRefresherImpl.js +51 -0
- package/dist/esm/shared/lib/AuthenticationRefresherImpl.js.map +1 -0
- package/dist/esm/shared/lib/BrowserAuthenticationRefresher.d.ts +11 -0
- package/dist/esm/shared/lib/BrowserAuthenticationRefresher.d.ts.map +1 -0
- package/dist/esm/shared/lib/BrowserAuthenticationRefresher.js +59 -0
- package/dist/esm/shared/lib/BrowserAuthenticationRefresher.js.map +1 -0
- package/dist/esm/shared/lib/BrowserCookieStorage.d.ts +9 -0
- package/dist/esm/shared/lib/BrowserCookieStorage.d.ts.map +1 -0
- package/dist/esm/shared/lib/BrowserCookieStorage.js +56 -0
- package/dist/esm/shared/lib/BrowserCookieStorage.js.map +1 -0
- package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts +14 -0
- package/dist/esm/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
- package/dist/esm/shared/lib/GenericAuthenticationRefresher.js +34 -0
- package/dist/esm/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
- package/dist/esm/shared/lib/UserSession.d.ts +17 -0
- package/dist/esm/shared/lib/UserSession.d.ts.map +1 -0
- package/dist/esm/shared/lib/UserSession.js +23 -0
- package/dist/esm/shared/lib/UserSession.js.map +1 -0
- package/dist/esm/shared/lib/iframeUtils.d.ts +6 -0
- package/dist/esm/shared/lib/iframeUtils.d.ts.map +1 -0
- package/dist/esm/shared/lib/iframeUtils.js +7 -0
- package/dist/esm/shared/lib/iframeUtils.js.map +1 -0
- package/dist/esm/shared/lib/session.d.ts +4 -0
- package/dist/esm/shared/lib/session.d.ts.map +1 -0
- package/dist/esm/shared/lib/session.js +44 -0
- package/dist/esm/shared/lib/session.js.map +1 -0
- package/dist/esm/shared/lib/storage.d.ts +35 -0
- package/dist/esm/shared/lib/storage.d.ts.map +1 -0
- package/dist/esm/shared/lib/storage.js +17 -0
- package/dist/esm/shared/lib/storage.js.map +1 -0
- package/dist/esm/shared/lib/types.d.ts +39 -0
- package/dist/esm/shared/lib/types.d.ts.map +1 -0
- package/dist/esm/shared/lib/types.js +19 -0
- package/dist/esm/shared/lib/types.js.map +1 -0
- package/dist/esm/shared/lib/util.d.ts +40 -0
- package/dist/esm/shared/lib/util.d.ts.map +1 -0
- package/dist/esm/shared/lib/util.js +200 -0
- package/dist/esm/shared/lib/util.js.map +1 -0
- package/dist/esm/shared/providers/AuthContext.d.ts +12 -0
- package/dist/esm/shared/providers/AuthContext.d.ts.map +1 -0
- package/dist/esm/shared/providers/AuthContext.js +4 -0
- package/dist/esm/shared/providers/AuthContext.js.map +1 -0
- package/dist/esm/shared/providers/AuthProvider.d.ts +22 -0
- package/dist/esm/shared/providers/AuthProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/AuthProvider.js +72 -0
- package/dist/esm/shared/providers/AuthProvider.js.map +1 -0
- package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts +19 -0
- package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
- package/dist/esm/shared/providers/CivicAuthConfigContext.js +55 -0
- package/dist/esm/shared/providers/CivicAuthConfigContext.js.map +1 -0
- package/dist/esm/shared/providers/CivicAuthProvider.d.ts +6 -0
- package/dist/esm/shared/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/CivicAuthProvider.js +32 -0
- package/dist/esm/shared/providers/CivicAuthProvider.js.map +1 -0
- package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.js +131 -0
- package/dist/esm/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/esm/shared/providers/IframeProvider.d.ts +25 -0
- package/dist/esm/shared/providers/IframeProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/IframeProvider.js +59 -0
- package/dist/esm/shared/providers/IframeProvider.js.map +1 -0
- package/dist/esm/shared/providers/SessionProvider.d.ts +19 -0
- package/dist/esm/shared/providers/SessionProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/SessionProvider.js +24 -0
- package/dist/esm/shared/providers/SessionProvider.js.map +1 -0
- package/dist/esm/shared/providers/TokenProvider.d.ts +17 -0
- package/dist/esm/shared/providers/TokenProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/TokenProvider.js +35 -0
- package/dist/esm/shared/providers/TokenProvider.js.map +1 -0
- package/dist/esm/shared/providers/UserProvider.d.ts +26 -0
- package/dist/esm/shared/providers/UserProvider.d.ts.map +1 -0
- package/dist/esm/shared/providers/UserProvider.js +65 -0
- package/dist/esm/shared/providers/UserProvider.js.map +1 -0
- package/dist/esm/shared/providers/types.d.ts +15 -0
- package/dist/esm/shared/providers/types.d.ts.map +1 -0
- package/dist/esm/shared/providers/types.js +2 -0
- package/dist/esm/shared/providers/types.js.map +1 -0
- package/dist/esm/shared/version.d.ts +2 -0
- package/dist/esm/shared/version.d.ts.map +1 -0
- package/dist/esm/shared/version.js +3 -0
- package/dist/esm/shared/version.js.map +1 -0
- package/dist/esm/types.d.ts +163 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +17 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +15 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +42 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/nextjs/NextClientAuthenticationRefresher.d.ts +3 -4
- package/dist/nextjs/NextClientAuthenticationRefresher.d.ts.map +1 -1
- package/dist/nextjs/NextClientAuthenticationRefresher.js +14 -12
- package/dist/nextjs/NextClientAuthenticationRefresher.js.map +1 -1
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts +2 -1
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +1 -1
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.js +7 -5
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.js.map +1 -1
- package/dist/nextjs/hooks/useRefresh.d.ts +3 -1
- package/dist/nextjs/hooks/useRefresh.d.ts.map +1 -1
- package/dist/nextjs/hooks/useRefresh.js +11 -2
- package/dist/nextjs/hooks/useRefresh.js.map +1 -1
- package/dist/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
- package/dist/nextjs/providers/NextAuthProvider.js +16 -5
- package/dist/nextjs/providers/NextAuthProvider.js.map +1 -1
- package/dist/nextjs/routeHandler.d.ts.map +1 -1
- package/dist/nextjs/routeHandler.js +18 -11
- package/dist/nextjs/routeHandler.js.map +1 -1
- package/dist/reactjs/providers/AuthProvider.d.ts.map +1 -1
- package/dist/reactjs/providers/AuthProvider.js +11 -1
- package/dist/reactjs/providers/AuthProvider.js.map +1 -1
- package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
- package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js +1 -2
- package/dist/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -1
- package/dist/server/refresh.d.ts.map +1 -1
- package/dist/server/refresh.js +4 -1
- package/dist/server/refresh.js.map +1 -1
- package/dist/services/AuthenticationService.d.ts.map +1 -1
- package/dist/services/AuthenticationService.js +1 -6
- package/dist/services/AuthenticationService.js.map +1 -1
- package/dist/shared/components/CivicAuthIframe.d.ts.map +1 -1
- package/dist/shared/components/CivicAuthIframe.js +8 -2
- package/dist/shared/components/CivicAuthIframe.js.map +1 -1
- package/dist/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
- package/dist/shared/components/CivicAuthIframeContainer.js +4 -1
- package/dist/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/shared/hooks/useRefresh.d.ts +3 -1
- package/dist/shared/hooks/useRefresh.d.ts.map +1 -1
- package/dist/shared/hooks/useRefresh.js +11 -2
- package/dist/shared/hooks/useRefresh.js.map +1 -1
- package/dist/shared/hooks/useSignIn.js +3 -3
- package/dist/shared/hooks/useSignIn.js.map +1 -1
- package/dist/shared/lib/AuthenticationRefresherImpl.d.ts +2 -2
- package/dist/shared/lib/AuthenticationRefresherImpl.d.ts.map +1 -1
- package/dist/shared/lib/AuthenticationRefresherImpl.js +7 -9
- package/dist/shared/lib/AuthenticationRefresherImpl.js.map +1 -1
- package/dist/shared/lib/GenericAuthenticationRefresher.d.ts +2 -4
- package/dist/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -1
- package/dist/shared/lib/GenericAuthenticationRefresher.js +10 -44
- package/dist/shared/lib/GenericAuthenticationRefresher.js.map +1 -1
- package/dist/shared/lib/iframeUtils.d.ts +1 -1
- package/dist/shared/lib/iframeUtils.d.ts.map +1 -1
- package/dist/shared/lib/iframeUtils.js +2 -2
- package/dist/shared/lib/iframeUtils.js.map +1 -1
- package/dist/shared/lib/util.d.ts.map +1 -1
- package/dist/shared/lib/util.js +3 -7
- package/dist/shared/lib/util.js.map +1 -1
- package/dist/shared/providers/IframeProvider.d.ts +3 -0
- package/dist/shared/providers/IframeProvider.d.ts.map +1 -1
- package/dist/shared/providers/IframeProvider.js +5 -0
- package/dist/shared/providers/IframeProvider.js.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/version.d.ts.map +1 -1
- package/dist/shared/version.js +1 -1
- package/dist/shared/version.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthIframe.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"CivicAuthIframe.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,QAAA,MAAM,eAAe,gGAiDpB,CAAC;AAIF,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
|
|
3
|
-
import React, { forwardRef } from "react";
|
|
3
|
+
import React, { forwardRef, useEffect, useState } from "react";
|
|
4
4
|
import IframeResizer from "@iframe-resizer/react";
|
|
5
5
|
import SVGLoading from "./SVGLoading.js";
|
|
6
6
|
import { useIframe } from "../hooks/useIframe.js";
|
|
7
7
|
const CivicAuthIframe = forwardRef(({ onLoad, id }, ref) => {
|
|
8
8
|
const [isLoaded, setIsLoaded] = React.useState(false);
|
|
9
9
|
const { iframeMode, backgroundColor } = useIframe();
|
|
10
|
-
|
|
10
|
+
const [isClient, setIsClient] = useState(false);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
// only runs on client
|
|
13
|
+
setIsClient(true);
|
|
14
|
+
}, []);
|
|
15
|
+
// don't render on the server as the appearance changes when the iframe is loaded from login-app post-messages
|
|
16
|
+
return !isClient ? null : (_jsxs("div", { children: [isLoaded ? null : (_jsx("span", { "data-testid": "iframe-shimmer-loader", children: iframeMode !== "embedded" && (_jsx(SVGLoading, { backgroundColor: backgroundColor })) })), _jsx(IframeResizer, { inPageLinks: true, license: "1jy4dww5qzv-s54r73oxcn-v59f4kfgfz", id: id, forwardRef: ref, "data-testid": "civic-auth-iframe-with-resizer", style: {
|
|
11
17
|
// we don't want the letterbox effect in embedded mode
|
|
12
18
|
height: iframeMode !== "embedded" ? "26px" : "24rem",
|
|
13
19
|
width: "100%",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthIframe.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CivicAuthIframe.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframe.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAClD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAOlD,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,GAAG,EAAE;QACb,sBAAsB;QACtB,WAAW,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,8GAA8G;IAC9G,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,0BACG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjB,8BAAkB,uBAAuB,YACtC,UAAU,KAAK,UAAU,IAAI,CAC5B,KAAC,UAAU,IAAC,eAAe,EAAE,eAAe,GAAI,CACjD,GACI,CACR,EACD,KAAC,aAAa,IACZ,WAAW,QACX,OAAO,EAAC,mCAAmC,EAC3C,EAAE,EAAE,EAAE,EACN,UAAU,EAAE,GAAG,iBACF,gCAAgC,EAC7C,KAAK,EAAE;oBACL,sDAAsD;oBACtD,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBACpD,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,MAAM;oBAChB,eAAe;oBACf,UAAU,EAAE,mBAAmB;oBAC/B,aAAa,EAAE,MAAM;oBACrB,YAAY,EAAE,MAAM;iBACrB,EACD,WAAW,EAAE,KAAK,EAClB,MAAM,EAAE,GAAG,EAAE;oBACX,WAAW,CAAC,IAAI,CAAC,CAAC;oBAClB,MAAM,EAAE,EAAE,CAAC;gBACb,CAAC,EACD,KAAK,EAAC,0BAA0B,EAChC,eAAe,QACf,SAAS,EAAC,UAAU,EACpB,cAAc,EAAE,CAAC,GACjB,IACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAIhD,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["\"use client\";\nimport React, { forwardRef, useEffect, useState } from \"react\";\nimport IframeResizer from \"@iframe-resizer/react\";\nimport SVGLoading from \"./SVGLoading.js\";\nimport { useIframe } from \"../hooks/useIframe.js\";\n\ntype CivicAuthIframeProps = {\n onLoad?: () => void;\n id: string;\n};\n\nconst CivicAuthIframe = forwardRef<HTMLIFrameElement, CivicAuthIframeProps>(\n ({ onLoad, id }, ref) => {\n const [isLoaded, setIsLoaded] = React.useState(false);\n const { iframeMode, backgroundColor } = useIframe();\n const [isClient, setIsClient] = useState(false);\n useEffect(() => {\n // only runs on client\n setIsClient(true);\n }, []);\n // don't render on the server as the appearance changes when the iframe is loaded from login-app post-messages\n return !isClient ? null : (\n <div>\n {isLoaded ? null : (\n <span data-testid=\"iframe-shimmer-loader\">\n {iframeMode !== \"embedded\" && (\n <SVGLoading backgroundColor={backgroundColor} />\n )}\n </span>\n )}\n <IframeResizer\n inPageLinks\n license=\"1jy4dww5qzv-s54r73oxcn-v59f4kfgfz\"\n id={id}\n forwardRef={ref}\n data-testid={\"civic-auth-iframe-with-resizer\"}\n style={{\n // we don't want the letterbox effect in embedded mode\n height: iframeMode !== \"embedded\" ? \"26px\" : \"24rem\",\n width: \"100%\",\n border: \"none\",\n minWidth: \"100%\",\n backgroundColor,\n transition: \"height 0.25s ease\",\n pointerEvents: \"auto\",\n borderRadius: \"24px\",\n }}\n checkOrigin={false}\n onLoad={() => {\n setIsLoaded(true);\n onLoad?.();\n }}\n allow=\"camera; screen-wake-lock\"\n allowFullScreen\n direction=\"vertical\"\n warningTimeout={0}\n />\n </div>\n );\n },\n);\n\nCivicAuthIframe.displayName = \"CivicAuthIframe\";\n\nexport type { CivicAuthIframeProps };\n\nexport { CivicAuthIframe };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,KAAK,6BAA6B,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAeF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,oDAkFA;AAED,QAAA,MAAM,wBAAwB,kCAG3B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"CivicAuthIframeContainer.d.ts","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAUxE,KAAK,6BAA6B,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAeF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACxB,oDAkFA;AAED,QAAA,MAAM,wBAAwB,kCAG3B,6BAA6B,qDAiH/B,CAAC;AAEF,YAAY,EAAE,6BAA6B,EAAE,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -74,7 +74,10 @@ const CivicAuthIframeContainer = ({ onClose, closeOnRedirect = true, }) => {
|
|
|
74
74
|
const config = useCivicAuthConfig();
|
|
75
75
|
const [tokenExchangeUrl, setTokenExchangeUrl] = useState(null);
|
|
76
76
|
const { doTokenExchange } = useClientTokenExchangeSession();
|
|
77
|
-
const { iframeRef, iframeMode, backgroundColor } = useIframe();
|
|
77
|
+
const { iframeRef, iframeMode, backgroundColor, setIframeMounted } = useIframe();
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
setIframeMounted(true);
|
|
80
|
+
}, [setIframeMounted]);
|
|
78
81
|
useEffect(() => {
|
|
79
82
|
if (tokenExchangeUrl) {
|
|
80
83
|
doTokenExchange?.(tokenExchangeUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthIframeContainer.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { CloseIcon } from \"@/shared/components/CloseIcon.js\";\nimport { CivicAuthIframe } from \"@/shared/components/CivicAuthIframe.js\";\nimport { useIframe } from \"@/shared/hooks/index.js\";\nimport { TOKEN_EXCHANGE_TRIGGER_TEXT } from \"@/constants.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/index.js\";\nimport { useClientTokenExchangeSession } from \"@/shared/hooks/index.js\";\nimport { getIframeRef } from \"../lib/iframeUtils.js\";\n\ntype CivicAuthIframeContainerProps = {\n onClose?: () => void;\n closeOnRedirect?: boolean;\n};\n\nfunction NoChrome({\n children,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <div data-testid=\"civic-iframe-no-chrome\" style={{ position: \"relative\" }}>\n {children}\n </div>\n );\n}\n\nexport function IframeChrome({\n children,\n onClose,\n isFrameLoaded,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n isFrameLoaded: boolean;\n}) {\n const { setIframeAborted, iframeMode, backgroundColor } = useIframe();\n\n const iframeContainerStyleOverrides =\n iframeMode === \"embedded\"\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : {\n ...(isFrameLoaded\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : { borderRadius: \"0.5rem\", paddingTop: \"0\" }),\n };\n return (\n <div\n style={{\n position: \"fixed\", // Change to fixed to stay in viewport\n left: 0,\n top: 0,\n zIndex: 50,\n display: \"flex\",\n height: \"100vh\",\n width: \"100vw\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(17, 24, 39, 0.5)\", // Semi-transparent dark background\n backdropFilter: \"blur(4px)\", // Optional: adds slight blur to background\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <div\n data-testid=\"iframe-chrome\"\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n backgroundColor,\n paddingLeft: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n // paddingTop gets added in style overrides\n ...iframeContainerStyleOverrides,\n boxShadow:\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n minWidth: \"20rem\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {isFrameLoaded && (\n <button\n style={{\n position: \"absolute\",\n right: \"1rem\",\n top: \"1rem\",\n display: \"flex\",\n cursor: \"pointer\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n backgroundColor: \"transparent\",\n padding: \"0.25rem\",\n color: \"#9ca3af\",\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <CloseIcon />\n </button>\n )}\n\n {children}\n </div>\n </div>\n );\n}\n\nconst CivicAuthIframeContainer = ({\n onClose,\n closeOnRedirect = true,\n}: CivicAuthIframeContainerProps) => {\n const config = useCivicAuthConfig();\n const [tokenExchangeUrl, setTokenExchangeUrl] = useState<string | null>(null);\n const { doTokenExchange } = useClientTokenExchangeSession();\n const { iframeRef, iframeMode, backgroundColor } = useIframe();\n\n useEffect(() => {\n if (tokenExchangeUrl) {\n doTokenExchange?.(tokenExchangeUrl);\n }\n }, [doTokenExchange, tokenExchangeUrl]);\n\n const processIframeUrl = useCallback(() => {\n if (!config) return;\n if (iframeRef && iframeRef.current) {\n const ref = getIframeRef(iframeRef.current)!;\n if (ref.contentWindow) {\n try {\n const iframeUrl = ref.contentWindow.location.href;\n // we know that oauth has finished when the iframe redirects to our redirectUrl\n if (iframeUrl.startsWith(config.redirectUrl)) {\n const iframeBody = ref.contentWindow.document.body.innerHTML;\n\n // If we're doing a server token exchange, we need to call the server a second time\n // using a fetch so that we're on the same domain and cookies can be sent and read\n // The server will use the presence of the code_verifier cookie to determine whether to do a token exchange or not.\n // On the initial (3rd party) redirect from the auth server, the cookie won't be sent, so the server-side callback route will just render a blank page,\n // and we'll do the exchange request from here, which will include the cookies.\n if (iframeBody.includes(TOKEN_EXCHANGE_TRIGGER_TEXT)) {\n const params = new URL(iframeUrl).searchParams;\n const appUrl = globalThis.window?.location?.origin;\n fetch(\n `${config.redirectUrl}?${params.toString()}&appUrl=${appUrl}`,\n );\n } else {\n // if we're doing token-exchange in the client, we can just set the authResponseUrl\n // to be handled by the auth provider\n // iframeRef.current.setAttribute(\"src\", \"\");\n setTokenExchangeUrl(iframeUrl);\n }\n\n if (closeOnRedirect) onClose?.();\n return true; // Successfully processed the URL\n }\n } catch {\n // ignore errors while waiting for redirect\n }\n }\n }\n return false; // Haven't processed the URL yet\n }, [closeOnRedirect, config, iframeRef, onClose]);\n\n const intervalId = useRef<NodeJS.Timeout>();\n\n const handleEscape = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose?.();\n }\n },\n [onClose],\n );\n\n // handle Escape\n useEffect(() => {\n window.addEventListener(\"keydown\", handleEscape);\n\n return () => window.removeEventListener(\"keydown\", handleEscape);\n });\n\n const [isIframeContentLoaded, setIsIframeContentLoaded] = useState(false);\n const handleIframeLoad = useCallback(() => {\n setIsIframeContentLoaded(true);\n\n const iframeHasUrl = processIframeUrl();\n if (iframeHasUrl && intervalId.current) {\n clearInterval(intervalId.current);\n }\n }, [processIframeUrl, intervalId]);\n\n const WrapperComponent = iframeMode === \"embedded\" ? NoChrome : IframeChrome;\n\n const showLoadingIcon = !isIframeContentLoaded && iframeMode === \"embedded\";\n return (\n <WrapperComponent onClose={onClose} isFrameLoaded={isIframeContentLoaded}>\n {showLoadingIcon ? (\n <div\n id=\"civic-auth-loading-icon-wrapper\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor,\n borderRadius: \"24px\",\n }}\n >\n <LoadingIcon />\n </div>\n ) : null}\n <CivicAuthIframe\n ref={iframeRef}\n id={\"civic-auth-iframe\"}\n onLoad={handleIframeLoad}\n />\n </WrapperComponent>\n );\n};\n\nexport type { CivicAuthIframeContainerProps };\n\nexport { CivicAuthIframeContainer };\n"]}
|
|
1
|
+
{"version":3,"file":"CivicAuthIframeContainer.js","sourceRoot":"","sources":["../../../src/shared/components/CivicAuthIframeContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon.js\";\nimport { CloseIcon } from \"@/shared/components/CloseIcon.js\";\nimport { CivicAuthIframe } from \"@/shared/components/CivicAuthIframe.js\";\nimport { useIframe } from \"@/shared/hooks/index.js\";\nimport { TOKEN_EXCHANGE_TRIGGER_TEXT } from \"@/constants.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/index.js\";\nimport { useClientTokenExchangeSession } from \"@/shared/hooks/index.js\";\nimport { getIframeRef } from \"../lib/iframeUtils.js\";\n\ntype CivicAuthIframeContainerProps = {\n onClose?: () => void;\n closeOnRedirect?: boolean;\n};\n\nfunction NoChrome({\n children,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n}) {\n return (\n <div data-testid=\"civic-iframe-no-chrome\" style={{ position: \"relative\" }}>\n {children}\n </div>\n );\n}\n\nexport function IframeChrome({\n children,\n onClose,\n isFrameLoaded,\n}: {\n children: React.ReactNode;\n onClose?: () => void;\n isFrameLoaded: boolean;\n}) {\n const { setIframeAborted, iframeMode, backgroundColor } = useIframe();\n\n const iframeContainerStyleOverrides =\n iframeMode === \"embedded\"\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : {\n ...(isFrameLoaded\n ? {\n paddingTop: \"1.5rem\",\n borderRadius: \"1.5rem\",\n }\n : { borderRadius: \"0.5rem\", paddingTop: \"0\" }),\n };\n return (\n <div\n style={{\n position: \"fixed\", // Change to fixed to stay in viewport\n left: 0,\n top: 0,\n zIndex: 50,\n display: \"flex\",\n height: \"100vh\",\n width: \"100vw\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(17, 24, 39, 0.5)\", // Semi-transparent dark background\n backdropFilter: \"blur(4px)\", // Optional: adds slight blur to background\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <div\n data-testid=\"iframe-chrome\"\n style={{\n position: \"relative\",\n overflow: \"hidden\",\n backgroundColor,\n paddingLeft: \"0\",\n paddingRight: \"0\",\n paddingBottom: \"0\",\n // paddingTop gets added in style overrides\n ...iframeContainerStyleOverrides,\n boxShadow:\n \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n minWidth: \"20rem\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {isFrameLoaded && (\n <button\n style={{\n position: \"absolute\",\n right: \"1rem\",\n top: \"1rem\",\n display: \"flex\",\n cursor: \"pointer\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n backgroundColor: \"transparent\",\n padding: \"0.25rem\",\n color: \"#9ca3af\",\n }}\n onClick={() => {\n setIframeAborted(true);\n onClose?.();\n }}\n >\n <CloseIcon />\n </button>\n )}\n\n {children}\n </div>\n </div>\n );\n}\n\nconst CivicAuthIframeContainer = ({\n onClose,\n closeOnRedirect = true,\n}: CivicAuthIframeContainerProps) => {\n const config = useCivicAuthConfig();\n const [tokenExchangeUrl, setTokenExchangeUrl] = useState<string | null>(null);\n const { doTokenExchange } = useClientTokenExchangeSession();\n const { iframeRef, iframeMode, backgroundColor, setIframeMounted } =\n useIframe();\n\n useEffect(() => {\n setIframeMounted(true);\n }, [setIframeMounted]);\n\n useEffect(() => {\n if (tokenExchangeUrl) {\n doTokenExchange?.(tokenExchangeUrl);\n }\n }, [doTokenExchange, tokenExchangeUrl]);\n\n const processIframeUrl = useCallback(() => {\n if (!config) return;\n if (iframeRef && iframeRef.current) {\n const ref = getIframeRef(iframeRef.current)!;\n if (ref.contentWindow) {\n try {\n const iframeUrl = ref.contentWindow.location.href;\n // we know that oauth has finished when the iframe redirects to our redirectUrl\n if (iframeUrl.startsWith(config.redirectUrl)) {\n const iframeBody = ref.contentWindow.document.body.innerHTML;\n\n // If we're doing a server token exchange, we need to call the server a second time\n // using a fetch so that we're on the same domain and cookies can be sent and read\n // The server will use the presence of the code_verifier cookie to determine whether to do a token exchange or not.\n // On the initial (3rd party) redirect from the auth server, the cookie won't be sent, so the server-side callback route will just render a blank page,\n // and we'll do the exchange request from here, which will include the cookies.\n if (iframeBody.includes(TOKEN_EXCHANGE_TRIGGER_TEXT)) {\n const params = new URL(iframeUrl).searchParams;\n const appUrl = globalThis.window?.location?.origin;\n fetch(\n `${config.redirectUrl}?${params.toString()}&appUrl=${appUrl}`,\n );\n } else {\n // if we're doing token-exchange in the client, we can just set the authResponseUrl\n // to be handled by the auth provider\n // iframeRef.current.setAttribute(\"src\", \"\");\n setTokenExchangeUrl(iframeUrl);\n }\n\n if (closeOnRedirect) onClose?.();\n return true; // Successfully processed the URL\n }\n } catch {\n // ignore errors while waiting for redirect\n }\n }\n }\n return false; // Haven't processed the URL yet\n }, [closeOnRedirect, config, iframeRef, onClose]);\n\n const intervalId = useRef<NodeJS.Timeout>();\n\n const handleEscape = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose?.();\n }\n },\n [onClose],\n );\n\n // handle Escape\n useEffect(() => {\n window.addEventListener(\"keydown\", handleEscape);\n\n return () => window.removeEventListener(\"keydown\", handleEscape);\n });\n\n const [isIframeContentLoaded, setIsIframeContentLoaded] = useState(false);\n const handleIframeLoad = useCallback(() => {\n setIsIframeContentLoaded(true);\n\n const iframeHasUrl = processIframeUrl();\n if (iframeHasUrl && intervalId.current) {\n clearInterval(intervalId.current);\n }\n }, [processIframeUrl, intervalId]);\n\n const WrapperComponent = iframeMode === \"embedded\" ? NoChrome : IframeChrome;\n\n const showLoadingIcon = !isIframeContentLoaded && iframeMode === \"embedded\";\n return (\n <WrapperComponent onClose={onClose} isFrameLoaded={isIframeContentLoaded}>\n {showLoadingIcon ? (\n <div\n id=\"civic-auth-loading-icon-wrapper\"\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor,\n borderRadius: \"24px\",\n }}\n >\n <LoadingIcon />\n </div>\n ) : null}\n <CivicAuthIframe\n ref={iframeRef}\n id={\"civic-auth-iframe\"}\n onLoad={handleIframeLoad}\n />\n </WrapperComponent>\n );\n};\n\nexport type { CivicAuthIframeContainerProps };\n\nexport { CivicAuthIframeContainer };\n"]}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { SessionData } from "../../types.js";
|
|
2
|
-
declare const useRefresh: (session: SessionData | null) =>
|
|
2
|
+
declare const useRefresh: (session: SessionData | null) => {
|
|
3
|
+
error: Error | undefined;
|
|
4
|
+
};
|
|
3
5
|
export { useRefresh };
|
|
4
6
|
//# sourceMappingURL=useRefresh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI;;CAiD9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { useEffect, useMemo, useState } from "react";
|
|
2
2
|
import { useCivicAuthConfig } from "./useCivicAuthConfig.js";
|
|
3
|
-
import { AuthenticationRefresherImpl } from "../lib/AuthenticationRefresherImpl.js";
|
|
4
3
|
import { LocalStorageAdapter } from "../../browser/storage.js";
|
|
4
|
+
import { BrowserAuthenticationRefresher } from "../lib/BrowserAuthenticationRefresher.js";
|
|
5
5
|
const useRefresh = (session) => {
|
|
6
6
|
const authConfig = useCivicAuthConfig();
|
|
7
7
|
const storage = useMemo(() => new LocalStorageAdapter(), []);
|
|
8
|
+
const [error, setError] = useState();
|
|
8
9
|
// setup token autorefresh
|
|
9
10
|
const [refresher, setRefresher] = useState(undefined);
|
|
10
11
|
useEffect(() => {
|
|
@@ -12,7 +13,12 @@ const useRefresh = (session) => {
|
|
|
12
13
|
return;
|
|
13
14
|
const abortController = new AbortController();
|
|
14
15
|
const currentRefresher = refresher;
|
|
15
|
-
|
|
16
|
+
const onError = async (error) => {
|
|
17
|
+
console.error("Error refreshing token", error);
|
|
18
|
+
refresher?.clearAutorefresh();
|
|
19
|
+
setError(error);
|
|
20
|
+
};
|
|
21
|
+
BrowserAuthenticationRefresher.build({ ...authConfig }, storage, onError).then((newRefresher) => {
|
|
16
22
|
if (abortController.signal.aborted)
|
|
17
23
|
return;
|
|
18
24
|
currentRefresher?.clearAutorefresh();
|
|
@@ -33,6 +39,9 @@ const useRefresh = (session) => {
|
|
|
33
39
|
}
|
|
34
40
|
return () => refresher?.clearAutorefresh();
|
|
35
41
|
}, [refresher, session?.authenticated]);
|
|
42
|
+
return {
|
|
43
|
+
error,
|
|
44
|
+
};
|
|
36
45
|
};
|
|
37
46
|
export { useRefresh };
|
|
38
47
|
//# sourceMappingURL=useRefresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAC;IAC5C,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAExC,SAAS,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAEnC,MAAM,OAAO,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,SAAS,EAAE,gBAAgB,EAAE,CAAC;YAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,8BAA8B,CAAC,KAAK,CAClC,EAAE,GAAG,UAAU,EAAE,EACjB,OAAO,EACP,OAAO,CACR,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;YACtB,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,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,SAAS,CAAC,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;IACxC,OAAO;QACL,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useCivicAuthConfig } from \"./useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { BrowserAuthenticationRefresher } from \"../lib/BrowserAuthenticationRefresher.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n const storage = useMemo(() => new LocalStorageAdapter(), []);\n const [error, setError] = useState<Error>();\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n BrowserAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n\n const onError = async (error: Error) => {\n console.error(\"Error refreshing token\", error);\n refresher?.clearAutorefresh();\n setError(error);\n };\n BrowserAuthenticationRefresher.build(\n { ...authConfig },\n storage,\n onError,\n ).then((newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\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 return {\n error,\n };\n};\n\nexport { useRefresh };\n"]}
|
|
@@ -134,9 +134,9 @@ const useSignIn = ({ pkceConsumer, preSignOut, postSignOut, displayMode, }) => {
|
|
|
134
134
|
}
|
|
135
135
|
if (displayMode === "iframe" && iframeAborted) {
|
|
136
136
|
setIframeAborted(false);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
}
|
|
138
|
+
if (!session?.authenticated) {
|
|
139
|
+
setAuthStatus(AuthStatus.UNAUTHENTICATED);
|
|
140
140
|
}
|
|
141
141
|
}, [displayMode, iframeAborted, session?.authenticated, setIframeAborted]);
|
|
142
142
|
// handle logout finished
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSignIn.js","sourceRoot":"","sources":["../../../src/shared/hooks/useSignIn.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport {\n AuthStatus,\n type DisplayMode,\n type LoginAppDesignOptions,\n} from \"@/types.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { PopupError, type PKCEConsumer } from \"@/services/types.js\";\nimport { useSession } from \"./useSession.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { clearTokens, clearUser } from \"../lib/util.js\";\nimport { useLocalStorage } from \"usehooks-ts\";\nimport { LOGOUT_STATE } from \"@/constants.js\";\n\ntype SignInProps = {\n pkceConsumer?: PKCEConsumer;\n preSignOut?: () => Promise<void>;\n postSignOut?: () => Promise<void>;\n displayMode: DisplayMode;\n};\nconst useSignIn = ({\n pkceConsumer,\n preSignOut,\n postSignOut,\n displayMode,\n}: SignInProps) => {\n const civicAuthConfig = useCivicAuthConfig();\n const {\n iframeRef,\n logoutIframeRef,\n setIframeIsVisible,\n iframeIsVisible,\n setLogoutIframeIsVisible,\n iframeAborted,\n setIframeAborted,\n } = useIframe();\n const { data: session } = useSession();\n const [authStatus, setAuthStatus] = useState(AuthStatus.UNAUTHENTICATED);\n const [, setDesignOption] = useLocalStorage<LoginAppDesignOptions>(\n `loginAppDesign`,\n { colorMode: \"auto\" },\n );\n\n const authInitiator = useMemo(() => {\n if (!civicAuthConfig) {\n return null;\n }\n const {\n clientId,\n redirectUrl,\n logoutUrl,\n logoutRedirectUrl,\n nonce,\n oauthServer,\n endpoints,\n scopes,\n } = civicAuthConfig;\n return new BrowserAuthenticationInitiator(\n {\n pkceConsumer: pkceConsumer || new BrowserPublicClientPKCEProducer(), // generate and retrieve the challenge client-side\n clientId,\n redirectUrl,\n logoutUrl,\n logoutRedirectUrl,\n scopes,\n displayMode,\n oauthServer,\n endpointOverrides: endpoints,\n nonce,\n },\n setDesignOption,\n );\n }, [civicAuthConfig, displayMode, pkceConsumer, setDesignOption]);\n\n useEffect(() => {\n return () => {\n if (authInitiator) {\n authInitiator.cleanup();\n }\n };\n }, [authInitiator]);\n\n // This effect is used to clear the tokens and user when the user signs out after a redirect\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n const state = params.get(\"state\");\n const localStorage = new LocalStorageAdapter();\n localStorage.get(LOGOUT_STATE).then((storedLogoutState) => {\n if (state && state === storedLogoutState) {\n // Clear storage\n clearTokens(localStorage);\n clearUser(localStorage);\n LocalStorageAdapter.emitter.emit(\"signOut\");\n\n // Clean up storage and URL\n sessionStorage.removeItem(LOGOUT_STATE);\n const cleanUrl = window.location.href.split(\"?\")[0];\n window.history.replaceState({}, document.title, cleanUrl);\n }\n });\n }, []);\n\n const startSignIn = useCallback(async () => {\n if (!authInitiator) return;\n\n if (authStatus === AuthStatus.AUTHENTICATING) {\n return;\n }\n setAuthStatus(AuthStatus.AUTHENTICATING);\n authInitiator.setDisplayMode(displayMode);\n\n const useIframeRef = iframeRef?.current || null;\n await authInitiator.signIn(useIframeRef).catch((error) => {\n setAuthStatus(AuthStatus.ERROR);\n console.error(\"signIn error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n // if we've tried to open a popup and it has failed, then fallback to redirect mode\n if (error instanceof PopupError) {\n setIframeIsVisible(false); // hide the iframe\n authInitiator.cleanup(); // clear any event listeners from before\n authInitiator.setDisplayMode(\"redirect\"); // switch to redirect mode\n authInitiator.signIn(useIframeRef); // retry the sign in\n }\n });\n }, [authInitiator, displayMode, iframeRef, setIframeIsVisible, authStatus]);\n\n const signIn = useCallback(async (): Promise<void> => {\n if (displayMode === \"iframe\") {\n setIframeIsVisible(true);\n }\n return startSignIn();\n }, [startSignIn, displayMode, setIframeIsVisible]);\n\n const signOut = useCallback(async () => {\n const idToken = session?.idToken;\n if (!authInitiator) return;\n\n setAuthStatus(AuthStatus.SIGNING_OUT);\n if (displayMode === \"iframe\") {\n setIframeIsVisible(false);\n setLogoutIframeIsVisible(true);\n }\n\n try {\n await preSignOut?.();\n\n const useIframeRef = logoutIframeRef?.current || null;\n await authInitiator.signOut(idToken, useIframeRef).catch((error) => {\n setAuthStatus(AuthStatus.ERROR);\n console.error(\"signOut error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n\n // Same popup fallback as signIn\n if (error instanceof PopupError) {\n setLogoutIframeIsVisible(false);\n authInitiator.cleanup();\n authInitiator.setDisplayMode(\"redirect\");\n authInitiator.signOut(idToken, useIframeRef);\n }\n });\n } catch (error) {\n console.error(\"Signout error:\", error);\n }\n }, [\n session?.idToken,\n authInitiator,\n displayMode,\n setLogoutIframeIsVisible,\n setIframeIsVisible,\n preSignOut,\n logoutIframeRef,\n ]);\n\n useEffect(() => {\n if (session?.authenticated) {\n setAuthStatus(AuthStatus.AUTHENTICATED);\n }\n if (displayMode === \"iframe\" && iframeAborted) {\n setIframeAborted(false);\n if (!session?.authenticated) {\n setAuthStatus(AuthStatus.UNAUTHENTICATED);\n }\n }\n }, [displayMode, iframeAborted, session?.authenticated, setIframeAborted]);\n\n // handle logout finished\n useEffect(() => {\n if (authStatus === AuthStatus.SIGNING_OUT && !session?.authenticated) {\n setAuthStatus(AuthStatus.UNAUTHENTICATED);\n postSignOut?.().then(() => {\n setLogoutIframeIsVisible(false);\n });\n return;\n }\n }, [\n session,\n postSignOut,\n setLogoutIframeIsVisible,\n displayMode,\n iframeIsVisible,\n authStatus,\n ]);\n\n return {\n signIn,\n signOut,\n startSignIn,\n authStatus,\n displayMode,\n };\n};\nexport { useSignIn };\n"]}
|
|
1
|
+
{"version":3,"file":"useSignIn.js","sourceRoot":"","sources":["../../../src/shared/hooks/useSignIn.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport {\n AuthStatus,\n type DisplayMode,\n type LoginAppDesignOptions,\n} from \"@/types.js\";\nimport { useIframe } from \"@/shared/hooks/useIframe.js\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { PopupError, type PKCEConsumer } from \"@/services/types.js\";\nimport { useSession } from \"./useSession.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { clearTokens, clearUser } from \"../lib/util.js\";\nimport { useLocalStorage } from \"usehooks-ts\";\nimport { LOGOUT_STATE } from \"@/constants.js\";\n\ntype SignInProps = {\n pkceConsumer?: PKCEConsumer;\n preSignOut?: () => Promise<void>;\n postSignOut?: () => Promise<void>;\n displayMode: DisplayMode;\n};\nconst useSignIn = ({\n pkceConsumer,\n preSignOut,\n postSignOut,\n displayMode,\n}: SignInProps) => {\n const civicAuthConfig = useCivicAuthConfig();\n const {\n iframeRef,\n logoutIframeRef,\n setIframeIsVisible,\n iframeIsVisible,\n setLogoutIframeIsVisible,\n iframeAborted,\n setIframeAborted,\n } = useIframe();\n const { data: session } = useSession();\n const [authStatus, setAuthStatus] = useState(AuthStatus.UNAUTHENTICATED);\n const [, setDesignOption] = useLocalStorage<LoginAppDesignOptions>(\n `loginAppDesign`,\n { colorMode: \"auto\" },\n );\n\n const authInitiator = useMemo(() => {\n if (!civicAuthConfig) {\n return null;\n }\n const {\n clientId,\n redirectUrl,\n logoutUrl,\n logoutRedirectUrl,\n nonce,\n oauthServer,\n endpoints,\n scopes,\n } = civicAuthConfig;\n return new BrowserAuthenticationInitiator(\n {\n pkceConsumer: pkceConsumer || new BrowserPublicClientPKCEProducer(), // generate and retrieve the challenge client-side\n clientId,\n redirectUrl,\n logoutUrl,\n logoutRedirectUrl,\n scopes,\n displayMode,\n oauthServer,\n endpointOverrides: endpoints,\n nonce,\n },\n setDesignOption,\n );\n }, [civicAuthConfig, displayMode, pkceConsumer, setDesignOption]);\n\n useEffect(() => {\n return () => {\n if (authInitiator) {\n authInitiator.cleanup();\n }\n };\n }, [authInitiator]);\n\n // This effect is used to clear the tokens and user when the user signs out after a redirect\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n const state = params.get(\"state\");\n const localStorage = new LocalStorageAdapter();\n localStorage.get(LOGOUT_STATE).then((storedLogoutState) => {\n if (state && state === storedLogoutState) {\n // Clear storage\n clearTokens(localStorage);\n clearUser(localStorage);\n LocalStorageAdapter.emitter.emit(\"signOut\");\n\n // Clean up storage and URL\n sessionStorage.removeItem(LOGOUT_STATE);\n const cleanUrl = window.location.href.split(\"?\")[0];\n window.history.replaceState({}, document.title, cleanUrl);\n }\n });\n }, []);\n\n const startSignIn = useCallback(async () => {\n if (!authInitiator) return;\n\n if (authStatus === AuthStatus.AUTHENTICATING) {\n return;\n }\n setAuthStatus(AuthStatus.AUTHENTICATING);\n authInitiator.setDisplayMode(displayMode);\n\n const useIframeRef = iframeRef?.current || null;\n await authInitiator.signIn(useIframeRef).catch((error) => {\n setAuthStatus(AuthStatus.ERROR);\n console.error(\"signIn error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n // if we've tried to open a popup and it has failed, then fallback to redirect mode\n if (error instanceof PopupError) {\n setIframeIsVisible(false); // hide the iframe\n authInitiator.cleanup(); // clear any event listeners from before\n authInitiator.setDisplayMode(\"redirect\"); // switch to redirect mode\n authInitiator.signIn(useIframeRef); // retry the sign in\n }\n });\n }, [authInitiator, displayMode, iframeRef, setIframeIsVisible, authStatus]);\n\n const signIn = useCallback(async (): Promise<void> => {\n if (displayMode === \"iframe\") {\n setIframeIsVisible(true);\n }\n return startSignIn();\n }, [startSignIn, displayMode, setIframeIsVisible]);\n\n const signOut = useCallback(async () => {\n const idToken = session?.idToken;\n if (!authInitiator) return;\n\n setAuthStatus(AuthStatus.SIGNING_OUT);\n if (displayMode === \"iframe\") {\n setIframeIsVisible(false);\n setLogoutIframeIsVisible(true);\n }\n\n try {\n await preSignOut?.();\n\n const useIframeRef = logoutIframeRef?.current || null;\n await authInitiator.signOut(idToken, useIframeRef).catch((error) => {\n setAuthStatus(AuthStatus.ERROR);\n console.error(\"signOut error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n\n // Same popup fallback as signIn\n if (error instanceof PopupError) {\n setLogoutIframeIsVisible(false);\n authInitiator.cleanup();\n authInitiator.setDisplayMode(\"redirect\");\n authInitiator.signOut(idToken, useIframeRef);\n }\n });\n } catch (error) {\n console.error(\"Signout error:\", error);\n }\n }, [\n session?.idToken,\n authInitiator,\n displayMode,\n setLogoutIframeIsVisible,\n setIframeIsVisible,\n preSignOut,\n logoutIframeRef,\n ]);\n\n useEffect(() => {\n if (session?.authenticated) {\n setAuthStatus(AuthStatus.AUTHENTICATED);\n }\n if (displayMode === \"iframe\" && iframeAborted) {\n setIframeAborted(false);\n }\n if (!session?.authenticated) {\n setAuthStatus(AuthStatus.UNAUTHENTICATED);\n }\n }, [displayMode, iframeAborted, session?.authenticated, setIframeAborted]);\n\n // handle logout finished\n useEffect(() => {\n if (authStatus === AuthStatus.SIGNING_OUT && !session?.authenticated) {\n setAuthStatus(AuthStatus.UNAUTHENTICATED);\n postSignOut?.().then(() => {\n setLogoutIframeIsVisible(false);\n });\n return;\n }\n }, [\n session,\n postSignOut,\n setLogoutIframeIsVisible,\n displayMode,\n iframeIsVisible,\n authStatus,\n ]);\n\n return {\n signIn,\n signOut,\n startSignIn,\n authStatus,\n displayMode,\n };\n};\nexport { useSignIn };\n"]}
|
|
@@ -5,9 +5,9 @@ export declare class AuthenticationRefresherImpl extends GenericAuthenticationRe
|
|
|
5
5
|
protected endpointOverrides?: Partial<Endpoints> | undefined;
|
|
6
6
|
private endpoints;
|
|
7
7
|
private oauth2client;
|
|
8
|
-
constructor(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints> | undefined);
|
|
8
|
+
constructor(authConfig: AuthConfig, storage: AuthStorage, onError: (error: Error) => Promise<void>, endpointOverrides?: Partial<Endpoints> | undefined);
|
|
9
9
|
init(): Promise<this>;
|
|
10
|
-
static build(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints>): Promise<AuthenticationRefresherImpl>;
|
|
10
|
+
static build(authConfig: AuthConfig, storage: AuthStorage, onError: (error: Error) => Promise<void>, endpointOverrides?: Partial<Endpoints>): Promise<AuthenticationRefresherImpl>;
|
|
11
11
|
storeTokens(tokenResponseBody: OIDCTokenResponseBody): Promise<void>;
|
|
12
12
|
refreshAccessToken(): Promise<OIDCTokenResponseBody>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationRefresherImpl.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/AuthenticationRefresherImpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,qBAAa,2BAA4B,SAAQ,8BAA8B;
|
|
1
|
+
{"version":3,"file":"AuthenticationRefresherImpl.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/AuthenticationRefresherImpl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMrD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,qBAAa,2BAA4B,SAAQ,8BAA8B;IAO3E,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IANlD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,YAAY,CAA2B;gBAE7C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,EAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,YAAA;IAQ5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAmBd,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,EACxC,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,2BAA2B,CAAC;IAYjC,WAAW,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAuB3D"}
|
|
@@ -5,8 +5,8 @@ export class AuthenticationRefresherImpl extends GenericAuthenticationRefresher
|
|
|
5
5
|
endpointOverrides;
|
|
6
6
|
endpoints;
|
|
7
7
|
oauth2client;
|
|
8
|
-
constructor(authConfig, storage, endpointOverrides) {
|
|
9
|
-
super();
|
|
8
|
+
constructor(authConfig, storage, onError, endpointOverrides) {
|
|
9
|
+
super(onError);
|
|
10
10
|
this.endpointOverrides = endpointOverrides;
|
|
11
11
|
this.authConfig = authConfig;
|
|
12
12
|
this.storage = storage;
|
|
@@ -22,8 +22,8 @@ export class AuthenticationRefresherImpl extends GenericAuthenticationRefresher
|
|
|
22
22
|
});
|
|
23
23
|
return this;
|
|
24
24
|
}
|
|
25
|
-
static async build(authConfig, storage, endpointOverrides) {
|
|
26
|
-
const refresher = new AuthenticationRefresherImpl(authConfig, storage, endpointOverrides);
|
|
25
|
+
static async build(authConfig, storage, onError, endpointOverrides) {
|
|
26
|
+
const refresher = new AuthenticationRefresherImpl(authConfig, storage, onError, endpointOverrides);
|
|
27
27
|
await refresher.init();
|
|
28
28
|
return refresher;
|
|
29
29
|
}
|
|
@@ -36,11 +36,9 @@ export class AuthenticationRefresherImpl extends GenericAuthenticationRefresher
|
|
|
36
36
|
if (!this.storage)
|
|
37
37
|
throw new Error("No storage available");
|
|
38
38
|
const refreshToken = await this.getRefreshToken();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
if (!this.oauth2client)
|
|
43
|
-
this.init();
|
|
39
|
+
if (!this.oauth2client) {
|
|
40
|
+
await this.init();
|
|
41
|
+
}
|
|
44
42
|
const oauth2Client = this.oauth2client;
|
|
45
43
|
const tokenResponseBody = await oauth2Client.refreshAccessToken(refreshToken);
|
|
46
44
|
await validateOauth2Tokens(tokenResponseBody, this.endpoints, oauth2Client, this.oauthServer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationRefresherImpl.js","sourceRoot":"","sources":["../../../src/shared/lib/AuthenticationRefresherImpl.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,OAAO,2BAA4B,SAAQ,8BAA8B;
|
|
1
|
+
{"version":3,"file":"AuthenticationRefresherImpl.js","sourceRoot":"","sources":["../../../src/shared/lib/AuthenticationRefresherImpl.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,MAAM,OAAO,2BAA4B,SAAQ,8BAA8B;IAOjE;IANJ,SAAS,CAAwB;IACjC,YAAY,CAA2B;IAC/C,YACE,UAAsB,EACtB,OAAoB,EACpB,OAAwC,EAC9B,iBAAsC;QAEhD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFL,sBAAiB,GAAjB,iBAAiB,CAAqB;QAGhD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClE,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,yBAAyB,CAC9C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,EACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB;YACE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;SACzC,CACF,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,UAAsB,EACtB,OAAoB,EACpB,OAAwC,EACxC,iBAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAC/C,UAAU,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,CAClB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,iBAAwC;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QACxC,MAAM,iBAAiB,GACrB,MAAM,YAAY,CAAC,kBAAkB,CACnC,YAAY,CACb,CAAC;QACJ,MAAM,oBAAoB,CACxB,iBAAiB,EACjB,IAAI,CAAC,SAAU,EACf,YAAY,EACZ,IAAI,CAAC,WAAW,CACjB,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import type { AuthConfig } from \"@/server/config.js\";\nimport {\n getEndpointsWithOverrides,\n storeTokens,\n validateOauth2Tokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthStorage, Endpoints, OIDCTokenResponseBody } from \"@/types.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport { GenericAuthenticationRefresher } from \"./GenericAuthenticationRefresher.js\";\n\nexport class AuthenticationRefresherImpl extends GenericAuthenticationRefresher {\n private endpoints: Endpoints | undefined;\n private oauth2client: OAuth2Client | undefined;\n constructor(\n authConfig: AuthConfig,\n storage: AuthStorage,\n onError: (error: Error) => Promise<void>,\n protected endpointOverrides?: Partial<Endpoints>,\n ) {\n super(onError);\n this.authConfig = authConfig;\n this.storage = storage;\n this.init();\n }\n\n async init(): Promise<this> {\n if (!this.authConfig) throw new Error(\"No auth config available\");\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n onError: (error: Error) => Promise<void>,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<AuthenticationRefresherImpl> {\n const refresher = new AuthenticationRefresherImpl(\n authConfig,\n storage,\n onError,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n async storeTokens(tokenResponseBody: OIDCTokenResponseBody): Promise<void> {\n if (!this.storage) throw new Error(\"No storage available\");\n await storeTokens(this.storage, tokenResponseBody);\n }\n\n async refreshAccessToken(): Promise<OIDCTokenResponseBody> {\n if (!this.storage) throw new Error(\"No storage available\");\n const refreshToken = await this.getRefreshToken();\n\n if (!this.oauth2client) {\n await this.init();\n }\n\n const oauth2Client = this.oauth2client!;\n const tokenResponseBody =\n await oauth2Client.refreshAccessToken<OIDCTokenResponseBody>(\n refreshToken,\n );\n await validateOauth2Tokens(\n tokenResponseBody,\n this.endpoints!,\n oauth2Client,\n this.oauthServer,\n );\n\n await this.storeTokens(tokenResponseBody);\n return tokenResponseBody;\n }\n}\n"]}
|
|
@@ -2,15 +2,13 @@ import type { AuthConfig } from "../../server/config.js";
|
|
|
2
2
|
import type { AuthenticationRefresher } from "../../services/types.js";
|
|
3
3
|
import type { AuthStorage, OIDCTokenResponseBody } from "../../types.js";
|
|
4
4
|
export declare abstract class GenericAuthenticationRefresher implements AuthenticationRefresher {
|
|
5
|
+
readonly onError: (error: Error) => Promise<void>;
|
|
5
6
|
protected authConfig: AuthConfig | undefined;
|
|
6
7
|
protected storage: AuthStorage | undefined;
|
|
7
|
-
|
|
8
|
+
constructor(onError: (error: Error) => Promise<void>);
|
|
8
9
|
get oauthServer(): string;
|
|
9
10
|
abstract refreshAccessToken(refreshToken?: string): Promise<OIDCTokenResponseBody>;
|
|
10
11
|
getRefreshToken(): Promise<string>;
|
|
11
12
|
refreshTokens(): Promise<OIDCTokenResponseBody>;
|
|
12
|
-
private handleRefresh;
|
|
13
|
-
setupAutorefresh(): Promise<void>;
|
|
14
|
-
clearAutorefresh(): void;
|
|
15
13
|
}
|
|
16
14
|
//# sourceMappingURL=GenericAuthenticationRefresher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,8BAAsB,8BACpB,YAAW,uBAAuB;IAKtB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC;IAH7D,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;gBAEtB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC;IAE7D,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,QAAQ,CAAC,kBAAkB,CACzB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAE3B,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAQlC,aAAa;CAYpB"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { DEFAULT_AUTH_SERVER } from "../../constants.js";
|
|
2
|
+
import { retrieveTokens } from "../../shared/lib/util.js";
|
|
3
3
|
export class GenericAuthenticationRefresher {
|
|
4
|
+
onError;
|
|
4
5
|
authConfig;
|
|
5
6
|
storage;
|
|
6
|
-
|
|
7
|
+
constructor(onError) {
|
|
8
|
+
this.onError = onError;
|
|
9
|
+
}
|
|
7
10
|
get oauthServer() {
|
|
8
11
|
return this.authConfig?.oauthServer || DEFAULT_AUTH_SERVER;
|
|
9
12
|
}
|
|
@@ -11,55 +14,18 @@ export class GenericAuthenticationRefresher {
|
|
|
11
14
|
if (!this.storage)
|
|
12
15
|
throw new Error("No storage available");
|
|
13
16
|
const tokens = await retrieveTokens(this.storage);
|
|
14
|
-
console.log("getRefreshToken tokens", tokens);
|
|
15
17
|
if (!tokens?.refresh_token)
|
|
16
18
|
throw new Error("No refresh token available");
|
|
17
19
|
return tokens.refresh_token;
|
|
18
20
|
}
|
|
19
21
|
async refreshTokens() {
|
|
20
|
-
console.log("GenericAuthenticationRefresher refreshTokens calling refreshAccessToken()");
|
|
21
|
-
return this.refreshAccessToken();
|
|
22
|
-
}
|
|
23
|
-
async handleRefresh() {
|
|
24
22
|
try {
|
|
25
|
-
|
|
26
|
-
// ensure only one refresh is in progress
|
|
27
|
-
if (localStorage.getItem(REFRESH_IN_PROGRESS) !== "true") {
|
|
28
|
-
localStorage.setItem(REFRESH_IN_PROGRESS, "true");
|
|
29
|
-
await this.refreshTokens();
|
|
30
|
-
localStorage.setItem(REFRESH_IN_PROGRESS, "false");
|
|
31
|
-
await this.setupAutorefresh(); // Reset the timeout after successful refresh
|
|
32
|
-
}
|
|
23
|
+
return await this.refreshAccessToken();
|
|
33
24
|
}
|
|
34
25
|
catch (error) {
|
|
35
|
-
console.error("Failed to refresh tokens:", error);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
async setupAutorefresh() {
|
|
40
|
-
if (!this.storage)
|
|
41
|
-
throw new Error("No storage available");
|
|
42
|
-
console.log("setupAutorefresh");
|
|
43
|
-
// Clear any existing timeout
|
|
44
|
-
this.clearAutorefresh();
|
|
45
|
-
// get expires_in
|
|
46
|
-
const now = Math.floor(Date.now() / 1000);
|
|
47
|
-
const expiresAt = (await retrieveAccessTokenExpiresAt(this.storage)) || now + 60;
|
|
48
|
-
// Calculate time until expiry (subtract 30 seconds as buffer)
|
|
49
|
-
const bufferTime = 30; // 30 seconds
|
|
50
|
-
const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past
|
|
51
|
-
const refreshTimeout = setTimeout(() => {
|
|
52
|
-
this.handleRefresh();
|
|
53
|
-
}, 1000 * refreshTime);
|
|
54
|
-
localStorage.setItem(AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());
|
|
55
|
-
}
|
|
56
|
-
clearAutorefresh() {
|
|
57
|
-
// use local storage to store the timeout id so that if multiple instances
|
|
58
|
-
// of the refresher are created they can all clear the same timeout
|
|
59
|
-
const existingTimeout = localStorage.getItem(AUTOREFRESH_TIMEOUT_NAME);
|
|
60
|
-
console.log("clearAutorefresh existingTimeout", existingTimeout);
|
|
61
|
-
if (existingTimeout) {
|
|
62
|
-
clearTimeout(existingTimeout);
|
|
26
|
+
console.error("GenericAuthenticationRefresher: Failed to refresh tokens:", error);
|
|
27
|
+
await this.onError(error);
|
|
28
|
+
throw error;
|
|
63
29
|
}
|
|
64
30
|
}
|
|
65
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,OAAgB,8BAA8B;IAM7B;IAHX,UAAU,CAAyB;IACnC,OAAO,CAA0B;IAE3C,YAAqB,OAAwC;QAAxC,YAAO,GAAP,OAAO,CAAiC;IAAG,CAAC;IAEjE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,WAAW,IAAI,mBAAmB,CAAC;IAC7D,CAAC;IAMD,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,2DAA2D,EAC3D,KAAK,CACN,CAAC;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF","sourcesContent":["import { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport type { AuthenticationRefresher } from \"@/services/types.js\";\nimport { retrieveTokens } from \"@/shared/lib/util.js\";\nimport type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\n\nexport abstract class GenericAuthenticationRefresher\n implements AuthenticationRefresher\n{\n protected authConfig: AuthConfig | undefined;\n protected storage: AuthStorage | undefined;\n\n constructor(readonly onError: (error: Error) => Promise<void>) {}\n\n get oauthServer(): string {\n return this.authConfig?.oauthServer || DEFAULT_AUTH_SERVER;\n }\n\n abstract refreshAccessToken(\n refreshToken?: string,\n ): Promise<OIDCTokenResponseBody>;\n\n async getRefreshToken(): Promise<string> {\n if (!this.storage) throw new Error(\"No storage available\");\n\n const tokens = await retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n return tokens.refresh_token;\n }\n\n async refreshTokens() {\n try {\n return await this.refreshAccessToken();\n } catch (error) {\n console.error(\n \"GenericAuthenticationRefresher: Failed to refresh tokens:\",\n error,\n );\n await this.onError(error as Error);\n throw error;\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
type ExtendedIframeElement = HTMLIFrameElement & {
|
|
2
2
|
getElement: () => HTMLIFrameElement;
|
|
3
3
|
};
|
|
4
|
-
export declare const getIframeRef: (iframeRef: HTMLIFrameElement | ExtendedIframeElement | null) => HTMLIFrameElement;
|
|
4
|
+
export declare const getIframeRef: (iframeRef: HTMLIFrameElement | ExtendedIframeElement | null | undefined, allowNull?: boolean) => HTMLIFrameElement;
|
|
5
5
|
export {};
|
|
6
6
|
//# sourceMappingURL=iframeUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframeUtils.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG,iBAAiB,GAAG;IAC/C,UAAU,EAAE,MAAM,iBAAiB,CAAC;CACrC,CAAC;AACF,eAAO,MAAM,YAAY,cACZ,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"iframeUtils.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG,iBAAiB,GAAG;IAC/C,UAAU,EAAE,MAAM,iBAAiB,CAAC;CACrC,CAAC;AACF,eAAO,MAAM,YAAY,cACZ,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,GAAG,SAAS,0BAEtE,iBAKF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const getIframeRef = (iframeRef) => {
|
|
2
|
-
if (!iframeRef) {
|
|
1
|
+
export const getIframeRef = (iframeRef, allowNull = false) => {
|
|
2
|
+
if (!iframeRef && !allowNull) {
|
|
3
3
|
throw new Error("iframeRef is required for displayMode 'iframe'");
|
|
4
4
|
}
|
|
5
5
|
return iframeRef?.getElement?.() ?? iframeRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframeUtils.js","sourceRoot":"","sources":["../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,
|
|
1
|
+
{"version":3,"file":"iframeUtils.js","sourceRoot":"","sources":["../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,SAAuE,EACvE,SAAS,GAAG,KAAK,EACE,EAAE;IACrB,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAQ,SAAmC,EAAE,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC;AAC3E,CAAC,CAAC","sourcesContent":["type ExtendedIframeElement = HTMLIFrameElement & {\n getElement: () => HTMLIFrameElement;\n};\nexport const getIframeRef = (\n iframeRef: HTMLIFrameElement | ExtendedIframeElement | null | undefined,\n allowNull = false,\n): HTMLIFrameElement => {\n if (!iframeRef && !allowNull) {\n throw new Error(\"iframeRef is required for displayMode 'iframe'\");\n }\n return (iframeRef as ExtendedIframeElement)?.getElement?.() ?? iframeRef;\n};\n"]}
|
|
@@ -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,EACT,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD;;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,eAAO,MAAM,uBAAuB,WAC1B,qBAAqB,KAC5B,MAUF,CAAC;AACF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/shared/lib/util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD;;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,eAAO,MAAM,uBAAuB,WAC1B,qBAAqB,KAC5B,MAUF,CAAC;AACF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,qBAAqB,iBAQ9B;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,GAAG,aAAa,EACpC,MAAM,EAAE,qBAAqB,iBA4C9B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,iBAWrD;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,iBAGhE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,iBAGnD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAkBvC;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"}
|
package/dist/shared/lib/util.js
CHANGED
|
@@ -111,11 +111,6 @@ export async function storeServerTokens(storage, tokens) {
|
|
|
111
111
|
const cookieStorage = storage;
|
|
112
112
|
const now = Math.floor(Date.now() / 1000);
|
|
113
113
|
const accessTokenMaxAge = accessTokenExpiresAt && accessTokenExpiresAt - now;
|
|
114
|
-
console.log("storeServerTokens timestamps", {
|
|
115
|
-
now,
|
|
116
|
-
accessTokenMaxAge,
|
|
117
|
-
accessTokenExpiresAt,
|
|
118
|
-
});
|
|
119
114
|
const cookiesOverride = {
|
|
120
115
|
...(accessTokenMaxAge ? { maxAge: accessTokenMaxAge } : {}),
|
|
121
116
|
};
|
|
@@ -128,6 +123,9 @@ export async function storeServerTokens(storage, tokens) {
|
|
|
128
123
|
console.log("storeServerTokens overrides", {
|
|
129
124
|
cookiesOverride,
|
|
130
125
|
refreshCookiesOverride,
|
|
126
|
+
now,
|
|
127
|
+
accessTokenMaxAge,
|
|
128
|
+
accessTokenExpiresAt,
|
|
131
129
|
});
|
|
132
130
|
const idTokenExpiry = decodeJwt(tokens.id_token)?.exp;
|
|
133
131
|
const idTokenMaxAge = idTokenExpiry && idTokenExpiry - now;
|
|
@@ -141,7 +139,6 @@ export async function storeServerTokens(storage, tokens) {
|
|
|
141
139
|
await storage.set(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT, accessTokenExpiresAt.toString(), cookiesOverride);
|
|
142
140
|
}
|
|
143
141
|
export async function clearTokens(storage) {
|
|
144
|
-
console.log("clearTokens");
|
|
145
142
|
// clear all local storage keys related to OAuth and CivicAuth SDK
|
|
146
143
|
const clearOAuthPromises = [
|
|
147
144
|
...Object.values(OAuthTokens),
|
|
@@ -166,7 +163,6 @@ export async function retrieveTokens(storage) {
|
|
|
166
163
|
const accessToken = await storage.get(OAuthTokens.ACCESS_TOKEN);
|
|
167
164
|
const refreshToken = await storage.get(OAuthTokens.REFRESH_TOKEN);
|
|
168
165
|
const accessTokenExpiresAt = await storage.get(OAuthTokens.ACCESS_TOKEN_EXPIRES_AT);
|
|
169
|
-
console.log("retrieveTokens refreshToken", refreshToken);
|
|
170
166
|
if (!idToken || !accessToken)
|
|
171
167
|
return null;
|
|
172
168
|
return {
|