@civic/auth 0.6.0-beta.2 → 0.6.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 (68) hide show
  1. package/dist/shared/hooks/useSignIn.d.ts.map +1 -1
  2. package/dist/shared/hooks/useSignIn.js +8 -0
  3. package/dist/shared/hooks/useSignIn.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/AuthenticationEvents.d.ts +11 -0
  9. package/dist/vanillajs/auth/AuthenticationEvents.d.ts.map +1 -0
  10. package/dist/vanillajs/auth/AuthenticationEvents.js +36 -0
  11. package/dist/vanillajs/auth/AuthenticationEvents.js.map +1 -0
  12. package/dist/vanillajs/auth/CivicAuth.d.ts +147 -0
  13. package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -0
  14. package/dist/vanillajs/auth/CivicAuth.js +513 -0
  15. package/dist/vanillajs/auth/CivicAuth.js.map +1 -0
  16. package/dist/vanillajs/auth/SessionManager.d.ts +17 -0
  17. package/dist/vanillajs/auth/SessionManager.d.ts.map +1 -0
  18. package/dist/vanillajs/auth/SessionManager.js +86 -0
  19. package/dist/vanillajs/auth/SessionManager.js.map +1 -0
  20. package/dist/vanillajs/iframe/SignalObserver.d.ts +33 -0
  21. package/dist/vanillajs/iframe/SignalObserver.d.ts.map +1 -0
  22. package/dist/vanillajs/iframe/SignalObserver.js +162 -0
  23. package/dist/vanillajs/iframe/SignalObserver.js.map +1 -0
  24. package/dist/vanillajs/iframe/domUtils.d.ts +4 -0
  25. package/dist/vanillajs/iframe/domUtils.d.ts.map +1 -0
  26. package/dist/vanillajs/iframe/domUtils.js +25 -0
  27. package/dist/vanillajs/iframe/domUtils.js.map +1 -0
  28. package/dist/vanillajs/index.d.ts +16 -0
  29. package/dist/vanillajs/index.d.ts.map +1 -0
  30. package/dist/vanillajs/index.js +15 -0
  31. package/dist/vanillajs/index.js.map +1 -0
  32. package/dist/vanillajs/services/ApiService.d.ts +22 -0
  33. package/dist/vanillajs/services/ApiService.d.ts.map +1 -0
  34. package/dist/vanillajs/services/ApiService.js +82 -0
  35. package/dist/vanillajs/services/ApiService.js.map +1 -0
  36. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.d.ts +19 -0
  37. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.d.ts.map +1 -0
  38. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js +101 -0
  39. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js.map +1 -0
  40. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts +9 -0
  41. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts.map +1 -0
  42. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js +36 -0
  43. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js.map +1 -0
  44. package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts +9 -0
  45. package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  46. package/dist/vanillajs/storage/InMemoryStorageAdapter.js +16 -0
  47. package/dist/vanillajs/storage/InMemoryStorageAdapter.js.map +1 -0
  48. package/dist/vanillajs/storage/StorageAdapter.d.ts +15 -0
  49. package/dist/vanillajs/storage/StorageAdapter.d.ts.map +1 -0
  50. package/dist/vanillajs/storage/StorageAdapter.js +16 -0
  51. package/dist/vanillajs/storage/StorageAdapter.js.map +1 -0
  52. package/dist/vanillajs/types/index.d.ts +28 -0
  53. package/dist/vanillajs/types/index.d.ts.map +1 -0
  54. package/dist/vanillajs/types/index.js +14 -0
  55. package/dist/vanillajs/types/index.js.map +1 -0
  56. package/dist/vanillajs/utils/auth-utils.d.ts +13 -0
  57. package/dist/vanillajs/utils/auth-utils.d.ts.map +1 -0
  58. package/dist/vanillajs/utils/auth-utils.js +15 -0
  59. package/dist/vanillajs/utils/auth-utils.js.map +1 -0
  60. package/dist/vanillajs/utils/logger.d.ts +29 -0
  61. package/dist/vanillajs/utils/logger.d.ts.map +1 -0
  62. package/dist/vanillajs/utils/logger.js +62 -0
  63. package/dist/vanillajs/utils/logger.js.map +1 -0
  64. package/dist/vanillajs/utils/page-handlers.d.ts +29 -0
  65. package/dist/vanillajs/utils/page-handlers.d.ts.map +1 -0
  66. package/dist/vanillajs/utils/page-handlers.js +165 -0
  67. package/dist/vanillajs/utils/page-handlers.js.map +1 -0
  68. package/package.json +1 -1
