@civic/auth 0.6.0-beta.3 → 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 (65) hide show
  1. package/dist/shared/version.d.ts +1 -1
  2. package/dist/shared/version.d.ts.map +1 -1
  3. package/dist/shared/version.js +1 -1
  4. package/dist/shared/version.js.map +1 -1
  5. package/dist/vanillajs/auth/AuthenticationEvents.d.ts +11 -0
  6. package/dist/vanillajs/auth/AuthenticationEvents.d.ts.map +1 -0
  7. package/dist/vanillajs/auth/AuthenticationEvents.js +36 -0
  8. package/dist/vanillajs/auth/AuthenticationEvents.js.map +1 -0
  9. package/dist/vanillajs/auth/CivicAuth.d.ts +147 -0
  10. package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -0
  11. package/dist/vanillajs/auth/CivicAuth.js +513 -0
  12. package/dist/vanillajs/auth/CivicAuth.js.map +1 -0
  13. package/dist/vanillajs/auth/SessionManager.d.ts +17 -0
  14. package/dist/vanillajs/auth/SessionManager.d.ts.map +1 -0
  15. package/dist/vanillajs/auth/SessionManager.js +86 -0
  16. package/dist/vanillajs/auth/SessionManager.js.map +1 -0
  17. package/dist/vanillajs/iframe/SignalObserver.d.ts +33 -0
  18. package/dist/vanillajs/iframe/SignalObserver.d.ts.map +1 -0
  19. package/dist/vanillajs/iframe/SignalObserver.js +162 -0
  20. package/dist/vanillajs/iframe/SignalObserver.js.map +1 -0
  21. package/dist/vanillajs/iframe/domUtils.d.ts +4 -0
  22. package/dist/vanillajs/iframe/domUtils.d.ts.map +1 -0
  23. package/dist/vanillajs/iframe/domUtils.js +25 -0
  24. package/dist/vanillajs/iframe/domUtils.js.map +1 -0
  25. package/dist/vanillajs/index.d.ts +16 -0
  26. package/dist/vanillajs/index.d.ts.map +1 -0
  27. package/dist/vanillajs/index.js +15 -0
  28. package/dist/vanillajs/index.js.map +1 -0
  29. package/dist/vanillajs/services/ApiService.d.ts +22 -0
  30. package/dist/vanillajs/services/ApiService.d.ts.map +1 -0
  31. package/dist/vanillajs/services/ApiService.js +82 -0
  32. package/dist/vanillajs/services/ApiService.js.map +1 -0
  33. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.d.ts +19 -0
  34. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.d.ts.map +1 -0
  35. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js +101 -0
  36. package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js.map +1 -0
  37. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts +9 -0
  38. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts.map +1 -0
  39. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js +36 -0
  40. package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js.map +1 -0
  41. package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts +9 -0
  42. package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  43. package/dist/vanillajs/storage/InMemoryStorageAdapter.js +16 -0
  44. package/dist/vanillajs/storage/InMemoryStorageAdapter.js.map +1 -0
  45. package/dist/vanillajs/storage/StorageAdapter.d.ts +15 -0
  46. package/dist/vanillajs/storage/StorageAdapter.d.ts.map +1 -0
  47. package/dist/vanillajs/storage/StorageAdapter.js +16 -0
  48. package/dist/vanillajs/storage/StorageAdapter.js.map +1 -0
  49. package/dist/vanillajs/types/index.d.ts +28 -0
  50. package/dist/vanillajs/types/index.d.ts.map +1 -0
  51. package/dist/vanillajs/types/index.js +14 -0
  52. package/dist/vanillajs/types/index.js.map +1 -0
  53. package/dist/vanillajs/utils/auth-utils.d.ts +13 -0
  54. package/dist/vanillajs/utils/auth-utils.d.ts.map +1 -0
  55. package/dist/vanillajs/utils/auth-utils.js +15 -0
  56. package/dist/vanillajs/utils/auth-utils.js.map +1 -0
  57. package/dist/vanillajs/utils/logger.d.ts +29 -0
  58. package/dist/vanillajs/utils/logger.d.ts.map +1 -0
  59. package/dist/vanillajs/utils/logger.js +62 -0
  60. package/dist/vanillajs/utils/logger.js.map +1 -0
  61. package/dist/vanillajs/utils/page-handlers.d.ts +29 -0
  62. package/dist/vanillajs/utils/page-handlers.d.ts.map +1 -0
  63. package/dist/vanillajs/utils/page-handlers.js +165 -0
  64. package/dist/vanillajs/utils/page-handlers.js.map +1 -0
  65. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "@civic/auth:0.6.0-beta.3";
