@civic/auth 0.11.3-alpha.0 → 0.11.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/reactjs/core/GlobalAuthManager.d.ts.map +1 -1
- package/dist/reactjs/core/GlobalAuthManager.js +0 -6
- 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/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -1
- package/dist/vanillajs/auth/CivicAuth.js +0 -4
- package/dist/vanillajs/auth/CivicAuth.js.map +1 -1
- package/package.json +5 -5
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useClientTokenExchangeSession.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useClientTokenExchangeSession.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B;;;;4BAMR,MAAM;CAIvC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
// This hook was part of the old ReactJS token exchange system
|
|
3
|
-
// It's kept here to maintain compatibility with shared components
|
|
4
|
-
// that haven't been updated to use the VanillaJS core.
|
|
5
|
-
// It's deprecated and will be removed in a future version.
|
|
6
|
-
export const useClientTokenExchangeSession = () => {
|
|
7
|
-
return {
|
|
8
|
-
data: null,
|
|
9
|
-
error: null,
|
|
10
|
-
isLoading: false,
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Parameter is required for API compatibility but not used since functionality is now in VanillaJS core
|
|
12
|
-
doTokenExchange: async (_url) => {
|
|
13
|
-
// Do nothing - this functionality is now handled by VanillaJS core
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=useClientTokenExchangeSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useClientTokenExchangeSession.js","sourceRoot":"","sources":["../../../src/shared/hooks/useClientTokenExchangeSession.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,8DAA8D;AAC9D,kEAAkE;AAClE,uDAAuD;AACvD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,KAAK;QAChB,sKAAsK;QACtK,eAAe,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,mEAAmE;QACrE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["\"use client\";\n\n// This hook was part of the old ReactJS token exchange system\n// It's kept here to maintain compatibility with shared components\n// that haven't been updated to use the VanillaJS core.\n// It's deprecated and will be removed in a future version.\nexport const useClientTokenExchangeSession = () => {\n return {\n data: null,\n error: null,\n isLoading: false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Parameter is required for API compatibility but not used since functionality is now in VanillaJS core\n doTokenExchange: async (_url: string) => {\n // Do nothing - this functionality is now handled by VanillaJS core\n },\n };\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentUrl.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useCurrentUrl.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,aAAa,0BAuBlB,CAAC;AACF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
const useCurrentUrl = () => {
|
|
3
|
-
const [currentUrl, setCurrentUrl] = useState();
|
|
4
|
-
// update the current url when the url changes
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
const handleUrlChange = () => {
|
|
7
|
-
setCurrentUrl(window.location.href);
|
|
8
|
-
};
|
|
9
|
-
window.addEventListener("popstate", handleUrlChange);
|
|
10
|
-
window.addEventListener("pushstate", handleUrlChange);
|
|
11
|
-
window.addEventListener("replacestate", handleUrlChange);
|
|
12
|
-
handleUrlChange();
|
|
13
|
-
return () => {
|
|
14
|
-
if (typeof window !== "undefined") {
|
|
15
|
-
window.removeEventListener("popstate", handleUrlChange);
|
|
16
|
-
window.removeEventListener("pushstate", handleUrlChange);
|
|
17
|
-
window.removeEventListener("replacestate", handleUrlChange);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
}, []);
|
|
21
|
-
return currentUrl;
|
|
22
|
-
};
|
|
23
|
-
export { useCurrentUrl };
|
|
24
|
-
//# sourceMappingURL=useCurrentUrl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentUrl.js","sourceRoot":"","sources":["../../../src/shared/hooks/useCurrentUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,EAAsB,CAAC;IACnE,8CAA8C;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAEzD,eAAe,EAAE,CAAC;QAElB,OAAO,GAAG,EAAE;YACV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBACxD,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBACzD,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AACF,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { useEffect, useState } from \"react\";\n\nconst useCurrentUrl = () => {\n const [currentUrl, setCurrentUrl] = useState<string | undefined>();\n // update the current url when the url changes\n useEffect(() => {\n const handleUrlChange = () => {\n setCurrentUrl(window.location.href);\n };\n window.addEventListener(\"popstate\", handleUrlChange);\n window.addEventListener(\"pushstate\", handleUrlChange);\n window.addEventListener(\"replacestate\", handleUrlChange);\n\n handleUrlChange();\n\n return () => {\n if (typeof window !== \"undefined\") {\n window.removeEventListener(\"popstate\", handleUrlChange);\n window.removeEventListener(\"pushstate\", handleUrlChange);\n window.removeEventListener(\"replacestate\", handleUrlChange);\n }\n };\n }, []);\n\n return currentUrl;\n};\nexport { useCurrentUrl };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useOAuthEndpoints.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useOAuthEndpoints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,QAAA,MAAM,iBAAiB,iBAAkB,MAAM,qBAW9C,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_AUTH_SERVER } from "../../constants.js";
|
|
2
|
-
import { getOauthEndpoints } from "../../lib/oauth.js";
|
|
3
|
-
import { useEffect, useState } from "react";
|
|
4
|
-
const useOAuthEndpoints = (oauthServer) => {
|
|
5
|
-
const [endpoints, setEndpoints] = useState(null);
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
getOauthEndpoints(oauthServer || DEFAULT_AUTH_SERVER).then((retrievedEndpoints) => {
|
|
8
|
-
setEndpoints(retrievedEndpoints);
|
|
9
|
-
});
|
|
10
|
-
}, [oauthServer]);
|
|
11
|
-
return endpoints;
|
|
12
|
-
};
|
|
13
|
-
export { useOAuthEndpoints };
|
|
14
|
-
//# sourceMappingURL=useOAuthEndpoints.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useOAuthEndpoints.js","sourceRoot":"","sources":["../../../src/shared/hooks/useOAuthEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,iBAAiB,GAAG,CAAC,WAAoB,EAAE,EAAE;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IACnE,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,WAAW,IAAI,mBAAmB,CAAC,CAAC,IAAI,CACxD,CAAC,kBAAkB,EAAE,EAAE;YACrB,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC","sourcesContent":["import { DEFAULT_AUTH_SERVER } from \"@/constants.js\";\nimport { getOauthEndpoints } from \"@/lib/oauth.js\";\nimport type { Endpoints } from \"@/types.js\";\nimport { useEffect, useState } from \"react\";\n\nconst useOAuthEndpoints = (oauthServer?: string) => {\n const [endpoints, setEndpoints] = useState<Endpoints | null>(null);\n useEffect(() => {\n getOauthEndpoints(oauthServer || DEFAULT_AUTH_SERVER).then(\n (retrievedEndpoints) => {\n setEndpoints(retrievedEndpoints);\n },\n );\n }, [oauthServer]);\n\n return endpoints;\n};\n\nexport { useOAuthEndpoints };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRefresh.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,QAAA,MAAM,UAAU,YAAa,WAAW,GAAG,IAAI;;CAiD9C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { useEffect, useMemo, useState } from "react";
|
|
2
|
-
import { useCivicAuthConfig } from "./useCivicAuthConfig.js";
|
|
3
|
-
import { LocalStorageAdapter } from "../../browser/storage.js";
|
|
4
|
-
import { BrowserAuthenticationRefresher } from "../lib/BrowserAuthenticationRefresher.js";
|
|
5
|
-
const useRefresh = (session) => {
|
|
6
|
-
const authConfig = useCivicAuthConfig();
|
|
7
|
-
const storage = useMemo(() => new LocalStorageAdapter(), []);
|
|
8
|
-
const [error, setError] = useState();
|
|
9
|
-
// setup token autorefresh
|
|
10
|
-
const [refresher, setRefresher] = useState(undefined);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
if (!authConfig)
|
|
13
|
-
return;
|
|
14
|
-
const abortController = new AbortController();
|
|
15
|
-
const currentRefresher = refresher;
|
|
16
|
-
const onError = async (error) => {
|
|
17
|
-
console.error("Error refreshing token", error);
|
|
18
|
-
refresher?.clearAutorefresh();
|
|
19
|
-
setError(error);
|
|
20
|
-
};
|
|
21
|
-
BrowserAuthenticationRefresher.build({ ...authConfig }, storage, onError).then((newRefresher) => {
|
|
22
|
-
if (abortController.signal.aborted)
|
|
23
|
-
return;
|
|
24
|
-
currentRefresher?.clearAutorefresh();
|
|
25
|
-
setRefresher(newRefresher);
|
|
26
|
-
});
|
|
27
|
-
return () => {
|
|
28
|
-
abortController.abort();
|
|
29
|
-
currentRefresher?.clearAutorefresh();
|
|
30
|
-
};
|
|
31
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
-
}, [authConfig, storage]); // Only depend on what actually changes
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
if (session?.authenticated) {
|
|
35
|
-
refresher?.setupAutorefresh();
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
refresher?.clearAutorefresh();
|
|
39
|
-
}
|
|
40
|
-
return () => refresher?.clearAutorefresh();
|
|
41
|
-
}, [refresher, session?.authenticated]);
|
|
42
|
-
return {
|
|
43
|
-
error,
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
export { useRefresh };
|
|
47
|
-
//# sourceMappingURL=useRefresh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRefresh.js","sourceRoot":"","sources":["../../../src/shared/hooks/useRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAE1F,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAE,EAAE;IACjD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAC;IAC5C,0BAA0B;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAExC,SAAS,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAEnC,MAAM,OAAO,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;YACrC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,SAAS,EAAE,gBAAgB,EAAE,CAAC;YAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,8BAA8B,CAAC,KAAK,CAClC,EAAE,GAAG,UAAU,EAAE,EACjB,OAAO,EACP,OAAO,CACR,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;YACtB,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YAE3C,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;YACrC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAuC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3B,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7C,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACxC,OAAO;QACL,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { useCivicAuthConfig } from \"./useCivicAuthConfig.js\";\nimport type { SessionData } from \"@/types.js\";\nimport { LocalStorageAdapter } from \"@/browser/storage.js\";\nimport { BrowserAuthenticationRefresher } from \"../lib/BrowserAuthenticationRefresher.js\";\n\nconst useRefresh = (session: SessionData | null) => {\n const authConfig = useCivicAuthConfig();\n const storage = useMemo(() => new LocalStorageAdapter(), []);\n const [error, setError] = useState<Error>();\n // setup token autorefresh\n const [refresher, setRefresher] = useState<\n BrowserAuthenticationRefresher | undefined\n >(undefined);\n\n useEffect(() => {\n if (!authConfig) return;\n const abortController = new AbortController();\n const currentRefresher = refresher;\n\n const onError = async (error: Error) => {\n console.error(\"Error refreshing token\", error);\n refresher?.clearAutorefresh();\n setError(error);\n };\n BrowserAuthenticationRefresher.build(\n { ...authConfig },\n storage,\n onError,\n ).then((newRefresher) => {\n if (abortController.signal.aborted) return;\n\n currentRefresher?.clearAutorefresh();\n setRefresher(newRefresher);\n });\n\n return () => {\n abortController.abort();\n currentRefresher?.clearAutorefresh();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authConfig, storage]); // Only depend on what actually changes\n\n useEffect(() => {\n if (session?.authenticated) {\n refresher?.setupAutorefresh();\n } else {\n refresher?.clearAutorefresh();\n }\n\n return () => refresher?.clearAutorefresh();\n }, [refresher, session?.authenticated]);\n return {\n error,\n };\n};\n\nexport { useRefresh };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useSession.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,UAAU,6EAMf,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useContext } from "react";
|
|
3
|
-
import { SessionContext } from "../../shared/providers/SessionProvider.js";
|
|
4
|
-
// TokenProvider will use this internal context to access session
|
|
5
|
-
const useSession = () => {
|
|
6
|
-
const context = useContext(SessionContext);
|
|
7
|
-
if (!context) {
|
|
8
|
-
throw new Error("useSession must be used within an SessionProvider");
|
|
9
|
-
}
|
|
10
|
-
return context;
|
|
11
|
-
};
|
|
12
|
-
export { useSession };
|
|
13
|
-
//# sourceMappingURL=useSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.js","sourceRoot":"","sources":["../../../src/shared/hooks/useSession.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,iEAAiE;AACjE,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { SessionContext } from \"@/shared/providers/SessionProvider.js\";\n\n// TokenProvider will use this internal context to access session\nconst useSession = () => {\n const context = useContext(SessionContext);\n if (!context) {\n throw new Error(\"useSession must be used within an SessionProvider\");\n }\n return context;\n};\n\nexport { useSession };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useToken.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useToken.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,sEAQb,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useContext } from "react";
|
|
3
|
-
import { TokenContext } from "../../shared/providers/TokenProvider.js";
|
|
4
|
-
const useToken = () => {
|
|
5
|
-
const context = useContext(TokenContext);
|
|
6
|
-
if (!context) {
|
|
7
|
-
throw new Error("useToken must be used within a TokenProvider");
|
|
8
|
-
}
|
|
9
|
-
return context;
|
|
10
|
-
};
|
|
11
|
-
export { useToken };
|
|
12
|
-
//# sourceMappingURL=useToken.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useToken.js","sourceRoot":"","sources":["../../../src/shared/hooks/useToken.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["\"use client\";\nimport { useContext } from \"react\";\nimport { TokenContext } from \"@/shared/providers/TokenProvider.js\";\n\nconst useToken = () => {\n const context = useContext(TokenContext);\n\n if (!context) {\n throw new Error(\"useToken must be used within a TokenProvider\");\n }\n\n return context;\n};\n\nexport { useToken };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowFocused.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useWindowFocused.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,gBAAgB;;CAmBrB,CAAC;AACF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -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
|