@civic/auth 0.11.3-alpha.1 → 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.
Files changed (80) hide show
  1. package/dist/reactjs/core/GlobalAuthManager.d.ts.map +1 -1
  2. package/dist/reactjs/core/GlobalAuthManager.js +0 -7
  3. package/dist/reactjs/core/GlobalAuthManager.js.map +1 -1
  4. package/dist/shared/version.d.ts +1 -1
  5. package/dist/shared/version.d.ts.map +1 -1
  6. package/dist/shared/version.js +1 -1
  7. package/dist/shared/version.js.map +1 -1
  8. package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -1
  9. package/dist/vanillajs/auth/CivicAuth.js +0 -4
  10. package/dist/vanillajs/auth/CivicAuth.js.map +1 -1
  11. package/package.json +3 -3
  12. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts +0 -8
  13. package/dist/nextjs/NextClientAuthenticationRefresher.d.ts.map +0 -1
  14. package/dist/nextjs/NextClientAuthenticationRefresher.js +0 -24
  15. package/dist/nextjs/NextClientAuthenticationRefresher.js.map +0 -1
  16. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts +0 -12
  17. package/dist/nextjs/NextServerAuthenticationRefresherImpl.d.ts.map +0 -1
  18. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js +0 -25
  19. package/dist/nextjs/NextServerAuthenticationRefresherImpl.js.map +0 -1
  20. package/dist/nextjs/hooks/useRefresh.d.ts +0 -5
  21. package/dist/nextjs/hooks/useRefresh.d.ts.map +0 -1
  22. package/dist/nextjs/hooks/useRefresh.js +0 -57
  23. package/dist/nextjs/hooks/useRefresh.js.map +0 -1
  24. package/dist/react-router-7/auth-loader.d.ts +0 -18
  25. package/dist/react-router-7/auth-loader.d.ts.map +0 -1
  26. package/dist/react-router-7/auth-loader.js +0 -36
  27. package/dist/react-router-7/auth-loader.js.map +0 -1
  28. package/dist/reactjs/providers/CivicAuthContext.d.ts +0 -44
  29. package/dist/reactjs/providers/CivicAuthContext.d.ts.map +0 -1
  30. package/dist/reactjs/providers/CivicAuthContext.js +0 -313
  31. package/dist/reactjs/providers/CivicAuthContext.js.map +0 -1
  32. package/dist/shared/hooks/useCivicAuthConfig.d.ts +0 -3
  33. package/dist/shared/hooks/useCivicAuthConfig.d.ts.map +0 -1
  34. package/dist/shared/hooks/useCivicAuthConfig.js +0 -10
  35. package/dist/shared/hooks/useCivicAuthConfig.js.map +0 -1
  36. package/dist/shared/hooks/useClientTokenExchangeSession.d.ts +0 -7
  37. package/dist/shared/hooks/useClientTokenExchangeSession.d.ts.map +0 -1
  38. package/dist/shared/hooks/useClientTokenExchangeSession.js +0 -17
  39. package/dist/shared/hooks/useClientTokenExchangeSession.js.map +0 -1
  40. package/dist/shared/hooks/useCurrentUrl.d.ts +0 -3
  41. package/dist/shared/hooks/useCurrentUrl.d.ts.map +0 -1
  42. package/dist/shared/hooks/useCurrentUrl.js +0 -24
  43. package/dist/shared/hooks/useCurrentUrl.js.map +0 -1
  44. package/dist/shared/hooks/useOAuthEndpoints.d.ts +0 -4
  45. package/dist/shared/hooks/useOAuthEndpoints.d.ts.map +0 -1
  46. package/dist/shared/hooks/useOAuthEndpoints.js +0 -14
  47. package/dist/shared/hooks/useOAuthEndpoints.js.map +0 -1
  48. package/dist/shared/hooks/useRefresh.d.ts +0 -6
  49. package/dist/shared/hooks/useRefresh.d.ts.map +0 -1
  50. package/dist/shared/hooks/useRefresh.js +0 -47
  51. package/dist/shared/hooks/useRefresh.js.map +0 -1
  52. package/dist/shared/hooks/useSession.d.ts +0 -3
  53. package/dist/shared/hooks/useSession.d.ts.map +0 -1
  54. package/dist/shared/hooks/useSession.js +0 -13
  55. package/dist/shared/hooks/useSession.js.map +0 -1
  56. package/dist/shared/hooks/useToken.d.ts +0 -3
  57. package/dist/shared/hooks/useToken.d.ts.map +0 -1
  58. package/dist/shared/hooks/useToken.js +0 -12
  59. package/dist/shared/hooks/useToken.js.map +0 -1
  60. package/dist/shared/hooks/useWindowFocused.d.ts +0 -5
  61. package/dist/shared/hooks/useWindowFocused.d.ts.map +0 -1
  62. package/dist/shared/hooks/useWindowFocused.js +0 -21
  63. package/dist/shared/hooks/useWindowFocused.js.map +0 -1
  64. package/dist/shared/providers/CivicAuthConfigContext.d.ts +0 -25
  65. package/dist/shared/providers/CivicAuthConfigContext.d.ts.map +0 -1
  66. package/dist/shared/providers/CivicAuthConfigContext.js +0 -66
  67. package/dist/shared/providers/CivicAuthConfigContext.js.map +0 -1
  68. package/dist/shared/providers/SessionProvider.d.ts +0 -19
  69. package/dist/shared/providers/SessionProvider.d.ts.map +0 -1
  70. package/dist/shared/providers/SessionProvider.js +0 -25
  71. package/dist/shared/providers/SessionProvider.js.map +0 -1
  72. package/dist/shared/providers/TokenProvider.d.ts +0 -17
  73. package/dist/shared/providers/TokenProvider.d.ts.map +0 -1
  74. package/dist/shared/providers/TokenProvider.js +0 -31
  75. package/dist/shared/providers/TokenProvider.js.map +0 -1
  76. package/dist/shared/providers/UserProvider.d.ts +0 -26
  77. package/dist/shared/providers/UserProvider.d.ts.map +0 -1
  78. package/dist/shared/providers/UserProvider.js +0 -64
  79. package/dist/shared/providers/UserProvider.js.map +0 -1
  80. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,7 +0,0 @@
