@civic/auth 0.0.1-beta.30 → 0.0.1-beta.31
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/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-lint$colon$fix.log +16 -0
- package/.turbo/turbo-test.log +552 -1077
- package/dist/{src/shared/providers → cjs/src/shared}/AuthProvider.d.ts +7 -9
- package/dist/cjs/src/shared/AuthProvider.d.ts.map +1 -0
- package/dist/{src/shared/providers → cjs/src/shared}/AuthProvider.js +70 -87
- package/dist/cjs/src/shared/AuthProvider.js.map +1 -0
- package/dist/{src/shared/providers → cjs/src/shared}/CivicAuthProvider.d.ts +3 -3
- package/dist/cjs/src/shared/CivicAuthProvider.d.ts.map +1 -0
- package/dist/cjs/src/shared/CivicAuthProvider.js +19 -0
- package/dist/cjs/src/shared/CivicAuthProvider.js.map +1 -0
- package/dist/{src/shared/lib → cjs/src/shared}/GenericAuthenticationRefresher.d.ts +4 -4
- package/dist/cjs/src/shared/GenericAuthenticationRefresher.d.ts.map +1 -0
- package/dist/{src/shared/lib → cjs/src/shared}/GenericAuthenticationRefresher.js +11 -7
- package/dist/cjs/src/shared/GenericAuthenticationRefresher.js.map +1 -0
- package/dist/{src/shared/providers → cjs/src/shared}/UserProvider.d.ts +6 -7
- package/dist/cjs/src/shared/UserProvider.d.ts.map +1 -0
- package/dist/cjs/src/shared/UserProvider.js +42 -0
- package/dist/cjs/src/shared/UserProvider.js.map +1 -0
- package/dist/cjs/src/shared/UserSession.d.ts +12 -0
- package/dist/cjs/src/shared/UserSession.d.ts.map +1 -0
- package/dist/cjs/src/shared/UserSession.js +24 -0
- package/dist/cjs/src/shared/UserSession.js.map +1 -0
- package/dist/cjs/src/shared/session.d.ts +3 -0
- package/dist/cjs/src/shared/session.d.ts.map +1 -0
- package/dist/cjs/src/shared/session.js +13 -0
- package/dist/cjs/src/shared/session.js.map +1 -0
- package/dist/{src/shared/lib → cjs/src/shared}/util.d.ts +10 -4
- package/dist/cjs/src/shared/util.d.ts.map +1 -0
- package/dist/cjs/src/shared/util.js +162 -0
- package/dist/cjs/src/shared/util.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/src/nextjs/cookies.d.ts.map +1 -1
- package/dist/src/nextjs/cookies.js +12 -8
- package/dist/src/nextjs/cookies.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/.turbo/turbo-lint.log +0 -14
- package/civic-auth-0.0.1-beta.15.tgz +0 -0
- package/civic-auth-0.0.1-beta.17.tgz +0 -0
- package/dist/AuthProvider-BYZ8w92b.d.mts +0 -15
- package/dist/AuthProvider-BgOwv9h8.d.ts +0 -15
- package/dist/AuthProvider-Bj_Prt1x.d.ts +0 -21
- package/dist/AuthProvider-DUAoX4G9.d.mts +0 -21
- package/dist/UserProvider-BA2uflVB.d.ts +0 -16
- package/dist/UserProvider-Bl3j1PUO.d.mts +0 -16
- package/dist/UserProvider-CMLaYOUD.d.ts +0 -16
- package/dist/UserProvider-Cbm8MZkJ.d.mts +0 -16
- package/dist/chunk-4PLCDPEN.mjs +0 -599
- package/dist/chunk-4PLCDPEN.mjs.map +0 -1
- package/dist/chunk-5UQQYXCX.js +0 -1
- package/dist/chunk-5UQQYXCX.js.map +0 -1
- package/dist/chunk-63YGK3A7.mjs +0 -223
- package/dist/chunk-63YGK3A7.mjs.map +0 -1
- package/dist/chunk-6RFRDWIP.js +0 -223
- package/dist/chunk-6RFRDWIP.js.map +0 -1
- package/dist/chunk-7K3QN2AT.js +0 -599
- package/dist/chunk-7K3QN2AT.js.map +0 -1
- package/dist/chunk-AM2Y662I.js +0 -601
- package/dist/chunk-AM2Y662I.js.map +0 -1
- package/dist/chunk-AP4627CS.mjs +0 -223
- package/dist/chunk-AP4627CS.mjs.map +0 -1
- package/dist/chunk-CRTRMMJ7.js +0 -59
- package/dist/chunk-CRTRMMJ7.js.map +0 -1
- package/dist/chunk-CTVJJBBA.js +0 -118
- package/dist/chunk-CTVJJBBA.js.map +0 -1
- package/dist/chunk-EKLYHP2D.mjs +0 -711
- package/dist/chunk-EKLYHP2D.mjs.map +0 -1
- package/dist/chunk-FHRZSX3C.js +0 -710
- package/dist/chunk-FHRZSX3C.js.map +0 -1
- package/dist/chunk-GB3H3I47.js +0 -711
- package/dist/chunk-GB3H3I47.js.map +0 -1
- package/dist/chunk-JDZPCA3P.js +0 -173
- package/dist/chunk-JDZPCA3P.js.map +0 -1
- package/dist/chunk-JEOPLLWO.js +0 -223
- package/dist/chunk-JEOPLLWO.js.map +0 -1
- package/dist/chunk-MK7557NR.mjs +0 -118
- package/dist/chunk-MK7557NR.mjs.map +0 -1
- package/dist/chunk-NLRREFOX.mjs +0 -710
- package/dist/chunk-NLRREFOX.mjs.map +0 -1
- package/dist/chunk-O3WGNLRO.mjs +0 -173
- package/dist/chunk-O3WGNLRO.mjs.map +0 -1
- package/dist/chunk-OXXUQ36U.mjs +0 -283
- package/dist/chunk-OXXUQ36U.mjs.map +0 -1
- package/dist/chunk-PMJAV4JJ.mjs +0 -1
- package/dist/chunk-PMJAV4JJ.mjs.map +0 -1
- package/dist/chunk-Q7DSPTUG.mjs +0 -601
- package/dist/chunk-Q7DSPTUG.mjs.map +0 -1
- package/dist/chunk-RGHW4PYM.mjs +0 -59
- package/dist/chunk-RGHW4PYM.mjs.map +0 -1
- package/dist/chunk-TH6FI2XI.js +0 -283
- package/dist/chunk-TH6FI2XI.js.map +0 -1
- package/dist/index.css +0 -340
- package/dist/index.css.map +0 -1
- package/dist/index.d.mts +0 -5
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -3
- package/dist/index.mjs.map +0 -1
- package/dist/nextjs/client.css +0 -340
- package/dist/nextjs/client.css.map +0 -1
- package/dist/nextjs/client.d.mts +0 -10
- package/dist/nextjs/client.d.ts +0 -10
- package/dist/nextjs/client.js +0 -185
- package/dist/nextjs/client.js.map +0 -1
- package/dist/nextjs/client.mjs +0 -185
- package/dist/nextjs/client.mjs.map +0 -1
- package/dist/nextjs.d.mts +0 -267
- package/dist/nextjs.d.ts +0 -267
- package/dist/nextjs.js +0 -315
- package/dist/nextjs.js.map +0 -1
- package/dist/nextjs.mjs +0 -315
- package/dist/nextjs.mjs.map +0 -1
- package/dist/react.d.mts +0 -65
- package/dist/react.d.ts +0 -65
- package/dist/react.js +0 -226
- package/dist/react.js.map +0 -1
- package/dist/react.mjs +0 -226
- package/dist/react.mjs.map +0 -1
- package/dist/server.d.mts +0 -35
- package/dist/server.d.ts +0 -35
- package/dist/server.js +0 -20
- package/dist/server.js.map +0 -1
- package/dist/server.mjs +0 -20
- package/dist/server.mjs.map +0 -1
- package/dist/src/browser/storage.d.ts +0 -6
- package/dist/src/browser/storage.d.ts.map +0 -1
- package/dist/src/browser/storage.js +0 -9
- package/dist/src/browser/storage.js.map +0 -1
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -5
- package/dist/src/config.js.map +0 -1
- package/dist/src/constants.d.ts +0 -9
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -17
- package/dist/src/constants.js.map +0 -1
- package/dist/src/index.d.ts +0 -4
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -2
- package/dist/src/index.js.map +0 -1
- package/dist/src/lib/cookies.d.ts +0 -7
- package/dist/src/lib/cookies.d.ts.map +0 -1
- package/dist/src/lib/cookies.js +0 -23
- package/dist/src/lib/cookies.js.map +0 -1
- package/dist/src/lib/jwt.d.ts +0 -3
- package/dist/src/lib/jwt.d.ts.map +0 -1
- package/dist/src/lib/jwt.js +0 -9
- package/dist/src/lib/jwt.js.map +0 -1
- package/dist/src/lib/logger.d.ts +0 -26
- package/dist/src/lib/logger.d.ts.map +0 -1
- package/dist/src/lib/logger.js +0 -55
- package/dist/src/lib/logger.js.map +0 -1
- package/dist/src/lib/oauth.d.ts +0 -19
- package/dist/src/lib/oauth.d.ts.map +0 -1
- package/dist/src/lib/oauth.js +0 -60
- package/dist/src/lib/oauth.js.map +0 -1
- package/dist/src/lib/postMessage.d.ts +0 -4
- package/dist/src/lib/postMessage.d.ts.map +0 -1
- package/dist/src/lib/postMessage.js +0 -15
- package/dist/src/lib/postMessage.js.map +0 -1
- package/dist/src/lib/windowUtil.d.ts +0 -4
- package/dist/src/lib/windowUtil.d.ts.map +0 -1
- package/dist/src/lib/windowUtil.js +0 -30
- package/dist/src/lib/windowUtil.js.map +0 -1
- package/dist/src/nextjs/GetUser.d.ts +0 -6
- package/dist/src/nextjs/GetUser.d.ts.map +0 -1
- package/dist/src/nextjs/GetUser.js +0 -18
- package/dist/src/nextjs/GetUser.js.map +0 -1
- package/dist/src/nextjs/config.d.ts +0 -178
- package/dist/src/nextjs/config.d.ts.map +0 -1
- package/dist/src/nextjs/config.js +0 -164
- package/dist/src/nextjs/config.js.map +0 -1
- package/dist/src/nextjs/cookies.d.ts +0 -30
- package/dist/src/nextjs/hooks/index.d.ts +0 -2
- package/dist/src/nextjs/hooks/index.d.ts.map +0 -1
- package/dist/src/nextjs/hooks/index.js +0 -2
- package/dist/src/nextjs/hooks/index.js.map +0 -1
- package/dist/src/nextjs/hooks/useTokenCookie.d.ts +0 -3
- package/dist/src/nextjs/hooks/useTokenCookie.d.ts.map +0 -1
- package/dist/src/nextjs/hooks/useTokenCookie.js +0 -37
- package/dist/src/nextjs/hooks/useTokenCookie.js.map +0 -1
- package/dist/src/nextjs/hooks/useUserCookie.d.ts +0 -3
- package/dist/src/nextjs/hooks/useUserCookie.d.ts.map +0 -1
- package/dist/src/nextjs/hooks/useUserCookie.js +0 -36
- package/dist/src/nextjs/hooks/useUserCookie.js.map +0 -1
- package/dist/src/nextjs/index.d.ts +0 -7
- package/dist/src/nextjs/index.d.ts.map +0 -1
- package/dist/src/nextjs/index.js +0 -6
- package/dist/src/nextjs/index.js.map +0 -1
- package/dist/src/nextjs/middleware/index.d.ts +0 -2
- package/dist/src/nextjs/middleware/index.d.ts.map +0 -1
- package/dist/src/nextjs/middleware/index.js +0 -2
- package/dist/src/nextjs/middleware/index.js.map +0 -1
- package/dist/src/nextjs/middleware.d.ts +0 -59
- package/dist/src/nextjs/middleware.d.ts.map +0 -1
- package/dist/src/nextjs/middleware.js +0 -107
- package/dist/src/nextjs/middleware.js.map +0 -1
- package/dist/src/nextjs/providers/NextAuthProvider.d.ts +0 -9
- package/dist/src/nextjs/providers/NextAuthProvider.d.ts.map +0 -1
- package/dist/src/nextjs/providers/NextAuthProvider.js +0 -50
- package/dist/src/nextjs/providers/NextAuthProvider.js.map +0 -1
- package/dist/src/nextjs/routeHandler.d.ts +0 -18
- package/dist/src/nextjs/routeHandler.d.ts.map +0 -1
- package/dist/src/nextjs/routeHandler.js +0 -216
- package/dist/src/nextjs/routeHandler.js.map +0 -1
- package/dist/src/nextjs/utils.d.ts +0 -3
- package/dist/src/nextjs/utils.d.ts.map +0 -1
- package/dist/src/nextjs/utils.js +0 -5
- package/dist/src/nextjs/utils.js.map +0 -1
- package/dist/src/reactjs/components/SignInButton.d.ts +0 -8
- package/dist/src/reactjs/components/SignInButton.d.ts.map +0 -1
- package/dist/src/reactjs/components/SignInButton.js +0 -14
- package/dist/src/reactjs/components/SignInButton.js.map +0 -1
- package/dist/src/reactjs/components/SignOutButton.d.ts +0 -6
- package/dist/src/reactjs/components/SignOutButton.d.ts.map +0 -1
- package/dist/src/reactjs/components/SignOutButton.js +0 -14
- package/dist/src/reactjs/components/SignOutButton.js.map +0 -1
- package/dist/src/reactjs/components/UserButton.d.ts +0 -8
- package/dist/src/reactjs/components/UserButton.d.ts.map +0 -1
- package/dist/src/reactjs/components/UserButton.js +0 -110
- package/dist/src/reactjs/components/UserButton.js.map +0 -1
- package/dist/src/reactjs/components/index.d.ts +0 -6
- package/dist/src/reactjs/components/index.d.ts.map +0 -1
- package/dist/src/reactjs/components/index.js +0 -6
- package/dist/src/reactjs/components/index.js.map +0 -1
- package/dist/src/reactjs/hooks/index.d.ts +0 -8
- package/dist/src/reactjs/hooks/index.d.ts.map +0 -1
- package/dist/src/reactjs/hooks/index.js +0 -8
- package/dist/src/reactjs/hooks/index.js.map +0 -1
- package/dist/src/reactjs/hooks/useAuth.d.ts +0 -3
- package/dist/src/reactjs/hooks/useAuth.d.ts.map +0 -1
- package/dist/src/reactjs/hooks/useAuth.js +0 -12
- package/dist/src/reactjs/hooks/useAuth.js.map +0 -1
- package/dist/src/reactjs/hooks/useUser.d.ts +0 -4
- package/dist/src/reactjs/hooks/useUser.d.ts.map +0 -1
- package/dist/src/reactjs/hooks/useUser.js +0 -12
- package/dist/src/reactjs/hooks/useUser.js.map +0 -1
- package/dist/src/reactjs/index.d.ts +0 -6
- package/dist/src/reactjs/index.d.ts.map +0 -1
- package/dist/src/reactjs/index.js +0 -8
- package/dist/src/reactjs/index.js.map +0 -1
- package/dist/src/reactjs/providers/index.d.ts +0 -8
- package/dist/src/reactjs/providers/index.d.ts.map +0 -1
- package/dist/src/reactjs/providers/index.js +0 -7
- package/dist/src/reactjs/providers/index.js.map +0 -1
- package/dist/src/server/ServerAuthenticationResolver.d.ts +0 -18
- package/dist/src/server/ServerAuthenticationResolver.d.ts.map +0 -1
- package/dist/src/server/ServerAuthenticationResolver.js +0 -62
- package/dist/src/server/ServerAuthenticationResolver.js.map +0 -1
- package/dist/src/server/config.d.ts +0 -16
- package/dist/src/server/config.d.ts.map +0 -1
- package/dist/src/server/config.js +0 -2
- package/dist/src/server/config.js.map +0 -1
- package/dist/src/server/index.d.ts +0 -6
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -5
- package/dist/src/server/index.js.map +0 -1
- package/dist/src/server/login.d.ts +0 -17
- package/dist/src/server/login.d.ts.map +0 -1
- package/dist/src/server/login.js +0 -37
- package/dist/src/server/login.js.map +0 -1
- package/dist/src/server/refresh.d.ts +0 -7
- package/dist/src/server/refresh.d.ts.map +0 -1
- package/dist/src/server/refresh.js +0 -13
- package/dist/src/server/refresh.js.map +0 -1
- package/dist/src/services/AuthenticationService.d.ts +0 -87
- package/dist/src/services/AuthenticationService.d.ts.map +0 -1
- package/dist/src/services/AuthenticationService.js +0 -222
- package/dist/src/services/AuthenticationService.js.map +0 -1
- package/dist/src/services/PKCE.d.ts +0 -20
- package/dist/src/services/PKCE.d.ts.map +0 -1
- package/dist/src/services/PKCE.js +0 -44
- package/dist/src/services/PKCE.js.map +0 -1
- package/dist/src/services/types.d.ts +0 -23
- package/dist/src/services/types.d.ts.map +0 -1
- package/dist/src/services/types.js +0 -7
- package/dist/src/services/types.js.map +0 -1
- package/dist/src/shared/components/CivicAuthIframe.d.ts +0 -8
- package/dist/src/shared/components/CivicAuthIframe.d.ts.map +0 -1
- package/dist/src/shared/components/CivicAuthIframe.js +0 -9
- package/dist/src/shared/components/CivicAuthIframe.js.map +0 -1
- package/dist/src/shared/components/CivicAuthIframeContainer.d.ts +0 -9
- package/dist/src/shared/components/CivicAuthIframeContainer.d.ts.map +0 -1
- package/dist/src/shared/components/CivicAuthIframeContainer.js +0 -130
- package/dist/src/shared/components/CivicAuthIframeContainer.js.map +0 -1
- package/dist/src/shared/components/CloseIcon.d.ts +0 -4
- package/dist/src/shared/components/CloseIcon.d.ts.map +0 -1
- package/dist/src/shared/components/CloseIcon.js +0 -6
- package/dist/src/shared/components/CloseIcon.js.map +0 -1
- package/dist/src/shared/components/LoadingIcon.d.ts +0 -4
- package/dist/src/shared/components/LoadingIcon.d.ts.map +0 -1
- package/dist/src/shared/components/LoadingIcon.js +0 -24
- package/dist/src/shared/components/LoadingIcon.js.map +0 -1
- package/dist/src/shared/hooks/index.d.ts +0 -5
- package/dist/src/shared/hooks/index.d.ts.map +0 -1
- package/dist/src/shared/hooks/index.js +0 -5
- package/dist/src/shared/hooks/index.js.map +0 -1
- package/dist/src/shared/hooks/useAuth.d.ts +0 -3
- package/dist/src/shared/hooks/useAuth.d.ts.map +0 -1
- package/dist/src/shared/hooks/useAuth.js +0 -12
- package/dist/src/shared/hooks/useAuth.js.map +0 -1
- package/dist/src/shared/hooks/useConfig.d.ts +0 -3
- package/dist/src/shared/hooks/useConfig.d.ts.map +0 -1
- package/dist/src/shared/hooks/useConfig.js +0 -13
- package/dist/src/shared/hooks/useConfig.js.map +0 -1
- package/dist/src/shared/hooks/useIframe.d.ts +0 -3
- package/dist/src/shared/hooks/useIframe.d.ts.map +0 -1
- package/dist/src/shared/hooks/useIframe.js +0 -13
- package/dist/src/shared/hooks/useIframe.js.map +0 -1
- package/dist/src/shared/hooks/useSession.d.ts +0 -3
- package/dist/src/shared/hooks/useSession.d.ts.map +0 -1
- package/dist/src/shared/hooks/useSession.js +0 -13
- package/dist/src/shared/hooks/useSession.js.map +0 -1
- package/dist/src/shared/hooks/useToken.d.ts +0 -3
- package/dist/src/shared/hooks/useToken.d.ts.map +0 -1
- package/dist/src/shared/hooks/useToken.js +0 -12
- package/dist/src/shared/hooks/useToken.js.map +0 -1
- package/dist/src/shared/lib/GenericAuthenticationRefresher.d.ts.map +0 -1
- package/dist/src/shared/lib/GenericAuthenticationRefresher.js.map +0 -1
- package/dist/src/shared/lib/UserSession.d.ts +0 -12
- package/dist/src/shared/lib/UserSession.d.ts.map +0 -1
- package/dist/src/shared/lib/UserSession.js +0 -20
- package/dist/src/shared/lib/UserSession.js.map +0 -1
- package/dist/src/shared/lib/session.d.ts +0 -3
- package/dist/src/shared/lib/session.d.ts.map +0 -1
- package/dist/src/shared/lib/session.js +0 -10
- package/dist/src/shared/lib/session.js.map +0 -1
- package/dist/src/shared/lib/storage.d.ts +0 -25
- package/dist/src/shared/lib/storage.d.ts.map +0 -1
- package/dist/src/shared/lib/storage.js +0 -17
- package/dist/src/shared/lib/storage.js.map +0 -1
- package/dist/src/shared/lib/types.d.ts +0 -22
- package/dist/src/shared/lib/types.d.ts.map +0 -1
- package/dist/src/shared/lib/types.js +0 -16
- package/dist/src/shared/lib/types.js.map +0 -1
- package/dist/src/shared/lib/util.d.ts.map +0 -1
- package/dist/src/shared/lib/util.js +0 -126
- package/dist/src/shared/lib/util.js.map +0 -1
- package/dist/src/shared/providers/AuthContext.d.ts +0 -10
- package/dist/src/shared/providers/AuthContext.d.ts.map +0 -1
- package/dist/src/shared/providers/AuthContext.js +0 -3
- package/dist/src/shared/providers/AuthContext.js.map +0 -1
- package/dist/src/shared/providers/AuthProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/AuthProvider.js.map +0 -1
- package/dist/src/shared/providers/CivicAuthProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/CivicAuthProvider.js +0 -15
- package/dist/src/shared/providers/CivicAuthProvider.js.map +0 -1
- package/dist/src/shared/providers/ConfigProvider.d.ts +0 -21
- package/dist/src/shared/providers/ConfigProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/ConfigProvider.js +0 -19
- package/dist/src/shared/providers/ConfigProvider.js.map +0 -1
- package/dist/src/shared/providers/IframeProvider.d.ts +0 -16
- package/dist/src/shared/providers/IframeProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/IframeProvider.js +0 -11
- package/dist/src/shared/providers/IframeProvider.js.map +0 -1
- package/dist/src/shared/providers/SessionProvider.d.ts +0 -13
- package/dist/src/shared/providers/SessionProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/SessionProvider.js +0 -13
- package/dist/src/shared/providers/SessionProvider.js.map +0 -1
- package/dist/src/shared/providers/TokenProvider.d.ts +0 -18
- package/dist/src/shared/providers/TokenProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/TokenProvider.js +0 -53
- package/dist/src/shared/providers/TokenProvider.js.map +0 -1
- package/dist/src/shared/providers/UserProvider.d.ts.map +0 -1
- package/dist/src/shared/providers/UserProvider.js +0 -38
- package/dist/src/shared/providers/UserProvider.js.map +0 -1
- package/dist/src/types.d.ts +0 -146
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -15
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -43
- package/dist/src/utils.js.map +0 -1
- package/dist/storage-ANmRwpZ3.d.ts +0 -25
- package/dist/storage-B2eAQNdv.d.ts +0 -25
- package/dist/storage-BJPUpxhm.d.mts +0 -25
- package/dist/storage-BJyqsZwC.d.mts +0 -25
- package/dist/test/integration/sdk.test.d.ts +0 -2
- package/dist/test/integration/sdk.test.d.ts.map +0 -1
- package/dist/test/integration/sdk.test.js +0 -183
- package/dist/test/integration/sdk.test.js.map +0 -1
- package/dist/test/support/fixtures.d.ts +0 -26
- package/dist/test/support/fixtures.d.ts.map +0 -1
- package/dist/test/support/fixtures.js +0 -55
- package/dist/test/support/fixtures.js.map +0 -1
- package/dist/test/support/tokens.json +0 -26
- package/dist/test/unit/lib/oauth.test.d.ts +0 -2
- package/dist/test/unit/lib/oauth.test.d.ts.map +0 -1
- package/dist/test/unit/lib/oauth.test.js +0 -55
- package/dist/test/unit/lib/oauth.test.js.map +0 -1
- package/dist/test/unit/logger.test.d.ts +0 -2
- package/dist/test/unit/logger.test.d.ts.map +0 -1
- package/dist/test/unit/logger.test.js +0 -141
- package/dist/test/unit/logger.test.js.map +0 -1
- package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts +0 -2
- package/dist/test/unit/nextjs/NextAuthProvider.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/NextAuthProvider.test.js +0 -29
- package/dist/test/unit/nextjs/NextAuthProvider.test.js.map +0 -1
- package/dist/test/unit/nextjs/config.test.d.ts +0 -2
- package/dist/test/unit/nextjs/config.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/config.test.js +0 -189
- package/dist/test/unit/nextjs/config.test.js.map +0 -1
- package/dist/test/unit/nextjs/getUser.test.d.ts +0 -2
- package/dist/test/unit/nextjs/getUser.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/getUser.test.js +0 -36
- package/dist/test/unit/nextjs/getUser.test.js.map +0 -1
- package/dist/test/unit/nextjs/middleware.test.d.ts +0 -2
- package/dist/test/unit/nextjs/middleware.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/middleware.test.js +0 -113
- package/dist/test/unit/nextjs/middleware.test.js.map +0 -1
- package/dist/test/unit/nextjs/utils.test.d.ts +0 -2
- package/dist/test/unit/nextjs/utils.test.d.ts.map +0 -1
- package/dist/test/unit/nextjs/utils.test.js +0 -13
- package/dist/test/unit/nextjs/utils.test.js.map +0 -1
- package/dist/test/unit/publicApi/apiSnapshot.test.d.ts +0 -2
- package/dist/test/unit/publicApi/apiSnapshot.test.d.ts.map +0 -1
- package/dist/test/unit/publicApi/apiSnapshot.test.js +0 -10
- package/dist/test/unit/publicApi/apiSnapshot.test.js.map +0 -1
- package/dist/test/unit/react/components/SignInButton.test.d.ts +0 -2
- package/dist/test/unit/react/components/SignInButton.test.d.ts.map +0 -1
- package/dist/test/unit/react/components/SignInButton.test.js +0 -31
- package/dist/test/unit/react/components/SignInButton.test.js.map +0 -1
- package/dist/test/unit/react/components/SignOutButton.test.d.ts +0 -2
- package/dist/test/unit/react/components/SignOutButton.test.d.ts.map +0 -1
- package/dist/test/unit/react/components/SignOutButton.test.js +0 -30
- package/dist/test/unit/react/components/SignOutButton.test.js.map +0 -1
- package/dist/test/unit/server/login.test.d.ts +0 -2
- package/dist/test/unit/server/login.test.d.ts.map +0 -1
- package/dist/test/unit/server/login.test.js +0 -127
- package/dist/test/unit/server/login.test.js.map +0 -1
- package/dist/test/unit/server/session.test.d.ts +0 -2
- package/dist/test/unit/server/session.test.d.ts.map +0 -1
- package/dist/test/unit/server/session.test.js +0 -41
- package/dist/test/unit/server/session.test.js.map +0 -1
- package/dist/test/unit/services/AuthenticationService.test.d.ts +0 -2
- package/dist/test/unit/services/AuthenticationService.test.d.ts.map +0 -1
- package/dist/test/unit/services/AuthenticationService.test.js +0 -104
- package/dist/test/unit/services/AuthenticationService.test.js.map +0 -1
- package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts +0 -2
- package/dist/test/unit/services/ServerAuthenticationResolver.test.d.ts.map +0 -1
- package/dist/test/unit/services/ServerAuthenticationResolver.test.js +0 -74
- package/dist/test/unit/services/ServerAuthenticationResolver.test.js.map +0 -1
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts +0 -2
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.d.ts.map +0 -1
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js +0 -61
- package/dist/test/unit/shared/GenericAuthenticationRefresher.test.js.map +0 -1
- package/dist/test/unit/shared/UserSession.test.d.ts +0 -2
- package/dist/test/unit/shared/UserSession.test.d.ts.map +0 -1
- package/dist/test/unit/shared/UserSession.test.js +0 -37
- package/dist/test/unit/shared/UserSession.test.js.map +0 -1
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts +0 -2
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.d.ts.map +0 -1
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js +0 -120
- package/dist/test/unit/shared/components/CivicAuthIframeContainer.test.js.map +0 -1
- package/dist/test/unit/shared/storage.test.d.ts +0 -2
- package/dist/test/unit/shared/storage.test.d.ts.map +0 -1
- package/dist/test/unit/shared/storage.test.js +0 -53
- package/dist/test/unit/shared/storage.test.js.map +0 -1
- package/dist/test/unit/utils.test.d.ts +0 -2
- package/dist/test/unit/utils.test.d.ts.map +0 -1
- package/dist/test/unit/utils.test.js +0 -40
- package/dist/test/unit/utils.test.js.map +0 -1
- package/dist/types-Bqm9OCZN.d.mts +0 -22
- package/dist/types-Bqm9OCZN.d.ts +0 -22
- package/dist/types-BxAubCqO.d.mts +0 -58
- package/dist/types-BxAubCqO.d.ts +0 -58
- package/dist/types-DOfl9w7j.d.mts +0 -23
- package/dist/types-DOfl9w7j.d.ts +0 -23
- package/dist/types-HdCjGldB.d.mts +0 -58
- package/dist/types-HdCjGldB.d.ts +0 -58
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -40
- package/dist/vitest.config.js.map +0 -1
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Config, SessionData } from "
|
|
3
|
-
import type { PKCEConsumer } from "
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { Config, SessionData } from "../types.js";
|
|
3
|
+
import type { PKCEConsumer } from "../services/types";
|
|
4
4
|
export type AuthProviderProps = {
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
clientId: string;
|
|
7
|
+
redirectUrl?: string;
|
|
7
8
|
nonce?: string;
|
|
9
|
+
config?: Config;
|
|
8
10
|
onSignIn?: (error?: Error) => void;
|
|
9
11
|
onSignOut?: () => Promise<void>;
|
|
12
|
+
pkceConsumer?: PKCEConsumer;
|
|
10
13
|
modalIframe?: boolean;
|
|
11
|
-
config?: Config;
|
|
12
|
-
redirectUrl?: string;
|
|
13
|
-
};
|
|
14
|
-
export type InternalAuthProviderProps = AuthProviderProps & {
|
|
15
14
|
sessionData?: SessionData;
|
|
16
|
-
pkceConsumer?: PKCEConsumer;
|
|
17
15
|
};
|
|
18
|
-
declare const AuthProvider: ({ children, clientId, redirectUrl: inputRedirectUrl, config, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe, sessionData: inputSessionData, }:
|
|
16
|
+
declare const AuthProvider: ({ children, clientId, redirectUrl: inputRedirectUrl, config, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe, sessionData: inputSessionData, }: AuthProviderProps) => import("react").JSX.Element;
|
|
19
17
|
export { AuthProvider };
|
|
20
18
|
//# sourceMappingURL=AuthProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/AuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,YAAY,CAAC;AAanE,OAAO,KAAK,EAA0B,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqB7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAYF,QAAA,MAAM,YAAY,yJAWf,iBAAiB,gCAwRnB,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.AuthProvider = void 0;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
7
|
+
const CivicAuthIframeContainer_1 = require("../shared/components/CivicAuthIframeContainer");
|
|
8
|
+
const TokenProvider_1 = require("../shared/providers/TokenProvider");
|
|
9
|
+
const SessionProvider_1 = require("../shared/providers/SessionProvider");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
const config_1 = require("../config");
|
|
12
|
+
const LoadingIcon_1 = require("../shared/components/LoadingIcon");
|
|
13
|
+
const windowUtil_1 = require("../lib/windowUtil");
|
|
14
|
+
const AuthContext_1 = require("@/shared/AuthContext");
|
|
15
|
+
const AuthenticationService_1 = require("../services/AuthenticationService");
|
|
16
|
+
const types_1 = require("../services/types");
|
|
17
|
+
const PKCE_js_1 = require("../services/PKCE.js");
|
|
18
|
+
const oauth_1 = require("../lib/oauth");
|
|
19
|
+
const storage_1 = require("../browser/storage");
|
|
20
|
+
const ConfigProvider_1 = require("../shared/providers/ConfigProvider");
|
|
21
|
+
const session_js_1 = require("./session.js");
|
|
22
|
+
const UserSession_js_1 = require("./UserSession.js");
|
|
23
|
+
const IframeProvider_1 = require("../shared/providers/IframeProvider");
|
|
21
24
|
// Global this object setup
|
|
22
25
|
let globalThisObject;
|
|
23
26
|
if (typeof window !== "undefined") {
|
|
@@ -31,63 +34,45 @@ else {
|
|
|
31
34
|
}
|
|
32
35
|
globalThisObject.globalThis = globalThisObject;
|
|
33
36
|
function BlockDisplay({ children }) {
|
|
34
|
-
return (React.createElement("div", {
|
|
35
|
-
|
|
36
|
-
left: 0,
|
|
37
|
-
top: 0,
|
|
38
|
-
zIndex: 50,
|
|
39
|
-
display: "flex",
|
|
40
|
-
height: "100vh",
|
|
41
|
-
width: "100vw",
|
|
42
|
-
alignItems: "center",
|
|
43
|
-
justifyContent: "center",
|
|
44
|
-
backgroundColor: "white",
|
|
45
|
-
} },
|
|
46
|
-
React.createElement("div", { style: {
|
|
47
|
-
position: "absolute",
|
|
48
|
-
inset: 0,
|
|
49
|
-
display: "flex",
|
|
50
|
-
alignItems: "center",
|
|
51
|
-
justifyContent: "center",
|
|
52
|
-
backgroundColor: "white",
|
|
53
|
-
} }, children)));
|
|
37
|
+
return (React.createElement("div", { className: "cac-relative cac-left-0 cac-top-0 cac-z-50 cac-flex cac-h-screen cac-w-screen cac-items-center cac-justify-center cac-bg-white" },
|
|
38
|
+
React.createElement("div", { className: "cac-absolute cac-inset-0 cac-flex cac-items-center cac-justify-center cac-bg-white" }, children)));
|
|
54
39
|
}
|
|
55
|
-
const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, config = authConfig, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe = true, sessionData: inputSessionData, }) => {
|
|
56
|
-
const [iframeUrl, setIframeUrl] = useState(null);
|
|
57
|
-
const [currentUrl, setCurrentUrl] = useState(null);
|
|
58
|
-
const [isInIframe, setIsInIframe] = useState(false);
|
|
59
|
-
const [authResponseUrl, setAuthResponseUrl] = useState(null);
|
|
60
|
-
const [tokenExchangeError, setTokenExchangeError] = useState();
|
|
61
|
-
const [displayMode, setDisplayMode] = useState("iframe");
|
|
62
|
-
const [browserAuthenticationInitiator, setBrowserAuthenticationInitiator] = useState();
|
|
63
|
-
const [showIFrame, setShowIFrame] = useState(false);
|
|
64
|
-
const [isRedirecting, setIsRedirecting] = useState(false);
|
|
65
|
-
const queryClient = useQueryClient();
|
|
66
|
-
const iframeRef = useRef(null);
|
|
40
|
+
const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, config = config_1.authConfig, onSignIn, onSignOut, pkceConsumer, nonce, modalIframe = true, sessionData: inputSessionData, }) => {
|
|
41
|
+
const [iframeUrl, setIframeUrl] = (0, react_1.useState)(null);
|
|
42
|
+
const [currentUrl, setCurrentUrl] = (0, react_1.useState)(null);
|
|
43
|
+
const [isInIframe, setIsInIframe] = (0, react_1.useState)(false);
|
|
44
|
+
const [authResponseUrl, setAuthResponseUrl] = (0, react_1.useState)(null);
|
|
45
|
+
const [tokenExchangeError, setTokenExchangeError] = (0, react_1.useState)();
|
|
46
|
+
const [displayMode, setDisplayMode] = (0, react_1.useState)("iframe");
|
|
47
|
+
const [browserAuthenticationInitiator, setBrowserAuthenticationInitiator] = (0, react_1.useState)();
|
|
48
|
+
const [showIFrame, setShowIFrame] = (0, react_1.useState)(false);
|
|
49
|
+
const [isRedirecting, setIsRedirecting] = (0, react_1.useState)(false);
|
|
50
|
+
const queryClient = (0, react_query_1.useQueryClient)();
|
|
51
|
+
const iframeRef = (0, react_1.useRef)(null);
|
|
67
52
|
// TODO maybe we want to support or derive serverTokenExchange another way?
|
|
68
|
-
const serverTokenExchange = pkceConsumer instanceof ConfidentialClientPKCEConsumer;
|
|
53
|
+
const serverTokenExchange = pkceConsumer instanceof PKCE_js_1.ConfidentialClientPKCEConsumer;
|
|
69
54
|
// check if the current window is in an iframe with the iframe id, and set an isInIframe state
|
|
70
|
-
useEffect(() => {
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
71
56
|
if (typeof globalThis.window !== "undefined") {
|
|
72
57
|
setCurrentUrl(globalThis.window.location.href);
|
|
73
|
-
const isInIframeVal = isWindowInIframe(globalThis.window);
|
|
58
|
+
const isInIframeVal = (0, windowUtil_1.isWindowInIframe)(globalThis.window);
|
|
74
59
|
setIsInIframe(isInIframeVal);
|
|
75
60
|
}
|
|
76
61
|
}, []);
|
|
77
|
-
const redirectUrl = useMemo(() => (inputRedirectUrl || currentUrl || "").split("?")[0], [currentUrl, inputRedirectUrl]);
|
|
78
|
-
const [authService, setAuthService] = useState();
|
|
79
|
-
useEffect(() => {
|
|
80
|
-
if (!currentUrl
|
|
62
|
+
const redirectUrl = (0, react_1.useMemo)(() => (inputRedirectUrl || currentUrl || "").split("?")[0], [currentUrl, inputRedirectUrl]);
|
|
63
|
+
const [authService, setAuthService] = (0, react_1.useState)();
|
|
64
|
+
(0, react_1.useEffect)(() => {
|
|
65
|
+
if (!currentUrl)
|
|
81
66
|
return;
|
|
82
|
-
BrowserAuthenticationService.build({
|
|
67
|
+
AuthenticationService_1.BrowserAuthenticationService.build({
|
|
83
68
|
clientId,
|
|
84
69
|
redirectUrl,
|
|
85
70
|
oauthServer: config.oauthServer,
|
|
86
|
-
scopes: DEFAULT_SCOPES,
|
|
71
|
+
scopes: constants_1.DEFAULT_SCOPES,
|
|
87
72
|
displayMode,
|
|
88
73
|
}).then(setAuthService);
|
|
89
74
|
}, [currentUrl, clientId, redirectUrl, config, displayMode]);
|
|
90
|
-
const { data: session, isLoading, error, } = useQuery({
|
|
75
|
+
const { data: session, isLoading, error, } = (0, react_query_1.useQuery)({
|
|
91
76
|
queryKey: [
|
|
92
77
|
"session",
|
|
93
78
|
authResponseUrl,
|
|
@@ -118,12 +103,12 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
118
103
|
if (!serverTokenExchange && code && state && !isInIframe) {
|
|
119
104
|
try {
|
|
120
105
|
await authService.tokenExchange(code, state);
|
|
121
|
-
const clientStorage = new LocalStorageAdapter();
|
|
122
|
-
const user = await getUser(clientStorage);
|
|
106
|
+
const clientStorage = new storage_1.LocalStorageAdapter();
|
|
107
|
+
const user = await (0, session_js_1.getUser)(clientStorage);
|
|
123
108
|
if (!user) {
|
|
124
109
|
throw new Error("Failed to get user info");
|
|
125
110
|
}
|
|
126
|
-
const userSession = new GenericUserSession(clientStorage);
|
|
111
|
+
const userSession = new UserSession_js_1.GenericUserSession(clientStorage);
|
|
127
112
|
userSession.set(user);
|
|
128
113
|
onSignIn?.(); // Call onSignIn without an error if successful
|
|
129
114
|
return authService.getSessionData();
|
|
@@ -137,7 +122,7 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
137
122
|
return existingSessionData;
|
|
138
123
|
},
|
|
139
124
|
});
|
|
140
|
-
const signOutMutation = useMutation({
|
|
125
|
+
const signOutMutation = (0, react_query_1.useMutation)({
|
|
141
126
|
mutationFn: async () => {
|
|
142
127
|
await onSignOut?.();
|
|
143
128
|
// Implement signOut logic here
|
|
@@ -158,18 +143,18 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
158
143
|
], null);
|
|
159
144
|
},
|
|
160
145
|
});
|
|
161
|
-
const getAuthInitiator = useCallback((overrideDisplayMode) => {
|
|
146
|
+
const getAuthInitiator = (0, react_1.useCallback)((overrideDisplayMode) => {
|
|
162
147
|
const useDisplayMode = overrideDisplayMode || displayMode;
|
|
163
|
-
if (!pkceConsumer
|
|
148
|
+
if (!pkceConsumer) {
|
|
164
149
|
return null;
|
|
165
150
|
}
|
|
166
151
|
return (browserAuthenticationInitiator ||
|
|
167
|
-
new BrowserAuthenticationInitiator({
|
|
152
|
+
new AuthenticationService_1.BrowserAuthenticationInitiator({
|
|
168
153
|
pkceConsumer, // generate and retrieve the challenge client-side
|
|
169
154
|
clientId,
|
|
170
155
|
redirectUrl,
|
|
171
|
-
state: generateState(useDisplayMode, serverTokenExchange),
|
|
172
|
-
scopes: DEFAULT_SCOPES,
|
|
156
|
+
state: (0, oauth_1.generateState)(useDisplayMode, serverTokenExchange),
|
|
157
|
+
scopes: constants_1.DEFAULT_SCOPES,
|
|
173
158
|
displayMode: useDisplayMode,
|
|
174
159
|
oauthServer: config.oauthServer,
|
|
175
160
|
// the endpoints to use for the login (if not obtained from the auth server
|
|
@@ -187,7 +172,7 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
187
172
|
pkceConsumer,
|
|
188
173
|
nonce,
|
|
189
174
|
]);
|
|
190
|
-
const signIn = useCallback(async (overrideDisplayMode = "iframe") => {
|
|
175
|
+
const signIn = (0, react_1.useCallback)(async (overrideDisplayMode = "iframe") => {
|
|
191
176
|
setDisplayMode(overrideDisplayMode);
|
|
192
177
|
const authInitiator = getAuthInitiator(overrideDisplayMode);
|
|
193
178
|
setBrowserAuthenticationInitiator(authInitiator);
|
|
@@ -200,24 +185,24 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
200
185
|
authInitiator?.signIn(iframeRef.current).catch((error) => {
|
|
201
186
|
console.log("signIn error", {
|
|
202
187
|
error,
|
|
203
|
-
isPopupError: error instanceof PopupError,
|
|
188
|
+
isPopupError: error instanceof types_1.PopupError,
|
|
204
189
|
});
|
|
205
190
|
// if we've tried to open a popup and it has failed, then fallback to redirect mode
|
|
206
|
-
if (error instanceof PopupError) {
|
|
191
|
+
if (error instanceof types_1.PopupError) {
|
|
207
192
|
signIn("redirect");
|
|
208
193
|
}
|
|
209
194
|
});
|
|
210
195
|
}, [getAuthInitiator]);
|
|
211
196
|
// remove event listeners when the component unmounts
|
|
212
|
-
useEffect(() => {
|
|
197
|
+
(0, react_1.useEffect)(() => {
|
|
213
198
|
return () => {
|
|
214
199
|
if (browserAuthenticationInitiator) {
|
|
215
200
|
browserAuthenticationInitiator.cleanup();
|
|
216
201
|
}
|
|
217
202
|
};
|
|
218
203
|
}, [browserAuthenticationInitiator]);
|
|
219
|
-
const isAuthenticated = useMemo(() => (session ? session.authenticated : false), [session]);
|
|
220
|
-
useQuery({
|
|
204
|
+
const isAuthenticated = (0, react_1.useMemo)(() => (session ? session.authenticated : false), [session]);
|
|
205
|
+
(0, react_query_1.useQuery)({
|
|
221
206
|
queryKey: ["autoSignIn", modalIframe, redirectUrl, isAuthenticated],
|
|
222
207
|
queryFn: async () => {
|
|
223
208
|
if (!modalIframe &&
|
|
@@ -230,7 +215,7 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
230
215
|
},
|
|
231
216
|
refetchOnWindowFocus: false,
|
|
232
217
|
});
|
|
233
|
-
const value = useMemo(() => ({
|
|
218
|
+
const value = (0, react_1.useMemo)(() => ({
|
|
234
219
|
isLoading,
|
|
235
220
|
error: error,
|
|
236
221
|
signOut: async () => {
|
|
@@ -239,25 +224,23 @@ const AuthProvider = ({ children, clientId, redirectUrl: inputRedirectUrl, confi
|
|
|
239
224
|
isAuthenticated,
|
|
240
225
|
signIn,
|
|
241
226
|
}), [isLoading, error, signOutMutation, isAuthenticated, signIn]);
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
React.createElement(SessionProvider, { session: session },
|
|
248
|
-
React.createElement(TokenProvider, null,
|
|
227
|
+
return (React.createElement(AuthContext_1.AuthContext.Provider, { value: value },
|
|
228
|
+
React.createElement(ConfigProvider_1.ConfigProvider, { config: config, redirectUrl: redirectUrl, modalIframe: modalIframe, serverTokenExchange: serverTokenExchange },
|
|
229
|
+
React.createElement(IframeProvider_1.IframeProvider, { setAuthResponseUrl: setAuthResponseUrl, iframeRef: iframeRef },
|
|
230
|
+
React.createElement(SessionProvider_1.SessionProvider, { session: session },
|
|
231
|
+
React.createElement(TokenProvider_1.TokenProvider, null,
|
|
249
232
|
modalIframe && !isInIframe && !session?.authenticated && (React.createElement("div", { style: showIFrame ? { display: "block" } : { display: "none" } },
|
|
250
|
-
React.createElement(CivicAuthIframeContainer, { onClose: () => setShowIFrame(false) }))),
|
|
233
|
+
React.createElement(CivicAuthIframeContainer_1.CivicAuthIframeContainer, { onClose: () => setShowIFrame(false) }))),
|
|
251
234
|
modalIframe &&
|
|
252
235
|
(isInIframe ||
|
|
253
236
|
isRedirecting ||
|
|
254
237
|
(isLoading && !serverTokenExchange)) && (React.createElement(BlockDisplay, null,
|
|
255
|
-
React.createElement(LoadingIcon, null))),
|
|
238
|
+
React.createElement(LoadingIcon_1.LoadingIcon, null))),
|
|
256
239
|
(tokenExchangeError || error) && (React.createElement(BlockDisplay, null,
|
|
257
240
|
React.createElement("div", null,
|
|
258
241
|
"Error: ",
|
|
259
242
|
(tokenExchangeError || error).message))),
|
|
260
243
|
children))))));
|
|
261
244
|
};
|
|
262
|
-
|
|
245
|
+
exports.AuthProvider = AuthProvider;
|
|
263
246
|
//# sourceMappingURL=AuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../../../src/shared/AuthProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport type { ReactNode } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport type { Config, DisplayMode, SessionData } from \"@/types.js\";\nimport { CivicAuthIframeContainer } from \"@/shared/components/CivicAuthIframeContainer\";\nimport { TokenProvider } from \"@/shared/providers/TokenProvider\";\nimport { SessionProvider } from \"@/shared/providers/SessionProvider\";\nimport { DEFAULT_SCOPES } from \"@/constants\";\nimport { authConfig } from \"@/config\";\nimport { LoadingIcon } from \"@/shared/components/LoadingIcon\";\nimport { isWindowInIframe } from \"@/lib/windowUtil\";\nimport { AuthContext } from \"@/shared/AuthContext\";\nimport {\n BrowserAuthenticationInitiator,\n BrowserAuthenticationService,\n} from \"@/services/AuthenticationService\";\nimport type { AuthenticationResolver, PKCEConsumer } from \"@/services/types\";\nimport { PopupError } from \"@/services/types\";\nimport { ConfidentialClientPKCEConsumer } from \"@/services/PKCE.js\";\nimport { generateState } from \"@/lib/oauth\";\nimport { LocalStorageAdapter } from \"@/browser/storage\";\nimport { ConfigProvider } from \"@/shared/providers/ConfigProvider\";\nimport { getUser } from \"./session.js\";\nimport { GenericUserSession } from \"./UserSession.js\";\nimport { IframeProvider } from \"@/shared/providers/IframeProvider\";\n\n// Global this object setup\nlet globalThisObject;\nif (typeof window !== \"undefined\") {\n globalThisObject = window;\n} else if (typeof global !== \"undefined\") {\n globalThisObject = global;\n} else {\n globalThisObject = Function(\"return this\")();\n}\nglobalThisObject.globalThis = globalThisObject;\n\nexport type AuthProviderProps = {\n children: ReactNode;\n clientId: string;\n redirectUrl?: string;\n nonce?: string;\n config?: Config;\n onSignIn?: (error?: Error) => void;\n onSignOut?: () => Promise<void>;\n pkceConsumer?: PKCEConsumer;\n modalIframe?: boolean;\n sessionData?: SessionData;\n};\n\nfunction BlockDisplay({ children }: { children: ReactNode }) {\n return (\n <div className=\"cac-relative cac-left-0 cac-top-0 cac-z-50 cac-flex cac-h-screen cac-w-screen cac-items-center cac-justify-center cac-bg-white\">\n <div className=\"cac-absolute cac-inset-0 cac-flex cac-items-center cac-justify-center cac-bg-white\">\n {children}\n </div>\n </div>\n );\n}\n\nconst AuthProvider = ({\n children,\n clientId,\n redirectUrl: inputRedirectUrl,\n config = authConfig,\n onSignIn,\n onSignOut,\n pkceConsumer,\n nonce,\n modalIframe = true,\n sessionData: inputSessionData,\n}: AuthProviderProps) => {\n const [iframeUrl, setIframeUrl] = useState<string | null>(null);\n const [currentUrl, setCurrentUrl] = useState<string | null>(null);\n const [isInIframe, setIsInIframe] = useState(false);\n const [authResponseUrl, setAuthResponseUrl] = useState<string | null>(null);\n const [tokenExchangeError, setTokenExchangeError] = useState<Error>();\n const [displayMode, setDisplayMode] = useState<DisplayMode>(\"iframe\");\n const [browserAuthenticationInitiator, setBrowserAuthenticationInitiator] =\n useState<BrowserAuthenticationInitiator | null>();\n const [showIFrame, setShowIFrame] = useState(false);\n const [isRedirecting, setIsRedirecting] = useState(false);\n const queryClient = useQueryClient();\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n // TODO maybe we want to support or derive serverTokenExchange another way?\n const serverTokenExchange =\n pkceConsumer instanceof ConfidentialClientPKCEConsumer;\n // check if the current window is in an iframe with the iframe id, and set an isInIframe state\n useEffect(() => {\n if (typeof globalThis.window !== \"undefined\") {\n setCurrentUrl(globalThis.window.location.href);\n const isInIframeVal = isWindowInIframe(globalThis.window);\n setIsInIframe(isInIframeVal);\n }\n }, []);\n\n const redirectUrl = useMemo(\n () => (inputRedirectUrl || currentUrl || \"\").split(\"?\")[0],\n [currentUrl, inputRedirectUrl],\n );\n\n const [authService, setAuthService] = useState<AuthenticationResolver>();\n\n useEffect(() => {\n if (!currentUrl) return;\n BrowserAuthenticationService.build({\n clientId,\n redirectUrl,\n oauthServer: config.oauthServer,\n scopes: DEFAULT_SCOPES,\n displayMode,\n }).then(setAuthService);\n }, [currentUrl, clientId, redirectUrl, config, displayMode]);\n\n const {\n data: session,\n isLoading,\n error,\n } = useQuery({\n queryKey: [\n \"session\",\n authResponseUrl,\n iframeUrl,\n currentUrl,\n isInIframe,\n authService,\n ],\n queryFn: async () => {\n if (!authService) {\n return { authenticated: false };\n }\n if (inputSessionData) {\n return inputSessionData;\n }\n const url = new URL(\n authResponseUrl\n ? authResponseUrl\n : globalThis.window.location.href || \"\",\n );\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 return existingSessionData;\n }\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n if (!serverTokenExchange && code && state && !isInIframe) {\n try {\n await authService.tokenExchange(code, state);\n const clientStorage = new LocalStorageAdapter();\n const user = await getUser(clientStorage);\n if (!user) {\n throw new Error(\"Failed to get user info\");\n }\n\n const userSession = new GenericUserSession(clientStorage);\n userSession.set(user);\n\n onSignIn?.(); // Call onSignIn without an error if successful\n return authService.getSessionData();\n } catch (error) {\n setTokenExchangeError(error as Error);\n onSignIn?.(\n error instanceof Error ? error : new Error(\"Failed to sign in\"),\n ); // Pass the error to onSignIn\n return { authenticated: false };\n }\n }\n\n return existingSessionData;\n },\n });\n\n const signOutMutation = useMutation({\n mutationFn: async () => {\n await onSignOut?.();\n // Implement signOut logic here\n const authInitiator = getAuthInitiator();\n await authInitiator?.signOut();\n setIframeUrl(null);\n setShowIFrame(false);\n setAuthResponseUrl(null);\n },\n onSuccess: () => {\n queryClient.setQueryData(\n [\n \"session\",\n authResponseUrl,\n iframeUrl,\n currentUrl,\n isInIframe,\n authService,\n ],\n null,\n );\n },\n });\n\n const getAuthInitiator = useCallback(\n (overrideDisplayMode?: DisplayMode) => {\n const useDisplayMode = overrideDisplayMode || displayMode;\n if (!pkceConsumer) {\n return null;\n }\n return (\n browserAuthenticationInitiator ||\n new BrowserAuthenticationInitiator({\n pkceConsumer, // generate and retrieve the challenge client-side\n clientId,\n redirectUrl,\n state: generateState(useDisplayMode, serverTokenExchange),\n scopes: DEFAULT_SCOPES,\n displayMode: useDisplayMode,\n oauthServer: config.oauthServer,\n // the endpoints to use for the login (if not obtained from the auth server\n endpointOverrides: config.endpoints,\n nonce,\n })\n );\n },\n [\n serverTokenExchange,\n displayMode,\n browserAuthenticationInitiator,\n clientId,\n redirectUrl,\n config.oauthServer,\n config.endpoints,\n pkceConsumer,\n nonce,\n ],\n );\n\n const signIn = useCallback(\n async (overrideDisplayMode: DisplayMode = \"iframe\") => {\n setDisplayMode(overrideDisplayMode);\n const authInitiator = getAuthInitiator(overrideDisplayMode);\n setBrowserAuthenticationInitiator(authInitiator);\n if (overrideDisplayMode === \"iframe\") {\n setShowIFrame(true);\n } else if (overrideDisplayMode === \"redirect\") {\n setIsRedirecting(true);\n }\n authInitiator?.signIn(iframeRef.current).catch((error) => {\n console.log(\"signIn error\", {\n error,\n isPopupError: error instanceof PopupError,\n });\n // if we've tried to open a popup and it has failed, then fallback to redirect mode\n if (error instanceof PopupError) {\n signIn(\"redirect\");\n }\n });\n },\n [getAuthInitiator],\n );\n\n // remove event listeners when the component unmounts\n useEffect(() => {\n return () => {\n if (browserAuthenticationInitiator) {\n browserAuthenticationInitiator.cleanup();\n }\n };\n }, [browserAuthenticationInitiator]);\n\n const isAuthenticated = useMemo(\n () => (session ? session.authenticated : false),\n [session],\n );\n\n useQuery({\n queryKey: [\"autoSignIn\", modalIframe, redirectUrl, isAuthenticated],\n queryFn: async () => {\n if (\n !modalIframe &&\n redirectUrl &&\n !isAuthenticated &&\n iframeRef.current\n ) {\n signIn(\"iframe\");\n }\n return true;\n },\n refetchOnWindowFocus: false,\n });\n\n const value = useMemo(\n () => ({\n isLoading,\n error: error as Error | null,\n signOut: async () => {\n await signOutMutation.mutateAsync();\n },\n isAuthenticated,\n signIn,\n }),\n [isLoading, error, signOutMutation, isAuthenticated, signIn],\n );\n return (\n <AuthContext.Provider value={value}>\n <ConfigProvider\n config={config}\n redirectUrl={redirectUrl}\n modalIframe={modalIframe}\n serverTokenExchange={serverTokenExchange}\n >\n <IframeProvider\n setAuthResponseUrl={setAuthResponseUrl}\n iframeRef={iframeRef}\n >\n <SessionProvider session={session}>\n <TokenProvider>\n {modalIframe && !isInIframe && !session?.authenticated && (\n <div\n style={\n showIFrame ? { display: \"block\" } : { display: \"none\" }\n }\n >\n <CivicAuthIframeContainer\n onClose={() => setShowIFrame(false)}\n />\n </div>\n )}\n\n {modalIframe &&\n (isInIframe ||\n isRedirecting ||\n (isLoading && !serverTokenExchange)) && (\n <BlockDisplay>\n <LoadingIcon />\n </BlockDisplay>\n )}\n\n {(tokenExchangeError || error) && (\n <BlockDisplay>\n <div>\n Error: {(tokenExchangeError || (error as Error)).message}\n </div>\n </BlockDisplay>\n )}\n {children}\n </TokenProvider>\n </SessionProvider>\n </IframeProvider>\n </ConfigProvider>\n </AuthContext.Provider>\n );\n};\n\nexport { AuthProvider };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { AuthProviderProps } from "./AuthProvider";
|
|
2
|
+
import "@civic/auth/styles.css";
|
|
3
3
|
type CivicAuthProviderProps = Omit<AuthProviderProps, "pkceConsumer">;
|
|
4
|
-
declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) =>
|
|
4
|
+
declare const CivicAuthProvider: ({ children, ...props }: CivicAuthProviderProps) => import("react").JSX.Element;
|
|
5
5
|
export { CivicAuthProvider, type CivicAuthProviderProps };
|
|
6
6
|
//# sourceMappingURL=CivicAuthProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CivicAuthProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/CivicAuthProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIjE,OAAO,wBAAwB,CAAC;AAOhC,KAAK,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAEtE,QAAA,MAAM,iBAAiB,2BAA4B,sBAAsB,gCAaxE,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.CivicAuthProvider = void 0;
|
|
5
|
+
const AuthProvider_1 = require("./AuthProvider");
|
|
6
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
7
|
+
// adding the styles import here to be added to the bundle
|
|
8
|
+
require("@civic/auth/styles.css");
|
|
9
|
+
const PKCE_js_1 = require("../services/PKCE.js");
|
|
10
|
+
const UserProvider_1 = require("./UserProvider");
|
|
11
|
+
const storage_1 = require("../browser/storage");
|
|
12
|
+
const queryClient = new react_query_1.QueryClient();
|
|
13
|
+
const CivicAuthProvider = ({ children, ...props }) => {
|
|
14
|
+
return (React.createElement(react_query_1.QueryClientProvider, { client: queryClient },
|
|
15
|
+
React.createElement(AuthProvider_1.AuthProvider, { ...props, pkceConsumer: new PKCE_js_1.BrowserPublicClientPKCEProducer() },
|
|
16
|
+
React.createElement(UserProvider_1.UserProvider, { storage: new storage_1.LocalStorageAdapter() }, children))));
|
|
17
|
+
};
|
|
18
|
+
exports.CivicAuthProvider = CivicAuthProvider;
|
|
19
|
+
//# sourceMappingURL=CivicAuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CivicAuthProvider.js","sourceRoot":"","sources":["../../../../src/shared/CivicAuthProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AACb,iDAAiE;AACjE,uDAAyE;AAEzE,0DAA0D;AAC1D,kCAAgC;AAChC,gDAAqE;AACrE,iDAA8C;AAC9C,+CAAwD;AAExD,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;AAItC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAA0B,EAAE,EAAE;IAC3E,OAAO,CACL,oBAAC,iCAAmB,IAAC,MAAM,EAAE,WAAW;QACtC,oBAAC,2BAAY,OACP,KAAK,EACT,YAAY,EAAE,IAAI,yCAA+B,EAAE;YAEnD,oBAAC,2BAAY,IAAC,OAAO,EAAE,IAAI,6BAAmB,EAAE,IAC7C,QAAQ,CACI,CACF,CACK,CACvB,CAAC;AACJ,CAAC,CAAC;AAEO,8CAAiB","sourcesContent":["\"use client\";\nimport { AuthProvider, AuthProviderProps } from \"./AuthProvider\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\n// adding the styles import here to be added to the bundle\nimport \"@civic/auth/styles.css\";\nimport { BrowserPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { UserProvider } from \"./UserProvider\";\nimport { LocalStorageAdapter } from \"@/browser/storage\";\n\nconst queryClient = new QueryClient();\n\ntype CivicAuthProviderProps = Omit<AuthProviderProps, \"pkceConsumer\">;\n\nconst CivicAuthProvider = ({ children, ...props }: CivicAuthProviderProps) => {\n return (\n <QueryClientProvider client={queryClient}>\n <AuthProvider\n {...props}\n pkceConsumer={new BrowserPublicClientPKCEProducer()}\n >\n <UserProvider storage={new LocalStorageAdapter()}>\n {children}\n </UserProvider>\n </AuthProvider>\n </QueryClientProvider>\n );\n};\n\nexport { CivicAuthProvider, type CivicAuthProviderProps };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AuthenticationRefresher } from "
|
|
2
|
-
import type { AuthStorage, Endpoints
|
|
3
|
-
import type { AuthConfig } from "
|
|
1
|
+
import type { AuthenticationRefresher } from "../services/types.ts";
|
|
2
|
+
import type { AuthStorage, Endpoints } from "../types.js";
|
|
3
|
+
import type { AuthConfig } from "../server/config.ts";
|
|
4
4
|
export declare class GenericAuthenticationRefresher implements AuthenticationRefresher {
|
|
5
5
|
private authConfig;
|
|
6
6
|
private storage;
|
|
@@ -10,6 +10,6 @@ export declare class GenericAuthenticationRefresher implements AuthenticationRef
|
|
|
10
10
|
private constructor();
|
|
11
11
|
init(): Promise<this>;
|
|
12
12
|
static build(authConfig: AuthConfig, storage: AuthStorage, endpointOverrides?: Partial<Endpoints>): Promise<GenericAuthenticationRefresher>;
|
|
13
|
-
refreshTokens(): Promise<
|
|
13
|
+
refreshTokens(): Promise<any>;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=GenericAuthenticationRefresher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher.d.ts","sourceRoot":"","sources":["../../../../src/shared/GenericAuthenticationRefresher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAyB,MAAM,YAAY,CAAC;AAMhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,qBAAa,8BAA+B,YAAW,uBAAuB;IAK1E,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,iBAAiB,CAAC;IAN5B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,SAAS,CAAwB;IAEzC,OAAO;IAWD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAkBd,KAAK,CAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,WAAW,EACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAWpC,aAAa;CAgBpB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericAuthenticationRefresher = void 0;
|
|
4
|
+
const util_js_ts_1 = require("../shared/lib/util.js.ts");
|
|
5
|
+
const oauth2_1 = require("oslo/oauth2");
|
|
6
|
+
class GenericAuthenticationRefresher {
|
|
4
7
|
authConfig;
|
|
5
8
|
storage;
|
|
6
9
|
endpointOverrides;
|
|
@@ -17,8 +20,8 @@ export class GenericAuthenticationRefresher {
|
|
|
17
20
|
}
|
|
18
21
|
async init() {
|
|
19
22
|
// resolve oauth config
|
|
20
|
-
this.endpoints = await getEndpointsWithOverrides(this.authConfig.oauthServer, this.endpointOverrides);
|
|
21
|
-
this.oauth2client = new OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
|
|
23
|
+
this.endpoints = await (0, util_js_ts_1.getEndpointsWithOverrides)(this.authConfig.oauthServer, this.endpointOverrides);
|
|
24
|
+
this.oauth2client = new oauth2_1.OAuth2Client(this.authConfig.clientId, this.endpoints.auth, this.endpoints.token, {
|
|
22
25
|
redirectURI: this.authConfig.redirectUrl,
|
|
23
26
|
});
|
|
24
27
|
return this;
|
|
@@ -31,13 +34,14 @@ export class GenericAuthenticationRefresher {
|
|
|
31
34
|
async refreshTokens() {
|
|
32
35
|
if (!this.oauth2client)
|
|
33
36
|
await this.init();
|
|
34
|
-
const tokens = retrieveTokens(this.storage);
|
|
37
|
+
const tokens = await (0, util_js_ts_1.retrieveTokens)(this.storage);
|
|
35
38
|
if (!tokens?.refresh_token)
|
|
36
39
|
throw new Error("No refresh token available");
|
|
37
40
|
const oauth2Client = this.oauth2client;
|
|
38
41
|
const refreshedTokens = await oauth2Client.refreshAccessToken(tokens.refresh_token);
|
|
39
|
-
storeTokens(this.storage, refreshedTokens);
|
|
42
|
+
(0, util_js_ts_1.storeTokens)(this.storage, refreshedTokens);
|
|
40
43
|
return tokens;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
46
|
+
exports.GenericAuthenticationRefresher = GenericAuthenticationRefresher;
|
|
43
47
|
//# sourceMappingURL=GenericAuthenticationRefresher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericAuthenticationRefresher.js","sourceRoot":"","sources":["../../../../src/shared/GenericAuthenticationRefresher.ts"],"names":[],"mappings":";;;AAEA,wDAIiC;AAEjC,wCAA2C;AAE3C,MAAa,8BAA8B;IAK/B;IACA;IACA;IANF,YAAY,CAA2B;IACvC,SAAS,CAAwB;IAEzC,YACU,UAAsB,EACtB,OAAoB,EACpB,iBAAsC;QAFtC,eAAU,GAAV,UAAU,CAAY;QACtB,YAAO,GAAP,OAAO,CAAa;QACpB,sBAAiB,GAAjB,iBAAiB,CAAqB;QAE9C,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE;YACxD,UAAU;YACV,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAA,sCAAyB,EAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,EAC3B,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,iBAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,8BAA8B,CAClD,UAAU,EACV,OAAO,EACP,iBAAiB,CAClB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAc,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE1E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QACxC,MAAM,eAAe,GACnB,MAAM,YAAY,CAAC,kBAAkB,CACnC,MAAM,CAAC,aAAa,CACrB,CAAC;QAEJ,IAAA,wBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAhED,wEAgEC","sourcesContent":["import type { AuthenticationRefresher } from \"@/services/types.ts\";\nimport type { AuthStorage, Endpoints, OIDCTokenResponseBody } from \"@/types.js\";\nimport {\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/lib/util.js.ts\";\nimport type { AuthConfig } from \"@/server/config.ts\";\nimport { OAuth2Client } from \"oslo/oauth2\";\n\nexport class GenericAuthenticationRefresher implements AuthenticationRefresher {\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n private authConfig: AuthConfig,\n private storage: AuthStorage,\n private endpointOverrides?: Partial<Endpoints>,\n ) {\n console.log(\"GenericAuthenticationRefresher constructor\", {\n authConfig,\n endpointOverrides,\n });\n }\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.authConfig.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 endpointOverrides?: Partial<Endpoints>,\n ): Promise<GenericAuthenticationRefresher> {\n const refresher = new GenericAuthenticationRefresher(\n authConfig,\n storage,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n async refreshTokens() {\n if (!this.oauth2client) await this.init();\n\n const tokens = await retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n\n const oauth2Client = this.oauth2client!;\n const refreshedTokens =\n await oauth2Client.refreshAccessToken<OIDCTokenResponseBody>(\n tokens.refresh_token,\n );\n\n storeTokens(this.storage, refreshedTokens);\n\n return tokens;\n }\n}\n"]}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import type { AuthContextType } from "@/shared/providers/AuthContext.js";
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { JWT } from "oslo/jwt";
|
|
3
|
+
import { AuthStorage, EmptyObject, User } from "../types.js";
|
|
4
|
+
import { AuthContextType } from "@/shared/AuthContext";
|
|
6
5
|
type UserContextType<T extends Record<string, unknown> & JWT["payload"] = Record<string, unknown> & JWT["payload"]> = {
|
|
7
6
|
user: User<T> | null;
|
|
8
7
|
} & Omit<AuthContextType, "isAuthenticated">;
|
|
9
|
-
declare const UserContext:
|
|
8
|
+
declare const UserContext: import("react").Context<UserContextType<Record<string, unknown> & object> | null>;
|
|
10
9
|
declare const UserProvider: <T extends EmptyObject>({ children, storage, user: inputUser, signOut: inputSignOut, }: {
|
|
11
10
|
children: ReactNode;
|
|
12
11
|
storage: AuthStorage;
|
|
13
12
|
user?: User<T> | null;
|
|
14
13
|
signOut?: () => Promise<void>;
|
|
15
|
-
}) =>
|
|
14
|
+
}) => import("react").JSX.Element;
|
|
16
15
|
export type { UserContextType };
|
|
17
16
|
export { UserProvider, UserContext };
|
|
18
17
|
//# sourceMappingURL=UserProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../../src/shared/UserProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,KAAK,eAAe,CAClB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1E,GAAG,CAAC,SAAS,CAAC,IACd;IACF,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACtB,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAE7C,QAAA,MAAM,WAAW,mFAA8C,CAAC;AAEhE,QAAA,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,kEAKxC;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,gCA0CA,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.UserContext = exports.UserProvider = void 0;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
7
|
+
const useAuth_1 = require("../shared/hooks/useAuth");
|
|
8
|
+
const useToken_1 = require("../shared/hooks/useToken");
|
|
9
|
+
const useSession_1 = require("../shared/hooks/useSession");
|
|
10
|
+
const UserSession_1 = require("../shared/UserSession");
|
|
11
|
+
const UserContext = (0, react_1.createContext)(null);
|
|
12
|
+
exports.UserContext = UserContext;
|
|
13
|
+
const UserProvider = ({ children, storage, user: inputUser, signOut: inputSignOut, }) => {
|
|
14
|
+
const { isLoading: authLoading, error: authError } = (0, useAuth_1.useAuth)();
|
|
15
|
+
const session = (0, useSession_1.useSession)();
|
|
16
|
+
const { accessToken, idToken } = (0, useToken_1.useToken)();
|
|
17
|
+
const { signIn, signOut } = (0, useAuth_1.useAuth)();
|
|
18
|
+
const fetchUser = async () => {
|
|
19
|
+
if (!accessToken) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const userSession = new UserSession_1.GenericUserSession(storage);
|
|
23
|
+
return userSession.get();
|
|
24
|
+
};
|
|
25
|
+
const { data: user, isLoading: userLoading, error: userError, } = (0, react_query_1.useQuery)({
|
|
26
|
+
queryKey: ["user", session?.idToken],
|
|
27
|
+
queryFn: fetchUser,
|
|
28
|
+
enabled: !!session?.idToken, // Only run the query if we have an access token
|
|
29
|
+
});
|
|
30
|
+
const isLoading = authLoading || userLoading;
|
|
31
|
+
const error = authError || userError;
|
|
32
|
+
const userWithIdToken = user ? { ...user, idToken } : null;
|
|
33
|
+
return (React.createElement(UserContext.Provider, { value: {
|
|
34
|
+
user: (inputUser || userWithIdToken) ?? null,
|
|
35
|
+
isLoading,
|
|
36
|
+
error,
|
|
37
|
+
signIn,
|
|
38
|
+
signOut: inputSignOut || signOut,
|
|
39
|
+
} }, children));
|
|
40
|
+
};
|
|
41
|
+
exports.UserProvider = UserProvider;
|
|
42
|
+
//# sourceMappingURL=UserProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../../src/shared/UserProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AACb,iCAAiD;AACjD,uDAAiE;AAGjE,oDAAiD;AACjD,sDAAmD;AACnD,0DAAuD;AAEvD,sDAA0D;AAS1D,MAAM,WAAW,GAAG,IAAA,qBAAa,EAAyB,IAAI,CAAC,CAAC;AA0DzC,kCAAW;AAxDlC,MAAM,YAAY,GAAG,CAAwB,EAC3C,QAAQ,EACR,OAAO,EACP,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,YAAY,GAMtB,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAA,iBAAO,GAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;IAC7B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,iBAAO,GAAE,CAAC;IAEtC,MAAM,SAAS,GAAG,KAAK,IAA0B,EAAE;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,gCAAkB,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,EACJ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,SAAS,GACjB,GAA0C,IAAA,sBAAQ,EAAC;QAClD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,gDAAgD;KAC9E,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,CAAC;IAC7C,MAAM,KAAK,GAAG,SAAS,IAAI,SAAS,CAAC;IAErC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3D,OAAO,CACL,oBAAC,WAAW,CAAC,QAAQ,IACnB,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,SAAS,IAAI,eAAe,CAAC,IAAI,IAAI;YAC5C,SAAS;YACT,KAAK;YACL,MAAM;YACN,OAAO,EAAE,YAAY,IAAI,OAAO;SACjC,IAEA,QAAQ,CACY,CACxB,CAAC;AACJ,CAAC,CAAC;AAIO,oCAAY","sourcesContent":["\"use client\";\nimport { createContext, ReactNode } from \"react\";\nimport { useQuery, UseQueryResult } from \"@tanstack/react-query\";\nimport { JWT } from \"oslo/jwt\";\nimport { AuthStorage, EmptyObject, User } from \"@/types.js\";\nimport { useAuth } from \"@/shared/hooks/useAuth\";\nimport { useToken } from \"@/shared/hooks/useToken\";\nimport { useSession } from \"@/shared/hooks/useSession\";\nimport { AuthContextType } from \"@/shared/AuthContext\";\nimport { GenericUserSession } from \"@/shared/UserSession\";\n\ntype UserContextType<\n T extends Record<string, unknown> & JWT[\"payload\"] = Record<string, unknown> &\n JWT[\"payload\"],\n> = {\n user: User<T> | null;\n} & Omit<AuthContextType, \"isAuthenticated\">;\n\nconst UserContext = createContext<UserContextType | null>(null);\n\nconst UserProvider = <T extends EmptyObject>({\n children,\n storage,\n user: inputUser,\n signOut: inputSignOut,\n}: {\n children: ReactNode;\n storage: AuthStorage;\n user?: User<T> | null;\n signOut?: () => Promise<void>;\n}) => {\n const { isLoading: authLoading, error: authError } = useAuth();\n const session = useSession();\n const { accessToken, idToken } = useToken();\n const { signIn, signOut } = useAuth();\n\n const fetchUser = async (): Promise<User | null> => {\n if (!accessToken) {\n return null;\n }\n const userSession = new GenericUserSession(storage);\n return userSession.get();\n };\n\n const {\n data: user,\n isLoading: userLoading,\n error: userError,\n }: UseQueryResult<User<T> | null, Error> = useQuery({\n queryKey: [\"user\", session?.idToken],\n queryFn: fetchUser,\n enabled: !!session?.idToken, // Only run the query if we have an access token\n });\n\n const isLoading = authLoading || userLoading;\n const error = authError || userError;\n\n const userWithIdToken = user ? { ...user, idToken } : null;\n\n return (\n <UserContext.Provider\n value={{\n user: (inputUser || userWithIdToken) ?? null,\n isLoading,\n error,\n signIn,\n signOut: inputSignOut || signOut,\n }}\n >\n {children}\n </UserContext.Provider>\n );\n};\n\nexport type { UserContextType };\n\nexport { UserProvider, UserContext };\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AuthStorage, User } from "../types.js";
|
|
2
|
+
export interface UserSession {
|
|
3
|
+
get(): Promise<User | null>;
|
|
4
|
+
set(user: User): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare class GenericUserSession implements UserSession {
|
|
7
|
+
readonly storage: AuthStorage;
|
|
8
|
+
constructor(storage: AuthStorage);
|
|
9
|
+
get(): Promise<User | null>;
|
|
10
|
+
set(user: User | null): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=UserSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSession.d.ts","sourceRoot":"","sources":["../../../../src/shared/UserSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,IAAI,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,WAAW;IAC1B,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACxC,QAAQ,CAAC,OAAO,EAAE,WAAW;gBAApB,OAAO,EAAE,WAAW;IAEnC,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAK3B,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAO5C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenericUserSession = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const jwt_1 = require("../lib/jwt");
|
|
6
|
+
class GenericUserSession {
|
|
7
|
+
storage;
|
|
8
|
+
constructor(storage) {
|
|
9
|
+
this.storage = storage;
|
|
10
|
+
}
|
|
11
|
+
async get() {
|
|
12
|
+
const user = await this.storage.get(types_1.UserStorage.USER);
|
|
13
|
+
return user ? JSON.parse(user) : null;
|
|
14
|
+
}
|
|
15
|
+
async set(user) {
|
|
16
|
+
const forwardedTokens = user?.forwardedTokens
|
|
17
|
+
? (0, jwt_1.convertForwardedTokenFormat)(user?.forwardedTokens)
|
|
18
|
+
: null;
|
|
19
|
+
const value = user ? JSON.stringify({ ...user, forwardedTokens }) : "";
|
|
20
|
+
this.storage.set(types_1.UserStorage.USER, value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.GenericUserSession = GenericUserSession;
|
|
24
|
+
//# sourceMappingURL=UserSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserSession.js","sourceRoot":"","sources":["../../../../src/shared/UserSession.ts"],"names":[],"mappings":";;;AACA,mCAAsC;AACtC,mCAAwD;AAOxD,MAAa,kBAAkB;IACR;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,mBAAW,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,CAAC,IAAiB;QACzB,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe;YAC3C,CAAC,CAAC,IAAA,iCAA2B,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,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAfD,gDAeC","sourcesContent":["import { AuthStorage, ForwardedTokensJWT, User } from \"@/types.js\";\nimport { UserStorage } from \"./types\";\nimport { convertForwardedTokenFormat } from \"@/lib/jwt\";\n\nexport interface UserSession {\n get(): Promise<User | null>;\n set(user: User): Promise<void>;\n}\n\nexport class GenericUserSession implements UserSession {\n constructor(readonly storage: AuthStorage) {}\n\n async get(): Promise<User | null> {\n const user = await this.storage.get(UserStorage.USER);\n return user ? JSON.parse(user) : null;\n }\n\n async set(user: User | null): Promise<void> {\n const forwardedTokens = user?.forwardedTokens\n ? convertForwardedTokenFormat(user?.forwardedTokens as ForwardedTokensJWT)\n : null;\n const value = user ? JSON.stringify({ ...user, forwardedTokens }) : \"\";\n this.storage.set(UserStorage.USER, value);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/shared/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAMxE"}
|