@civic/auth 0.6.0-beta.3 → 0.6.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/shared/components/CivicAuthIframeContainer.js +1 -1
  2. package/dist/shared/components/CivicAuthIframeContainer.js.map +1 -1
  3. package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts +7 -1
  4. package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts.map +1 -1
  5. package/dist/shared/lib/BrowserAuthenticationRefresher.js +15 -2
  6. package/dist/shared/lib/BrowserAuthenticationRefresher.js.map +1 -1
  7. package/dist/shared/lib/util.d.ts +1 -1
  8. package/dist/shared/lib/util.d.ts.map +1 -1
  9. package/dist/shared/lib/util.js +6 -1
  10. package/dist/shared/lib/util.js.map +1 -1
  11. package/dist/shared/version.d.ts +1 -1
  12. package/dist/shared/version.js +1 -1
  13. package/dist/shared/version.js.map +1 -1
  14. package/dist/vanillajs/auth/AuthenticationEvents.d.ts +11 -0
  15. package/dist/vanillajs/auth/AuthenticationEvents.d.ts.map +1 -0
  16. package/dist/vanillajs/auth/AuthenticationEvents.js +36 -0
  17. package/dist/vanillajs/auth/AuthenticationEvents.js.map +1 -0
  18. package/dist/vanillajs/auth/CivicAuth.d.ts +205 -0
  19. package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -0
  20. package/dist/vanillajs/auth/CivicAuth.js +689 -0
  21. package/dist/vanillajs/auth/CivicAuth.js.map +1 -0
  22. package/dist/vanillajs/auth/OAuthCallbackHandler.d.ts +90 -0
  23. package/dist/vanillajs/auth/OAuthCallbackHandler.d.ts.map +1 -0
  24. package/dist/vanillajs/auth/OAuthCallbackHandler.js +143 -0
  25. package/dist/vanillajs/auth/OAuthCallbackHandler.js.map +1 -0
  26. package/dist/vanillajs/auth/SessionManager.d.ts +48 -0
  27. package/dist/vanillajs/auth/SessionManager.d.ts.map +1 -0
  28. package/dist/vanillajs/auth/SessionManager.js +121 -0
  29. package/dist/vanillajs/auth/SessionManager.js.map +1 -0
  30. package/dist/vanillajs/auth/TokenRefresher.d.ts +54 -0
  31. package/dist/vanillajs/auth/TokenRefresher.d.ts.map +1 -0
  32. package/dist/vanillajs/auth/TokenRefresher.js +166 -0
  33. package/dist/vanillajs/auth/TokenRefresher.js.map +1 -0
  34. package/dist/vanillajs/iframe/IframeManager.d.ts +82 -0
  35. package/dist/vanillajs/iframe/IframeManager.d.ts.map +1 -0
  36. package/dist/vanillajs/iframe/IframeManager.js +487 -0
  37. package/dist/vanillajs/iframe/IframeManager.js.map +1 -0
  38. package/dist/vanillajs/iframe/IframeResizer.d.ts +15 -0
  39. package/dist/vanillajs/iframe/IframeResizer.d.ts.map +1 -0
  40. package/dist/vanillajs/iframe/IframeResizer.js +127 -0
  41. package/dist/vanillajs/iframe/IframeResizer.js.map +1 -0
  42. package/dist/vanillajs/iframe/SignalObserver.d.ts +33 -0
  43. package/dist/vanillajs/iframe/SignalObserver.d.ts.map +1 -0
  44. package/dist/vanillajs/iframe/SignalObserver.js +162 -0
  45. package/dist/vanillajs/iframe/SignalObserver.js.map +1 -0
  46. package/dist/vanillajs/index.d.ts +17 -0
  47. package/dist/vanillajs/index.d.ts.map +1 -0
  48. package/dist/vanillajs/index.js +18 -0
  49. package/dist/vanillajs/index.js.map +1 -0
  50. package/dist/vanillajs/services/ApiService.d.ts +22 -0
  51. package/dist/vanillajs/services/ApiService.d.ts.map +1 -0
  52. package/dist/vanillajs/services/ApiService.js +82 -0
  53. package/dist/vanillajs/services/ApiService.js.map +1 -0
  54. package/dist/vanillajs/types/index.d.ts +28 -0
  55. package/dist/vanillajs/types/index.d.ts.map +1 -0
  56. package/dist/vanillajs/types/index.js +14 -0
  57. package/dist/vanillajs/types/index.js.map +1 -0
  58. package/dist/vanillajs/ui/LoadingComponents.d.ts +51 -0
  59. package/dist/vanillajs/ui/LoadingComponents.d.ts.map +1 -0
  60. package/dist/vanillajs/ui/LoadingComponents.js +363 -0
  61. package/dist/vanillajs/ui/LoadingComponents.js.map +1 -0
  62. package/dist/vanillajs/utils/auth-utils.d.ts +13 -0
  63. package/dist/vanillajs/utils/auth-utils.d.ts.map +1 -0
  64. package/dist/vanillajs/utils/auth-utils.js +15 -0
  65. package/dist/vanillajs/utils/auth-utils.js.map +1 -0
  66. package/dist/vanillajs/utils/logger.d.ts +29 -0
  67. package/dist/vanillajs/utils/logger.d.ts.map +1 -0
  68. package/dist/vanillajs/utils/logger.js +62 -0
  69. package/dist/vanillajs/utils/logger.js.map +1 -0
  70. package/package.json +1 -1
