@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.
- package/dist/shared/components/CivicAuthIframeContainer.js +1 -1
- package/dist/shared/components/CivicAuthIframeContainer.js.map +1 -1
- package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts +7 -1
- package/dist/shared/lib/BrowserAuthenticationRefresher.d.ts.map +1 -1
- package/dist/shared/lib/BrowserAuthenticationRefresher.js +15 -2
- package/dist/shared/lib/BrowserAuthenticationRefresher.js.map +1 -1
- package/dist/shared/lib/util.d.ts +1 -1
- package/dist/shared/lib/util.d.ts.map +1 -1
- package/dist/shared/lib/util.js +6 -1
- package/dist/shared/lib/util.js.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/version.js +1 -1
- package/dist/shared/version.js.map +1 -1
- package/dist/vanillajs/auth/AuthenticationEvents.d.ts +11 -0
- package/dist/vanillajs/auth/AuthenticationEvents.d.ts.map +1 -0
- package/dist/vanillajs/auth/AuthenticationEvents.js +36 -0
- package/dist/vanillajs/auth/AuthenticationEvents.js.map +1 -0
- package/dist/vanillajs/auth/CivicAuth.d.ts +205 -0
- package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -0
- package/dist/vanillajs/auth/CivicAuth.js +689 -0
- package/dist/vanillajs/auth/CivicAuth.js.map +1 -0
- package/dist/vanillajs/auth/OAuthCallbackHandler.d.ts +90 -0
- package/dist/vanillajs/auth/OAuthCallbackHandler.d.ts.map +1 -0
- package/dist/vanillajs/auth/OAuthCallbackHandler.js +143 -0
- package/dist/vanillajs/auth/OAuthCallbackHandler.js.map +1 -0
- package/dist/vanillajs/auth/SessionManager.d.ts +48 -0
- package/dist/vanillajs/auth/SessionManager.d.ts.map +1 -0
- package/dist/vanillajs/auth/SessionManager.js +121 -0
- package/dist/vanillajs/auth/SessionManager.js.map +1 -0
- package/dist/vanillajs/auth/TokenRefresher.d.ts +54 -0
- package/dist/vanillajs/auth/TokenRefresher.d.ts.map +1 -0
- package/dist/vanillajs/auth/TokenRefresher.js +166 -0
- package/dist/vanillajs/auth/TokenRefresher.js.map +1 -0
- package/dist/vanillajs/iframe/IframeManager.d.ts +82 -0
- package/dist/vanillajs/iframe/IframeManager.d.ts.map +1 -0
- package/dist/vanillajs/iframe/IframeManager.js +487 -0
- package/dist/vanillajs/iframe/IframeManager.js.map +1 -0
- package/dist/vanillajs/iframe/IframeResizer.d.ts +15 -0
- package/dist/vanillajs/iframe/IframeResizer.d.ts.map +1 -0
- package/dist/vanillajs/iframe/IframeResizer.js +127 -0
- package/dist/vanillajs/iframe/IframeResizer.js.map +1 -0
- package/dist/vanillajs/iframe/SignalObserver.d.ts +33 -0
- package/dist/vanillajs/iframe/SignalObserver.d.ts.map +1 -0
- package/dist/vanillajs/iframe/SignalObserver.js +162 -0
- package/dist/vanillajs/iframe/SignalObserver.js.map +1 -0
- package/dist/vanillajs/index.d.ts +17 -0
- package/dist/vanillajs/index.d.ts.map +1 -0
- package/dist/vanillajs/index.js +18 -0
- package/dist/vanillajs/index.js.map +1 -0
- package/dist/vanillajs/services/ApiService.d.ts +22 -0
- package/dist/vanillajs/services/ApiService.d.ts.map +1 -0
- package/dist/vanillajs/services/ApiService.js +82 -0
- package/dist/vanillajs/services/ApiService.js.map +1 -0
- package/dist/vanillajs/types/index.d.ts +28 -0
- package/dist/vanillajs/types/index.d.ts.map +1 -0
- package/dist/vanillajs/types/index.js +14 -0
- package/dist/vanillajs/types/index.js.map +1 -0
- package/dist/vanillajs/ui/LoadingComponents.d.ts +51 -0
- package/dist/vanillajs/ui/LoadingComponents.d.ts.map +1 -0
- package/dist/vanillajs/ui/LoadingComponents.js +363 -0
- package/dist/vanillajs/ui/LoadingComponents.js.map +1 -0
- package/dist/vanillajs/utils/auth-utils.d.ts +13 -0
- package/dist/vanillajs/utils/auth-utils.d.ts.map +1 -0
- package/dist/vanillajs/utils/auth-utils.js +15 -0
- package/dist/vanillajs/utils/auth-utils.js.map +1 -0
- package/dist/vanillajs/utils/logger.d.ts +29 -0
- package/dist/vanillajs/utils/logger.d.ts.map +1 -0
- package/dist/vanillajs/utils/logger.js +62 -0
- package/dist/vanillajs/utils/logger.js.map +1 -0
- 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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"}
|