@civic/auth 0.3.1 → 0.3.2-beta.1
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/dist/cjs/nextjs/config.d.ts.map +1 -1
- package/dist/cjs/nextjs/config.js +1 -1
- package/dist/cjs/nextjs/config.js.map +1 -1
- package/dist/cjs/nextjs/index.d.ts +2 -2
- package/dist/cjs/nextjs/index.d.ts.map +1 -1
- package/dist/cjs/nextjs/index.js.map +1 -1
- package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts +1 -5
- package/dist/cjs/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
- package/dist/cjs/nextjs/providers/NextAuthProvider.js +5 -45
- package/dist/cjs/nextjs/providers/NextAuthProvider.js.map +1 -1
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts +1 -1
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -1
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.js +16 -23
- package/dist/cjs/reactjs/components/ButtonContentOrLoader.js.map +1 -1
- package/dist/cjs/reactjs/components/SignInButton.d.ts +4 -3
- package/dist/cjs/reactjs/components/SignInButton.d.ts.map +1 -1
- package/dist/cjs/reactjs/components/SignInButton.js +5 -9
- package/dist/cjs/reactjs/components/SignInButton.js.map +1 -1
- package/dist/cjs/reactjs/components/SignOutButton.d.ts +4 -3
- package/dist/cjs/reactjs/components/SignOutButton.d.ts.map +1 -1
- package/dist/cjs/reactjs/components/SignOutButton.js +4 -8
- package/dist/cjs/reactjs/components/SignOutButton.js.map +1 -1
- package/dist/cjs/reactjs/components/UserButton.d.ts +6 -3
- package/dist/cjs/reactjs/components/UserButton.d.ts.map +1 -1
- package/dist/cjs/reactjs/components/UserButton.js +69 -109
- package/dist/cjs/reactjs/components/UserButton.js.map +1 -1
- package/dist/cjs/reactjs/providers/AuthProvider.d.ts +1 -2
- package/dist/cjs/reactjs/providers/AuthProvider.d.ts.map +1 -1
- package/dist/cjs/reactjs/providers/AuthProvider.js +3 -37
- package/dist/cjs/reactjs/providers/AuthProvider.js.map +1 -1
- package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts +1 -2
- package/dist/cjs/reactjs/providers/CivicAuthProvider.d.ts.map +1 -1
- package/dist/cjs/reactjs/providers/CivicAuthProvider.js +4 -13
- package/dist/cjs/reactjs/providers/CivicAuthProvider.js.map +1 -1
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +1 -1
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js +3 -35
- package/dist/cjs/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -1
- package/dist/cjs/shared/components/BlockDisplay.d.ts +1 -2
- package/dist/cjs/shared/components/BlockDisplay.d.ts.map +1 -1
- package/dist/cjs/shared/components/BlockDisplay.js +4 -8
- package/dist/cjs/shared/components/BlockDisplay.js.map +1 -1
- package/dist/cjs/shared/components/CivicAuthIframe.js +16 -17
- package/dist/cjs/shared/components/CivicAuthIframe.js.map +1 -1
- package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts +2 -2
- package/dist/cjs/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
- package/dist/cjs/shared/components/CivicAuthIframeContainer.js +29 -68
- package/dist/cjs/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts +1 -2
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -1
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js +9 -15
- package/dist/cjs/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -1
- package/dist/cjs/shared/components/CloseIcon.d.ts +1 -2
- package/dist/cjs/shared/components/CloseIcon.d.ts.map +1 -1
- package/dist/cjs/shared/components/CloseIcon.js +2 -7
- package/dist/cjs/shared/components/CloseIcon.js.map +1 -1
- package/dist/cjs/shared/components/IFrameAndLoading.d.ts +1 -2
- package/dist/cjs/shared/components/IFrameAndLoading.d.ts.map +1 -1
- package/dist/cjs/shared/components/IFrameAndLoading.js +5 -47
- package/dist/cjs/shared/components/IFrameAndLoading.js.map +1 -1
- package/dist/cjs/shared/components/LoadingIcon.d.ts +1 -2
- package/dist/cjs/shared/components/LoadingIcon.d.ts.map +1 -1
- package/dist/cjs/shared/components/LoadingIcon.js +19 -27
- package/dist/cjs/shared/components/LoadingIcon.js.map +1 -1
- package/dist/cjs/shared/components/SVGLoading.js +11 -24
- package/dist/cjs/shared/components/SVGLoading.js.map +1 -1
- package/dist/cjs/shared/lib/UserSession.d.ts +4 -2
- package/dist/cjs/shared/lib/UserSession.d.ts.map +1 -1
- package/dist/cjs/shared/lib/UserSession.js.map +1 -1
- package/dist/cjs/shared/lib/session.d.ts +2 -2
- package/dist/cjs/shared/lib/session.d.ts.map +1 -1
- package/dist/cjs/shared/lib/session.js +8 -5
- package/dist/cjs/shared/lib/session.js.map +1 -1
- package/dist/cjs/shared/lib/types.d.ts +1 -0
- package/dist/cjs/shared/lib/types.d.ts.map +1 -1
- package/dist/cjs/shared/lib/types.js +2 -1
- package/dist/cjs/shared/lib/types.js.map +1 -1
- package/dist/cjs/shared/lib/util.d.ts.map +1 -1
- package/dist/cjs/shared/lib/util.js +1 -0
- package/dist/cjs/shared/lib/util.js.map +1 -1
- package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts +1 -1
- package/dist/cjs/shared/providers/CivicAuthConfigContext.d.ts.map +1 -1
- package/dist/cjs/shared/providers/CivicAuthConfigContext.js +3 -35
- package/dist/cjs/shared/providers/CivicAuthConfigContext.js.map +1 -1
- package/dist/cjs/shared/providers/IframeProvider.d.ts +1 -1
- package/dist/cjs/shared/providers/IframeProvider.d.ts.map +1 -1
- package/dist/cjs/shared/providers/IframeProvider.js +4 -36
- package/dist/cjs/shared/providers/IframeProvider.js.map +1 -1
- package/dist/cjs/shared/providers/SessionProvider.d.ts +1 -1
- package/dist/cjs/shared/providers/SessionProvider.d.ts.map +1 -1
- package/dist/cjs/shared/providers/SessionProvider.js +4 -36
- package/dist/cjs/shared/providers/SessionProvider.js.map +1 -1
- package/dist/cjs/shared/providers/TokenProvider.d.ts +1 -1
- package/dist/cjs/shared/providers/TokenProvider.d.ts.map +1 -1
- package/dist/cjs/shared/providers/TokenProvider.js +3 -35
- package/dist/cjs/shared/providers/TokenProvider.js.map +1 -1
- package/dist/cjs/shared/providers/UserProvider.d.ts +1 -1
- package/dist/cjs/shared/providers/UserProvider.d.ts.map +1 -1
- package/dist/cjs/shared/providers/UserProvider.js +4 -36
- package/dist/cjs/shared/providers/UserProvider.js.map +1 -1
- package/dist/cjs/shared/version.d.ts +1 -1
- package/dist/cjs/shared/version.d.ts.map +1 -1
- package/dist/cjs/shared/version.js +1 -1
- package/dist/cjs/shared/version.js.map +1 -1
- package/dist/cjs/types.d.ts +8 -10
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +3 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/nextjs/config.d.ts.map +1 -1
- package/dist/esm/nextjs/config.js +1 -1
- package/dist/esm/nextjs/config.js.map +1 -1
- package/dist/esm/nextjs/index.d.ts +2 -2
- package/dist/esm/nextjs/index.d.ts.map +1 -1
- package/dist/esm/nextjs/index.js.map +1 -1
- package/dist/esm/nextjs/providers/NextAuthProvider.d.ts +1 -5
- package/dist/esm/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
- package/dist/esm/nextjs/providers/NextAuthProvider.js +4 -11
- package/dist/esm/nextjs/providers/NextAuthProvider.js.map +1 -1
- package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts +1 -1
- package/dist/esm/reactjs/components/ButtonContentOrLoader.d.ts.map +1 -1
- package/dist/esm/reactjs/components/ButtonContentOrLoader.js +16 -19
- package/dist/esm/reactjs/components/ButtonContentOrLoader.js.map +1 -1
- package/dist/esm/reactjs/components/SignInButton.d.ts +4 -3
- package/dist/esm/reactjs/components/SignInButton.d.ts.map +1 -1
- package/dist/esm/reactjs/components/SignInButton.js +5 -6
- package/dist/esm/reactjs/components/SignInButton.js.map +1 -1
- package/dist/esm/reactjs/components/SignOutButton.d.ts +4 -3
- package/dist/esm/reactjs/components/SignOutButton.d.ts.map +1 -1
- package/dist/esm/reactjs/components/SignOutButton.js +5 -5
- package/dist/esm/reactjs/components/SignOutButton.js.map +1 -1
- package/dist/esm/reactjs/components/UserButton.d.ts +6 -3
- package/dist/esm/reactjs/components/UserButton.d.ts.map +1 -1
- package/dist/esm/reactjs/components/UserButton.js +69 -76
- package/dist/esm/reactjs/components/UserButton.js.map +1 -1
- package/dist/esm/reactjs/providers/AuthProvider.d.ts +1 -2
- package/dist/esm/reactjs/providers/AuthProvider.d.ts.map +1 -1
- package/dist/esm/reactjs/providers/AuthProvider.js +2 -3
- package/dist/esm/reactjs/providers/AuthProvider.js.map +1 -1
- package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts +1 -2
- package/dist/esm/reactjs/providers/CivicAuthProvider.d.ts.map +1 -1
- package/dist/esm/reactjs/providers/CivicAuthProvider.js +4 -9
- package/dist/esm/reactjs/providers/CivicAuthProvider.js.map +1 -1
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +1 -1
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -1
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js +2 -1
- package/dist/esm/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -1
- package/dist/esm/shared/components/BlockDisplay.d.ts +1 -2
- package/dist/esm/shared/components/BlockDisplay.d.ts.map +1 -1
- package/dist/esm/shared/components/BlockDisplay.js +4 -4
- package/dist/esm/shared/components/BlockDisplay.js.map +1 -1
- package/dist/esm/shared/components/CivicAuthIframe.js +16 -17
- package/dist/esm/shared/components/CivicAuthIframe.js.map +1 -1
- package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts +2 -2
- package/dist/esm/shared/components/CivicAuthIframeContainer.d.ts.map +1 -1
- package/dist/esm/shared/components/CivicAuthIframeContainer.js +28 -34
- package/dist/esm/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts +1 -2
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -1
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js +9 -11
- package/dist/esm/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -1
- package/dist/esm/shared/components/CloseIcon.d.ts +1 -2
- package/dist/esm/shared/components/CloseIcon.d.ts.map +1 -1
- package/dist/esm/shared/components/CloseIcon.js +2 -3
- package/dist/esm/shared/components/CloseIcon.js.map +1 -1
- package/dist/esm/shared/components/IFrameAndLoading.d.ts +1 -2
- package/dist/esm/shared/components/IFrameAndLoading.d.ts.map +1 -1
- package/dist/esm/shared/components/IFrameAndLoading.js +4 -13
- package/dist/esm/shared/components/IFrameAndLoading.js.map +1 -1
- package/dist/esm/shared/components/LoadingIcon.d.ts +1 -2
- package/dist/esm/shared/components/LoadingIcon.d.ts.map +1 -1
- package/dist/esm/shared/components/LoadingIcon.js +19 -23
- package/dist/esm/shared/components/LoadingIcon.js.map +1 -1
- package/dist/esm/shared/components/SVGLoading.js +11 -20
- package/dist/esm/shared/components/SVGLoading.js.map +1 -1
- package/dist/esm/shared/lib/UserSession.d.ts +4 -2
- package/dist/esm/shared/lib/UserSession.d.ts.map +1 -1
- package/dist/esm/shared/lib/UserSession.js.map +1 -1
- package/dist/esm/shared/lib/session.d.ts +2 -2
- package/dist/esm/shared/lib/session.d.ts.map +1 -1
- package/dist/esm/shared/lib/session.js +9 -6
- package/dist/esm/shared/lib/session.js.map +1 -1
- package/dist/esm/shared/lib/types.d.ts +1 -0
- package/dist/esm/shared/lib/types.d.ts.map +1 -1
- package/dist/esm/shared/lib/types.js +1 -0
- package/dist/esm/shared/lib/types.js.map +1 -1
- package/dist/esm/shared/lib/util.d.ts.map +1 -1
- package/dist/esm/shared/lib/util.js +2 -1
- package/dist/esm/shared/lib/util.js.map +1 -1
- package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts +1 -1
- package/dist/esm/shared/providers/CivicAuthConfigContext.d.ts.map +1 -1
- package/dist/esm/shared/providers/CivicAuthConfigContext.js +2 -1
- package/dist/esm/shared/providers/CivicAuthConfigContext.js.map +1 -1
- package/dist/esm/shared/providers/IframeProvider.d.ts +1 -1
- package/dist/esm/shared/providers/IframeProvider.d.ts.map +1 -1
- package/dist/esm/shared/providers/IframeProvider.js +3 -2
- package/dist/esm/shared/providers/IframeProvider.js.map +1 -1
- package/dist/esm/shared/providers/SessionProvider.d.ts +1 -1
- package/dist/esm/shared/providers/SessionProvider.d.ts.map +1 -1
- package/dist/esm/shared/providers/SessionProvider.js +3 -2
- package/dist/esm/shared/providers/SessionProvider.js.map +1 -1
- package/dist/esm/shared/providers/TokenProvider.d.ts +1 -1
- package/dist/esm/shared/providers/TokenProvider.d.ts.map +1 -1
- package/dist/esm/shared/providers/TokenProvider.js +2 -1
- package/dist/esm/shared/providers/TokenProvider.js.map +1 -1
- package/dist/esm/shared/providers/UserProvider.d.ts +1 -1
- package/dist/esm/shared/providers/UserProvider.d.ts.map +1 -1
- package/dist/esm/shared/providers/UserProvider.js +3 -2
- package/dist/esm/shared/providers/UserProvider.js.map +1 -1
- package/dist/esm/shared/version.d.ts +1 -1
- package/dist/esm/shared/version.d.ts.map +1 -1
- package/dist/esm/shared/version.js +1 -1
- package/dist/esm/shared/version.js.map +1 -1
- package/dist/esm/types.d.ts +8 -10
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +2 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/generateVersion.d.ts +2 -0
- package/dist/generateVersion.d.ts.map +1 -0
- package/dist/generateVersion.js +12 -0
- package/dist/generateVersion.js.map +1 -0
- package/dist/package.json +118 -0
- package/dist/src/browser/storage.d.ts +9 -0
- package/dist/src/browser/storage.d.ts.map +1 -0
- package/dist/src/browser/storage.js +17 -0
- package/dist/src/browser/storage.js.map +1 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +5 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/constants.d.ts +8 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +16 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/cookies.d.ts +7 -0
- package/dist/src/lib/cookies.d.ts.map +1 -0
- package/dist/src/lib/cookies.js +25 -0
- package/dist/src/lib/cookies.js.map +1 -0
- package/dist/src/lib/jwt.d.ts +3 -0
- package/dist/src/lib/jwt.d.ts.map +1 -0
- package/dist/src/lib/jwt.js +9 -0
- package/dist/src/lib/jwt.js.map +1 -0
- package/dist/src/lib/logger.d.ts +26 -0
- package/dist/src/lib/logger.d.ts.map +1 -0
- package/dist/src/lib/logger.js +55 -0
- package/dist/src/lib/logger.js.map +1 -0
- package/dist/src/lib/oauth.d.ts +19 -0
- package/dist/src/lib/oauth.d.ts.map +1 -0
- package/dist/src/lib/oauth.js +61 -0
- package/dist/src/lib/oauth.js.map +1 -0
- package/dist/src/lib/obj.d.ts +3 -0
- package/dist/src/lib/obj.d.ts.map +1 -0
- package/dist/src/lib/obj.js +18 -0
- package/dist/src/lib/obj.js.map +1 -0
- package/dist/src/lib/postMessage.d.ts +4 -0
- package/dist/src/lib/postMessage.d.ts.map +1 -0
- package/dist/src/lib/postMessage.js +15 -0
- package/dist/src/lib/postMessage.js.map +1 -0
- package/dist/src/lib/windowUtil.d.ts +4 -0
- package/dist/src/lib/windowUtil.d.ts.map +1 -0
- package/dist/src/lib/windowUtil.js +31 -0
- package/dist/src/lib/windowUtil.js.map +1 -0
- package/dist/src/nextjs/GetUser.d.ts +6 -0
- package/dist/src/nextjs/GetUser.d.ts.map +1 -0
- package/dist/src/nextjs/GetUser.js +7 -0
- package/dist/src/nextjs/GetUser.js.map +1 -0
- package/dist/src/nextjs/config.d.ts +181 -0
- package/dist/src/nextjs/config.d.ts.map +1 -0
- package/dist/src/nextjs/config.js +177 -0
- package/dist/src/nextjs/config.js.map +1 -0
- package/dist/src/nextjs/cookies.d.ts +30 -0
- package/dist/src/nextjs/cookies.d.ts.map +1 -0
- package/dist/src/nextjs/cookies.js +112 -0
- package/dist/src/nextjs/cookies.js.map +1 -0
- package/dist/src/nextjs/hooks/index.d.ts +2 -0
- package/dist/src/nextjs/hooks/index.d.ts.map +1 -0
- package/dist/src/nextjs/hooks/index.js +2 -0
- package/dist/src/nextjs/hooks/index.js.map +1 -0
- package/dist/src/nextjs/hooks/usePrevious.d.ts +2 -0
- package/dist/src/nextjs/hooks/usePrevious.d.ts.map +1 -0
- package/dist/src/nextjs/hooks/usePrevious.js +9 -0
- package/dist/src/nextjs/hooks/usePrevious.js.map +1 -0
- package/dist/src/nextjs/hooks/useUserCookie.d.ts +8 -0
- package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +1 -0
- package/dist/src/nextjs/hooks/useUserCookie.js +88 -0
- package/dist/src/nextjs/hooks/useUserCookie.js.map +1 -0
- package/dist/src/nextjs/index.d.ts +7 -0
- package/dist/src/nextjs/index.d.ts.map +1 -0
- package/dist/src/nextjs/index.js +8 -0
- package/dist/src/nextjs/index.js.map +1 -0
- package/dist/src/nextjs/middleware/index.d.ts +2 -0
- package/dist/src/nextjs/middleware/index.d.ts.map +1 -0
- package/dist/src/nextjs/middleware/index.js +4 -0
- package/dist/src/nextjs/middleware/index.js.map +1 -0
- package/dist/src/nextjs/middleware.d.ts +59 -0
- package/dist/src/nextjs/middleware.d.ts.map +1 -0
- package/dist/src/nextjs/middleware.js +107 -0
- package/dist/src/nextjs/middleware.js.map +1 -0
- package/dist/src/nextjs/providers/NextAuthProvider.d.ts +13 -0
- package/dist/src/nextjs/providers/NextAuthProvider.d.ts.map +1 -0
- package/dist/src/nextjs/providers/NextAuthProvider.js +94 -0
- package/dist/src/nextjs/providers/NextAuthProvider.js.map +1 -0
- package/dist/src/nextjs/routeHandler.d.ts +19 -0
- package/dist/src/nextjs/routeHandler.d.ts.map +1 -0
- package/dist/src/nextjs/routeHandler.js +309 -0
- package/dist/src/nextjs/routeHandler.js.map +1 -0
- package/dist/src/nextjs/utils.d.ts +3 -0
- package/dist/src/nextjs/utils.d.ts.map +1 -0
- package/dist/src/nextjs/utils.js +5 -0
- package/dist/src/nextjs/utils.js.map +1 -0
- package/dist/src/reactjs/components/SignInButton.d.ts +8 -0
- package/dist/src/reactjs/components/SignInButton.d.ts.map +1 -0
- package/dist/src/reactjs/components/SignInButton.js +14 -0
- package/dist/src/reactjs/components/SignInButton.js.map +1 -0
- package/dist/src/reactjs/components/SignOutButton.d.ts +6 -0
- package/dist/src/reactjs/components/SignOutButton.d.ts.map +1 -0
- package/dist/src/reactjs/components/SignOutButton.js +14 -0
- package/dist/src/reactjs/components/SignOutButton.js.map +1 -0
- package/dist/src/reactjs/components/UserButton.d.ts +6 -0
- package/dist/src/reactjs/components/UserButton.d.ts.map +1 -0
- package/dist/src/reactjs/components/UserButton.js +118 -0
- package/dist/src/reactjs/components/UserButton.js.map +1 -0
- package/dist/src/reactjs/components/index.d.ts +6 -0
- package/dist/src/reactjs/components/index.d.ts.map +1 -0
- package/dist/src/reactjs/components/index.js +6 -0
- package/dist/src/reactjs/components/index.js.map +1 -0
- package/dist/src/reactjs/hooks/index.d.ts +6 -0
- package/dist/src/reactjs/hooks/index.d.ts.map +1 -0
- package/dist/src/reactjs/hooks/index.js +6 -0
- package/dist/src/reactjs/hooks/index.js.map +1 -0
- package/dist/src/reactjs/hooks/useAuth.d.ts +3 -0
- package/dist/src/reactjs/hooks/useAuth.d.ts.map +1 -0
- package/dist/src/reactjs/hooks/useAuth.js +12 -0
- package/dist/src/reactjs/hooks/useAuth.js.map +1 -0
- package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/src/reactjs/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js +13 -0
- package/dist/src/reactjs/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/src/reactjs/hooks/useUser.d.ts +4 -0
- package/dist/src/reactjs/hooks/useUser.d.ts.map +1 -0
- package/dist/src/reactjs/hooks/useUser.js +12 -0
- package/dist/src/reactjs/hooks/useUser.js.map +1 -0
- package/dist/src/reactjs/index.d.ts +6 -0
- package/dist/src/reactjs/index.d.ts.map +1 -0
- package/dist/src/reactjs/index.js +10 -0
- package/dist/src/reactjs/index.js.map +1 -0
- package/dist/src/reactjs/providers/AuthProvider.d.ts +11 -0
- package/dist/src/reactjs/providers/AuthProvider.d.ts.map +1 -0
- package/dist/src/reactjs/providers/AuthProvider.js +76 -0
- package/dist/src/reactjs/providers/AuthProvider.js.map +1 -0
- package/dist/src/reactjs/providers/CivicAuthProvider.d.ts +6 -0
- package/dist/src/reactjs/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/src/reactjs/providers/CivicAuthProvider.js +32 -0
- package/dist/src/reactjs/providers/CivicAuthProvider.js.map +1 -0
- package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js +148 -0
- package/dist/src/reactjs/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/src/reactjs/providers/index.d.ts +8 -0
- package/dist/src/reactjs/providers/index.d.ts.map +1 -0
- package/dist/src/reactjs/providers/index.js +7 -0
- package/dist/src/reactjs/providers/index.js.map +1 -0
- package/dist/src/server/ServerAuthenticationResolver.d.ts +20 -0
- package/dist/src/server/ServerAuthenticationResolver.d.ts.map +1 -0
- package/dist/src/server/ServerAuthenticationResolver.js +67 -0
- package/dist/src/server/ServerAuthenticationResolver.js.map +1 -0
- package/dist/src/server/config.d.ts +10 -0
- package/dist/src/server/config.d.ts.map +1 -0
- package/dist/src/server/config.js +2 -0
- package/dist/src/server/config.js.map +1 -0
- package/dist/src/server/index.d.ts +7 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +7 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/login.d.ts +21 -0
- package/dist/src/server/login.d.ts.map +1 -0
- package/dist/src/server/login.js +56 -0
- package/dist/src/server/login.js.map +1 -0
- package/dist/src/server/refresh.d.ts +7 -0
- package/dist/src/server/refresh.d.ts.map +1 -0
- package/dist/src/server/refresh.js +13 -0
- package/dist/src/server/refresh.js.map +1 -0
- package/dist/src/services/AuthenticationService.d.ts +91 -0
- package/dist/src/services/AuthenticationService.d.ts.map +1 -0
- package/dist/src/services/AuthenticationService.js +322 -0
- package/dist/src/services/AuthenticationService.js.map +1 -0
- package/dist/src/services/PKCE.d.ts +20 -0
- package/dist/src/services/PKCE.d.ts.map +1 -0
- package/dist/src/services/PKCE.js +44 -0
- package/dist/src/services/PKCE.js.map +1 -0
- package/dist/src/services/types.d.ts +24 -0
- package/dist/src/services/types.d.ts.map +1 -0
- package/dist/src/services/types.js +7 -0
- package/dist/src/services/types.js.map +1 -0
- package/dist/src/shared/components/BlockDisplay.d.ts +7 -0
- package/dist/src/shared/components/BlockDisplay.d.ts.map +1 -0
- package/dist/src/shared/components/BlockDisplay.js +25 -0
- package/dist/src/shared/components/BlockDisplay.js.map +1 -0
- package/dist/src/shared/components/CivicAuthIframe.d.ts +9 -0
- package/dist/src/shared/components/CivicAuthIframe.d.ts.map +1 -0
- package/dist/src/shared/components/CivicAuthIframe.js +8 -0
- package/dist/src/shared/components/CivicAuthIframe.js.map +1 -0
- package/dist/src/shared/components/CivicAuthIframeContainer.d.ts +13 -0
- package/dist/src/shared/components/CivicAuthIframeContainer.d.ts.map +1 -0
- package/dist/src/shared/components/CivicAuthIframeContainer.js +138 -0
- package/dist/src/shared/components/CivicAuthIframeContainer.js.map +1 -0
- package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts +7 -0
- package/dist/src/shared/components/CivicAuthLogoutIframeContainer.d.ts.map +1 -0
- package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js +22 -0
- package/dist/src/shared/components/CivicAuthLogoutIframeContainer.js.map +1 -0
- package/dist/src/shared/components/CloseIcon.d.ts +4 -0
- package/dist/src/shared/components/CloseIcon.d.ts.map +1 -0
- package/dist/src/shared/components/CloseIcon.js +6 -0
- package/dist/src/shared/components/CloseIcon.js.map +1 -0
- package/dist/src/shared/components/IFrameAndLoading.d.ts +8 -0
- package/dist/src/shared/components/IFrameAndLoading.d.ts.map +1 -0
- package/dist/src/shared/components/IFrameAndLoading.js +27 -0
- package/dist/src/shared/components/IFrameAndLoading.js.map +1 -0
- package/dist/src/shared/components/LoadingIcon.d.ts +4 -0
- package/dist/src/shared/components/LoadingIcon.d.ts.map +1 -0
- package/dist/src/shared/components/LoadingIcon.js +30 -0
- package/dist/src/shared/components/LoadingIcon.js.map +1 -0
- package/dist/src/shared/hooks/index.d.ts +11 -0
- package/dist/src/shared/hooks/index.d.ts.map +1 -0
- package/dist/src/shared/hooks/index.js +11 -0
- package/dist/src/shared/hooks/index.js.map +1 -0
- package/dist/src/shared/hooks/useAuth.d.ts +3 -0
- package/dist/src/shared/hooks/useAuth.d.ts.map +1 -0
- package/dist/src/shared/hooks/useAuth.js +12 -0
- package/dist/src/shared/hooks/useAuth.js.map +1 -0
- package/dist/src/shared/hooks/useCivicAuthConfig.d.ts +3 -0
- package/dist/src/shared/hooks/useCivicAuthConfig.d.ts.map +1 -0
- package/dist/src/shared/hooks/useCivicAuthConfig.js +10 -0
- package/dist/src/shared/hooks/useCivicAuthConfig.js.map +1 -0
- package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts +3 -0
- package/dist/src/shared/hooks/useClientTokenExchangeSession.d.ts.map +1 -0
- package/dist/src/shared/hooks/useClientTokenExchangeSession.js +13 -0
- package/dist/src/shared/hooks/useClientTokenExchangeSession.js.map +1 -0
- package/dist/src/shared/hooks/useCurrentUrl.d.ts +3 -0
- package/dist/src/shared/hooks/useCurrentUrl.d.ts.map +1 -0
- package/dist/src/shared/hooks/useCurrentUrl.js +24 -0
- package/dist/src/shared/hooks/useCurrentUrl.js.map +1 -0
- package/dist/src/shared/hooks/useIframe.d.ts +3 -0
- package/dist/src/shared/hooks/useIframe.d.ts.map +1 -0
- package/dist/src/shared/hooks/useIframe.js +13 -0
- package/dist/src/shared/hooks/useIframe.js.map +1 -0
- package/dist/src/shared/hooks/useIsInIframe.d.ts +3 -0
- package/dist/src/shared/hooks/useIsInIframe.d.ts.map +1 -0
- package/dist/src/shared/hooks/useIsInIframe.js +14 -0
- package/dist/src/shared/hooks/useIsInIframe.js.map +1 -0
- package/dist/src/shared/hooks/useOAuthEndpoints.d.ts +4 -0
- package/dist/src/shared/hooks/useOAuthEndpoints.d.ts.map +1 -0
- package/dist/src/shared/hooks/useOAuthEndpoints.js +14 -0
- package/dist/src/shared/hooks/useOAuthEndpoints.js.map +1 -0
- package/dist/src/shared/hooks/useRefresh.d.ts +4 -0
- package/dist/src/shared/hooks/useRefresh.d.ts.map +1 -0
- package/dist/src/shared/hooks/useRefresh.js +38 -0
- package/dist/src/shared/hooks/useRefresh.js.map +1 -0
- package/dist/src/shared/hooks/useSession.d.ts +3 -0
- package/dist/src/shared/hooks/useSession.d.ts.map +1 -0
- package/dist/src/shared/hooks/useSession.js +13 -0
- package/dist/src/shared/hooks/useSession.js.map +1 -0
- package/dist/src/shared/hooks/useSignIn.d.ts +15 -0
- package/dist/src/shared/hooks/useSignIn.d.ts.map +1 -0
- package/dist/src/shared/hooks/useSignIn.js +126 -0
- package/dist/src/shared/hooks/useSignIn.js.map +1 -0
- package/dist/src/shared/hooks/useToken.d.ts +3 -0
- package/dist/src/shared/hooks/useToken.d.ts.map +1 -0
- package/dist/src/shared/hooks/useToken.js +12 -0
- package/dist/src/shared/hooks/useToken.js.map +1 -0
- package/dist/src/shared/hooks/useWindowFocused.d.ts +5 -0
- package/dist/src/shared/hooks/useWindowFocused.d.ts.map +1 -0
- package/dist/src/shared/hooks/useWindowFocused.js +21 -0
- package/dist/src/shared/hooks/useWindowFocused.js.map +1 -0
- package/dist/src/shared/index.d.ts +5 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/index.js +16 -0
- package/dist/src/shared/index.js.map +1 -0
- package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts +20 -0
- package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +1 -0
- package/dist/src/shared/lib/GenericAuthenticationRefresher.js +73 -0
- package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +1 -0
- package/dist/src/shared/lib/UserSession.d.ts +12 -0
- package/dist/src/shared/lib/UserSession.d.ts.map +1 -0
- package/dist/src/shared/lib/UserSession.js +20 -0
- package/dist/src/shared/lib/UserSession.js.map +1 -0
- package/dist/src/shared/lib/session.d.ts +3 -0
- package/dist/src/shared/lib/session.d.ts.map +1 -0
- package/dist/src/shared/lib/session.js +21 -0
- package/dist/src/shared/lib/session.js.map +1 -0
- package/dist/src/shared/lib/storage.d.ts +25 -0
- package/dist/src/shared/lib/storage.d.ts.map +1 -0
- package/dist/src/shared/lib/storage.js +17 -0
- package/dist/src/shared/lib/storage.js.map +1 -0
- package/dist/src/shared/lib/types.d.ts +36 -0
- package/dist/src/shared/lib/types.d.ts.map +1 -0
- package/dist/src/shared/lib/types.js +18 -0
- package/dist/src/shared/lib/types.js.map +1 -0
- package/dist/src/shared/lib/util.d.ts +34 -0
- package/dist/src/shared/lib/util.d.ts.map +1 -0
- package/dist/src/shared/lib/util.js +137 -0
- package/dist/src/shared/lib/util.js.map +1 -0
- package/dist/src/shared/providers/AuthContext.d.ts +11 -0
- package/dist/src/shared/providers/AuthContext.d.ts.map +1 -0
- package/dist/src/shared/providers/AuthContext.js +3 -0
- package/dist/src/shared/providers/AuthContext.js.map +1 -0
- package/dist/src/shared/providers/AuthProvider.d.ts +22 -0
- package/dist/src/shared/providers/AuthProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/AuthProvider.js +72 -0
- package/dist/src/shared/providers/AuthProvider.js.map +1 -0
- package/dist/src/shared/providers/CivicAuthConfigContext.d.ts +18 -0
- package/dist/src/shared/providers/CivicAuthConfigContext.d.ts.map +1 -0
- package/dist/src/shared/providers/CivicAuthConfigContext.js +52 -0
- package/dist/src/shared/providers/CivicAuthConfigContext.js.map +1 -0
- package/dist/src/shared/providers/CivicAuthProvider.d.ts +6 -0
- package/dist/src/shared/providers/CivicAuthProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/CivicAuthProvider.js +32 -0
- package/dist/src/shared/providers/CivicAuthProvider.js.map +1 -0
- package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts +17 -0
- package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js +131 -0
- package/dist/src/shared/providers/ClientTokenExchangeSessionProvider.js.map +1 -0
- package/dist/src/shared/providers/IframeProvider.d.ts +22 -0
- package/dist/src/shared/providers/IframeProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/IframeProvider.js +35 -0
- package/dist/src/shared/providers/IframeProvider.js.map +1 -0
- package/dist/src/shared/providers/SessionProvider.d.ts +19 -0
- package/dist/src/shared/providers/SessionProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/SessionProvider.js +23 -0
- package/dist/src/shared/providers/SessionProvider.js.map +1 -0
- package/dist/src/shared/providers/TokenProvider.d.ts +18 -0
- package/dist/src/shared/providers/TokenProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/TokenProvider.js +42 -0
- package/dist/src/shared/providers/TokenProvider.js.map +1 -0
- package/dist/src/shared/providers/UserProvider.d.ts +24 -0
- package/dist/src/shared/providers/UserProvider.d.ts.map +1 -0
- package/dist/src/shared/providers/UserProvider.js +52 -0
- package/dist/src/shared/providers/UserProvider.js.map +1 -0
- package/dist/src/shared/providers/types.d.ts +15 -0
- package/dist/src/shared/providers/types.d.ts.map +1 -0
- package/dist/src/shared/providers/types.js +2 -0
- package/dist/src/shared/providers/types.js.map +1 -0
- package/dist/src/shared/version.d.ts +2 -0
- package/dist/src/shared/version.d.ts.map +1 -0
- package/dist/src/shared/version.js +3 -0
- package/dist/src/shared/version.js.map +1 -0
- package/dist/src/types.d.ts +148 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +4 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +15 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +43 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +3 -0
- package/dist/src/version.js.map +1 -0
- package/dist/test/integration/sdk.test.d.ts +2 -0
- package/dist/test/integration/sdk.test.d.ts.map +1 -0
- package/dist/test/integration/sdk.test.js +237 -0
- package/dist/test/integration/sdk.test.js.map +1 -0
- package/dist/test/support/fixtures.d.ts +26 -0
- package/dist/test/support/fixtures.d.ts.map +1 -0
- package/dist/test/support/fixtures.js +55 -0
- package/dist/test/support/fixtures.js.map +1 -0
- package/dist/test/support/tokens.json +26 -0
- package/dist/test/unit/lib/oauth.test.d.ts +2 -0
- package/dist/test/unit/lib/oauth.test.d.ts.map +1 -0
- package/dist/test/unit/lib/oauth.test.js +56 -0
- package/dist/test/unit/lib/oauth.test.js.map +1 -0
- package/dist/test/unit/lib/obj.test.d.ts +2 -0
- package/dist/test/unit/lib/obj.test.d.ts.map +1 -0
- package/dist/test/unit/lib/obj.test.js +37 -0
- package/dist/test/unit/lib/obj.test.js.map +1 -0
- package/dist/test/unit/logger.test.d.ts +2 -0
- package/dist/test/unit/logger.test.d.ts.map +1 -0
- package/dist/test/unit/logger.test.js +141 -0
- package/dist/test/unit/logger.test.js.map +1 -0
- package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +2 -0
- package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/NextAuthProvider.test.js +31 -0
- package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +1 -0
- package/dist/test/unit/nextjs/config.test.d.ts +2 -0
- package/dist/test/unit/nextjs/config.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/config.test.js +203 -0
- package/dist/test/unit/nextjs/config.test.js.map +1 -0
- package/dist/test/unit/nextjs/getUser.test.d.ts +2 -0
- package/dist/test/unit/nextjs/getUser.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/getUser.test.js +22 -0
- package/dist/test/unit/nextjs/getUser.test.js.map +1 -0
- package/dist/test/unit/nextjs/handler.test.d.ts +2 -0
- package/dist/test/unit/nextjs/handler.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/handler.test.js +207 -0
- package/dist/test/unit/nextjs/handler.test.js.map +1 -0
- package/dist/test/unit/nextjs/middleware.test.d.ts +2 -0
- package/dist/test/unit/nextjs/middleware.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/middleware.test.js +113 -0
- package/dist/test/unit/nextjs/middleware.test.js.map +1 -0
- package/dist/test/unit/nextjs/utils.test.d.ts +2 -0
- package/dist/test/unit/nextjs/utils.test.d.ts.map +1 -0
- package/dist/test/unit/nextjs/utils.test.js +13 -0
- package/dist/test/unit/nextjs/utils.test.js.map +1 -0
- package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +2 -0
- package/dist/test/unit/publicApi/apiSnapshot.test.d.ts.map +1 -0
- package/dist/test/unit/publicApi/apiSnapshot.test.js +10 -0
- package/dist/test/unit/publicApi/apiSnapshot.test.js.map +1 -0
- package/dist/test/unit/react/components/SignInButton.test.d.ts +2 -0
- package/dist/test/unit/react/components/SignInButton.test.d.ts.map +1 -0
- package/dist/test/unit/react/components/SignInButton.test.js +31 -0
- package/dist/test/unit/react/components/SignInButton.test.js.map +1 -0
- package/dist/test/unit/react/components/SignOutButton.test.d.ts +2 -0
- package/dist/test/unit/react/components/SignOutButton.test.d.ts.map +1 -0
- package/dist/test/unit/react/components/SignOutButton.test.js +30 -0
- package/dist/test/unit/react/components/SignOutButton.test.js.map +1 -0
- package/dist/test/unit/server/login.test.d.ts +2 -0
- package/dist/test/unit/server/login.test.d.ts.map +1 -0
- package/dist/test/unit/server/login.test.js +184 -0
- package/dist/test/unit/server/login.test.js.map +1 -0
- package/dist/test/unit/server/refresh.test.d.ts +2 -0
- package/dist/test/unit/server/refresh.test.d.ts.map +1 -0
- package/dist/test/unit/server/refresh.test.js +55 -0
- package/dist/test/unit/server/refresh.test.js.map +1 -0
- package/dist/test/unit/server/session.test.d.ts +2 -0
- package/dist/test/unit/server/session.test.d.ts.map +1 -0
- package/dist/test/unit/server/session.test.js +41 -0
- package/dist/test/unit/server/session.test.js.map +1 -0
- package/dist/test/unit/services/AuthenticationService.test.d.ts +2 -0
- package/dist/test/unit/services/AuthenticationService.test.d.ts.map +1 -0
- package/dist/test/unit/services/AuthenticationService.test.js +301 -0
- package/dist/test/unit/services/AuthenticationService.test.js.map +1 -0
- package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +2 -0
- package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts.map +1 -0
- package/dist/test/unit/services/ServerAuthenticationResolver.test.js +75 -0
- package/dist/test/unit/services/ServerAuthenticationResolver.test.js.map +1 -0
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +2 -0
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts.map +1 -0
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js +144 -0
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js.map +1 -0
- package/dist/test/unit/shared/UserSession.test.d.ts +2 -0
- package/dist/test/unit/shared/UserSession.test.d.ts.map +1 -0
- package/dist/test/unit/shared/UserSession.test.js +37 -0
- package/dist/test/unit/shared/UserSession.test.js.map +1 -0
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +2 -0
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts.map +1 -0
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +122 -0
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +1 -0
- package/dist/test/unit/shared/printVersion.test.d.ts +2 -0
- package/dist/test/unit/shared/printVersion.test.d.ts.map +1 -0
- package/dist/test/unit/shared/printVersion.test.js +39 -0
- package/dist/test/unit/shared/printVersion.test.js.map +1 -0
- package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts +2 -0
- package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.d.ts.map +1 -0
- package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js +108 -0
- package/dist/test/unit/shared/providers/ClientTokenExchangeSessionProvider.test.js.map +1 -0
- package/dist/test/unit/shared/storage.test.d.ts +2 -0
- package/dist/test/unit/shared/storage.test.d.ts.map +1 -0
- package/dist/test/unit/shared/storage.test.js +53 -0
- package/dist/test/unit/shared/storage.test.js.map +1 -0
- package/dist/test/unit/utils.test.d.ts +2 -0
- package/dist/test/unit/utils.test.d.ts.map +1 -0
- package/dist/test/unit/utils.test.js +40 -0
- package/dist/test/unit/utils.test.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +44 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +20 -18
- package/dist/cjs/reactjs/components/LoadingSpinner.d.ts +0 -7
- package/dist/cjs/reactjs/components/LoadingSpinner.d.ts.map +0 -1
- package/dist/cjs/reactjs/components/LoadingSpinner.js +0 -33
- package/dist/cjs/reactjs/components/LoadingSpinner.js.map +0 -1
- package/dist/cjs/reactjs/hooks/useSignIn.d.ts +0 -6
- package/dist/cjs/reactjs/hooks/useSignIn.d.ts.map +0 -1
- package/dist/cjs/reactjs/hooks/useSignIn.js +0 -38
- package/dist/cjs/reactjs/hooks/useSignIn.js.map +0 -1
- package/dist/esm/reactjs/hooks/useSignIn.d.ts +0 -6
- package/dist/esm/reactjs/hooks/useSignIn.d.ts.map +0 -1
- package/dist/esm/reactjs/hooks/useSignIn.js +0 -34
- package/dist/esm/reactjs/hooks/useSignIn.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { AuthProvider } from "@/reactjs/providers/AuthProvider.js";
|
|
4
|
+
import { BrowserPublicClientPKCEProducer } from "@/services/PKCE.js";
|
|
5
|
+
import { UserProvider } from "@/shared/providers/UserProvider.js";
|
|
6
|
+
import { LocalStorageAdapter } from "@/browser/storage.js";
|
|
7
|
+
import { CivicAuthConfigProvider } from "@/shared/providers/CivicAuthConfigContext.js";
|
|
8
|
+
import { IframeProvider } from "@/shared/providers/IframeProvider.js";
|
|
9
|
+
import { ClientTokenExchangeSessionProvider } from "@/reactjs/providers/ClientTokenExchangeSessionProvider.js";
|
|
10
|
+
import { SessionProvider } from "@/shared/providers/SessionProvider.js";
|
|
11
|
+
import { useClientTokenExchangeSession } from "@/reactjs/hooks/useClientTokenExchangeSession.js";
|
|
12
|
+
import { TokenProvider } from "@/shared/providers/TokenProvider.js";
|
|
13
|
+
import { useAuth } from "@/shared/hooks/useAuth.js";
|
|
14
|
+
const WrapperUserProvider = ({ children }) => {
|
|
15
|
+
const { signIn, signOut, displayMode } = useAuth();
|
|
16
|
+
return (React.createElement(UserProvider, { storage: new LocalStorageAdapter(), signIn: signIn, signOut: signOut, displayMode: displayMode }, children));
|
|
17
|
+
};
|
|
18
|
+
const WrapperSessionAuthProvider = ({ children, ...props }) => {
|
|
19
|
+
const sessionData = useClientTokenExchangeSession();
|
|
20
|
+
return (React.createElement(SessionProvider, { ...sessionData },
|
|
21
|
+
React.createElement(IframeProvider, { iframeMode: props.iframeMode },
|
|
22
|
+
React.createElement(AuthProvider, { ...props, pkceConsumer: new BrowserPublicClientPKCEProducer() },
|
|
23
|
+
React.createElement(TokenProvider, null,
|
|
24
|
+
React.createElement(WrapperUserProvider, null, children))))));
|
|
25
|
+
};
|
|
26
|
+
const CivicAuthProvider = ({ children, ...props }) => {
|
|
27
|
+
return (React.createElement(CivicAuthConfigProvider, { oauthServer: props?.config?.oauthServer, clientId: props?.clientId, redirectUrl: props?.redirectUrl, nonce: props?.nonce, logoutRedirectUrl: props?.logoutRedirectUrl },
|
|
28
|
+
React.createElement(ClientTokenExchangeSessionProvider, null,
|
|
29
|
+
React.createElement(WrapperSessionAuthProvider, { ...props }, children))));
|
|
30
|
+
};
|
|
31
|
+
export { CivicAuthProvider };
|
|
32
|
+
//# sourceMappingURL=CivicAuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CivicAuthProvider.js","sourceRoot":"","sources":["../../../../src/reactjs/providers/CivicAuthProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,kCAAkC,EAAE,MAAM,2DAA2D,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAKpD,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE;IAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;IACnD,OAAO,CACL,oBAAC,YAAY,IACX,OAAO,EAAE,IAAI,mBAAmB,EAAE,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,IAEvB,QAAQ,CACI,CAChB,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,0BAA0B,GAAG,CAAC,EAClC,QAAQ,EACR,GAAG,KAAK,EACe,EAAE,EAAE;IAC3B,MAAM,WAAW,GAAG,6BAA6B,EAAE,CAAC;IACpD,OAAO,CACL,oBAAC,eAAe,OAAK,WAAW;QAC9B,oBAAC,cAAc,IAAC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC1C,oBAAC,YAAY,OACP,KAAK,EACT,YAAY,EAAE,IAAI,+BAA+B,EAAE;gBAEnD,oBAAC,aAAa;oBACZ,oBAAC,mBAAmB,QAAE,QAAQ,CAAuB,CACvC,CACH,CACA,CACD,CACnB,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA0B,EAAE,EAAE;IAC3E,OAAO,CACL,oBAAC,uBAAuB,IACtB,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EACvC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EACzB,WAAW,EAAE,KAAK,EAAE,WAAW,EAC/B,KAAK,EAAE,KAAK,EAAE,KAAK,EACnB,iBAAiB,EAAE,KAAK,EAAE,iBAAiB;QAE3C,oBAAC,kCAAkC;YACjC,oBAAC,0BAA0B,OAAK,KAAK,IAClC,QAAQ,CACkB,CACM,CACb,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAA+B,CAAC","sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { AuthProvider } from \"@/reactjs/providers/AuthProvider.js\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"@/shared/providers/UserProvider.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { CivicAuthConfigProvider } from \"@/shared/providers/CivicAuthConfigContext.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider.js\";\nimport { ClientTokenExchangeSessionProvider } from \"@/reactjs/providers/ClientTokenExchangeSessionProvider.js\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider.js\";\nimport { useClientTokenExchangeSession } from \"@/reactjs/hooks/useClientTokenExchangeSession.js\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider.js\";\nimport { useAuth } from \"@/shared/hooks/useAuth.js\";\nimport type { AuthProviderProps } from \"@/shared/providers/types.js\";\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst WrapperUserProvider = ({ children }: { children: React.ReactNode }) => {\n const { signIn, signOut, displayMode } = useAuth();\n return (\n <UserProvider\n storage={new LocalStorageAdapter()}\n signIn={signIn}\n signOut={signOut}\n displayMode={displayMode}\n >\n {children}\n </UserProvider>\n );\n};\nconst WrapperSessionAuthProvider = ({\n children,\n ...props\n}: CivicAuthProviderProps) => {\n const sessionData = useClientTokenExchangeSession();\n return (\n <SessionProvider {...sessionData}>\n <IframeProvider iframeMode={props.iframeMode}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <TokenProvider>\n <WrapperUserProvider>{children}</WrapperUserProvider>\n </TokenProvider>\n </AuthProvider>\n </IframeProvider>\n </SessionProvider>\n );\n};\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <CivicAuthConfigProvider\n oauthServer={props?.config?.oauthServer}\n clientId={props?.clientId}\n redirectUrl={props?.redirectUrl}\n nonce={props?.nonce}\n logoutRedirectUrl={props?.logoutRedirectUrl}\n >\n <ClientTokenExchangeSessionProvider>\n <WrapperSessionAuthProvider {...props}>\n {children}\n </WrapperSessionAuthProvider>\n </ClientTokenExchangeSessionProvider>\n </CivicAuthConfigProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import type { SessionData } from "@/types.js";
|
|
4
|
+
export type ClientTokenExchangeSessionProviderOutput = {
|
|
5
|
+
data: SessionData | null;
|
|
6
|
+
error: Error | null;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
doTokenExchange: null | ((url: string) => Promise<void>);
|
|
9
|
+
};
|
|
10
|
+
declare const ClientTokenExchangeSessionContext: React.Context<ClientTokenExchangeSessionProviderOutput>;
|
|
11
|
+
type ClientTokenExchangeSessionContextType = {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
declare const ClientTokenExchangeSessionProvider: ({ children, }: ClientTokenExchangeSessionContextType) => React.JSX.Element;
|
|
15
|
+
export type { ClientTokenExchangeSessionContextType as SessionContextType };
|
|
16
|
+
export { ClientTokenExchangeSessionProvider, ClientTokenExchangeSessionContext, };
|
|
17
|
+
//# sourceMappingURL=ClientTokenExchangeSessionProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientTokenExchangeSessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/reactjs/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAMN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC;AAcF,QAAA,MAAM,iCAAiC,yDACkC,CAAC;AAE1E,KAAK,qCAAqC,GAAG;IAC3C,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,kCAAkC,kBAErC,qCAAqC,sBAwJvC,CAAC;AAEF,YAAY,EAAE,qCAAqC,IAAI,kBAAkB,EAAE,CAAC;AAC5E,OAAO,EACL,kCAAkC,EAClC,iCAAiC,GAClC,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import React, { createContext, useCallback, useEffect, useMemo, useState, } from "react";
|
|
3
|
+
import { BrowserAuthenticationService } from "@/services/AuthenticationService.js";
|
|
4
|
+
import { isWindowInIframe } from "@/lib/windowUtil.js";
|
|
5
|
+
import { useCurrentUrl } from "@/shared/hooks/useCurrentUrl.js";
|
|
6
|
+
import { useCivicAuthConfig } from "@/shared/hooks/useCivicAuthConfig.js";
|
|
7
|
+
import { LocalStorageAdapter } from "@/browser/storage.js";
|
|
8
|
+
import { useRefresh } from "../../shared/hooks/useRefresh.js";
|
|
9
|
+
const defaultSession = {
|
|
10
|
+
data: {
|
|
11
|
+
authenticated: false,
|
|
12
|
+
idToken: undefined,
|
|
13
|
+
accessToken: undefined,
|
|
14
|
+
displayMode: "iframe",
|
|
15
|
+
},
|
|
16
|
+
error: null,
|
|
17
|
+
isLoading: false,
|
|
18
|
+
doTokenExchange: null,
|
|
19
|
+
};
|
|
20
|
+
// Context for exposing session specifically to the TokenProvider
|
|
21
|
+
const ClientTokenExchangeSessionContext = createContext(defaultSession);
|
|
22
|
+
const ClientTokenExchangeSessionProvider = ({ children, }) => {
|
|
23
|
+
const authConfig = useCivicAuthConfig();
|
|
24
|
+
const [authService, setAuthService] = useState();
|
|
25
|
+
const [error, setError] = useState(null);
|
|
26
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
27
|
+
const [session, setSession] = useState(null);
|
|
28
|
+
const [isWindowFocused, setIsWindowFocused] = useState(true);
|
|
29
|
+
useRefresh(session);
|
|
30
|
+
// handle the window refocusing after redirect
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const handleFocus = () => {
|
|
33
|
+
setIsWindowFocused(true);
|
|
34
|
+
};
|
|
35
|
+
const handleBlur = () => {
|
|
36
|
+
setIsWindowFocused(false);
|
|
37
|
+
};
|
|
38
|
+
window.addEventListener("focus", handleFocus);
|
|
39
|
+
window.addEventListener("blur", handleBlur);
|
|
40
|
+
return () => {
|
|
41
|
+
window.removeEventListener("focus", handleFocus);
|
|
42
|
+
window.removeEventListener("blur", handleBlur);
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
const currentUrl = useCurrentUrl();
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!currentUrl || !authConfig)
|
|
48
|
+
return;
|
|
49
|
+
const { redirectUrl, clientId, oauthServer, scopes, logoutRedirectUrl, logoutUrl, } = authConfig;
|
|
50
|
+
BrowserAuthenticationService.build({
|
|
51
|
+
clientId,
|
|
52
|
+
redirectUrl,
|
|
53
|
+
logoutRedirectUrl,
|
|
54
|
+
logoutUrl,
|
|
55
|
+
oauthServer,
|
|
56
|
+
scopes,
|
|
57
|
+
displayMode: "iframe",
|
|
58
|
+
}).then(setAuthService);
|
|
59
|
+
}, [currentUrl, authConfig]);
|
|
60
|
+
const isInIframe = isWindowInIframe(globalThis.window);
|
|
61
|
+
const doTokenExchange = useCallback(async (inUrl) => {
|
|
62
|
+
if (!authService)
|
|
63
|
+
return;
|
|
64
|
+
const url = new URL(inUrl);
|
|
65
|
+
const code = url.searchParams.get("code");
|
|
66
|
+
const state = url.searchParams.get("state");
|
|
67
|
+
if (code && state) {
|
|
68
|
+
try {
|
|
69
|
+
setIsLoading(true);
|
|
70
|
+
await authService.tokenExchange(code, state);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
setError(error);
|
|
74
|
+
setSession({ authenticated: false });
|
|
75
|
+
}
|
|
76
|
+
setIsLoading(false);
|
|
77
|
+
}
|
|
78
|
+
}, [authService]);
|
|
79
|
+
const onSignIn = useCallback(async () => {
|
|
80
|
+
if (!authService)
|
|
81
|
+
return;
|
|
82
|
+
const session = await authService.getSessionData();
|
|
83
|
+
setSession(session);
|
|
84
|
+
}, [authService]);
|
|
85
|
+
const onSignOut = useCallback(() => {
|
|
86
|
+
setSession({ authenticated: false });
|
|
87
|
+
}, []);
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
LocalStorageAdapter.emitter.on("signIn", onSignIn);
|
|
90
|
+
LocalStorageAdapter.emitter.on("signOut", onSignOut);
|
|
91
|
+
return () => {
|
|
92
|
+
LocalStorageAdapter.emitter.off("signIn", onSignIn);
|
|
93
|
+
LocalStorageAdapter.emitter.off("signOut", onSignOut);
|
|
94
|
+
};
|
|
95
|
+
}, [onSignIn, onSignOut]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
if (!authConfig) {
|
|
98
|
+
setIsLoading(true);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
setIsLoading(false);
|
|
102
|
+
}
|
|
103
|
+
}, [authConfig]);
|
|
104
|
+
// Handle page load or refocus
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (!authConfig || !authService || !currentUrl || isInIframe || isLoading) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const abortController = new AbortController();
|
|
110
|
+
const onPageLoad = async () => {
|
|
111
|
+
// if we have existing tokens, then validate them and return the session data
|
|
112
|
+
// otherwise check if we have a code in the url and exchange it for tokens
|
|
113
|
+
// if we have neither, return undefined
|
|
114
|
+
const existingSessionData = await authService.validateExistingSession();
|
|
115
|
+
if (existingSessionData.authenticated) {
|
|
116
|
+
setSession(existingSessionData);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (abortController.signal.aborted ||
|
|
120
|
+
!new URL(currentUrl).searchParams.get("code")) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
await doTokenExchange(currentUrl);
|
|
124
|
+
};
|
|
125
|
+
onPageLoad();
|
|
126
|
+
return () => {
|
|
127
|
+
abortController.abort();
|
|
128
|
+
};
|
|
129
|
+
}, [
|
|
130
|
+
authConfig,
|
|
131
|
+
authService,
|
|
132
|
+
currentUrl,
|
|
133
|
+
doTokenExchange,
|
|
134
|
+
isInIframe,
|
|
135
|
+
isLoading,
|
|
136
|
+
isWindowFocused,
|
|
137
|
+
session?.authenticated,
|
|
138
|
+
]);
|
|
139
|
+
const value = useMemo(() => ({
|
|
140
|
+
data: session,
|
|
141
|
+
error,
|
|
142
|
+
isLoading,
|
|
143
|
+
doTokenExchange,
|
|
144
|
+
}), [session, error, isLoading, doTokenExchange]);
|
|
145
|
+
return (React.createElement(ClientTokenExchangeSessionContext.Provider, { value: value }, children));
|
|
146
|
+
};
|
|
147
|
+
export { ClientTokenExchangeSessionProvider, ClientTokenExchangeSessionContext, };
|
|
148
|
+
//# sourceMappingURL=ClientTokenExchangeSessionProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientTokenExchangeSessionProvider.js","sourceRoot":"","sources":["../../../../src/reactjs/providers/ClientTokenExchangeSessionProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport type { ReactNode } from \"react\";\nimport React, {\n createContext,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { BrowserAuthenticationService } from \"@/services/AuthenticationService.js\";\nimport type { AuthenticationResolver } from \"@/services/types.js\";\nimport { isWindowInIframe } from \"@/lib/windowUtil.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { useCurrentUrl } from \"@/shared/hooks/useCurrentUrl.js\";\nimport { useCivicAuthConfig } from \"@/shared/hooks/useCivicAuthConfig.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { useRefresh } from \"../../shared/hooks/useRefresh.js\";\n\nexport type ClientTokenExchangeSessionProviderOutput = {\n data: SessionData | null;\n error: Error | null;\n isLoading: boolean;\n doTokenExchange: null | ((url: string) => Promise<void>);\n};\nconst defaultSession: ClientTokenExchangeSessionProviderOutput = {\n data: {\n authenticated: false,\n idToken: undefined,\n accessToken: undefined,\n displayMode: \"iframe\",\n },\n error: null,\n isLoading: false,\n doTokenExchange: null,\n};\n\n// Context for exposing session specifically to the TokenProvider\nconst ClientTokenExchangeSessionContext =\n createContext<ClientTokenExchangeSessionProviderOutput>(defaultSession);\n\ntype ClientTokenExchangeSessionContextType = {\n children: ReactNode;\n};\n\nconst ClientTokenExchangeSessionProvider = ({\n children,\n}: ClientTokenExchangeSessionContextType) => {\n const authConfig = useCivicAuthConfig();\n const [authService, setAuthService] = useState<AuthenticationResolver>();\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [session, setSession] = useState<SessionData | null>(null);\n const [isWindowFocused, setIsWindowFocused] = useState(true);\n\n useRefresh(session);\n // handle the window refocusing after redirect\n useEffect(() => {\n const handleFocus = () => {\n setIsWindowFocused(true);\n };\n\n const handleBlur = () => {\n setIsWindowFocused(false);\n };\n window.addEventListener(\"focus\", handleFocus);\n window.addEventListener(\"blur\", handleBlur);\n\n return () => {\n window.removeEventListener(\"focus\", handleFocus);\n window.removeEventListener(\"blur\", handleBlur);\n };\n }, []);\n\n const currentUrl = useCurrentUrl();\n\n useEffect(() => {\n if (!currentUrl || !authConfig) return;\n\n const {\n redirectUrl,\n clientId,\n oauthServer,\n scopes,\n logoutRedirectUrl,\n logoutUrl,\n } = authConfig;\n BrowserAuthenticationService.build({\n clientId,\n redirectUrl,\n logoutRedirectUrl,\n logoutUrl,\n oauthServer,\n scopes,\n displayMode: \"iframe\",\n }).then(setAuthService);\n }, [currentUrl, authConfig]);\n\n const isInIframe = isWindowInIframe(globalThis.window);\n\n const doTokenExchange = useCallback(\n async (inUrl: string) => {\n if (!authService) return;\n const url = new URL(inUrl);\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n if (code && state) {\n try {\n setIsLoading(true);\n await authService.tokenExchange(code, state);\n } catch (error) {\n setError(error as Error);\n setSession({ authenticated: false });\n }\n setIsLoading(false);\n }\n },\n [authService],\n );\n\n const onSignIn = useCallback(async () => {\n if (!authService) return;\n const session = await authService.getSessionData();\n setSession(session);\n }, [authService]);\n\n const onSignOut = useCallback(() => {\n setSession({ authenticated: false });\n }, []);\n\n useEffect(() => {\n LocalStorageAdapter.emitter.on(\"signIn\", onSignIn);\n LocalStorageAdapter.emitter.on(\"signOut\", onSignOut);\n return () => {\n LocalStorageAdapter.emitter.off(\"signIn\", onSignIn);\n LocalStorageAdapter.emitter.off(\"signOut\", onSignOut);\n };\n }, [onSignIn, onSignOut]);\n\n useEffect(() => {\n if (!authConfig) {\n setIsLoading(true);\n } else {\n setIsLoading(false);\n }\n }, [authConfig]);\n // Handle page load or refocus\n useEffect(() => {\n if (!authConfig || !authService || !currentUrl || isInIframe || isLoading) {\n return;\n }\n const abortController = new AbortController();\n const onPageLoad = async () => {\n // if we have existing tokens, then validate them and return the session data\n // otherwise check if we have a code in the url and exchange it for tokens\n // if we have neither, return undefined\n const existingSessionData = await authService.validateExistingSession();\n if (existingSessionData.authenticated) {\n setSession(existingSessionData);\n return;\n }\n if (\n abortController.signal.aborted ||\n !new URL(currentUrl).searchParams.get(\"code\")\n ) {\n return;\n }\n await doTokenExchange(currentUrl);\n };\n onPageLoad();\n return () => {\n abortController.abort();\n };\n }, [\n authConfig,\n authService,\n currentUrl,\n doTokenExchange,\n isInIframe,\n isLoading,\n isWindowFocused,\n session?.authenticated,\n ]);\n\n const value = useMemo(\n () => ({\n data: session,\n error,\n isLoading,\n doTokenExchange,\n }),\n [session, error, isLoading, doTokenExchange],\n );\n\n return (\n <ClientTokenExchangeSessionContext.Provider value={value}>\n {children}\n </ClientTokenExchangeSessionContext.Provider>\n );\n};\n\nexport type { ClientTokenExchangeSessionContextType as SessionContextType };\nexport {\n ClientTokenExchangeSessionProvider,\n ClientTokenExchangeSessionContext,\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { UserProvider, UserContext, type UserContextType, } from "@/shared/providers/UserProvider.js";
|
|
2
|
+
export { TokenProvider, TokenContext, type TokenContextType, } from "@/shared/providers/TokenProvider.js";
|
|
3
|
+
export { AuthProvider } from "@/reactjs/providers/AuthProvider.js";
|
|
4
|
+
export { SessionProvider, SessionContext, type SessionContextType, } from "@/shared/providers/SessionProvider.js";
|
|
5
|
+
export { CivicAuthProvider, type CivicAuthProviderProps, } from "@/reactjs/providers/CivicAuthProvider.js";
|
|
6
|
+
export { AuthContext } from "@/shared/providers/AuthContext.js";
|
|
7
|
+
export type { AuthContextType } from "@/shared/providers/AuthContext.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/reactjs/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,GACtB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { UserProvider, UserContext, } from "@/shared/providers/UserProvider.js";
|
|
2
|
+
export { TokenProvider, TokenContext, } from "@/shared/providers/TokenProvider.js";
|
|
3
|
+
export { AuthProvider } from "@/reactjs/providers/AuthProvider.js";
|
|
4
|
+
export { SessionProvider, SessionContext, } from "@/shared/providers/SessionProvider.js";
|
|
5
|
+
export { CivicAuthProvider, } from "@/reactjs/providers/CivicAuthProvider.js";
|
|
6
|
+
export { AuthContext } from "@/shared/providers/AuthContext.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/reactjs/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,GAEZ,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,YAAY,GAEb,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,cAAc,GAEf,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EACL,iBAAiB,GAElB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC","sourcesContent":["export {\n UserProvider,\n UserContext,\n type UserContextType,\n} from \"@/shared/providers/UserProvider.js\";\n\nexport {\n TokenProvider,\n TokenContext,\n type TokenContextType,\n} from \"@/shared/providers/TokenProvider.js\";\n\nexport { AuthProvider } from \"@/reactjs/providers/AuthProvider.js\";\n\nexport {\n SessionProvider,\n SessionContext,\n type SessionContextType,\n} from \"@/shared/providers/SessionProvider.js\";\n\nexport {\n CivicAuthProvider,\n type CivicAuthProviderProps,\n} from \"@/reactjs/providers/CivicAuthProvider.js\";\n\nexport { AuthContext } from \"@/shared/providers/AuthContext.js\";\nexport type { AuthContextType } from \"@/shared/providers/AuthContext.js\";\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AuthStorage, Endpoints, OIDCTokenResponseBody, SessionData } from "@/types.js";
|
|
2
|
+
import type { AuthConfig } from "@/server/config.js";
|
|
3
|
+
import type { AuthenticationResolver } from "@/services/types.ts";
|
|
4
|
+
export declare class ServerAuthenticationResolver implements AuthenticationResolver {
|
|
5
|
+
readonly authConfig: AuthConfig;
|
|
6
|
+
readonly storage: AuthStorage;
|
|
7
|
+
readonly endpointOverrides?: Partial<Endpoints> | undefined;
|
|
8
|
+
private pkceProducer;
|
|
9
|
+
private oauth2client;
|
|
10
|
+
private endpoints;
|
|
11
|
+
private constructor();
|
|
12
|
+
validateExistingSession(): Promise<SessionData>;
|
|
13
|
+
get oauthServer(): string;
|
|
14
|
+
init(): Promise<this>;
|
|
15
|
+
tokenExchange(code: string, state: string): Promise<OIDCTokenResponseBody>;
|
|
16
|
+
getSessionData(): Promise<SessionData | null>;
|
|
17
|
+
getEndSessionEndpoint(): Promise<string | null>;
|
|
18
|
+
static build(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints>): Promise<AuthenticationResolver>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ServerAuthenticationResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerAuthenticationResolver.d.ts","sourceRoot":"","sources":["../../../src/server/ServerAuthenticationResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOrD,OAAO,KAAK,EAAE,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAGhF,qBAAa,4BAA6B,YAAW,sBAAsB;IAMvE,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAPjD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO;IAOP,uBAAuB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI/C,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBrB,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,CAAC;IAoB3B,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAa7C,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAOxC,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,sBAAsB,CAAC;CAUnC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { GenericPublicClientPKCEProducer } from "@/services/PKCE.js";
|
|
2
|
+
import { OAuth2Client } from "oslo/oauth2";
|
|
3
|
+
import { exchangeTokens, getEndpointsWithOverrides, retrieveTokens, storeTokens, } from "@/shared/lib/util.js";
|
|
4
|
+
import { DEFAULT_AUTH_SERVER } from "@/constants.js";
|
|
5
|
+
export class ServerAuthenticationResolver {
|
|
6
|
+
authConfig;
|
|
7
|
+
storage;
|
|
8
|
+
endpointOverrides;
|
|
9
|
+
pkceProducer;
|
|
10
|
+
oauth2client;
|
|
11
|
+
endpoints;
|
|
12
|
+
constructor(authConfig, storage, endpointOverrides) {
|
|
13
|
+
this.authConfig = authConfig;
|
|
14
|
+
this.storage = storage;
|
|
15
|
+
this.endpointOverrides = endpointOverrides;
|
|
16
|
+
this.pkceProducer = new GenericPublicClientPKCEProducer(storage);
|
|
17
|
+
}
|
|
18
|
+
validateExistingSession() {
|
|
19
|
+
throw new Error("Method not implemented.");
|
|
20
|
+
}
|
|
21
|
+
get oauthServer() {
|
|
22
|
+
return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;
|
|
23
|
+
}
|
|
24
|
+
async init() {
|
|
25
|
+
// resolve oauth config
|
|
26
|
+
this.endpoints = await getEndpointsWithOverrides(this.oauthServer, this.endpointOverrides);
|
|
27
|
+
this.oauth2client = new OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
|
|
28
|
+
redirectURI: this.authConfig.redirectUrl,
|
|
29
|
+
});
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
async tokenExchange(code, state) {
|
|
33
|
+
if (!this.oauth2client)
|
|
34
|
+
await this.init();
|
|
35
|
+
const codeVerifier = await this.pkceProducer.getCodeVerifier();
|
|
36
|
+
if (!codeVerifier)
|
|
37
|
+
throw new Error("Code verifier not found in storage");
|
|
38
|
+
// exchange auth code for tokens
|
|
39
|
+
const tokens = await exchangeTokens(code, state, this.pkceProducer, this.oauth2client, // clean up types here to avoid the ! operator
|
|
40
|
+
this.oauthServer, this.endpoints);
|
|
41
|
+
await storeTokens(this.storage, tokens);
|
|
42
|
+
return tokens;
|
|
43
|
+
}
|
|
44
|
+
async getSessionData() {
|
|
45
|
+
const storageData = await retrieveTokens(this.storage);
|
|
46
|
+
if (!storageData)
|
|
47
|
+
return null;
|
|
48
|
+
return {
|
|
49
|
+
authenticated: !!storageData.id_token,
|
|
50
|
+
idToken: storageData.id_token,
|
|
51
|
+
accessToken: storageData.access_token,
|
|
52
|
+
refreshToken: storageData.refresh_token,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async getEndSessionEndpoint() {
|
|
56
|
+
if (!this.endpoints) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return this.endpoints.endsession;
|
|
60
|
+
}
|
|
61
|
+
static async build(authConfig, storage, endpointOverrides) {
|
|
62
|
+
const resolver = new ServerAuthenticationResolver(authConfig, storage, endpointOverrides);
|
|
63
|
+
await resolver.init();
|
|
64
|
+
return resolver;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=ServerAuthenticationResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerAuthenticationResolver.js","sourceRoot":"","sources":["../../../src/server/ServerAuthenticationResolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport type {\n AuthStorage,\n Endpoints,\n OIDCTokenResponseBody,\n SessionData,\n} from \"@/types.js\";\nimport type { AuthConfig } from \"@/server/config.js\";\nimport {\n exchangeTokens,\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/lib/util.js\";\nimport type { AuthenticationResolver, PKCEProducer } from \"@/services/types.ts\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\n\nexport class ServerAuthenticationResolver implements AuthenticationResolver {\n private pkceProducer: PKCEProducer;\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n readonly authConfig: AuthConfig,\n readonly storage: AuthStorage,\n readonly endpointOverrides?: Partial<Endpoints>,\n ) {\n this.pkceProducer = new GenericPublicClientPKCEProducer(storage);\n }\n validateExistingSession(): Promise<SessionData> {\n throw new Error(\"Method not implemented.\");\n }\n\n get oauthServer(): string {\n return this.authConfig.oauthServer || DEFAULT_AUTH_SERVER;\n }\n\n async init(): Promise<this> {\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 async tokenExchange(\n code: string,\n state: string,\n ): Promise<OIDCTokenResponseBody> {\n if (!this.oauth2client) await this.init();\n const codeVerifier = await this.pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in storage\");\n\n // exchange auth code for tokens\n const tokens = await exchangeTokens(\n code,\n state,\n this.pkceProducer,\n this.oauth2client!, // clean up types here to avoid the ! operator\n this.oauthServer,\n this.endpoints!, // clean up types here to avoid the ! operator\n );\n\n await storeTokens(this.storage, tokens);\n\n return tokens;\n }\n\n async getSessionData(): Promise<SessionData | null> {\n const storageData = await retrieveTokens(this.storage);\n\n if (!storageData) return null;\n\n return {\n authenticated: !!storageData.id_token,\n idToken: storageData.id_token,\n accessToken: storageData.access_token,\n refreshToken: storageData.refresh_token,\n };\n }\n\n async getEndSessionEndpoint(): Promise<string | null> {\n if (!this.endpoints) {\n return null;\n }\n return this.endpoints.endsession;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<AuthenticationResolver> {\n const resolver = new ServerAuthenticationResolver(\n authConfig,\n storage,\n endpointOverrides,\n );\n await resolver.init();\n\n return resolver;\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Endpoints } from "@/types.ts";
|
|
2
|
+
export type AuthConfig = {
|
|
3
|
+
clientId: string;
|
|
4
|
+
redirectUrl: string;
|
|
5
|
+
oauthServer?: string;
|
|
6
|
+
challengeUrl?: string;
|
|
7
|
+
endpointOverrides?: Partial<Endpoints> | undefined;
|
|
8
|
+
postLogoutRedirectUrl?: string;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACnD,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/server/config.ts"],"names":[],"mappings":"","sourcesContent":["import type { Endpoints } from \"@/types.ts\";\n\nexport type AuthConfig = {\n clientId: string;\n redirectUrl: string;\n oauthServer?: string;\n challengeUrl?: string;\n endpointOverrides?: Partial<Endpoints> | undefined;\n postLogoutRedirectUrl?: string;\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CookieStorage } from "@/shared/lib/storage.js";
|
|
2
|
+
export type { SessionStorage, CookieStorageSettings, } from "@/shared/lib/storage.js";
|
|
3
|
+
export { resolveOAuthAccessCode, isLoggedIn, buildLoginUrl, buildLogoutRedirectUrl, } from "@/server/login.js";
|
|
4
|
+
export type { AuthConfig } from "@/server/config.js";
|
|
5
|
+
export { getUser } from "@/shared/lib/session.js";
|
|
6
|
+
export { refreshTokens } from "@/server/refresh.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { printVersion } from "@/shared/index.js";
|
|
2
|
+
printVersion();
|
|
3
|
+
export { CookieStorage } from "@/shared/lib/storage.js";
|
|
4
|
+
export { resolveOAuthAccessCode, isLoggedIn, buildLoginUrl, buildLogoutRedirectUrl, } from "@/server/login.js";
|
|
5
|
+
export { getUser } from "@/shared/lib/session.js";
|
|
6
|
+
export { refreshTokens } from "@/server/refresh.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["import { printVersion } from \"@/shared/index.js\";\nprintVersion();\nexport { CookieStorage } from \"@/shared/lib/storage.js\";\nexport type {\n SessionStorage,\n CookieStorageSettings,\n} from \"@/shared/lib/storage.js\";\nexport {\n resolveOAuthAccessCode,\n isLoggedIn,\n buildLoginUrl,\n buildLogoutRedirectUrl,\n} from \"@/server/login.js\";\nexport type { AuthConfig } from \"@/server/config.js\";\nexport { getUser } from \"@/shared/lib/session.js\";\nexport { refreshTokens } from \"@/server/refresh.js\";\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AuthStorage, OIDCTokenResponseBody } from "@/types.js";
|
|
2
|
+
import type { AuthConfig } from "@/server/config.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve an OAuth access code to a set of OIDC tokens
|
|
5
|
+
* @param code The access code, typically from a query parameter in the redirect url
|
|
6
|
+
* @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
|
|
7
|
+
* @param storage The place that this server uses to store session data (e.g. a cookie store)
|
|
8
|
+
* @param config Oauth Server configuration
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveOAuthAccessCode(code: string, state: string, storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
11
|
+
export declare function isLoggedIn(storage: AuthStorage): Promise<boolean>;
|
|
12
|
+
export declare function buildLoginUrl(config: Pick<AuthConfig, "clientId" | "redirectUrl"> & Partial<Pick<AuthConfig, "oauthServer">> & {
|
|
13
|
+
scopes?: string[];
|
|
14
|
+
state?: string;
|
|
15
|
+
nonce?: string;
|
|
16
|
+
}, storage: AuthStorage): Promise<URL>;
|
|
17
|
+
export declare function buildLogoutRedirectUrl(config: Pick<AuthConfig, "clientId" | "postLogoutRedirectUrl"> & Partial<Pick<AuthConfig, "oauthServer">> & {
|
|
18
|
+
scopes?: string[];
|
|
19
|
+
state?: string;
|
|
20
|
+
}, storage: AuthStorage): Promise<URL>;
|
|
21
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/server/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAKrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAWhC;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAEvE;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,CAed;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,uBAAuB,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EACH,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,GAAG,CAAC,CAkBd"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from "@/constants.js";
|
|
2
|
+
import { GenericAuthenticationInitiator } from "@/services/AuthenticationService.js";
|
|
3
|
+
import { GenericPublicClientPKCEProducer } from "@/services/PKCE.js";
|
|
4
|
+
import { ServerAuthenticationResolver } from "@/server/ServerAuthenticationResolver.js";
|
|
5
|
+
import { OAuthTokens } from "@/shared/lib/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Resolve an OAuth access code to a set of OIDC tokens
|
|
8
|
+
* @param code The access code, typically from a query parameter in the redirect url
|
|
9
|
+
* @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url
|
|
10
|
+
* @param storage The place that this server uses to store session data (e.g. a cookie store)
|
|
11
|
+
* @param config Oauth Server configuration
|
|
12
|
+
*/
|
|
13
|
+
export async function resolveOAuthAccessCode(code, state, storage, config) {
|
|
14
|
+
const authSessionService = await ServerAuthenticationResolver.build({
|
|
15
|
+
...config,
|
|
16
|
+
oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
|
|
17
|
+
}, storage, config.endpointOverrides);
|
|
18
|
+
return authSessionService.tokenExchange(code, state);
|
|
19
|
+
}
|
|
20
|
+
export async function isLoggedIn(storage) {
|
|
21
|
+
return !!(await storage.get("id_token"));
|
|
22
|
+
}
|
|
23
|
+
export async function buildLoginUrl(config, storage) {
|
|
24
|
+
// generate a random state if not provided
|
|
25
|
+
const state = config.state ?? Math.random().toString(36).substring(2);
|
|
26
|
+
const scopes = config.scopes ?? DEFAULT_SCOPES;
|
|
27
|
+
const pkceProducer = new GenericPublicClientPKCEProducer(storage);
|
|
28
|
+
const authInitiator = new GenericAuthenticationInitiator({
|
|
29
|
+
...config,
|
|
30
|
+
state,
|
|
31
|
+
scopes,
|
|
32
|
+
oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
|
|
33
|
+
// When retrieving the PKCE challenge on the server-side, we produce it and store it in the session
|
|
34
|
+
pkceConsumer: pkceProducer,
|
|
35
|
+
});
|
|
36
|
+
return authInitiator.signIn();
|
|
37
|
+
}
|
|
38
|
+
export async function buildLogoutRedirectUrl(config, storage) {
|
|
39
|
+
// generate a random state if not provided
|
|
40
|
+
const state = config.state ?? Math.random().toString(36).substring(2);
|
|
41
|
+
const scopes = config.scopes ?? DEFAULT_SCOPES;
|
|
42
|
+
const pkceProducer = new GenericPublicClientPKCEProducer(storage);
|
|
43
|
+
const authInitiator = new GenericAuthenticationInitiator({
|
|
44
|
+
...config,
|
|
45
|
+
state,
|
|
46
|
+
scopes,
|
|
47
|
+
oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
|
|
48
|
+
pkceConsumer: pkceProducer,
|
|
49
|
+
redirectUrl: config.postLogoutRedirectUrl || "/",
|
|
50
|
+
});
|
|
51
|
+
const idToken = await storage.get(OAuthTokens.ID_TOKEN);
|
|
52
|
+
if (!idToken)
|
|
53
|
+
throw new Error("No id_token found in storage");
|
|
54
|
+
return authInitiator.signOut(idToken);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/server/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,KAAa,EACb,OAAoB,EACpB,MAAkB;IAElB,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,KAAK,CACjE;QACE,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;KACvD,EACD,OAAO,EACP,MAAM,CAAC,iBAAiB,CACzB,CAAC;IAEF,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAKG,EACH,OAAoB;IAEpB,0CAA0C;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,8BAA8B,CAAC;QACvD,GAAG,MAAM;QACT,KAAK;QACL,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;QACtD,mGAAmG;QACnG,YAAY,EAAE,YAAY;KAC3B,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAIG,EACH,OAAoB;IAEpB,0CAA0C;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,8BAA8B,CAAC;QACvD,GAAG,MAAM;QACT,KAAK;QACL,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;QACtD,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,MAAM,CAAC,qBAAqB,IAAI,GAAG;KACjD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE9D,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC","sourcesContent":["import type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from \"@/constants.js\";\nimport { GenericAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { ServerAuthenticationResolver } from \"@/server/ServerAuthenticationResolver.js\";\nimport type { AuthConfig } from \"@/server/config.ts\";\nimport { OAuthTokens } from \"@/shared/lib/types.js\";\n/**\n * Resolve an OAuth access code to a set of OIDC tokens\n * @param code The access code, typically from a query parameter in the redirect url\n * @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url\n * @param storage The place that this server uses to store session data (e.g. a cookie store)\n * @param config Oauth Server configuration\n */\nexport async function resolveOAuthAccessCode(\n code: string,\n state: string,\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const authSessionService = await ServerAuthenticationResolver.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return authSessionService.tokenExchange(code, state);\n}\n\nexport async function isLoggedIn(storage: AuthStorage): Promise<boolean> {\n return !!(await storage.get(\"id_token\"));\n}\n\nexport async function buildLoginUrl(\n config: Pick<AuthConfig, \"clientId\" | \"redirectUrl\"> &\n Partial<Pick<AuthConfig, \"oauthServer\">> & {\n scopes?: string[];\n state?: string;\n nonce?: string;\n },\n storage: AuthStorage,\n): Promise<URL> {\n // generate a random state if not provided\n const state = config.state ?? Math.random().toString(36).substring(2);\n const scopes = config.scopes ?? DEFAULT_SCOPES;\n const pkceProducer = new GenericPublicClientPKCEProducer(storage);\n const authInitiator = new GenericAuthenticationInitiator({\n ...config,\n state,\n scopes,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n // When retrieving the PKCE challenge on the server-side, we produce it and store it in the session\n pkceConsumer: pkceProducer,\n });\n\n return authInitiator.signIn();\n}\n\nexport async function buildLogoutRedirectUrl(\n config: Pick<AuthConfig, \"clientId\" | \"postLogoutRedirectUrl\"> &\n Partial<Pick<AuthConfig, \"oauthServer\">> & {\n scopes?: string[];\n state?: string;\n },\n storage: AuthStorage,\n): Promise<URL> {\n // generate a random state if not provided\n const state = config.state ?? Math.random().toString(36).substring(2);\n const scopes = config.scopes ?? DEFAULT_SCOPES;\n const pkceProducer = new GenericPublicClientPKCEProducer(storage);\n const authInitiator = new GenericAuthenticationInitiator({\n ...config,\n state,\n scopes,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n pkceConsumer: pkceProducer,\n redirectUrl: config.postLogoutRedirectUrl || \"/\",\n });\n\n const idToken = await storage.get(OAuthTokens.ID_TOKEN);\n if (!idToken) throw new Error(\"No id_token found in storage\");\n\n return authInitiator.signOut(idToken);\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthStorage, OIDCTokenResponseBody } from "@/types.js";
|
|
2
|
+
import type { AuthConfig } from "@/server/config.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Refresh the current set of OIDC tokens
|
|
5
|
+
*/
|
|
6
|
+
export declare function refreshTokens(storage: AuthStorage, config: AuthConfig): Promise<OIDCTokenResponseBody>;
|
|
7
|
+
//# sourceMappingURL=refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/server/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAWhC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DEFAULT_AUTH_SERVER } from "@/constants.js";
|
|
2
|
+
import { GenericAuthenticationRefresher } from "@/shared/lib/GenericAuthenticationRefresher.js";
|
|
3
|
+
/**
|
|
4
|
+
* Refresh the current set of OIDC tokens
|
|
5
|
+
*/
|
|
6
|
+
export async function refreshTokens(storage, config) {
|
|
7
|
+
const refresher = await GenericAuthenticationRefresher.build({
|
|
8
|
+
...config,
|
|
9
|
+
oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,
|
|
10
|
+
}, storage, config.endpointOverrides);
|
|
11
|
+
return refresher.refreshTokens();
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/server/refresh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAGhG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,MAAkB;IAElB,MAAM,SAAS,GAAG,MAAM,8BAA8B,CAAC,KAAK,CAC1D;QACE,GAAG,MAAM;QACT,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,mBAAmB;KACvD,EACD,OAAO,EACP,MAAM,CAAC,iBAAiB,CACzB,CAAC;IAEF,OAAO,SAAS,CAAC,aAAa,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import type { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport { GenericAuthenticationRefresher } from \"@/shared/lib/GenericAuthenticationRefresher.js\";\nimport type { AuthConfig } from \"@/server/config.ts\";\n\n/**\n * Refresh the current set of OIDC tokens\n */\nexport async function refreshTokens(\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const refresher = await GenericAuthenticationRefresher.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? DEFAULT_AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return refresher.refreshTokens();\n}\n"]}
|