1
- export declare const useClientTokenExchangeSession: () => {
2
- data: null;
3
- error: null;
4
- isLoading: boolean;
5
- doTokenExchange: (_url: string) => Promise<void>;
6
- };
7
- //# sourceMappingURL=useClientTokenExchangeSession.d.ts.map
@@ -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,3 +0,0 @@
1
- declare const useCurrentUrl: () => string | undefined;
2
- export { useCurrentUrl };
3
- //# sourceMappingURL=useCurrentUrl.d.ts.map
@@ -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,4 +0,0 @@
1
- import type { Endpoints } from "../../types.js";
2
- declare const useOAuthEndpoints: (oauthServer?: string) => Endpoints | null;
3
- export { useOAuthEndpoints };
4
- //# sourceMappingURL=useOAuthEndpoints.d.ts.map
@@ -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,6 +0,0 @@
1
- import type { SessionData } from "../../types.js";
2
- declare const useRefresh: (session: SessionData | null) => {
3
- error: Error | undefined;
4
- };
5
- export { useRefresh };
6
- //# sourceMappingURL=useRefresh.d.ts.map
@@ -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,3 +0,0 @@
1
- declare const useSession: () => import("../../shared/providers/SessionProvider.js").SessionProviderOutput;
2
- export { useSession };
3
- //# sourceMappingURL=useSession.d.ts.map
@@ -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,3 +0,0 @@
1
- declare const useToken: () => import("../../shared/providers/TokenProvider.js").TokenContextType;
2
- export { useToken };
3
- //# sourceMappingURL=useToken.d.ts.map
@@ -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,5 +0,0 @@
1
- declare const useWindowFocused: () => {
2
- isWindowFocused: boolean;
3
- };
4
- export { useWindowFocused };
5
- //# sourceMappingURL=useWindowFocused.d.ts.map
@@ -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