@civic/auth 0.4.3 → 0.4.4-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -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/shared/components/CivicAuthIframe.d.ts.map +1 -1
- package/dist/shared/components/CivicAuthIframe.js +33 -26
- 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 +42 -38
- package/dist/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/shared/lib/iframeUtils.d.ts +1 -5
- package/dist/shared/lib/iframeUtils.d.ts.map +1 -1
- package/dist/shared/lib/iframeUtils.js +3 -1
- package/dist/shared/lib/iframeUtils.js.map +1 -1
- package/dist/shared/providers/IframeProvider.js +1 -1
- 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 +5 -5
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clearTokens = exports.BrowserCookieStorage = exports.printVersion = exports.getVersion = exports.VERSION = void 0;
|
|
4
|
+
const version_js_1 = require("./version.js");
|
|
5
|
+
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_js_1.VERSION; } });
|
|
6
|
+
let versionPrinted = false;
|
|
7
|
+
const getVersion = () => version_js_1.VERSION;
|
|
8
|
+
exports.getVersion = getVersion;
|
|
9
|
+
// print the version to the browser
|
|
10
|
+
const printVersion = () => {
|
|
11
|
+
if (!versionPrinted) {
|
|
12
|
+
versionPrinted = true;
|
|
13
|
+
if ((0, exports.getVersion)() &&
|
|
14
|
+
typeof window !== "undefined" &&
|
|
15
|
+
typeof document !== "undefined") {
|
|
16
|
+
console.log((0, exports.getVersion)());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.printVersion = printVersion;
|
|
21
|
+
var BrowserCookieStorage_js_1 = require("../shared/lib/BrowserCookieStorage.js");
|
|
22
|
+
Object.defineProperty(exports, "BrowserCookieStorage", { enumerable: true, get: function () { return BrowserCookieStorage_js_1.BrowserCookieStorage; } });
|
|
23
|
+
var util_js_1 = require("../shared/lib/util.js");
|
|
24
|
+
Object.defineProperty(exports, "clearTokens", { enumerable: true, get: function () { return util_js_1.clearTokens; } });
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAC9B,wFADA,oBAAO,OACA;AAChB,IAAI,cAAc,GAAG,KAAK,CAAC;AACpB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,oBAAO,CAAC;AAA3B,QAAA,UAAU,cAAiB;AACxC,mCAAmC;AAC5B,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,IAAI,CAAC;QACtB,IACE,IAAA,kBAAU,GAAE;YACZ,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,QAAQ,KAAK,WAAW,EAC/B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB;AACF,gFAA4E;AAAnE,+HAAA,oBAAoB,OAAA;AAC7B,gDAAmD;AAA1C,sGAAA,WAAW,OAAA","sourcesContent":["import { VERSION } from \"./version.js\";\nexport { VERSION };\nlet versionPrinted = false;\nexport const getVersion = () => VERSION;\n// print the version to the browser\nexport const printVersion = () => {\n if (!versionPrinted) {\n versionPrinted = true;\n if (\n getVersion() &&\n typeof window !== \"undefined\" &&\n typeof document !== \"undefined\"\n ) {\n console.log(getVersion());\n }\n }\n};\nexport { BrowserCookieStorage } from \"@/shared/lib/BrowserCookieStorage.js\";\nexport { clearTokens } from \"@/shared/lib/util.js\";\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AuthConfig } from "../../server/config.js";
|
|
2
|
+
import type { AuthStorage, Endpoints, OIDCTokenResponseBody } from "../../types.js";
|
|
3
|
+
import { GenericAuthenticationRefresher } from "./GenericAuthenticationRefresher.js";
|
|
4
|
+
export declare class AuthenticationRefresherImpl extends GenericAuthenticationRefresher {
|
|
5
|
+
protected endpointOverrides?: Partial<Endpoints> | undefined;
|
|
6
|
+
private endpoints;
|
|
7
|
+
private oauth2client;
|
|
8
|
+
constructor(authConfig: AuthConfig, storage: AuthStorage, onError: (error: Error) => Promise<void>, endpointOverrides?: Partial<Endpoints> | undefined);
|
|
9
|
+
init(): Promise<this>;
|
|
10
|
+
static build(authConfig: AuthConfig, storage: AuthStorage, onError: (error: Error) => Promise<void>, endpointOverrides?: Partial<Endpoints>): Promise<AuthenticationRefresherImpl>;
|
|
11
|
+
storeTokens(tokenResponseBody: OIDCTokenResponseBody): Promise<void>;
|
|
12
|
+
refreshAccessToken(): Promise<OIDCTokenResponseBody>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AuthenticationRefresherImpl.d.ts.map
|
|
@@ -0,0 +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;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;CAsB3D"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthenticationRefresherImpl = void 0;
|
|
4
|
+
const util_js_1 = require("../../shared/lib/util.js");
|
|
5
|
+
const oauth2_1 = require("oslo/oauth2");
|
|
6
|
+
const GenericAuthenticationRefresher_js_1 = require("./GenericAuthenticationRefresher.js");
|
|
7
|
+
class AuthenticationRefresherImpl extends GenericAuthenticationRefresher_js_1.GenericAuthenticationRefresher {
|
|
8
|
+
endpointOverrides;
|
|
9
|
+
endpoints;
|
|
10
|
+
oauth2client;
|
|
11
|
+
constructor(authConfig, storage, onError, endpointOverrides) {
|
|
12
|
+
super(onError);
|
|
13
|
+
this.endpointOverrides = endpointOverrides;
|
|
14
|
+
this.authConfig = authConfig;
|
|
15
|
+
this.storage = storage;
|
|
16
|
+
this.init();
|
|
17
|
+
}
|
|
18
|
+
async init() {
|
|
19
|
+
if (!this.authConfig)
|
|
20
|
+
throw new Error("No auth config available");
|
|
21
|
+
// resolve oauth config
|
|
22
|
+
this.endpoints = await (0, util_js_1.getEndpointsWithOverrides)(this.oauthServer, this.endpointOverrides);
|
|
23
|
+
this.oauth2client = new oauth2_1.OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
|
|
24
|
+
redirectURI: this.authConfig.redirectUrl,
|
|
25
|
+
});
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
static async build(authConfig, storage, onError, endpointOverrides) {
|
|
29
|
+
const refresher = new AuthenticationRefresherImpl(authConfig, storage, onError, endpointOverrides);
|
|
30
|
+
await refresher.init();
|
|
31
|
+
return refresher;
|
|
32
|
+
}
|
|
33
|
+
async storeTokens(tokenResponseBody) {
|
|
34
|
+
if (!this.storage)
|
|
35
|
+
throw new Error("No storage available");
|
|
36
|
+
await (0, util_js_1.storeTokens)(this.storage, tokenResponseBody);
|
|
37
|
+
}
|
|
38
|
+
async refreshAccessToken() {
|
|
39
|
+
if (!this.storage)
|
|
40
|
+
throw new Error("No storage available");
|
|
41
|
+
const refreshToken = await this.getRefreshToken();
|
|
42
|
+
console.log("AuthenticationRefresherImpl refreshAccessToken", {
|
|
43
|
+
refreshToken,
|
|
44
|
+
});
|
|
45
|
+
if (!this.oauth2client)
|
|
46
|
+
this.init();
|
|
47
|
+
const oauth2Client = this.oauth2client;
|
|
48
|
+
const tokenResponseBody = await oauth2Client.refreshAccessToken(refreshToken);
|
|
49
|
+
await (0, util_js_1.validateOauth2Tokens)(tokenResponseBody, this.endpoints, oauth2Client, this.oauthServer);
|
|
50
|
+
await this.storeTokens(tokenResponseBody);
|
|
51
|
+
return tokenResponseBody;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AuthenticationRefresherImpl = AuthenticationRefresherImpl;
|
|
55
|
+
//# sourceMappingURL=AuthenticationRefresherImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationRefresherImpl.js","sourceRoot":"","sources":["../../../../src/shared/lib/AuthenticationRefresherImpl.ts"],"names":[],"mappings":";;;AACA,kDAI8B;AAE9B,wCAA2C;AAC3C,2FAAqF;AAErF,MAAa,2BAA4B,SAAQ,kEAA8B;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,IAAA,mCAAyB,EAC9C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAY,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,IAAA,qBAAW,EAAC,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;QAClD,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE;YAC5D,YAAY;SACb,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QACxC,MAAM,iBAAiB,GACrB,MAAM,YAAY,CAAC,kBAAkB,CACnC,YAAY,CACb,CAAC;QACJ,MAAM,IAAA,8BAAoB,EACxB,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;AA9ED,kEA8EC","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 console.log(\"AuthenticationRefresherImpl refreshAccessToken\", {\n refreshToken,\n });\n if (!this.oauth2client) this.init();\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"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AuthenticationRefresherImpl } from "./AuthenticationRefresherImpl.js";
|
|
2
|
+
import type { AuthStorage, Endpoints } from "../../types.js";
|
|
3
|
+
import type { AuthConfig } from "../../server/config.js";
|
|
4
|
+
export declare class BrowserAuthenticationRefresher extends AuthenticationRefresherImpl {
|
|
5
|
+
static build(authConfig: AuthConfig, storage: AuthStorage, onError: (error: Error) => Promise<void>, endpointOverrides?: Partial<Endpoints>): Promise<BrowserAuthenticationRefresher>;
|
|
6
|
+
protected handleError(error: Error): void;
|
|
7
|
+
protected handleRefresh(): Promise<void>;
|
|
8
|
+
setupAutorefresh(): Promise<void>;
|
|
9
|
+
clearAutorefresh(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=BrowserAuthenticationRefresher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/BrowserAuthenticationRefresher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,8BAA+B,SAAQ,2BAA2B;WACvD,KAAK,CACzB,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,8BAA8B,CAAC;IAY1C,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK;cAMlB,aAAa;IAmBvB,gBAAgB;IAuBtB,gBAAgB;CASjB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserAuthenticationRefresher = void 0;
|
|
4
|
+
const constants_js_1 = require("../../constants.js");
|
|
5
|
+
const util_js_1 = require("../../shared/lib/util.js");
|
|
6
|
+
const AuthenticationRefresherImpl_js_1 = require("./AuthenticationRefresherImpl.js");
|
|
7
|
+
class BrowserAuthenticationRefresher extends AuthenticationRefresherImpl_js_1.AuthenticationRefresherImpl {
|
|
8
|
+
static async build(authConfig, storage, onError, endpointOverrides) {
|
|
9
|
+
const refresher = new BrowserAuthenticationRefresher(authConfig, storage, onError, endpointOverrides);
|
|
10
|
+
await refresher.init();
|
|
11
|
+
return refresher;
|
|
12
|
+
}
|
|
13
|
+
handleError(error) {
|
|
14
|
+
console.error("BrowserAuthenticationRefresher: Error", error);
|
|
15
|
+
this.clearAutorefresh();
|
|
16
|
+
this.onError(error);
|
|
17
|
+
}
|
|
18
|
+
async handleRefresh() {
|
|
19
|
+
try {
|
|
20
|
+
// ensure only one refresh is in progress
|
|
21
|
+
if (localStorage.getItem(constants_js_1.REFRESH_IN_PROGRESS) !== "true") {
|
|
22
|
+
localStorage.setItem(constants_js_1.REFRESH_IN_PROGRESS, "true");
|
|
23
|
+
await this.refreshTokens();
|
|
24
|
+
localStorage.removeItem(constants_js_1.REFRESH_IN_PROGRESS);
|
|
25
|
+
await this.setupAutorefresh(); // Reset the timeout after successful refresh
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error("BrowserAuthenticationRefresher: Failed to refresh tokens:", error);
|
|
30
|
+
// TODO detect if refresh token has expired and if yes then logout
|
|
31
|
+
this.handleError(error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async setupAutorefresh() {
|
|
35
|
+
// clear any existing state
|
|
36
|
+
localStorage.removeItem(constants_js_1.REFRESH_IN_PROGRESS);
|
|
37
|
+
if (!this.storage)
|
|
38
|
+
throw new Error("No storage available");
|
|
39
|
+
// Clear any existing timeout
|
|
40
|
+
this.clearAutorefresh();
|
|
41
|
+
// get expires_in
|
|
42
|
+
const now = Math.floor(Date.now() / 1000);
|
|
43
|
+
const expiresAt = (await (0, util_js_1.retrieveAccessTokenExpiresAt)(this.storage)) || now + 60;
|
|
44
|
+
// Calculate time until expiry (subtract 30 seconds as buffer)
|
|
45
|
+
const bufferTime = 30; // 30 seconds
|
|
46
|
+
const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past
|
|
47
|
+
const refreshTimeout = setTimeout(() => {
|
|
48
|
+
this.handleRefresh();
|
|
49
|
+
}, 1000 * refreshTime);
|
|
50
|
+
localStorage.setItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());
|
|
51
|
+
}
|
|
52
|
+
clearAutorefresh() {
|
|
53
|
+
// use local storage to store the timeout id so that if multiple instances
|
|
54
|
+
// of the refresher are created they can all clear the same timeout
|
|
55
|
+
const existingTimeout = localStorage.getItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME);
|
|
56
|
+
if (existingTimeout) {
|
|
57
|
+
clearTimeout(existingTimeout);
|
|
58
|
+
localStorage.removeItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.BrowserAuthenticationRefresher = BrowserAuthenticationRefresher;
|
|
63
|
+
//# sourceMappingURL=BrowserAuthenticationRefresher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/lib/BrowserAuthenticationRefresher.ts"],"names":[],"mappings":";;;AAAA,iDAA+E;AAC/E,kDAAoE;AACpE,qFAA+E;AAI/E,MAAa,8BAA+B,SAAQ,4DAA2B;IAC7E,MAAM,CAAU,KAAK,CAAC,KAAK,CACzB,UAAsB,EACtB,OAAoB,EACpB,OAAwC,EACxC,iBAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,8BAA8B,CAClD,UAAU,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,CAClB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,KAAY;QAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC;YACH,yCAAyC;YACzC,IAAI,YAAY,CAAC,OAAO,CAAC,kCAAmB,CAAC,KAAK,MAAM,EAAE,CAAC;gBACzD,YAAY,CAAC,OAAO,CAAC,kCAAmB,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,YAAY,CAAC,UAAU,CAAC,kCAAmB,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,6CAA6C;YAC9E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,2DAA2D,EAC3D,KAAK,CACN,CAAC;YACF,kEAAkE;YAClE,IAAI,CAAC,WAAW,CAAC,KAAc,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,2BAA2B;QAC3B,YAAY,CAAC,UAAU,CAAC,kCAAmB,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,6BAA6B;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,iBAAiB;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GACb,CAAC,MAAM,IAAA,sCAA4B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAEjE,8DAA8D;QAC9D,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,aAAa;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iDAAiD;QAEhH,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;QACvB,YAAY,CAAC,OAAO,CAAC,uCAAwB,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;QACd,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,uCAAwB,CAAC,CAAC;QACvE,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,eAAe,CAAC,CAAC;YAC9B,YAAY,CAAC,UAAU,CAAC,uCAAwB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF;AA3ED,wEA2EC","sourcesContent":["import { AUTOREFRESH_TIMEOUT_NAME, REFRESH_IN_PROGRESS } from \"@/constants.js\";\nimport { retrieveAccessTokenExpiresAt } from \"@/shared/lib/util.js\";\nimport { AuthenticationRefresherImpl } from \"./AuthenticationRefresherImpl.js\";\nimport type { AuthStorage, Endpoints } from \"@/types.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\n\nexport class BrowserAuthenticationRefresher extends AuthenticationRefresherImpl {\n static override async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n onError: (error: Error) => Promise<void>,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<BrowserAuthenticationRefresher> {\n const refresher = new BrowserAuthenticationRefresher(\n authConfig,\n storage,\n onError,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n protected handleError(error: Error) {\n console.error(\"BrowserAuthenticationRefresher: Error\", error);\n this.clearAutorefresh();\n this.onError(error);\n }\n\n protected async handleRefresh() {\n try {\n // ensure only one refresh is in progress\n if (localStorage.getItem(REFRESH_IN_PROGRESS) !== \"true\") {\n localStorage.setItem(REFRESH_IN_PROGRESS, \"true\");\n await this.refreshTokens();\n localStorage.removeItem(REFRESH_IN_PROGRESS);\n await this.setupAutorefresh(); // Reset the timeout after successful refresh\n }\n } catch (error) {\n console.error(\n \"BrowserAuthenticationRefresher: Failed to refresh tokens:\",\n error,\n );\n // TODO detect if refresh token has expired and if yes then logout\n this.handleError(error as Error);\n }\n }\n\n async setupAutorefresh() {\n // clear any existing state\n localStorage.removeItem(REFRESH_IN_PROGRESS);\n\n if (!this.storage) throw new Error(\"No storage available\");\n // Clear any existing timeout\n this.clearAutorefresh();\n\n // get expires_in\n const now = Math.floor(Date.now() / 1000);\n const expiresAt =\n (await retrieveAccessTokenExpiresAt(this.storage)) || now + 60;\n\n // Calculate time until expiry (subtract 30 seconds as buffer)\n const bufferTime = 30; // 30 seconds\n const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past\n\n const refreshTimeout = setTimeout(() => {\n this.handleRefresh();\n }, 1000 * refreshTime);\n localStorage.setItem(AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());\n }\n\n clearAutorefresh() {\n // use local storage to store the timeout id so that if multiple instances\n // of the refresher are created they can all clear the same timeout\n const existingTimeout = localStorage.getItem(AUTOREFRESH_TIMEOUT_NAME);\n if (existingTimeout) {\n clearTimeout(existingTimeout);\n localStorage.removeItem(AUTOREFRESH_TIMEOUT_NAME);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CookieStorage, type CookieStorageSettings } from "../../shared/lib/storage.js";
|
|
2
|
+
import type { CookieConfig } from "./types.js";
|
|
3
|
+
export declare class BrowserCookieStorage extends CookieStorage {
|
|
4
|
+
constructor(config?: Partial<CookieStorageSettings>);
|
|
5
|
+
get(key: string): Promise<string | null>;
|
|
6
|
+
set(key: string, value: string, cookieConfigOverride?: Partial<CookieConfig>): Promise<void>;
|
|
7
|
+
delete(key: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=BrowserCookieStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserCookieStorage.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/BrowserCookieStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoC/C,qBAAa,oBAAqB,SAAQ,aAAa;gBACzC,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM;IASjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASxC,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,oBAAoB,GAAE,OAAO,CAAC,YAAY,CAAM,GAC/C,OAAO,CAAC,IAAI,CAAC;IAOV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserCookieStorage = void 0;
|
|
4
|
+
const storage_js_1 = require("../../shared/lib/storage.js");
|
|
5
|
+
// Ensure only runs in a browser environment
|
|
6
|
+
function documentObj() {
|
|
7
|
+
if (typeof globalThis.window !== "undefined")
|
|
8
|
+
return globalThis.document;
|
|
9
|
+
const stack = new Error().stack;
|
|
10
|
+
throw new Error("Document is not available in this environment:" + JSON.stringify(stack));
|
|
11
|
+
}
|
|
12
|
+
const split = (separator) => (str) => str.split(separator);
|
|
13
|
+
const cookieStringFromSettings = (settings) => {
|
|
14
|
+
let cookieSettings = "";
|
|
15
|
+
if (settings.path) {
|
|
16
|
+
cookieSettings += `Path=${settings.path}; `;
|
|
17
|
+
}
|
|
18
|
+
if (settings.expires) {
|
|
19
|
+
cookieSettings += `Expires=${settings.expires}; `;
|
|
20
|
+
}
|
|
21
|
+
if (settings.secure) {
|
|
22
|
+
cookieSettings += `Secure; `;
|
|
23
|
+
}
|
|
24
|
+
if (settings.httpOnly) {
|
|
25
|
+
// HttpOnly cannot be set from client-side JavaScript, so this clause can be omitted.
|
|
26
|
+
console.warn("HttpOnly cannot be set on client-side cookies. Ignoring this setting.");
|
|
27
|
+
}
|
|
28
|
+
if (settings.sameSite) {
|
|
29
|
+
cookieSettings += `SameSite=${settings.sameSite}; `;
|
|
30
|
+
}
|
|
31
|
+
return cookieSettings.trim();
|
|
32
|
+
};
|
|
33
|
+
class BrowserCookieStorage extends storage_js_1.CookieStorage {
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
super({
|
|
36
|
+
// sensible browser defaults
|
|
37
|
+
secure: false,
|
|
38
|
+
httpOnly: false,
|
|
39
|
+
...config,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async get(key) {
|
|
43
|
+
const encodedValue = documentObj()
|
|
44
|
+
.cookie.split(";")
|
|
45
|
+
.map(split("="))
|
|
46
|
+
.find(([cookieKey]) => cookieKey?.trim() === key)?.[1];
|
|
47
|
+
return encodedValue ? decodeURIComponent(encodedValue) : null;
|
|
48
|
+
}
|
|
49
|
+
async set(key, value, cookieConfigOverride = {}) {
|
|
50
|
+
const encodedValue = encodeURIComponent(value);
|
|
51
|
+
const settings = { ...this.settings, ...cookieConfigOverride };
|
|
52
|
+
const cookieString = cookieStringFromSettings(settings);
|
|
53
|
+
documentObj().cookie = `${key}=${encodedValue}; ${cookieString}`;
|
|
54
|
+
}
|
|
55
|
+
async delete(key) {
|
|
56
|
+
documentObj().cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.BrowserCookieStorage = BrowserCookieStorage;
|
|
60
|
+
//# sourceMappingURL=BrowserCookieStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserCookieStorage.js","sourceRoot":"","sources":["../../../../src/shared/lib/BrowserCookieStorage.ts"],"names":[],"mappings":";;;AAAA,wDAGiC;AAGjC,4CAA4C;AAC5C,SAAS,WAAW;IAClB,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IACzE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;IAChC,MAAM,IAAI,KAAK,CACb,gDAAgD,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3E,MAAM,wBAAwB,GAAG,CAAC,QAA+B,EAAU,EAAE;IAC3E,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,cAAc,IAAI,QAAQ,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,cAAc,IAAI,WAAW,QAAQ,CAAC,OAAO,IAAI,CAAC;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,cAAc,IAAI,UAAU,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,qFAAqF;QACrF,OAAO,CAAC,IAAI,CACV,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,cAAc,IAAI,YAAY,QAAQ,CAAC,QAAQ,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC;AACF,MAAa,oBAAqB,SAAQ,0BAAa;IACrD,YAAY,SAAyC,EAAE;QACrD,KAAK,CAAC;YACJ,4BAA4B;YAC5B,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,GAAG,MAAM;SACV,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,YAAY,GAAG,WAAW,EAAE;aAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;aACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACf,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzD,OAAO,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,GAAG,CACP,GAAW,EACX,KAAa,EACb,uBAA8C,EAAE;QAEhD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAC;QAC/D,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACxD,WAAW,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,WAAW,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,mDAAmD,CAAC;IACnF,CAAC;CACF;AAjCD,oDAiCC","sourcesContent":["import {\n CookieStorage,\n type CookieStorageSettings,\n} from \"@/shared/lib/storage.js\";\nimport type { CookieConfig } from \"./types.js\";\n\n// Ensure only runs in a browser environment\nfunction documentObj() {\n if (typeof globalThis.window !== \"undefined\") return globalThis.document;\n const stack = new Error().stack;\n throw new Error(\n \"Document is not available in this environment:\" + JSON.stringify(stack),\n );\n}\n\nconst split = (separator: string) => (str: string) => str.split(separator);\n\nconst cookieStringFromSettings = (settings: CookieStorageSettings): string => {\n let cookieSettings = \"\";\n\n if (settings.path) {\n cookieSettings += `Path=${settings.path}; `;\n }\n if (settings.expires) {\n cookieSettings += `Expires=${settings.expires}; `;\n }\n if (settings.secure) {\n cookieSettings += `Secure; `;\n }\n if (settings.httpOnly) {\n // HttpOnly cannot be set from client-side JavaScript, so this clause can be omitted.\n console.warn(\n \"HttpOnly cannot be set on client-side cookies. Ignoring this setting.\",\n );\n }\n if (settings.sameSite) {\n cookieSettings += `SameSite=${settings.sameSite}; `;\n }\n return cookieSettings.trim();\n};\nexport class BrowserCookieStorage extends CookieStorage {\n constructor(config: Partial<CookieStorageSettings> = {}) {\n super({\n // sensible browser defaults\n secure: false,\n httpOnly: false,\n ...config,\n });\n }\n\n async get(key: string): Promise<string | null> {\n const encodedValue = documentObj()\n .cookie.split(\";\")\n .map(split(\"=\"))\n .find(([cookieKey]) => cookieKey?.trim() === key)?.[1];\n\n return encodedValue ? decodeURIComponent(encodedValue) : null;\n }\n\n async set(\n key: string,\n value: string,\n cookieConfigOverride: Partial<CookieConfig> = {},\n ): Promise<void> {\n const encodedValue = encodeURIComponent(value);\n const settings = { ...this.settings, ...cookieConfigOverride };\n const cookieString = cookieStringFromSettings(settings);\n documentObj().cookie = `${key}=${encodedValue}; ${cookieString}`;\n }\n\n async delete(key: string): Promise<void> {\n documentObj().cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AuthConfig } from "../../server/config.js";
|
|
2
|
+
import type { AuthenticationRefresher } from "../../services/types.js";
|
|
3
|
+
import type { AuthStorage, OIDCTokenResponseBody } from "../../types.js";
|
|
4
|
+
export declare abstract class GenericAuthenticationRefresher implements AuthenticationRefresher {
|
|
5
|
+
readonly onError: (error: Error) => Promise<void>;
|
|
6
|
+
protected authConfig: AuthConfig | undefined;
|
|
7
|
+
protected storage: AuthStorage | undefined;
|
|
8
|
+
static refreshInProgress: boolean;
|
|
9
|
+
constructor(onError: (error: Error) => Promise<void>);
|
|
10
|
+
get oauthServer(): string;
|
|
11
|
+
abstract refreshAccessToken(refreshToken?: string): Promise<OIDCTokenResponseBody>;
|
|
12
|
+
getRefreshToken(): Promise<string>;
|
|
13
|
+
refreshTokens(): Promise<OIDCTokenResponseBody>;
|
|
14
|
+
private handleRefresh;
|
|
15
|
+
setupAutorefresh(): Promise<void>;
|
|
16
|
+
clearAutorefresh(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=GenericAuthenticationRefresher%20copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher copy.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher copy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAKnE,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,8BAAsB,8BACpB,YAAW,uBAAuB;IAMtB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC;IAJ7D,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,iBAAiB,UAAS;gBAEZ,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;IASlC,aAAa;YAaL,aAAa;IAoBrB,gBAAgB;IAyBtB,gBAAgB;CASjB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericAuthenticationRefresher = void 0;
|
|
4
|
+
const constants_js_1 = require("../../constants.js");
|
|
5
|
+
const util_js_1 = require("../../shared/lib/util.js");
|
|
6
|
+
class GenericAuthenticationRefresher {
|
|
7
|
+
onError;
|
|
8
|
+
authConfig;
|
|
9
|
+
storage;
|
|
10
|
+
static refreshInProgress = false;
|
|
11
|
+
constructor(onError) {
|
|
12
|
+
this.onError = onError;
|
|
13
|
+
}
|
|
14
|
+
get oauthServer() {
|
|
15
|
+
return this.authConfig?.oauthServer || constants_js_1.DEFAULT_AUTH_SERVER;
|
|
16
|
+
}
|
|
17
|
+
async getRefreshToken() {
|
|
18
|
+
if (!this.storage)
|
|
19
|
+
throw new Error("No storage available");
|
|
20
|
+
const tokens = await (0, util_js_1.retrieveTokens)(this.storage);
|
|
21
|
+
console.log("getRefreshToken tokens", tokens);
|
|
22
|
+
if (!tokens?.refresh_token)
|
|
23
|
+
throw new Error("No refresh token available");
|
|
24
|
+
return tokens.refresh_token;
|
|
25
|
+
}
|
|
26
|
+
async refreshTokens() {
|
|
27
|
+
console.log("GenericAuthenticationRefresher refreshTokens calling refreshAccessToken()");
|
|
28
|
+
try {
|
|
29
|
+
return await this.refreshAccessToken();
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error("refreshTokens: Failed to refresh tokens:", error);
|
|
33
|
+
// TODO detect if refresh token has expired and if yes then logout
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async handleRefresh() {
|
|
38
|
+
try {
|
|
39
|
+
console.log("GenericAuthenticationRefresher handleRefresh REFRESH_IN_PROGRESS", localStorage.getItem(constants_js_1.REFRESH_IN_PROGRESS));
|
|
40
|
+
// ensure only one refresh is in progress
|
|
41
|
+
if (localStorage.getItem(constants_js_1.REFRESH_IN_PROGRESS) !== "true") {
|
|
42
|
+
localStorage.setItem(constants_js_1.REFRESH_IN_PROGRESS, "true");
|
|
43
|
+
await this.refreshTokens();
|
|
44
|
+
localStorage.removeItem(constants_js_1.REFRESH_IN_PROGRESS);
|
|
45
|
+
await this.setupAutorefresh(); // Reset the timeout after successful refresh
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error("Failed to refresh tokens:", error);
|
|
50
|
+
// TODO detect if refresh token has expired and if yes then logout
|
|
51
|
+
this.onError(error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async setupAutorefresh() {
|
|
55
|
+
if (!this.storage)
|
|
56
|
+
throw new Error("No storage available");
|
|
57
|
+
console.log("removing REFRESH_IN_PROGRESS and AUTOREFRESH_TIMEOUT_NAME");
|
|
58
|
+
console.log("setupAutorefresh");
|
|
59
|
+
// Clear any existing timeout
|
|
60
|
+
this.clearAutorefresh();
|
|
61
|
+
localStorage.removeItem(constants_js_1.REFRESH_IN_PROGRESS);
|
|
62
|
+
localStorage.removeItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME);
|
|
63
|
+
// get expires_in
|
|
64
|
+
const now = Math.floor(Date.now() / 1000);
|
|
65
|
+
const expiresAt = (await (0, util_js_1.retrieveAccessTokenExpiresAt)(this.storage)) || now + 60;
|
|
66
|
+
// Calculate time until expiry (subtract 30 seconds as buffer)
|
|
67
|
+
const bufferTime = 30; // 30 seconds
|
|
68
|
+
const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past
|
|
69
|
+
const refreshTimeout = setTimeout(() => {
|
|
70
|
+
this.handleRefresh();
|
|
71
|
+
}, 1000 * refreshTime);
|
|
72
|
+
localStorage.setItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());
|
|
73
|
+
}
|
|
74
|
+
clearAutorefresh() {
|
|
75
|
+
// use local storage to store the timeout id so that if multiple instances
|
|
76
|
+
// of the refresher are created they can all clear the same timeout
|
|
77
|
+
const existingTimeout = localStorage.getItem(constants_js_1.AUTOREFRESH_TIMEOUT_NAME);
|
|
78
|
+
if (existingTimeout) {
|
|
79
|
+
console.log("clearAutorefresh clearTimeout", existingTimeout);
|
|
80
|
+
clearTimeout(existingTimeout);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.GenericAuthenticationRefresher = GenericAuthenticationRefresher;
|
|
85
|
+
//# sourceMappingURL=GenericAuthenticationRefresher%20copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher copy.js","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher copy.ts"],"names":[],"mappings":";;;AAAA,iDAIwB;AAGxB,kDAG8B;AAG9B,MAAsB,8BAA8B;IAO7B;IAJX,UAAU,CAAyB;IACnC,OAAO,CAA0B;IAC3C,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAEjC,YAAqB,OAAwC;QAAxC,YAAO,GAAP,OAAO,CAAiC;IAAG,CAAC;IAEjE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,WAAW,IAAI,kCAAmB,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,IAAA,wBAAc,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAC9C,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,OAAO,CAAC,GAAG,CACT,2EAA2E,CAC5E,CAAC;QACF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACjE,kEAAkE;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CACT,kEAAkE,EAClE,YAAY,CAAC,OAAO,CAAC,kCAAmB,CAAC,CAC1C,CAAC;YACF,yCAAyC;YACzC,IAAI,YAAY,CAAC,OAAO,CAAC,kCAAmB,CAAC,KAAK,MAAM,EAAE,CAAC;gBACzD,YAAY,CAAC,OAAO,CAAC,kCAAmB,EAAE,MAAM,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,YAAY,CAAC,UAAU,CAAC,kCAAmB,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,6CAA6C;YAC9E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,kEAAkE;YAClE,IAAI,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,6BAA6B;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,YAAY,CAAC,UAAU,CAAC,kCAAmB,CAAC,CAAC;QAC7C,YAAY,CAAC,UAAU,CAAC,uCAAwB,CAAC,CAAC;QAElD,iBAAiB;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GACb,CAAC,MAAM,IAAA,sCAA4B,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;QAEjE,8DAA8D;QAC9D,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,aAAa;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,iDAAiD;QAEhH,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;QACvB,YAAY,CAAC,OAAO,CAAC,uCAAwB,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,gBAAgB;QACd,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,uCAAwB,CAAC,CAAC;QACvE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;YAC9D,YAAY,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AA5FH,wEA6FC","sourcesContent":["import {\n AUTOREFRESH_TIMEOUT_NAME,\n DEFAULT_AUTH_SERVER,\n REFRESH_IN_PROGRESS,\n} from \"@/constants.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport type { AuthenticationRefresher } from \"@/services/types.js\";\nimport {\n retrieveAccessTokenExpiresAt,\n retrieveTokens,\n} 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 static refreshInProgress = false;\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 console.log(\"getRefreshToken tokens\", tokens);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n return tokens.refresh_token;\n }\n\n async refreshTokens() {\n console.log(\n \"GenericAuthenticationRefresher refreshTokens calling refreshAccessToken()\",\n );\n try {\n return await this.refreshAccessToken();\n } catch (error) {\n console.error(\"refreshTokens: Failed to refresh tokens:\", error);\n // TODO detect if refresh token has expired and if yes then logout\n throw error;\n }\n }\n\n private async handleRefresh() {\n try {\n console.log(\n \"GenericAuthenticationRefresher handleRefresh REFRESH_IN_PROGRESS\",\n localStorage.getItem(REFRESH_IN_PROGRESS),\n );\n // ensure only one refresh is in progress\n if (localStorage.getItem(REFRESH_IN_PROGRESS) !== \"true\") {\n localStorage.setItem(REFRESH_IN_PROGRESS, \"true\");\n await this.refreshTokens();\n localStorage.removeItem(REFRESH_IN_PROGRESS);\n await this.setupAutorefresh(); // Reset the timeout after successful refresh\n }\n } catch (error) {\n console.error(\"Failed to refresh tokens:\", error);\n // TODO detect if refresh token has expired and if yes then logout\n this.onError(error as Error);\n }\n }\n\n async setupAutorefresh() {\n if (!this.storage) throw new Error(\"No storage available\");\n console.log(\"removing REFRESH_IN_PROGRESS and AUTOREFRESH_TIMEOUT_NAME\");\n console.log(\"setupAutorefresh\");\n // Clear any existing timeout\n this.clearAutorefresh();\n\n localStorage.removeItem(REFRESH_IN_PROGRESS);\n localStorage.removeItem(AUTOREFRESH_TIMEOUT_NAME);\n\n // get expires_in\n const now = Math.floor(Date.now() / 1000);\n const expiresAt =\n (await retrieveAccessTokenExpiresAt(this.storage)) || now + 60;\n\n // Calculate time until expiry (subtract 30 seconds as buffer)\n const bufferTime = 30; // 30 seconds\n const refreshTime = Math.max(0, expiresAt - bufferTime - now); // handle case were token has expired in the past\n\n const refreshTimeout = setTimeout(() => {\n this.handleRefresh();\n }, 1000 * refreshTime);\n localStorage.setItem(AUTOREFRESH_TIMEOUT_NAME, refreshTimeout.toString());\n }\n\n clearAutorefresh() {\n // use local storage to store the timeout id so that if multiple instances\n // of the refresher are created they can all clear the same timeout\n const existingTimeout = localStorage.getItem(AUTOREFRESH_TIMEOUT_NAME);\n if (existingTimeout) {\n console.log(\"clearAutorefresh clearTimeout\", existingTimeout);\n clearTimeout(existingTimeout);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AuthConfig } from "../../server/config.js";
|
|
2
|
+
import type { AuthenticationRefresher } from "../../services/types.js";
|
|
3
|
+
import type { AuthStorage, OIDCTokenResponseBody } from "../../types.js";
|
|
4
|
+
export declare abstract class GenericAuthenticationRefresher implements AuthenticationRefresher {
|
|
5
|
+
readonly onError: (error: Error) => Promise<void>;
|
|
6
|
+
protected authConfig: AuthConfig | undefined;
|
|
7
|
+
protected storage: AuthStorage | undefined;
|
|
8
|
+
constructor(onError: (error: Error) => Promise<void>);
|
|
9
|
+
get oauthServer(): string;
|
|
10
|
+
abstract refreshAccessToken(refreshToken?: string): Promise<OIDCTokenResponseBody>;
|
|
11
|
+
getRefreshToken(): Promise<string>;
|
|
12
|
+
refreshTokens(): Promise<OIDCTokenResponseBody>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=GenericAuthenticationRefresher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;IASlC,aAAa;CAepB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericAuthenticationRefresher = void 0;
|
|
4
|
+
const constants_js_1 = require("../../constants.js");
|
|
5
|
+
const util_js_1 = require("../../shared/lib/util.js");
|
|
6
|
+
class GenericAuthenticationRefresher {
|
|
7
|
+
onError;
|
|
8
|
+
authConfig;
|
|
9
|
+
storage;
|
|
10
|
+
constructor(onError) {
|
|
11
|
+
this.onError = onError;
|
|
12
|
+
}
|
|
13
|
+
get oauthServer() {
|
|
14
|
+
return this.authConfig?.oauthServer || constants_js_1.DEFAULT_AUTH_SERVER;
|
|
15
|
+
}
|
|
16
|
+
async getRefreshToken() {
|
|
17
|
+
if (!this.storage)
|
|
18
|
+
throw new Error("No storage available");
|
|
19
|
+
const tokens = await (0, util_js_1.retrieveTokens)(this.storage);
|
|
20
|
+
console.log("getRefreshToken tokens", tokens);
|
|
21
|
+
if (!tokens?.refresh_token)
|
|
22
|
+
throw new Error("No refresh token available");
|
|
23
|
+
return tokens.refresh_token;
|
|
24
|
+
}
|
|
25
|
+
async refreshTokens() {
|
|
26
|
+
console.log("GenericAuthenticationRefresher refreshTokens calling refreshAccessToken()");
|
|
27
|
+
try {
|
|
28
|
+
return await this.refreshAccessToken();
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error("GenericAuthenticationRefresher: Failed to refresh tokens:", error);
|
|
32
|
+
// TODO detect if refresh token has expired and if yes then logout
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.GenericAuthenticationRefresher = GenericAuthenticationRefresher;
|
|
38
|
+
//# sourceMappingURL=GenericAuthenticationRefresher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/lib/GenericAuthenticationRefresher.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AAGrD,kDAAsD;AAGtD,MAAsB,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,kCAAmB,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,IAAA,wBAAc,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAC9C,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,OAAO,CAAC,GAAG,CACT,2EAA2E,CAC5E,CAAC;QACF,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,kEAAkE;YAClE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAxCD,wEAwCC","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 console.log(\"getRefreshToken tokens\", tokens);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n return tokens.refresh_token;\n }\n\n async refreshTokens() {\n console.log(\n \"GenericAuthenticationRefresher refreshTokens calling refreshAccessToken()\",\n );\n try {\n return await this.refreshAccessToken();\n } catch (error) {\n console.error(\n \"GenericAuthenticationRefresher: Failed to refresh tokens:\",\n error,\n );\n // TODO detect if refresh token has expired and if yes then logout\n throw error;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AuthStorage, ForwardedTokensJWT, UnknownObject, User } from "../../types.js";
|
|
2
|
+
export interface UserSession<T extends UnknownObject> {
|
|
3
|
+
get(): Promise<User<T> | null>;
|
|
4
|
+
set(user: User<T> & {
|
|
5
|
+
forwardedTokens?: ForwardedTokensJWT;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class GenericUserSession<T extends UnknownObject> implements UserSession<T> {
|
|
9
|
+
readonly storage: AuthStorage;
|
|
10
|
+
constructor(storage: AuthStorage);
|
|
11
|
+
get(): Promise<User<T> | null>;
|
|
12
|
+
set(user: (User<T> & {
|
|
13
|
+
forwardedTokens?: ForwardedTokensJWT;
|
|
14
|
+
}) | null): Promise<void>;
|
|
15
|
+
clear(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=UserSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/UserSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,IAAI,EACL,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,aAAa;IAClD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED,qBAAa,kBAAkB,CAAC,CAAC,SAAS,aAAa,CACrD,YAAW,WAAW,CAAC,CAAC,CAAC;IAEb,QAAQ,CAAC,OAAO,EAAE,WAAW;gBAApB,OAAO,EAAE,WAAW;IAEnC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK9B,GAAG,CACP,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC,GAAG,IAAI,GAChE,OAAO,CAAC,IAAI,CAAC;IAQV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericUserSession = void 0;
|
|
4
|
+
const types_js_1 = require("../../shared/lib/types.js");
|
|
5
|
+
const jwt_js_1 = require("../../lib/jwt.js");
|
|
6
|
+
class GenericUserSession {
|
|
7
|
+
storage;
|
|
8
|
+
constructor(storage) {
|
|
9
|
+
this.storage = storage;
|
|
10
|
+
}
|
|
11
|
+
async get() {
|
|
12
|
+
const user = await this.storage.get(types_js_1.UserStorage.USER);
|
|
13
|
+
return user ? JSON.parse(user) : null;
|
|
14
|
+
}
|
|
15
|
+
async set(user) {
|
|
16
|
+
const forwardedTokens = user?.forwardedTokens
|
|
17
|
+
? (0, jwt_js_1.convertForwardedTokenFormat)(user?.forwardedTokens)
|
|
18
|
+
: null;
|
|
19
|
+
const value = user ? JSON.stringify({ ...user, forwardedTokens }) : "";
|
|
20
|
+
await this.storage.set(types_js_1.UserStorage.USER, value);
|
|
21
|
+
}
|
|
22
|
+
async clear() {
|
|
23
|
+
await this.storage.delete(types_js_1.UserStorage.USER);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.GenericUserSession = GenericUserSession;
|
|
27
|
+
//# sourceMappingURL=UserSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSession.js","sourceRoot":"","sources":["../../../../src/shared/lib/UserSession.ts"],"names":[],"mappings":";;;AAMA,oDAAoD;AACpD,yCAA2D;AAO3D,MAAa,kBAAkB;IAGR;IAArB,YAAqB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAE7C,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAW,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CACP,IAAiE;QAEjE,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe;YAC3C,CAAC,CAAC,IAAA,oCAA2B,EAAC,IAAI,EAAE,eAAqC,CAAC;YAC1E,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAW,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF;AAvBD,gDAuBC","sourcesContent":["import type {\n AuthStorage,\n ForwardedTokensJWT,\n UnknownObject,\n User,\n} from \"@/types.js\";\nimport { UserStorage } from \"@/shared/lib/types.js\";\nimport { convertForwardedTokenFormat } from \"@/lib/jwt.js\";\n\nexport interface UserSession<T extends UnknownObject> {\n get(): Promise<User<T> | null>;\n set(user: User<T> & { forwardedTokens?: ForwardedTokensJWT }): Promise<void>;\n}\n\nexport class GenericUserSession<T extends UnknownObject>\n implements UserSession<T>\n{\n constructor(readonly storage: AuthStorage) {}\n\n async get(): Promise<User<T> | null> {\n const user = await this.storage.get(UserStorage.USER);\n return user ? JSON.parse(user) : null;\n }\n\n async set(\n user: (User<T> & { forwardedTokens?: ForwardedTokensJWT }) | null,\n ): Promise<void> {\n const forwardedTokens = user?.forwardedTokens\n ? convertForwardedTokenFormat(user?.forwardedTokens as ForwardedTokensJWT)\n : null;\n const value = user ? JSON.stringify({ ...user, forwardedTokens }) : \"\";\n await this.storage.set(UserStorage.USER, value);\n }\n\n async clear(): Promise<void> {\n await this.storage.delete(UserStorage.USER);\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type ExtendedIframeElement = HTMLIFrameElement & {
|
|
2
|
+
getElement: () => HTMLIFrameElement;
|
|
3
|
+
};
|
|
4
|
+
export declare const getIframeRef: (iframeRef: HTMLIFrameElement | ExtendedIframeElement | null) => HTMLIFrameElement;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=iframeUtils.d.ts.map
|
|
@@ -0,0 +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,KAC1D,iBAKF,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getIframeRef = void 0;
|
|
4
|
+
const getIframeRef = (iframeRef) => {
|
|
5
|
+
if (!iframeRef) {
|
|
6
|
+
throw new Error("iframeRef is required for displayMode 'iframe'");
|
|
7
|
+
}
|
|
8
|
+
return iframeRef?.getElement?.() ?? iframeRef;
|
|
9
|
+
};
|
|
10
|
+
exports.getIframeRef = getIframeRef;
|
|
11
|
+
//# sourceMappingURL=iframeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframeUtils.js","sourceRoot":"","sources":["../../../../src/shared/lib/iframeUtils.ts"],"names":[],"mappings":";;;AAGO,MAAM,YAAY,GAAG,CAC1B,SAA2D,EACxC,EAAE;IACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAQ,SAAmC,EAAE,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC;AAC3E,CAAC,CAAC;AAPW,QAAA,YAAY,gBAOvB","sourcesContent":["type ExtendedIframeElement = HTMLIFrameElement & {\n getElement: () => HTMLIFrameElement;\n};\nexport const getIframeRef = (\n iframeRef: HTMLIFrameElement | ExtendedIframeElement | null,\n): HTMLIFrameElement => {\n if (!iframeRef) {\n throw new Error(\"iframeRef is required for displayMode 'iframe'\");\n }\n return (iframeRef as ExtendedIframeElement)?.getElement?.() ?? iframeRef;\n};\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type AuthStorage, type OAuthTokens, type User, type EmptyObject, type UnknownObject } from "../../types.js";
|
|
2
|
+
export declare function getUser<T extends UnknownObject = EmptyObject>(storage: AuthStorage): Promise<User<T> | null>;
|
|
3
|
+
export declare function getTokens(storage: AuthStorage): Promise<OAuthTokens | null>;
|
|
4
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/shared/lib/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAsBpB,wBAAsB,OAAO,CAAC,CAAC,SAAS,aAAa,GAAG,WAAW,EACjE,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAoBzB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS7B"}
|