@@ -0,0 +1,205 @@
1
+ import type { AuthenticationEvents } from "./AuthenticationEvents.js";
2
+ import type { DisplayMode, AuthStorage } from "../../types.js";
3
+ import type { AuthResult, Session } from "../types/index.js";
4
+ /**
5
+ * Error codes for CivicAuth errors
6
+ */
7
+ export declare enum CivicAuthErrorCode {
8
+ CONFIG_REQUIRED = "CONFIG_REQUIRED",
9
+ INIT_FAILED = "INIT_FAILED",
10
+ ENDPOINTS_NOT_INITIALIZED = "ENDPOINTS_NOT_INITIALIZED",
11
+ CONTAINER_NOT_FOUND = "CONTAINER_NOT_FOUND",
12
+ AUTH_PROCESS_TIMEOUT = "AUTH_PROCESS_TIMEOUT",
13
+ IFRAME_LOAD_ERROR = "IFRAME_LOAD_ERROR",
14
+ INVALID_MESSAGE = "INVALID_MESSAGE"
15
+ }
16
+ /**
17
+ * Configuration options for the CivicAuth client
18
+ */
19
+ export interface CivicAuthClientConfig {
20
+ /** OAuth client ID */
21
+ clientId: string;
22
+ /** URL to redirect to after authentication */
23
+ redirectUrl: string;
24
+ /** Base URL of the OAuth server */
25
+ oauthServerBaseUrl: string;
26
+ /** Array of OAuth scopes to request */
27
+ scopes: string[];
28
+ /** HTML element or element ID where the auth iframe will be mounted */
29
+ targetContainerElement: HTMLElement | string;
30
+ /** Text signals for success and error states */
31
+ textSignals: {
32
+ /** Text to display on successful authentication */
33
+ success: string;
34
+ /** Optional text to display on authentication error */
35
+ error?: string;
36
+ };
37
+ /** Display mode for the authentication UI */
38
+ displayMode?: DisplayMode;
39
+ /** Display mode for iframe rendering - modal (full-screen overlay) or embedded (within container) */
40
+ iframeDisplayMode?: "modal" | "embedded";
41
+ /**
42
+ * Timeout duration in milliseconds for the entire authentication process.
43
+ * If the authentication process takes longer than this duration, it will be cancelled
44
+ * and an error will be thrown.
45
+ */
46
+ authProcessTimeout?: number;
47
+ /** Event handlers for authentication events */
48
+ events?: AuthenticationEvents;
49
+ /** Custom ID for the auth iframe */
50
+ iframeId?: string;
51
+ /** Custom storage adapter for auth state - uses shared AuthStorage interface */
52
+ storageAdapter?: AuthStorage;
53
+ /** OAuth prompt parameter */
54
+ prompt?: string;
55
+ /** Initial state for OAuth flow */
56
+ initialState?: string;
57
+ /** Logging configuration */
58
+ logging?: LoggingConfig;
59
+ }
60
+ export interface LoggingConfig {
61
+ enabled: boolean;
62
+ namespace?: string;
63
+ level?: "debug" | "info" | "warn" | "error";
64
+ }
65
+ /**
66
+ * CivicAuth client for handling OAuth authentication
67
+ */
68
+ export declare class CivicAuth {
69
+ /**
70
+ * Internal configuration with all optional properties resolved to required ones.
71
+ *
72
+ * We extend CivicAuthClientConfig rather than making these properties required
73
+ * in the public interface to maintain better DX (optional properties) while
74
+ * ensuring type safety internally after defaults are applied.
75
+ */
76
+ private config;
77
+ private iframeElement?;
78
+ private observer?;
79
+ private authPromise?;
80
+ private authPromiseResolve?;
81
+ private authPromiseReject?;
82
+ private authProcessTimeoutHandle?;
83
+ private messageEventHandler?;
84
+ private storage;
85
+ private endpoints?;
86
+ private logger;
87
+ private sessionManager?;
88
+ private iframeManager?;
89
+ /**
90
+ * Private constructor for CivicAuth.
91
+ * Use {@link CivicAuth.create} to create a new instance.
92
+ * @param config - Configuration options for the auth client
93
+ * @throws {CivicAuthError} If required configuration is missing
94
+ * @private
95
+ */
96
+ private constructor();
97
+ /**
98
+ * Creates and initializes a new instance of CivicAuth.
99
+ * This is the recommended way to create a CivicAuth instance.
100
+ *
101
+ * @param config - Configuration options for the auth client
102
+ * @returns A promise that resolves with the initialized CivicAuth instance
103
+ * @throws {CivicAuthError} If initialization fails or required configuration is missing
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const auth = await CivicAuth.create({
108
+ * clientId: "your-client-id",
109
+ * redirectUrl: "https://your-app.com/callback",
110
+ * oauthServerBaseUrl: "https://auth-server.com/",
111
+ * scopes: ["openid", "profile"],
112
+ * targetContainerElement: "auth-container",
113
+ * textSignals: {
114
+ * success: "Authentication successful!"
115
+ * }
116
+ * });
117
+ * ```
118
+ */
119
+ static create(config: CivicAuthClientConfig): Promise<CivicAuth>;
120
+ /**
121
+ * Initializes the auth client and checks for callback handling
122
+ * @throws {CivicAuthError} If initialization fails
123
+ */
124
+ private init;
125
+ /**
126
+ * Gets the container element for the auth iframe
127
+ * @returns The container element or null if not found
128
+ */
129
+ private getContainerElement;
130
+ /**
131
+ * Determines the appropriate iframe display mode based on container characteristics
132
+ * @param container The HTML element that will contain the iframe
133
+ * @returns "modal" for full-screen overlay or "embedded" for in-container display
134
+ */
135
+ private determineIframeDisplayMode;
136
+ /**
137
+ * Builds the authentication URL with PKCE challenge
138
+ * @returns The complete authentication URL
139
+ * @throws {CivicAuthError} If endpoints are not initialized
140
+ */
141
+ private buildAuthUrl;
142
+ private handleIframeMessage;
143
+ private logIncomingMessage;
144
+ private isValidMessageSource;
145
+ private handleValidMessage;
146
+ private handleAuthSuccess;
147
+ private handleAuthError;
148
+ private setupSignalObserver;
149
+ private handleNewTabAuth;
150
+ private handleIframeAuth;
151
+ /**
152
+ * Starts the authentication process
153
+ * @returns A promise that resolves with the authentication result
154
+ * @throws {CivicAuthError} If authentication fails or times out
155
+ */
156
+ startAuthentication(): Promise<AuthResult>;
157
+ /**
158
+ * Cleans up resources and event listeners
159
+ */
160
+ cleanup(): void;
161
+ private handleCallback;
162
+ /**
163
+ * Get the current session
164
+ */
165
+ getCurrentSession(): Promise<Session | null>;
166
+ /**
167
+ * Check if user is authenticated
168
+ */
169
+ isAuthenticated(): Promise<boolean>;
170
+ /**
171
+ * Get the current user
172
+ */
173
+ getCurrentUser(): Promise<import("../../types.js").BaseUser | null>;
174
+ /**
175
+ * Clear the current session
176
+ */
177
+ clearSession(): Promise<void>;
178
+ /**
179
+ * Manually refresh tokens
180
+ */
181
+ refreshTokens(): Promise<void>;
182
+ /**
183
+ * Get token refresher state for debugging
184
+ */
185
+ getTokenRefresherState(): {
186
+ isInitialized: boolean;
187
+ isAuthenticated: boolean;
188
+ isAutoRefreshActive: boolean;
189
+ } | null;
190
+ /**
191
+ * Update the iframe display mode
192
+ * @param mode - The display mode to use for the iframe
193
+ */
194
+ setIframeDisplayMode(mode: "modal" | "embedded"): void;
195
+ /**
196
+ * Get the current iframe display mode
197
+ * @returns The current iframe display mode
198
+ */
199
+ getIframeDisplayMode(): "modal" | "embedded" | undefined;
200
+ /**
201
+ * Destroy the auth client and clean up all resources
202
+ */
203
+ destroy(): Promise<void>;
204
+ }
205
+ //# 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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"}