1
+ export declare const VERSION = "@civic/auth:0.6.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,6BAA6B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,sBAAsB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // This is an auto-generated file. Do not edit.
2
- export const VERSION = "@civic/auth:0.6.0-beta.3";
2
+ export const VERSION = "@civic/auth:0.6.0";
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,0BAA0B,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.6.0-beta.3\";\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,MAAM,CAAC,MAAM,OAAO,GAAG,mBAAmB,CAAC","sourcesContent":["// This is an auto-generated file. Do not edit.\n\nexport const VERSION = \"@civic/auth:0.6.0\";\n"]}
@@ -0,0 +1,11 @@
1
+ import type { AuthEvent } from "../types/index.js";
2
+ export type AuthEventListener<T = unknown> = (payload?: T) => void;
3
+ export declare class AuthenticationEvents {
4
+ private listeners;
5
+ private logger;
6
+ on<T>(event: AuthEvent, listener: AuthEventListener<T>): void;
7
+ off<T>(event: AuthEvent, listener: AuthEventListener<T>): void;
8
+ emit<T>(event: AuthEvent, payload?: T): void;
9
+ removeAllListeners(event?: AuthEvent): void;
10
+ }
11
+ //# sourceMappingURL=AuthenticationEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationEvents.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/auth/AuthenticationEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;AAEnE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAA2D;IAC5E,OAAO,CAAC,MAAM,CAAsB;IAEpC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAO7D,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAU9D,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI;IAY5C,kBAAkB,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI;CAO5C"}
@@ -0,0 +1,36 @@
1
+ import { getCurrentLogger } from "../utils/logger.js";
2
+ export class AuthenticationEvents {
3
+ listeners = new Map();
4
+ logger = getCurrentLogger();
5
+ on(event, listener) {
6
+ if (!this.listeners.has(event)) {
7
+ this.listeners.set(event, []);
8
+ }
9
+ this.listeners.get(event)?.push(listener);
10
+ }
11
+ off(event, listener) {
12
+ const eventListeners = this.listeners.get(event);
13
+ if (eventListeners) {
14
+ this.listeners.set(event, eventListeners.filter((l) => l !== listener));
15
+ }
16
+ }
17
+ emit(event, payload) {
18
+ this.listeners.get(event)?.forEach((listener) => {
19
+ try {
20
+ listener(payload);
21
+ }
22
+ catch (error) {
23
+ this.logger.error(`Error in event listener for ${event}:`, error);
24
+ }
25
+ });
26
+ }
27
+ removeAllListeners(event) {
28
+ if (event) {
29
+ this.listeners.delete(event);
30
+ }
31
+ else {
32
+ this.listeners.clear();
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=AuthenticationEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationEvents.js","sourceRoot":"","sources":["../../../src/vanillajs/auth/AuthenticationEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,OAAO,oBAAoB;IACvB,SAAS,GAAiD,IAAI,GAAG,EAAE,CAAC;IACpE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAEpC,EAAE,CAAI,KAAgB,EAAE,QAA8B;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAA4B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAI,KAAgB,EAAE,QAA8B;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,KAAK,EACL,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAI,KAAgB,EAAE,OAAW;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAA4B,EAAE,OAAO,CAC5D,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,KAAiB;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;CACF","sourcesContent":["import type { AuthEvent } from \"../types/index.js\";\nimport { getCurrentLogger } from \"../utils/logger.js\";\n\nexport type AuthEventListener<T = unknown> = (payload?: T) => void;\n\nexport class AuthenticationEvents {\n private listeners: Map<AuthEvent, AuthEventListener<unknown>[]> = new Map();\n private logger = getCurrentLogger();\n\n on<T>(event: AuthEvent, listener: AuthEventListener<T>): void {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, []);\n }\n (this.listeners.get(event) as AuthEventListener<T>[])?.push(listener);\n }\n\n off<T>(event: AuthEvent, listener: AuthEventListener<T>): void {\n const eventListeners = this.listeners.get(event);\n if (eventListeners) {\n this.listeners.set(\n event,\n eventListeners.filter((l) => l !== listener),\n );\n }\n }\n\n emit<T>(event: AuthEvent, payload?: T): void {\n (this.listeners.get(event) as AuthEventListener<T>[])?.forEach(\n (listener) => {\n try {\n listener(payload);\n } catch (error) {\n this.logger.error(`Error in event listener for ${event}:`, error);\n }\n },\n );\n }\n\n removeAllListeners(event?: AuthEvent): void {\n if (event) {\n this.listeners.delete(event);\n } else {\n this.listeners.clear();\n }\n }\n}\n"]}
@@ -0,0 +1,147 @@
1
+ import type { AuthenticationEvents } from "./AuthenticationEvents.js";
2
+ import { type StorageAdapter } from "../storage/StorageAdapter.js";
3
+ import type { DisplayMode } from "../../types.js";
4
+ import type { AuthResult } from "../types/index.js";
5
+ /**
6
+ * Error codes for CivicAuth errors
7
+ */
8
+ export declare enum CivicAuthErrorCode {
9
+ CONFIG_REQUIRED = "CONFIG_REQUIRED",
10
+ INIT_FAILED = "INIT_FAILED",
11
+ ENDPOINTS_NOT_INITIALIZED = "ENDPOINTS_NOT_INITIALIZED",
12
+ CONTAINER_NOT_FOUND = "CONTAINER_NOT_FOUND",
13
+ AUTH_PROCESS_TIMEOUT = "AUTH_PROCESS_TIMEOUT",
14
+ IFRAME_LOAD_ERROR = "IFRAME_LOAD_ERROR",
15
+ INVALID_MESSAGE = "INVALID_MESSAGE"
16
+ }
17
+ /**
18
+ * Configuration options for the CivicAuth client
19
+ */
20
+ export interface CivicAuthClientConfig {
21
+ /** OAuth client ID */
22
+ clientId: string;
23
+ /** URL to redirect to after authentication */
24
+ redirectUrl: string;
25
+ /** Base URL of the OAuth server */
26
+ oauthServerBaseUrl: string;
27
+ /** Array of OAuth scopes to request */
28
+ scopes: string[];
29
+ /** HTML element or element ID where the auth iframe will be mounted */
30
+ targetContainerElement: HTMLElement | string;
31
+ /** Text signals for success and error states */
32
+ textSignals: {
33
+ /** Text to display on successful authentication */
34
+ success: string;
35
+ /** Optional text to display on authentication error */
36
+ error?: string;
37
+ };
38
+ /** Display mode for the authentication UI */
39
+ displayMode?: DisplayMode;
40
+ /**
41
+ * Timeout duration in milliseconds for the entire authentication process.
42
+ * If the authentication process takes longer than this duration, it will be cancelled
43
+ * and an error will be thrown.
44
+ */
45
+ authProcessTimeout?: number;
46
+ /** Event handlers for authentication events */
47
+ events?: AuthenticationEvents;
48
+ /** Custom ID for the auth iframe */
49
+ iframeId?: string;
50
+ /** Custom storage adapter for auth state */
51
+ storageAdapter?: StorageAdapter;
52
+ /** OAuth prompt parameter */
53
+ prompt?: string;
54
+ /** Initial state for OAuth flow */
55
+ initialState?: string;
56
+ /** Logging configuration */
57
+ logging?: LoggingConfig;
58
+ }
59
+ export interface LoggingConfig {
60
+ enabled: boolean;
61
+ namespace?: string;
62
+ level?: "debug" | "info" | "warn" | "error";
63
+ }
64
+ /**
65
+ * CivicAuth client for handling OAuth authentication
66
+ */
67
+ export declare class CivicAuth {
68
+ private config;
69
+ private iframeElement?;
70
+ private observer?;
71
+ private authPromise?;
72
+ private authPromiseResolve?;
73
+ private authPromiseReject?;
74
+ private authProcessTimeoutHandle?;
75
+ private messageEventHandler?;
76
+ private storage;
77
+ private endpoints?;
78
+ private logger;
79
+ /**
80
+ * Private constructor for CivicAuth.
81
+ * Use {@link CivicAuth.create} to create a new instance.
82
+ * @param config - Configuration options for the auth client
83
+ * @throws {CivicAuthError} If required configuration is missing
84
+ * @private
85
+ */
86
+ private constructor();
87
+ /**
88
+ * Creates and initializes a new instance of CivicAuth.
89
+ * This is the recommended way to create a CivicAuth instance.
90
+ *
91
+ * @param config - Configuration options for the auth client
92
+ * @returns A promise that resolves with the initialized CivicAuth instance
93
+ * @throws {CivicAuthError} If initialization fails or required configuration is missing
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const auth = await CivicAuth.create({
98
+ * clientId: "your-client-id",
99
+ * redirectUrl: "https://your-app.com/callback",
100
+ * oauthServerBaseUrl: "https://auth-server.com/",
101
+ * scopes: ["openid", "profile"],
102
+ * targetContainerElement: "auth-container",
103
+ * textSignals: {
104
+ * success: "Authentication successful!"
105
+ * }
106
+ * });
107
+ * ```
108
+ */
109
+ static create(config: CivicAuthClientConfig): Promise<CivicAuth>;
110
+ /**
111
+ * Initializes the auth client and checks for callback handling
112
+ * @throws {CivicAuthError} If initialization fails
113
+ */
114
+ private init;
115
+ /**
116
+ * Gets the container element for the auth iframe
117
+ * @returns The container element or null if not found
118
+ */
119
+ private getContainerElement;
120
+ /**
121
+ * Builds the authentication URL with PKCE challenge
122
+ * @returns The complete authentication URL
123
+ * @throws {CivicAuthError} If endpoints are not initialized
124
+ */
125
+ private buildAuthUrl;
126
+ private handleIframeMessage;
127
+ private logIncomingMessage;
128
+ private isValidMessageSource;
129
+ private handleValidMessage;
130
+ private handleAuthSuccess;
131
+ private handleAuthError;
132
+ private setupSignalObserver;
133
+ private handleNewTabAuth;
134
+ private handleIframeAuth;
135
+ /**
136
+ * Starts the authentication process
137
+ * @returns A promise that resolves with the authentication result
138
+ * @throws {CivicAuthError} If authentication fails or times out
139
+ */
140
+ startAuthentication(): Promise<AuthResult>;
141
+ /**
142
+ * Cleans up resources and event listeners
143
+ */
144
+ cleanup(): void;
145
+ private handleCallback;
146
+ }
147
+ //# sourceMappingURL=CivicAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CivicAuth.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/auth/CivicAuth.ts"],"names":[],"mappings":"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"}