@@ -0,0 +1,101 @@
1
+ import { getCurrentLogger } from "../utils/logger.js";
2
+ // Updated setCookie to handle more options
3
+ function setCookie(name, value, options = {}) {
4
+ if (typeof document === "undefined")
5
+ return;
6
+ let cookieString = name + "=" + (value || "");
7
+ if (options.maxAge !== undefined) {
8
+ cookieString += "; Max-Age=" + options.maxAge;
9
+ }
10
+ else if (options.days !== undefined) {
11
+ const date = new Date();
12
+ date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000);
13
+ cookieString += "; expires=" + date.toUTCString();
14
+ }
15
+ cookieString += "; path=" + (options.path || "/");
16
+ if (options.secure) {
17
+ cookieString += "; Secure";
18
+ }
19
+ // HttpOnly cannot be set from client-side JavaScript.
20
+ // if (options.httpOnly) {
21
+ // cookieString += '; HttpOnly';
22
+ // }
23
+ if (options.sameSite) {
24
+ cookieString += "; SameSite=" + options.sameSite;
25
+ }
26
+ else {
27
+ cookieString += "; SameSite=Lax"; // Default SameSite
28
+ }
29
+ document.cookie = cookieString;
30
+ }
31
+ function getCookie(name) {
32
+ if (typeof document === "undefined")
33
+ return null;
34
+ const nameEQ = name + "=";
35
+ const ca = document.cookie.split(";");
36
+ for (let i = 0; i < ca.length; i++) {
37
+ let c = ca[i];
38
+ if (c) {
39
+ while (c.charAt(0) === " ")
40
+ c = c.substring(1, c.length);
41
+ if (c.indexOf(nameEQ) === 0)
42
+ return c.substring(nameEQ.length, c.length);
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ function eraseCookie(name, path = "/") {
48
+ if (typeof document === "undefined")
49
+ return;
50
+ // Set expiry to the past and include path and SameSite for robust deletion
51
+ document.cookie =
52
+ name +
53
+ "=; Path=" +
54
+ path +
55
+ "; Expires=Thu, 01 Jan 1970 00:00:01 GMT; SameSite=Lax";
56
+ }
57
+ export class BrowserCookieStorageAdapter {
58
+ defaultCookieOptions;
59
+ logger = getCurrentLogger();
60
+ constructor(defaultOptions = {}) {
61
+ this.defaultCookieOptions = {
62
+ path: "/",
63
+ sameSite: "Lax",
64
+ ...defaultOptions,
65
+ };
66
+ }
67
+ async getItem(key) {
68
+ if (typeof document !== "undefined") {
69
+ return getCookie(key);
70
+ }
71
+ this.logger.warn("CivicAuth: Cookies not available (document is undefined). Cannot get item.");
72
+ return null;
73
+ }
74
+ async setItem(key, value, itemOptions) {
75
+ if (typeof document !== "undefined") {
76
+ const optionsToUse = { ...this.defaultCookieOptions, ...itemOptions };
77
+ // HttpOnly cookies cannot be effectively managed (set/read/deleted reliably) from client-side JS if they are truly HttpOnly.
78
+ // The browser will prevent JS from accessing them. If set server-side, JS can't touch them.
79
+ // If we try to set HttpOnly here, it might be ignored by the browser or not behave as expected for a client-side adapter.
80
+ // We should primarily focus on attributes settable from client-side JS.
81
+ // If httpOnly is true in options, we might log a warning or ignore it.
82
+ if (optionsToUse.httpOnly) {
83
+ this.logger.warn(`CivicAuth: Attempting to set HttpOnly cookie '${key}' from client-side. This attribute is typically managed server-side and may not be effective here.`);
84
+ }
85
+ setCookie(key, value, optionsToUse);
86
+ }
87
+ else {
88
+ this.logger.warn("CivicAuth: Cookies not available (document is undefined). Item not set.");
89
+ }
90
+ }
91
+ async removeItem(key, itemOptions) {
92
+ if (typeof document !== "undefined") {
93
+ const path = itemOptions?.path || this.defaultCookieOptions.path || "/";
94
+ eraseCookie(key, path);
95
+ }
96
+ else {
97
+ this.logger.warn("CivicAuth: Cookies not available (document is undefined). Item not removed.");
98
+ }
99
+ }
100
+ }
101
+ //# sourceMappingURL=BrowserCookieStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserCookieStorageAdapter.js","sourceRoot":"","sources":["../../../src/vanillajs/storage/BrowserCookieStorageAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StorageAdapter } from \"./StorageAdapter.js\";\nimport { getCurrentLogger } from \"../utils/logger.js\";\n\ninterface CookieOptions {\n days?: number;\n maxAge?: number; // seconds\n path?: string;\n secure?: boolean;\n httpOnly?: boolean; // Note: httpOnly cookies cannot be set or read by client-side JS after being set.\n sameSite?: \"Lax\" | \"Strict\" | \"None\";\n}\n\n// Updated setCookie to handle more options\nfunction setCookie(name: string, value: string, options: CookieOptions = {}) {\n if (typeof document === \"undefined\") return;\n\n let cookieString = name + \"=\" + (value || \"\");\n\n if (options.maxAge !== undefined) {\n cookieString += \"; Max-Age=\" + options.maxAge;\n } else if (options.days !== undefined) {\n const date = new Date();\n date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1000);\n cookieString += \"; expires=\" + date.toUTCString();\n }\n\n cookieString += \"; path=\" + (options.path || \"/\");\n\n if (options.secure) {\n cookieString += \"; Secure\";\n }\n // HttpOnly cannot be set from client-side JavaScript.\n // if (options.httpOnly) {\n // cookieString += '; HttpOnly';\n // }\n if (options.sameSite) {\n cookieString += \"; SameSite=\" + options.sameSite;\n } else {\n cookieString += \"; SameSite=Lax\"; // Default SameSite\n }\n\n document.cookie = cookieString;\n}\n\nfunction getCookie(name: string): string | null {\n if (typeof document === \"undefined\") return null;\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n if (c) {\n while (c.charAt(0) === \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n }\n return null;\n}\n\nfunction eraseCookie(name: string, path: string = \"/\") {\n if (typeof document === \"undefined\") return;\n // Set expiry to the past and include path and SameSite for robust deletion\n document.cookie =\n name +\n \"=; Path=\" +\n path +\n \"; Expires=Thu, 01 Jan 1970 00:00:01 GMT; SameSite=Lax\";\n}\n\nexport class BrowserCookieStorageAdapter implements StorageAdapter {\n private defaultCookieOptions: CookieOptions;\n private logger = getCurrentLogger();\n\n constructor(defaultOptions: CookieOptions = {}) {\n this.defaultCookieOptions = {\n path: \"/\",\n sameSite: \"Lax\",\n ...defaultOptions,\n };\n }\n\n async getItem(key: string): Promise<string | null> {\n if (typeof document !== \"undefined\") {\n return getCookie(key);\n }\n this.logger.warn(\n \"CivicAuth: Cookies not available (document is undefined). Cannot get item.\",\n );\n return null;\n }\n\n async setItem(\n key: string,\n value: string,\n itemOptions?: CookieOptions,\n ): Promise<void> {\n if (typeof document !== \"undefined\") {\n const optionsToUse = { ...this.defaultCookieOptions, ...itemOptions };\n // HttpOnly cookies cannot be effectively managed (set/read/deleted reliably) from client-side JS if they are truly HttpOnly.\n // The browser will prevent JS from accessing them. If set server-side, JS can't touch them.\n // If we try to set HttpOnly here, it might be ignored by the browser or not behave as expected for a client-side adapter.\n // We should primarily focus on attributes settable from client-side JS.\n // If httpOnly is true in options, we might log a warning or ignore it.\n if (optionsToUse.httpOnly) {\n this.logger.warn(\n `CivicAuth: Attempting to set HttpOnly cookie '${key}' from client-side. This attribute is typically managed server-side and may not be effective here.`,\n );\n }\n setCookie(key, value, optionsToUse);\n } else {\n this.logger.warn(\n \"CivicAuth: Cookies not available (document is undefined). Item not set.\",\n );\n }\n }\n\n async removeItem(\n key: string,\n itemOptions?: Pick<CookieOptions, \"path\">,\n ): Promise<void> {\n if (typeof document !== \"undefined\") {\n const path = itemOptions?.path || this.defaultCookieOptions.path || \"/\";\n eraseCookie(key, path);\n } else {\n this.logger.warn(\n \"CivicAuth: Cookies not available (document is undefined). Item not removed.\",\n );\n }\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { StorageAdapter } from "./StorageAdapter.js";
2
+ export declare class BrowserLocalStorageAdapter implements StorageAdapter {
3
+ private logger;
4
+ getItem(key: string): Promise<string | null>;
5
+ setItem(key: string, value: string): Promise<void>;
6
+ removeItem(key: string): Promise<void>;
7
+ clear(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=BrowserLocalStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserLocalStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/storage/BrowserLocalStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,qBAAa,0BAA2B,YAAW,cAAc;IAC/D,OAAO,CAAC,MAAM,CAAsB;IAE9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -0,0 +1,36 @@
1
+ import { getCurrentLogger } from "../utils/logger.js";
2
+ export class BrowserLocalStorageAdapter {
3
+ logger = getCurrentLogger();
4
+ async getItem(key) {
5
+ if (typeof window !== "undefined" && window.localStorage) {
6
+ return window.localStorage.getItem(key);
7
+ }
8
+ this.logger.warn("LocalStorage is not available. Returning null.");
9
+ return null;
10
+ }
11
+ async setItem(key, value) {
12
+ if (typeof window !== "undefined" && window.localStorage) {
13
+ window.localStorage.setItem(key, value);
14
+ }
15
+ else {
16
+ this.logger.warn("LocalStorage is not available. Item not set.");
17
+ }
18
+ }
19
+ async removeItem(key) {
20
+ if (typeof window !== "undefined" && window.localStorage) {
21
+ window.localStorage.removeItem(key);
22
+ }
23
+ else {
24
+ this.logger.warn("LocalStorage is not available. Item not removed.");
25
+ }
26
+ }
27
+ async clear() {
28
+ if (typeof window !== "undefined" && window.localStorage) {
29
+ window.localStorage.clear();
30
+ }
31
+ else {
32
+ this.logger.warn("LocalStorage is not available. Storage not cleared.");
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=BrowserLocalStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserLocalStorageAdapter.js","sourceRoot":"","sources":["../../../src/vanillajs/storage/BrowserLocalStorageAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,OAAO,0BAA0B;IAC7B,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAEpC,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;CACF","sourcesContent":["import type { StorageAdapter } from \"./StorageAdapter.js\";\nimport { getCurrentLogger } from \"../utils/logger.js\";\n\nexport class BrowserLocalStorageAdapter implements StorageAdapter {\n private logger = getCurrentLogger();\n\n async getItem(key: string): Promise<string | null> {\n if (typeof window !== \"undefined\" && window.localStorage) {\n return window.localStorage.getItem(key);\n }\n this.logger.warn(\"LocalStorage is not available. Returning null.\");\n return null;\n }\n\n async setItem(key: string, value: string): Promise<void> {\n if (typeof window !== \"undefined\" && window.localStorage) {\n window.localStorage.setItem(key, value);\n } else {\n this.logger.warn(\"LocalStorage is not available. Item not set.\");\n }\n }\n\n async removeItem(key: string): Promise<void> {\n if (typeof window !== \"undefined\" && window.localStorage) {\n window.localStorage.removeItem(key);\n } else {\n this.logger.warn(\"LocalStorage is not available. Item not removed.\");\n }\n }\n\n async clear(): Promise<void> {\n if (typeof window !== \"undefined\" && window.localStorage) {\n window.localStorage.clear();\n } else {\n this.logger.warn(\"LocalStorage is not available. Storage not cleared.\");\n }\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { StorageAdapter } from "./StorageAdapter.js";
2
+ export declare class InMemoryStorageAdapter implements StorageAdapter {
3
+ private store;
4
+ getItem(key: string): Promise<string | null>;
5
+ setItem(key: string, value: string): Promise<void>;
6
+ removeItem(key: string): Promise<void>;
7
+ clear(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=InMemoryStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/storage/InMemoryStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,KAAK,CAAkC;IAEzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -0,0 +1,16 @@
1
+ export class InMemoryStorageAdapter {
2
+ store = new Map();
3
+ async getItem(key) {
4
+ return this.store.get(key) || null;
5
+ }
6
+ async setItem(key, value) {
7
+ this.store.set(key, value);
8
+ }
9
+ async removeItem(key) {
10
+ this.store.delete(key);
11
+ }
12
+ async clear() {
13
+ this.store.clear();
14
+ }
15
+ }
16
+ //# sourceMappingURL=InMemoryStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStorageAdapter.js","sourceRoot":"","sources":["../../../src/vanillajs/storage/InMemoryStorageAdapter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IACzB,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF","sourcesContent":["import type { StorageAdapter } from \"./StorageAdapter.js\";\n\nexport class InMemoryStorageAdapter implements StorageAdapter {\n private store: Map<string, string> = new Map();\n\n async getItem(key: string): Promise<string | null> {\n return this.store.get(key) || null;\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this.store.set(key, value);\n }\n\n async removeItem(key: string): Promise<void> {\n this.store.delete(key);\n }\n\n async clear(): Promise<void> {\n this.store.clear();\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ export interface StorageAdapter {
2
+ getItem(key: string): Promise<string | null>;
3
+ setItem(key: string, value: string): Promise<void>;
4
+ removeItem(key: string): Promise<void>;
5
+ clear?: () => Promise<void>;
6
+ }
7
+ import type { AuthStorage } from "../../types.js";
8
+ export declare class StorageAdapterToAuthStorage implements AuthStorage {
9
+ private adapter;
10
+ constructor(adapter: StorageAdapter);
11
+ get(key: string): Promise<string | null>;
12
+ set(key: string, value: string): Promise<void>;
13
+ delete(key: string): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=StorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/storage/StorageAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,qBAAa,2BAA4B,YAAW,WAAW;IACjD,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAErC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
@@ -0,0 +1,16 @@
1
+ export class StorageAdapterToAuthStorage {
2
+ adapter;
3
+ constructor(adapter) {
4
+ this.adapter = adapter;
5
+ }
6
+ async get(key) {
7
+ return this.adapter.getItem(key);
8
+ }
9
+ async set(key, value) {
10
+ await this.adapter.setItem(key, value);
11
+ }
12
+ async delete(key) {
13
+ await this.adapter.removeItem(key);
14
+ }
15
+ }
16
+ //# sourceMappingURL=StorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapter.js","sourceRoot":"","sources":["../../../src/vanillajs/storage/StorageAdapter.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,2BAA2B;IAClB;IAApB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAE/C,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["export interface StorageAdapter {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n clear?: () => Promise<void>; // Optional: some storage might not support a full clear easily\n}\n\nimport type { AuthStorage } from \"../../types.js\";\n\nexport class StorageAdapterToAuthStorage implements AuthStorage {\n constructor(private adapter: StorageAdapter) {}\n\n async get(key: string): Promise<string | null> {\n return this.adapter.getItem(key);\n }\n\n async set(key: string, value: string): Promise<void> {\n await this.adapter.setItem(key, value);\n }\n\n async delete(key: string): Promise<void> {\n await this.adapter.removeItem(key);\n }\n}\n"]}
@@ -0,0 +1,28 @@
1
+ import type { User } from "../../types.js";
2
+ export type { User };
3
+ export interface Session {
4
+ accessToken: string;
5
+ idToken?: string;
6
+ refreshToken?: string;
7
+ user?: User;
8
+ expiresAt?: number;
9
+ }
10
+ export declare enum AuthEvent {
11
+ SIGN_IN_STARTED = "signInStarted",
12
+ SIGN_IN_COMPLETE = "signInComplete",
13
+ SIGN_IN_ERROR = "signInError",
14
+ SIGN_OUT_STARTED = "signOutStarted",
15
+ SIGN_OUT_COMPLETE = "signOutComplete",
16
+ SIGN_OUT_ERROR = "signOutError",
17
+ TOKEN_REFRESH_STARTED = "tokenRefreshStarted",
18
+ TOKEN_REFRESH_COMPLETE = "tokenRefreshComplete",
19
+ TOKEN_REFRESH_ERROR = "tokenRefreshError",
20
+ USER_SESSION_CHANGED = "userSessionChanged"
21
+ }
22
+ export interface AuthResult {
23
+ /** User information returned from authentication */
24
+ user?: User;
25
+ /** Signal text indicating the result */
26
+ signalText?: string;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/types/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,YAAY,EAAE,IAAI,EAAE,CAAC;AAErB,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CAEpB;AAED,oBAAY,SAAS;IACnB,eAAe,kBAAkB;IACjC,gBAAgB,mBAAmB;IACnC,aAAa,gBAAgB;IAC7B,gBAAgB,mBAAmB;IACnC,iBAAiB,oBAAoB;IACrC,cAAc,iBAAiB;IAC/B,qBAAqB,wBAAwB;IAC7C,sBAAsB,yBAAyB;IAC/C,mBAAmB,sBAAsB;IACzC,oBAAoB,uBAAuB;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,14 @@
1
+ export var AuthEvent;
2
+ (function (AuthEvent) {
3
+ AuthEvent["SIGN_IN_STARTED"] = "signInStarted";
4
+ AuthEvent["SIGN_IN_COMPLETE"] = "signInComplete";
5
+ AuthEvent["SIGN_IN_ERROR"] = "signInError";
6
+ AuthEvent["SIGN_OUT_STARTED"] = "signOutStarted";
7
+ AuthEvent["SIGN_OUT_COMPLETE"] = "signOutComplete";
8
+ AuthEvent["SIGN_OUT_ERROR"] = "signOutError";
9
+ AuthEvent["TOKEN_REFRESH_STARTED"] = "tokenRefreshStarted";
10
+ AuthEvent["TOKEN_REFRESH_COMPLETE"] = "tokenRefreshComplete";
11
+ AuthEvent["TOKEN_REFRESH_ERROR"] = "tokenRefreshError";
12
+ AuthEvent["USER_SESSION_CHANGED"] = "userSessionChanged";
13
+ })(AuthEvent || (AuthEvent = {}));
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vanillajs/types/index.ts"],"names":[],"mappings":"AAcA,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,4CAA+B,CAAA;IAC/B,0DAA6C,CAAA;IAC7C,4DAA+C,CAAA;IAC/C,sDAAyC,CAAA;IACzC,wDAA2C,CAAA;AAC7C,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB","sourcesContent":["// Export other type files as they are created\nimport type { User } from \"../../types.js\";\n\nexport type { User };\n\nexport interface Session {\n accessToken: string;\n idToken?: string;\n refreshToken?: string;\n user?: User;\n expiresAt?: number; // Timestamp in milliseconds\n // any other session-related data\n}\n\nexport enum AuthEvent {\n SIGN_IN_STARTED = \"signInStarted\",\n SIGN_IN_COMPLETE = \"signInComplete\",\n SIGN_IN_ERROR = \"signInError\",\n SIGN_OUT_STARTED = \"signOutStarted\",\n SIGN_OUT_COMPLETE = \"signOutComplete\",\n SIGN_OUT_ERROR = \"signOutError\",\n TOKEN_REFRESH_STARTED = \"tokenRefreshStarted\",\n TOKEN_REFRESH_COMPLETE = \"tokenRefreshComplete\",\n TOKEN_REFRESH_ERROR = \"tokenRefreshError\",\n USER_SESSION_CHANGED = \"userSessionChanged\",\n}\n\nexport interface AuthResult {\n /** User information returned from authentication */\n user?: User;\n /** Signal text indicating the result */\n signalText?: string;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { Endpoints } from "../../types.js";
2
+ interface BuildAuthUrlParams {
3
+ endpoints: Endpoints;
4
+ clientId: string;
5
+ redirectUrl: string;
6
+ scopes: string[];
7
+ codeChallenge: string;
8
+ state: string;
9
+ prompt?: string;
10
+ }
11
+ export declare function buildAuthUrl({ endpoints, clientId, redirectUrl, scopes, codeChallenge, state, prompt, }: BuildAuthUrlParams): string;
12
+ export {};
13
+ //# sourceMappingURL=auth-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-utils.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/utils/auth-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,QAAQ,EACR,WAAW,EACX,MAAM,EACN,aAAa,EACb,KAAK,EACL,MAAM,GACP,EAAE,kBAAkB,GAAG,MAAM,CAe7B"}
@@ -0,0 +1,15 @@
1
+ export function buildAuthUrl({ endpoints, clientId, redirectUrl, scopes, codeChallenge, state, prompt, }) {
2
+ const authUrl = new URL(endpoints.auth);
3
+ authUrl.searchParams.append("client_id", clientId);
4
+ authUrl.searchParams.append("redirect_uri", redirectUrl);
5
+ authUrl.searchParams.append("response_type", "code");
6
+ authUrl.searchParams.append("scope", scopes.join(" "));
7
+ authUrl.searchParams.append("state", state);
8
+ authUrl.searchParams.append("code_challenge", codeChallenge);
9
+ authUrl.searchParams.append("code_challenge_method", "S256");
10
+ if (prompt) {
11
+ authUrl.searchParams.append("prompt", prompt);
12
+ }
13
+ return authUrl.toString();
14
+ }
15
+ //# sourceMappingURL=auth-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-utils.js","sourceRoot":"","sources":["../../../src/vanillajs/utils/auth-utils.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,EACT,QAAQ,EACR,WAAW,EACX,MAAM,EACN,aAAa,EACb,KAAK,EACL,MAAM,GACa;IACnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAC7D,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAE7D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC","sourcesContent":["import type { Endpoints } from \"../../types.js\";\n\ninterface BuildAuthUrlParams {\n endpoints: Endpoints;\n clientId: string;\n redirectUrl: string;\n scopes: string[];\n codeChallenge: string;\n state: string;\n prompt?: string;\n}\n\nexport function buildAuthUrl({\n endpoints,\n clientId,\n redirectUrl,\n scopes,\n codeChallenge,\n state,\n prompt,\n}: BuildAuthUrlParams): string {\n const authUrl = new URL(endpoints.auth);\n authUrl.searchParams.append(\"client_id\", clientId);\n authUrl.searchParams.append(\"redirect_uri\", redirectUrl);\n authUrl.searchParams.append(\"response_type\", \"code\");\n authUrl.searchParams.append(\"scope\", scopes.join(\" \"));\n authUrl.searchParams.append(\"state\", state);\n authUrl.searchParams.append(\"code_challenge\", codeChallenge);\n authUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n\n if (prompt) {\n authUrl.searchParams.append(\"prompt\", prompt);\n }\n\n return authUrl.toString();\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import debug from "debug";
2
+ export declare const loggers: {
3
+ auth: debug.Debugger;
4
+ api: debug.Debugger;
5
+ storage: debug.Debugger;
6
+ session: debug.Debugger;
7
+ events: debug.Debugger;
8
+ utils: debug.Debugger;
9
+ iframe: debug.Debugger;
10
+ };
11
+ export declare const createLogger: (namespace: string) => {
12
+ debug: (message: string, ...args: unknown[]) => void;
13
+ info: (message: string, ...args: unknown[]) => void;
14
+ warn: (message: string, ...args: unknown[]) => void;
15
+ error: (message: string, ...args: unknown[]) => void;
16
+ };
17
+ export declare const configureLogging: (config: {
18
+ enabled: boolean;
19
+ namespace?: string;
20
+ level?: "debug" | "info" | "warn" | "error";
21
+ }) => void;
22
+ export declare const setCurrentLogger: (logger: ReturnType<typeof createLogger>) => void;
23
+ export declare const getCurrentLogger: () => {
24
+ debug: (message: string, ...args: unknown[]) => void;
25
+ info: (message: string, ...args: unknown[]) => void;
26
+ warn: (message: string, ...args: unknown[]) => void;
27
+ error: (message: string, ...args: unknown[]) => void;
28
+ };
29
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAC;AAGF,eAAO,MAAM,YAAY,cAAe,MAAM;qBAGzB,MAAM,WAAW,OAAO,EAAE;oBAC3B,MAAM,WAAW,OAAO,EAAE;oBAC1B,MAAM,WAAW,OAAO,EAAE;qBACzB,MAAM,WAAW,OAAO,EAAE;CAE9C,CAAC;AAGF,eAAO,MAAM,gBAAgB,WAAY;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC7C,SAwBA,CAAC;AAMF,eAAO,MAAM,gBAAgB,WAAY,UAAU,CAAC,OAAO,YAAY,CAAC,SAEvE,CAAC;AAGF,eAAO,MAAM,gBAAgB;qBA/CR,MAAM,WAAW,OAAO,EAAE;oBAC3B,MAAM,WAAW,OAAO,EAAE;oBAC1B,MAAM,WAAW,OAAO,EAAE;qBACzB,MAAM,WAAW,OAAO,EAAE;CAkD9C,CAAC"}
@@ -0,0 +1,62 @@
1
+ import debug from "debug";
2
+ // Create namespaced loggers for different components
3
+ export const loggers = {
4
+ auth: debug("civic:auth"),
5
+ api: debug("civic:auth:api"),
6
+ storage: debug("civic:auth:storage"),
7
+ session: debug("civic:auth:session"),
8
+ events: debug("civic:auth:events"),
9
+ utils: debug("civic:auth:utils"),
10
+ iframe: debug("civic:auth:iframe"),
11
+ };
12
+ // Helper function to create a logger with a specific namespace
13
+ export const createLogger = (namespace) => {
14
+ const logger = debug(`civic:auth:${namespace}`);
15
+ return {
16
+ debug: (message, ...args) => logger(message, ...args),
17
+ info: (message, ...args) => logger(message, ...args),
18
+ warn: (message, ...args) => logger(message, ...args),
19
+ error: (message, ...args) => logger(message, ...args),
20
+ };
21
+ };
22
+ // Function to configure logging based on config
23
+ export const configureLogging = (config) => {
24
+ if (typeof window === "undefined")
25
+ return;
26
+ if (config.enabled) {
27
+ // Enable specific namespace if provided, otherwise enable all civic:auth namespaces
28
+ const namespace = config.namespace
29
+ ? `civic:auth:${config.namespace}`
30
+ : "civic:auth:*";
31
+ debug.enable(namespace);
32
+ // Override debug's default log function to ensure it works in the browser
33
+ const originalLog = debug.log;
34
+ debug.log = (...args) => {
35
+ if (typeof console !== "undefined") {
36
+ console.log(...args);
37
+ }
38
+ if (originalLog) {
39
+ originalLog.apply(debug, args);
40
+ }
41
+ };
42
+ }
43
+ else {
44
+ // Disable all debug logs
45
+ debug.disable();
46
+ }
47
+ };
48
+ // Global variable to store the current logger instance
49
+ let currentLogger = null;
50
+ // Function to set the current logger instance
51
+ export const setCurrentLogger = (logger) => {
52
+ currentLogger = logger;
53
+ };
54
+ // Function to get the current logger instance
55
+ export const getCurrentLogger = () => {
56
+ if (!currentLogger) {
57
+ // Create a default logger if none is set
58
+ currentLogger = createLogger("default");
59
+ }
60
+ return currentLogger;
61
+ };
62
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/vanillajs/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,qDAAqD;AACrD,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;IACzB,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC;IAC5B,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACpC,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC,mBAAmB,CAAC;IAClC,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,mBAAmB,CAAC;CACnC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACxE,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACvE,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACvE,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;KACzE,CAAC;AACJ,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAIhC,EAAE,EAAE;IACH,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,oFAAoF;QACpF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;YAChC,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE;YAClC,CAAC,CAAC,cAAc,CAAC;QACnB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExB,0EAA0E;QAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;QAC9B,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YACtB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,uDAAuD;AACvD,IAAI,aAAa,GAA2C,IAAI,CAAC;AAEjE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAuC,EAAE,EAAE;IAC1E,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,yCAAyC;QACzC,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC","sourcesContent":["import debug from \"debug\";\n\n// Create namespaced loggers for different components\nexport const loggers = {\n auth: debug(\"civic:auth\"),\n api: debug(\"civic:auth:api\"),\n storage: debug(\"civic:auth:storage\"),\n session: debug(\"civic:auth:session\"),\n events: debug(\"civic:auth:events\"),\n utils: debug(\"civic:auth:utils\"),\n iframe: debug(\"civic:auth:iframe\"),\n};\n\n// Helper function to create a logger with a specific namespace\nexport const createLogger = (namespace: string) => {\n const logger = debug(`civic:auth:${namespace}`);\n return {\n debug: (message: string, ...args: unknown[]) => logger(message, ...args),\n info: (message: string, ...args: unknown[]) => logger(message, ...args),\n warn: (message: string, ...args: unknown[]) => logger(message, ...args),\n error: (message: string, ...args: unknown[]) => logger(message, ...args),\n };\n};\n\n// Function to configure logging based on config\nexport const configureLogging = (config: {\n enabled: boolean;\n namespace?: string;\n level?: \"debug\" | \"info\" | \"warn\" | \"error\";\n}) => {\n if (typeof window === \"undefined\") return;\n\n if (config.enabled) {\n // Enable specific namespace if provided, otherwise enable all civic:auth namespaces\n const namespace = config.namespace\n ? `civic:auth:${config.namespace}`\n : \"civic:auth:*\";\n debug.enable(namespace);\n\n // Override debug's default log function to ensure it works in the browser\n const originalLog = debug.log;\n debug.log = (...args) => {\n if (typeof console !== \"undefined\") {\n console.log(...args);\n }\n if (originalLog) {\n originalLog.apply(debug, args);\n }\n };\n } else {\n // Disable all debug logs\n debug.disable();\n }\n};\n\n// Global variable to store the current logger instance\nlet currentLogger: ReturnType<typeof createLogger> | null = null;\n\n// Function to set the current logger instance\nexport const setCurrentLogger = (logger: ReturnType<typeof createLogger>) => {\n currentLogger = logger;\n};\n\n// Function to get the current logger instance\nexport const getCurrentLogger = () => {\n if (!currentLogger) {\n // Create a default logger if none is set\n currentLogger = createLogger(\"default\");\n }\n return currentLogger;\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import { BrowserCookieStorageAdapter } from "../storage/BrowserCookieStorageAdapter.js";
2
+ import { getCurrentLogger } from "./logger.js";
3
+ interface ExchangeTokenResponse {
4
+ id_token: string;
5
+ access_token?: string;
6
+ refresh_token?: string;
7
+ expires_in?: number;
8
+ }
9
+ export declare function storeTokens(tokens: ExchangeTokenResponse, storageAdapter: BrowserCookieStorageAdapter, customCookieConfig?: any, loggerInstance?: {
10
+ debug: (message: string, ...args: unknown[]) => void;
11
+ info: (message: string, ...args: unknown[]) => void;
12
+ warn: (message: string, ...args: unknown[]) => void;
13
+ error: (message: string, ...args: unknown[]) => void;
14
+ }): Promise<object | null>;
15
+ export interface HandleOAuthRedirectConfig {
16
+ clientId: string;
17
+ redirectUrl: string;
18
+ oauthServer: string;
19
+ textSignals: {
20
+ success: string;
21
+ error: string;
22
+ };
23
+ storageAdapter?: BrowserCookieStorageAdapter;
24
+ cookieOptions?: any;
25
+ logger?: ReturnType<typeof getCurrentLogger>;
26
+ }
27
+ export declare function handleOAuthRedirectPage(config: HandleOAuthRedirectConfig): Promise<boolean>;
28
+ export {};
29
+ //# sourceMappingURL=page-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-handlers.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/utils/page-handlers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAK/C,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8BD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,qBAAqB,EAC7B,cAAc,EAAE,2BAA2B,EAE3C,kBAAkB,CAAC,EAAE,GAAG,EACxB,cAAc;;;;;CAAqB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2FxB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,CAAC,EAAE,2BAA2B,CAAC;IAE7C,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAC9C;AAqBD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,OAAO,CAAC,CAkElB"}