@civic/auth 0.11.3-alpha.1 → 0.11.3-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/CHANGELOG.md +1 -0
- package/dist/reactjs/core/GlobalAuthManager.d.ts.map +1 -1
- package/dist/reactjs/core/GlobalAuthManager.js +0 -3
- package/dist/reactjs/core/GlobalAuthManager.js.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/version.d.ts.map +1 -1
- package/dist/shared/version.js +1 -1
- package/dist/shared/version.js.map +1 -1
- package/package.json +3 -3
- package/dist/nextjs/NextClientAuthenticationRefresher.d.ts +0 -8
- package/dist/nextjs/NextClientAuthenticationRefresher.d.ts.map +0 -1
- package/dist/nextjs/NextClientAuthenticationRefresher.js +0 -24
- package/dist/nextjs/NextClientAuthenticationRefresher.js.map +0 -1
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts +0 -12
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +0 -1
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.js +0 -25
- package/dist/nextjs/NextServerAuthenticationRefresherImpl.js.map +0 -1
- package/dist/nextjs/hooks/useRefresh.d.ts +0 -5
- package/dist/nextjs/hooks/useRefresh.d.ts.map +0 -1
- package/dist/nextjs/hooks/useRefresh.js +0 -57
- package/dist/nextjs/hooks/useRefresh.js.map +0 -1
- package/dist/react-router-7/auth-loader.d.ts +0 -18
- package/dist/react-router-7/auth-loader.d.ts.map +0 -1
- package/dist/react-router-7/auth-loader.js +0 -36
- package/dist/react-router-7/auth-loader.js.map +0 -1
- package/dist/reactjs/providers/CivicAuthContext.d.ts +0 -44
- package/dist/reactjs/providers/CivicAuthContext.d.ts.map +0 -1
- package/dist/reactjs/providers/CivicAuthContext.js +0 -313
- package/dist/reactjs/providers/CivicAuthContext.js.map +0 -1
- package/dist/shared/hooks/useCivicAuthConfig.d.ts +0 -3
- package/dist/shared/hooks/useCivicAuthConfig.d.ts.map +0 -1
- package/dist/shared/hooks/useCivicAuthConfig.js +0 -10
- package/dist/shared/hooks/useCivicAuthConfig.js.map +0 -1
- package/dist/shared/hooks/useClientTokenExchangeSession.d.ts +0 -7
- package/dist/shared/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
- package/dist/shared/hooks/useClientTokenExchangeSession.js +0 -17
- package/dist/shared/hooks/useClientTokenExchangeSession.js.map +0 -1
- package/dist/shared/hooks/useCurrentUrl.d.ts +0 -3
- package/dist/shared/hooks/useCurrentUrl.d.ts.map +0 -1
- package/dist/shared/hooks/useCurrentUrl.js +0 -24
- package/dist/shared/hooks/useCurrentUrl.js.map +0 -1
- package/dist/shared/hooks/useOAuthEndpoints.d.ts +0 -4
- package/dist/shared/hooks/useOAuthEndpoints.d.ts.map +0 -1
- package/dist/shared/hooks/useOAuthEndpoints.js +0 -14
- package/dist/shared/hooks/useOAuthEndpoints.js.map +0 -1
- package/dist/shared/hooks/useRefresh.d.ts +0 -6
- package/dist/shared/hooks/useRefresh.d.ts.map +0 -1
- package/dist/shared/hooks/useRefresh.js +0 -47
- package/dist/shared/hooks/useRefresh.js.map +0 -1
- package/dist/shared/hooks/useSession.d.ts +0 -3
- package/dist/shared/hooks/useSession.d.ts.map +0 -1
- package/dist/shared/hooks/useSession.js +0 -13
- package/dist/shared/hooks/useSession.js.map +0 -1
- package/dist/shared/hooks/useToken.d.ts +0 -3
- package/dist/shared/hooks/useToken.d.ts.map +0 -1
- package/dist/shared/hooks/useToken.js +0 -12
- package/dist/shared/hooks/useToken.js.map +0 -1
- package/dist/shared/hooks/useWindowFocused.d.ts +0 -5
- package/dist/shared/hooks/useWindowFocused.d.ts.map +0 -1
- package/dist/shared/hooks/useWindowFocused.js +0 -21
- package/dist/shared/hooks/useWindowFocused.js.map +0 -1
- package/dist/shared/providers/CivicAuthConfigContext.d.ts +0 -25
- package/dist/shared/providers/CivicAuthConfigContext.d.ts.map +0 -1
- package/dist/shared/providers/CivicAuthConfigContext.js +0 -66
- package/dist/shared/providers/CivicAuthConfigContext.js.map +0 -1
- package/dist/shared/providers/SessionProvider.d.ts +0 -19
- package/dist/shared/providers/SessionProvider.d.ts.map +0 -1
- package/dist/shared/providers/SessionProvider.js +0 -25
- package/dist/shared/providers/SessionProvider.js.map +0 -1
- package/dist/shared/providers/TokenProvider.d.ts +0 -17
- package/dist/shared/providers/TokenProvider.d.ts.map +0 -1
- package/dist/shared/providers/TokenProvider.js +0 -31
- package/dist/shared/providers/TokenProvider.js.map +0 -1
- package/dist/shared/providers/UserProvider.d.ts +0 -26
- package/dist/shared/providers/UserProvider.d.ts.map +0 -1
- package/dist/shared/providers/UserProvider.js +0 -64
- package/dist/shared/providers/UserProvider.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
const useWindowFocused = () => {
|
|
3
|
-
const [isWindowFocused, setIsWindowFocused] = useState(true);
|
|
4
|
-
useEffect(() => {
|
|
5
|
-
const handleFocus = () => {
|
|
6
|
-
setIsWindowFocused(true);
|
|
7
|
-
};
|
|
8
|
-
const handleBlur = () => {
|
|
9
|
-
setIsWindowFocused(false);
|
|
10
|
-
};
|
|
11
|
-
window.addEventListener("focus", handleFocus);
|
|
12
|
-
window.addEventListener("blur", handleBlur);
|
|
13
|
-
return () => {
|
|
14
|
-
window.removeEventListener("focus", handleFocus);
|
|
15
|
-
window.removeEventListener("blur", handleBlur);
|
|
16
|
-
};
|
|
17
|
-
}, []);
|
|
18
|
-
return { isWindowFocused };
|
|
19
|
-
};
|
|
20
|
-
export { useWindowFocused };
|
|
21
|
-
//# sourceMappingURL=useWindowFocused.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowFocused.js","sourceRoot":"","sources":["../../../src/shared/hooks/useWindowFocused.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE5C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjD,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC,CAAC;AACF,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import { useEffect, useState } from \"react\";\n\nconst useWindowFocused = () => {\n const [isWindowFocused, setIsWindowFocused] = useState(true);\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 return { isWindowFocused };\n};\nexport { useWindowFocused };\n"]}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
import type { CivicAuthConfig } from "../lib/types.js";
|
|
3
|
-
import type { DisplayMode, FrameworkType } from "../../types.js";
|
|
4
|
-
type CivicAuthConfigContextType = {
|
|
5
|
-
children: ReactNode;
|
|
6
|
-
oauthServer?: string;
|
|
7
|
-
clientId: string;
|
|
8
|
-
scopes?: string[];
|
|
9
|
-
redirectUrl?: string;
|
|
10
|
-
loginSuccessUrl?: string;
|
|
11
|
-
logoutRedirectUrl?: string;
|
|
12
|
-
nonce?: string;
|
|
13
|
-
challengeUrl?: string;
|
|
14
|
-
refreshUrl?: string;
|
|
15
|
-
logoutUrl?: string;
|
|
16
|
-
logoutCallbackUrl?: string;
|
|
17
|
-
displayMode?: DisplayMode;
|
|
18
|
-
framework?: FrameworkType;
|
|
19
|
-
autoRedirect?: boolean;
|
|
20
|
-
targetContainerElement?: HTMLElement | string;
|
|
21
|
-
};
|
|
22
|
-
declare const CivicAuthConfigContext: import("react").Context<CivicAuthConfig>;
|
|
23
|
-
declare const CivicAuthConfigProvider: ({ children, oauthServer, clientId, redirectUrl: inputRedirectUrl, loginSuccessUrl, nonce, challengeUrl, refreshUrl, logoutUrl, scopes, logoutRedirectUrl: inputLogoutRedirectUrl, displayMode, framework, autoRedirect, targetContainerElement, }: CivicAuthConfigContextType) => import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
export { CivicAuthConfigProvider, CivicAuthConfigContext };
|
|
25
|
-
//# sourceMappingURL=CivicAuthConfigContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthConfigContext.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/CivicAuthConfigContext.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI7D,KAAK,0BAA0B,GAAG;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAC/C,CAAC;AAEF,QAAA,MAAM,sBAAsB,0CAAgD,CAAC;AAE7E,QAAA,MAAM,uBAAuB,sPAgB1B,0BAA0B,4CAgE5B,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/** @jsxImportSource react */
|
|
2
|
-
"use client";
|
|
3
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
-
import { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from "../../constants.js";
|
|
5
|
-
import { createContext, useMemo } from "react";
|
|
6
|
-
import { useOAuthEndpoints } from "../../shared/hooks/useOAuthEndpoints.js";
|
|
7
|
-
import { useCurrentUrl } from "../../shared/hooks/useCurrentUrl.js";
|
|
8
|
-
const defaultConfig = null;
|
|
9
|
-
// Context for exposing Config specifically to the TokenProvider
|
|
10
|
-
const CivicAuthConfigContext = createContext(defaultConfig);
|
|
11
|
-
const CivicAuthConfigProvider = ({ children, oauthServer, clientId, redirectUrl: inputRedirectUrl, loginSuccessUrl, nonce, challengeUrl, refreshUrl, logoutUrl, scopes, logoutRedirectUrl: inputLogoutRedirectUrl, displayMode = "iframe", framework, autoRedirect, targetContainerElement, }) => {
|
|
12
|
-
const currentUrl = useCurrentUrl();
|
|
13
|
-
const redirectUrl = useMemo(() => {
|
|
14
|
-
const useUrl = inputRedirectUrl || currentUrl;
|
|
15
|
-
if (useUrl) {
|
|
16
|
-
return `${useUrl.split("?")[0]}`;
|
|
17
|
-
}
|
|
18
|
-
return "";
|
|
19
|
-
}, [currentUrl, inputRedirectUrl]);
|
|
20
|
-
const endpoints = useOAuthEndpoints(oauthServer);
|
|
21
|
-
const logoutRedirectUrl = useMemo(() => {
|
|
22
|
-
const useUrl = inputLogoutRedirectUrl || currentUrl;
|
|
23
|
-
if (useUrl) {
|
|
24
|
-
return `${useUrl.split("?")[0]}`;
|
|
25
|
-
}
|
|
26
|
-
return "";
|
|
27
|
-
}, [currentUrl, inputLogoutRedirectUrl]);
|
|
28
|
-
const value = useMemo(() => endpoints
|
|
29
|
-
? {
|
|
30
|
-
clientId,
|
|
31
|
-
redirectUrl,
|
|
32
|
-
loginSuccessUrl,
|
|
33
|
-
oauthServer: oauthServer || DEFAULT_AUTH_SERVER,
|
|
34
|
-
endpoints,
|
|
35
|
-
nonce,
|
|
36
|
-
challengeUrl,
|
|
37
|
-
refreshUrl,
|
|
38
|
-
logoutUrl,
|
|
39
|
-
scopes: scopes || DEFAULT_SCOPES,
|
|
40
|
-
logoutRedirectUrl,
|
|
41
|
-
displayMode,
|
|
42
|
-
framework,
|
|
43
|
-
autoRedirect,
|
|
44
|
-
targetContainerElement,
|
|
45
|
-
}
|
|
46
|
-
: null, [
|
|
47
|
-
clientId,
|
|
48
|
-
redirectUrl,
|
|
49
|
-
loginSuccessUrl,
|
|
50
|
-
oauthServer,
|
|
51
|
-
endpoints,
|
|
52
|
-
nonce,
|
|
53
|
-
challengeUrl,
|
|
54
|
-
refreshUrl,
|
|
55
|
-
logoutUrl,
|
|
56
|
-
scopes,
|
|
57
|
-
logoutRedirectUrl,
|
|
58
|
-
displayMode,
|
|
59
|
-
framework,
|
|
60
|
-
autoRedirect,
|
|
61
|
-
targetContainerElement,
|
|
62
|
-
]);
|
|
63
|
-
return (_jsx(CivicAuthConfigContext.Provider, { value: value, children: children }));
|
|
64
|
-
};
|
|
65
|
-
export { CivicAuthConfigProvider, CivicAuthConfigContext };
|
|
66
|
-
//# sourceMappingURL=CivicAuthConfigContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuthConfigContext.js","sourceRoot":"","sources":["../../../src/shared/providers/CivicAuthConfigContext.tsx"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,YAAY,CAAC;;AAEb,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,MAAM,aAAa,GAAoB,IAAI,CAAC;AAoB5C,gEAAgE;AAChE,MAAM,sBAAsB,GAAG,aAAa,CAAkB,aAAa,CAAC,CAAC;AAE7E,MAAM,uBAAuB,GAAG,CAAC,EAC/B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EAAE,gBAAgB,EAC7B,eAAe,EACf,KAAK,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,MAAM,EACN,iBAAiB,EAAE,sBAAsB,EACzC,WAAW,GAAG,QAAQ,EACtB,SAAS,EACT,YAAY,EACZ,sBAAsB,GACK,EAAE,EAAE;IAC/B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,gBAAgB,IAAI,UAAU,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAEjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,sBAAsB,IAAI,UAAU,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CACH,SAAS;QACP,CAAC,CAAC;YACE,QAAQ;YACR,WAAW;YACX,eAAe;YACf,WAAW,EAAE,WAAW,IAAI,mBAAmB;YAC/C,SAAS;YACT,KAAK;YACL,YAAY;YACZ,UAAU;YACV,SAAS;YACT,MAAM,EAAE,MAAM,IAAI,cAAc;YAChC,iBAAiB;YACjB,WAAW;YACX,SAAS;YACT,YAAY;YACZ,sBAAsB;SACvB;QACH,CAAC,CAAC,IAAI,EACV;QACE,QAAQ;QACR,WAAW;QACX,eAAe;QACf,WAAW;QACX,SAAS;QACT,KAAK;QACL,YAAY;QACZ,UAAU;QACV,SAAS;QACT,MAAM;QACN,iBAAiB;QACjB,WAAW;QACX,SAAS;QACT,YAAY;QACZ,sBAAsB;KACvB,CACF,CAAC;IACF,OAAO,CACL,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC1C,QAAQ,GACuB,CACnC,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,CAAC","sourcesContent":["/** @jsxImportSource react */\n\"use client\";\n\nimport { DEFAULT_AUTH_SERVER, DEFAULT_SCOPES } from \"@/constants.js\";\nimport { createContext, useMemo, type ReactNode } from \"react\";\nimport { useOAuthEndpoints } from \"@/shared/hooks/useOAuthEndpoints.js\";\nimport { useCurrentUrl } from \"@/shared/hooks/useCurrentUrl.js\";\nimport type { CivicAuthConfig } from \"../lib/types.js\";\nimport type { DisplayMode, FrameworkType } from \"@/types.js\";\n\nconst defaultConfig: CivicAuthConfig = null;\n\ntype CivicAuthConfigContextType = {\n children: ReactNode;\n oauthServer?: string;\n clientId: string;\n scopes?: string[];\n redirectUrl?: string; // Where the auth server will redirect the user after login.\n loginSuccessUrl?: string; // where the user will be sent after the entire login process has completed. By default, they stay on the redirect_url (or the page the login was initiated from)\n logoutRedirectUrl?: string;\n nonce?: string;\n challengeUrl?: string;\n refreshUrl?: string;\n logoutUrl?: string;\n logoutCallbackUrl?: string;\n displayMode?: DisplayMode;\n framework?: FrameworkType;\n autoRedirect?: boolean;\n targetContainerElement?: HTMLElement | string;\n};\n// Context for exposing Config specifically to the TokenProvider\nconst CivicAuthConfigContext = createContext<CivicAuthConfig>(defaultConfig);\n\nconst CivicAuthConfigProvider = ({\n children,\n oauthServer,\n clientId,\n redirectUrl: inputRedirectUrl,\n loginSuccessUrl,\n nonce,\n challengeUrl,\n refreshUrl,\n logoutUrl,\n scopes,\n logoutRedirectUrl: inputLogoutRedirectUrl,\n displayMode = \"iframe\",\n framework,\n autoRedirect,\n targetContainerElement,\n}: CivicAuthConfigContextType) => {\n const currentUrl = useCurrentUrl();\n\n const redirectUrl = useMemo(() => {\n const useUrl = inputRedirectUrl || currentUrl;\n if (useUrl) {\n return `${useUrl.split(\"?\")[0]}`;\n }\n return \"\";\n }, [currentUrl, inputRedirectUrl]);\n const endpoints = useOAuthEndpoints(oauthServer);\n\n const logoutRedirectUrl = useMemo(() => {\n const useUrl = inputLogoutRedirectUrl || currentUrl;\n if (useUrl) {\n return `${useUrl.split(\"?\")[0]}`;\n }\n return \"\";\n }, [currentUrl, inputLogoutRedirectUrl]);\n\n const value = useMemo(\n () =>\n endpoints\n ? {\n clientId,\n redirectUrl,\n loginSuccessUrl,\n oauthServer: oauthServer || DEFAULT_AUTH_SERVER,\n endpoints,\n nonce,\n challengeUrl,\n refreshUrl,\n logoutUrl,\n scopes: scopes || DEFAULT_SCOPES,\n logoutRedirectUrl,\n displayMode,\n framework,\n autoRedirect,\n targetContainerElement,\n }\n : null,\n [\n clientId,\n redirectUrl,\n loginSuccessUrl,\n oauthServer,\n endpoints,\n nonce,\n challengeUrl,\n refreshUrl,\n logoutUrl,\n scopes,\n logoutRedirectUrl,\n displayMode,\n framework,\n autoRedirect,\n targetContainerElement,\n ],\n );\n return (\n <CivicAuthConfigContext.Provider value={value}>\n {children}\n </CivicAuthConfigContext.Provider>\n );\n};\n\nexport { CivicAuthConfigProvider, CivicAuthConfigContext };\n"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { SessionData } from "../../types.js";
|
|
2
|
-
import type { ReactNode } from "react";
|
|
3
|
-
import React from "react";
|
|
4
|
-
export type SessionProviderOutput = {
|
|
5
|
-
data: SessionData | null;
|
|
6
|
-
error: Error | null;
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
};
|
|
9
|
-
declare const SessionContext: React.Context<SessionProviderOutput>;
|
|
10
|
-
type SessionContextType = {
|
|
11
|
-
children: ReactNode;
|
|
12
|
-
data?: SessionData | null;
|
|
13
|
-
error?: Error | null;
|
|
14
|
-
isLoading: boolean;
|
|
15
|
-
};
|
|
16
|
-
declare const SessionProvider: ({ children, ...props }: SessionContextType) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
17
|
-
export type { SessionContextType };
|
|
18
|
-
export { SessionProvider, SessionContext };
|
|
19
|
-
//# sourceMappingURL=SessionProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/SessionProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAcF,QAAA,MAAM,cAAc,sCAAuD,CAAC;AAE5E,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,eAAe,2BAA4B,kBAAkB,qDAYlE,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
3
|
-
import React, { createContext } from "react";
|
|
4
|
-
const defaultSession = {
|
|
5
|
-
data: {
|
|
6
|
-
authenticated: false,
|
|
7
|
-
idToken: undefined,
|
|
8
|
-
accessToken: undefined,
|
|
9
|
-
displayMode: "iframe",
|
|
10
|
-
},
|
|
11
|
-
error: null,
|
|
12
|
-
// initialise in loading state
|
|
13
|
-
isLoading: true,
|
|
14
|
-
};
|
|
15
|
-
// Context for exposing session specifically to the TokenProvider
|
|
16
|
-
const SessionContext = createContext(defaultSession);
|
|
17
|
-
const SessionProvider = ({ children, ...props }) => {
|
|
18
|
-
return (_jsx(SessionContext.Provider, { value: {
|
|
19
|
-
...props,
|
|
20
|
-
data: props.data || null,
|
|
21
|
-
error: props.error || null,
|
|
22
|
-
}, children: children }));
|
|
23
|
-
};
|
|
24
|
-
export { SessionProvider, SessionContext };
|
|
25
|
-
//# sourceMappingURL=SessionProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/SessionProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAO7C,MAAM,cAAc,GAA0B;IAC5C,IAAI,EAAE;QACJ,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,QAAQ;KACtB;IACD,KAAK,EAAE,IAAI;IACX,8BAA8B;IAC9B,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,iEAAiE;AACjE,MAAM,cAAc,GAAG,aAAa,CAAwB,cAAc,CAAC,CAAC;AAS5E,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAsB,EAAE,EAAE;IACrE,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IACtB,KAAK,EAAE;YACL,GAAG,KAAK;YACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;SAC3B,YAEA,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC,CAAC;AAGF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC","sourcesContent":["\"use client\";\nimport type { SessionData } from \"@/types.js\";\nimport type { ReactNode } from \"react\";\nimport React, { createContext } from \"react\";\n\nexport type SessionProviderOutput = {\n data: SessionData | null;\n error: Error | null;\n isLoading: boolean;\n};\nconst defaultSession: SessionProviderOutput = {\n data: {\n authenticated: false,\n idToken: undefined,\n accessToken: undefined,\n displayMode: \"iframe\",\n },\n error: null,\n // initialise in loading state\n isLoading: true,\n};\n\n// Context for exposing session specifically to the TokenProvider\nconst SessionContext = createContext<SessionProviderOutput>(defaultSession);\n\ntype SessionContextType = {\n children: ReactNode;\n data?: SessionData | null;\n error?: Error | null;\n isLoading: boolean;\n};\n\nconst SessionProvider = ({ children, ...props }: SessionContextType) => {\n return (\n <SessionContext.Provider\n value={{\n ...props,\n data: props.data || null,\n error: props.error || null,\n }}\n >\n {children}\n </SessionContext.Provider>\n );\n};\n\nexport type { SessionContextType };\nexport { SessionProvider, SessionContext };\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from "react";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import type { ForwardedTokens } from "../../types.js";
|
|
4
|
-
type TokenContextType = {
|
|
5
|
-
accessToken: string | null;
|
|
6
|
-
idToken: string | null;
|
|
7
|
-
forwardedTokens: ForwardedTokens;
|
|
8
|
-
isLoading: boolean;
|
|
9
|
-
error: Error | null;
|
|
10
|
-
};
|
|
11
|
-
declare const TokenContext: React.Context<TokenContextType | undefined>;
|
|
12
|
-
declare const TokenProvider: ({ children }: {
|
|
13
|
-
children: ReactNode;
|
|
14
|
-
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
15
|
-
export type { TokenContextType };
|
|
16
|
-
export { TokenProvider, TokenContext };
|
|
17
|
-
//# sourceMappingURL=TokenProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/TokenProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,YAAY,6CAAyD,CAAC;AAE5E,QAAA,MAAM,aAAa,iBAAkB;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,qDA8B3D,CAAC;AAEF,YAAY,EAAE,gBAAgB,EAAE,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
3
|
-
import React, { createContext, useMemo } from "react";
|
|
4
|
-
import { useSession } from "../../shared/hooks/useSession.js";
|
|
5
|
-
import { extractTokensFromSession } from "../../vanillajs/utils/auth-utils.js";
|
|
6
|
-
const TokenContext = createContext(undefined);
|
|
7
|
-
const TokenProvider = ({ children }) => {
|
|
8
|
-
const { data: session, isLoading, error: authError } = useSession();
|
|
9
|
-
const decodeTokens = useMemo(() => {
|
|
10
|
-
if (!session?.idToken)
|
|
11
|
-
return null;
|
|
12
|
-
const tokens = extractTokensFromSession(session);
|
|
13
|
-
return tokens.forwardedTokens || null;
|
|
14
|
-
}, [session]);
|
|
15
|
-
const value = useMemo(() => ({
|
|
16
|
-
accessToken: session?.accessToken || null,
|
|
17
|
-
idToken: session?.idToken || null,
|
|
18
|
-
forwardedTokens: decodeTokens || {},
|
|
19
|
-
isLoading,
|
|
20
|
-
error: authError,
|
|
21
|
-
}), [
|
|
22
|
-
session?.accessToken,
|
|
23
|
-
session?.idToken,
|
|
24
|
-
decodeTokens,
|
|
25
|
-
isLoading,
|
|
26
|
-
authError,
|
|
27
|
-
]);
|
|
28
|
-
return (_jsx(TokenContext.Provider, { value: value, children: children }));
|
|
29
|
-
};
|
|
30
|
-
export { TokenProvider, TokenContext };
|
|
31
|
-
//# sourceMappingURL=TokenProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TokenProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/TokenProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAU3E,MAAM,YAAY,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;AAE5E,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IAC9D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IAEpE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,OAAO,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;IACxC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;QACzC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;QACjC,eAAe,EAAE,YAAY,IAAI,EAAE;QACnC,SAAS;QACT,KAAK,EAAE,SAAyB;KACjC,CAAC,EACF;QACE,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,OAAO;QAChB,YAAY;QACZ,SAAS;QACT,SAAS;KACV,CACF,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CACxE,CAAC;AACJ,CAAC,CAAC;AAGF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC","sourcesContent":["\"use client\";\nimport type { ReactNode } from \"react\";\nimport React, { createContext, useMemo } from \"react\";\nimport { useSession } from \"@/shared/hooks/useSession.js\";\nimport type { ForwardedTokens } from \"@/types.js\";\nimport { extractTokensFromSession } from \"@/vanillajs/utils/auth-utils.js\";\n\ntype TokenContextType = {\n accessToken: string | null;\n idToken: string | null;\n forwardedTokens: ForwardedTokens;\n isLoading: boolean;\n error: Error | null;\n};\n\nconst TokenContext = createContext<TokenContextType | undefined>(undefined);\n\nconst TokenProvider = ({ children }: { children: ReactNode }) => {\n const { data: session, isLoading, error: authError } = useSession();\n\n const decodeTokens = useMemo(() => {\n if (!session?.idToken) return null;\n\n const tokens = extractTokensFromSession(session);\n return tokens.forwardedTokens || null;\n }, [session]);\n\n const value = useMemo(\n () => ({\n accessToken: session?.accessToken || null,\n idToken: session?.idToken || null,\n forwardedTokens: decodeTokens || {},\n isLoading,\n error: authError as Error | null,\n }),\n [\n session?.accessToken,\n session?.idToken,\n decodeTokens,\n isLoading,\n authError,\n ],\n );\n\n return (\n <TokenContext.Provider value={value}>{children}</TokenContext.Provider>\n );\n};\n\nexport type { TokenContextType };\nexport { TokenProvider, TokenContext };\n"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { ReactNode } from "react";
|
|
3
|
-
import type { AuthStatus, AuthStorage, DisplayMode, ForwardedTokens, User } from "../../types.js";
|
|
4
|
-
import type { AuthContextType } from "../../shared/providers/AuthContext.js";
|
|
5
|
-
import type { JWTPayload } from "jose";
|
|
6
|
-
type UserContent = Record<string, unknown> & JWTPayload;
|
|
7
|
-
type UserContextType<T extends UserContent = UserContent> = {
|
|
8
|
-
user: User<T> | null;
|
|
9
|
-
} & {
|
|
10
|
-
accessToken?: string | null;
|
|
11
|
-
idToken?: string | null;
|
|
12
|
-
forwardedTokens?: ForwardedTokens;
|
|
13
|
-
} & Omit<AuthContextType, "isAuthenticated">;
|
|
14
|
-
declare const UserContext: React.Context<UserContextType<UserContent> | null>;
|
|
15
|
-
declare const UserProvider: <T extends UserContent>({ children, storage, user: inputUser, signOut, authStatus, signIn, displayMode, }: {
|
|
16
|
-
children: ReactNode;
|
|
17
|
-
storage: AuthStorage;
|
|
18
|
-
user: User<T> | null;
|
|
19
|
-
signOut: () => Promise<void>;
|
|
20
|
-
authStatus: AuthStatus;
|
|
21
|
-
signIn: (displayMode?: DisplayMode) => Promise<void>;
|
|
22
|
-
displayMode: DisplayMode;
|
|
23
|
-
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
24
|
-
export type { UserContextType };
|
|
25
|
-
export { UserProvider, UserContext };
|
|
26
|
-
//# sourceMappingURL=UserProvider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;AACxD,KAAK,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAC1D,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACtB,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAE7C,QAAA,MAAM,WAAW,oDAA8C,CAAC;AAEhE,QAAA,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,qFAQxC;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,WAAW,EAAE,WAAW,CAAC;CAC1B,qDAmEA,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
3
|
-
import React, { createContext, useCallback, useEffect, useState } from "react";
|
|
4
|
-
import { useSession } from "../../shared/hooks/useSession.js";
|
|
5
|
-
import { GenericUserSession } from "../../shared/lib/UserSession.js";
|
|
6
|
-
import { useToken } from "../hooks/useToken.js";
|
|
7
|
-
const UserContext = createContext(null);
|
|
8
|
-
const UserProvider = ({ children, storage, user: inputUser, signOut, authStatus, signIn, displayMode, }) => {
|
|
9
|
-
const { data: session, error: authError, isLoading: authLoading, } = useSession();
|
|
10
|
-
const tokens = useToken();
|
|
11
|
-
const [userLoading, setUserLoading] = useState(false);
|
|
12
|
-
const [userError, setUserError] = useState(null);
|
|
13
|
-
const [user, setUser] = useState(inputUser);
|
|
14
|
-
const fetchUser = useCallback(async () => {
|
|
15
|
-
if (!session?.idToken)
|
|
16
|
-
return null;
|
|
17
|
-
const userSession = new GenericUserSession(storage);
|
|
18
|
-
return userSession.get();
|
|
19
|
-
}, [session?.idToken, storage]);
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
if (session?.idToken) {
|
|
22
|
-
setUserLoading(true);
|
|
23
|
-
fetchUser()
|
|
24
|
-
.then((user) => {
|
|
25
|
-
setUserLoading(false);
|
|
26
|
-
setUser((prevUser) => {
|
|
27
|
-
// we only want to update the user if it's set - if a user is passed in, don't assume it is wrong here
|
|
28
|
-
// it could be just the fetchUser returned null for some other reason.
|
|
29
|
-
// TODO consider cleaning this up in general to avoid needing context here.
|
|
30
|
-
return user ?? prevUser;
|
|
31
|
-
});
|
|
32
|
-
})
|
|
33
|
-
.catch((error) => {
|
|
34
|
-
setUserLoading(false);
|
|
35
|
-
setUserError(error);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
setUser(null);
|
|
40
|
-
}
|
|
41
|
-
}, [fetchUser, session?.idToken]);
|
|
42
|
-
const isLoading = authLoading || userLoading;
|
|
43
|
-
const error = authError ?? userError;
|
|
44
|
-
// While we are passing a user as a prop _and_ storing it in state,
|
|
45
|
-
// there is the case where the user is not set in the state yet
|
|
46
|
-
// (setState is called but the rerender has not yet happened), but
|
|
47
|
-
// is passed as a prop. In this case, we want to use the prop value.
|
|
48
|
-
// A better solution is to avoid having multiple layers of context.
|
|
49
|
-
// If the user is passed in, we just use that.
|
|
50
|
-
// We should not split user state management across multiple contexts
|
|
51
|
-
const userValue = user ?? inputUser;
|
|
52
|
-
return (_jsx(UserContext.Provider, { value: {
|
|
53
|
-
...tokens,
|
|
54
|
-
user: userValue,
|
|
55
|
-
isLoading,
|
|
56
|
-
error,
|
|
57
|
-
signIn,
|
|
58
|
-
signOut,
|
|
59
|
-
authStatus,
|
|
60
|
-
displayMode: displayMode || "iframe",
|
|
61
|
-
}, children: children }));
|
|
62
|
-
};
|
|
63
|
-
export { UserProvider, UserContext };
|
|
64
|
-
//# sourceMappingURL=UserProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { createContext, useCallback, useEffect, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type {\n AuthStatus,\n AuthStorage,\n DisplayMode,\n ForwardedTokens,\n User,\n} from \"@/types.js\";\nimport { useSession } from \"@/shared/hooks/useSession.js\";\nimport type { AuthContextType } from \"@/shared/providers/AuthContext.js\";\nimport { GenericUserSession } from \"@/shared/lib/UserSession.js\";\nimport { useToken } from \"../hooks/useToken.js\";\nimport type { JWTPayload } from \"jose\";\n\ntype UserContent = Record<string, unknown> & JWTPayload;\ntype UserContextType<T extends UserContent = UserContent> = {\n user: User<T> | null;\n} & {\n accessToken?: string | null;\n idToken?: string | null;\n forwardedTokens?: ForwardedTokens;\n} & Omit<AuthContextType, \"isAuthenticated\">;\n\nconst UserContext = createContext<UserContextType | null>(null);\n\nconst UserProvider = <T extends UserContent>({\n children,\n storage,\n user: inputUser,\n signOut,\n authStatus,\n signIn,\n displayMode,\n}: {\n children: ReactNode;\n storage: AuthStorage;\n user: User<T> | null;\n signOut: () => Promise<void>;\n authStatus: AuthStatus;\n signIn: (displayMode?: DisplayMode) => Promise<void>;\n displayMode: DisplayMode;\n}) => {\n const {\n data: session,\n error: authError,\n isLoading: authLoading,\n } = useSession();\n const tokens = useToken();\n const [userLoading, setUserLoading] = useState<boolean>(false);\n const [userError, setUserError] = useState<Error | null>(null);\n const [user, setUser] = useState<User<T> | null>(inputUser);\n\n const fetchUser = useCallback(async (): Promise<User<T> | null> => {\n if (!session?.idToken) return null;\n const userSession = new GenericUserSession<T>(storage);\n return userSession.get();\n }, [session?.idToken, storage]);\n\n useEffect(() => {\n if (session?.idToken) {\n setUserLoading(true);\n fetchUser()\n .then((user) => {\n setUserLoading(false);\n setUser((prevUser) => {\n // we only want to update the user if it's set - if a user is passed in, don't assume it is wrong here\n // it could be just the fetchUser returned null for some other reason.\n // TODO consider cleaning this up in general to avoid needing context here.\n return user ?? prevUser;\n });\n })\n .catch((error) => {\n setUserLoading(false);\n setUserError(error);\n });\n } else {\n setUser(null);\n }\n }, [fetchUser, session?.idToken]);\n\n const isLoading = authLoading || userLoading;\n const error = authError ?? userError;\n\n // While we are passing a user as a prop _and_ storing it in state,\n // there is the case where the user is not set in the state yet\n // (setState is called but the rerender has not yet happened), but\n // is passed as a prop. In this case, we want to use the prop value.\n // A better solution is to avoid having multiple layers of context.\n // If the user is passed in, we just use that.\n // We should not split user state management across multiple contexts\n const userValue = user ?? inputUser;\n\n return (\n <UserContext.Provider\n value={{\n ...tokens,\n user: userValue,\n isLoading,\n error,\n signIn,\n signOut,\n authStatus,\n displayMode: displayMode || \"iframe\",\n }}\n >\n {children}\n </UserContext.Provider>\n );\n};\n\nexport type { UserContextType };\n\nexport { UserProvider, UserContext };\n"]}
|