@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.
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/version.d.ts.map +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 +147 -0
- package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -0
- package/dist/vanillajs/auth/CivicAuth.js +513 -0
- package/dist/vanillajs/auth/CivicAuth.js.map +1 -0
- package/dist/vanillajs/auth/SessionManager.d.ts +17 -0
- package/dist/vanillajs/auth/SessionManager.d.ts.map +1 -0
- package/dist/vanillajs/auth/SessionManager.js +86 -0
- package/dist/vanillajs/auth/SessionManager.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/iframe/domUtils.d.ts +4 -0
- package/dist/vanillajs/iframe/domUtils.d.ts.map +1 -0
- package/dist/vanillajs/iframe/domUtils.js +25 -0
- package/dist/vanillajs/iframe/domUtils.js.map +1 -0
- package/dist/vanillajs/index.d.ts +16 -0
- package/dist/vanillajs/index.d.ts.map +1 -0
- package/dist/vanillajs/index.js +15 -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/storage/BrowserCookieStorageAdapter.d.ts +19 -0
- package/dist/vanillajs/storage/BrowserCookieStorageAdapter.d.ts.map +1 -0
- package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js +101 -0
- package/dist/vanillajs/storage/BrowserCookieStorageAdapter.js.map +1 -0
- package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts +9 -0
- package/dist/vanillajs/storage/BrowserLocalStorageAdapter.d.ts.map +1 -0
- package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js +36 -0
- package/dist/vanillajs/storage/BrowserLocalStorageAdapter.js.map +1 -0
- package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts +9 -0
- package/dist/vanillajs/storage/InMemoryStorageAdapter.d.ts.map +1 -0
- package/dist/vanillajs/storage/InMemoryStorageAdapter.js +16 -0
- package/dist/vanillajs/storage/InMemoryStorageAdapter.js.map +1 -0
- package/dist/vanillajs/storage/StorageAdapter.d.ts +15 -0
- package/dist/vanillajs/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/vanillajs/storage/StorageAdapter.js +16 -0
- package/dist/vanillajs/storage/StorageAdapter.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/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/dist/vanillajs/utils/page-handlers.d.ts +29 -0
- package/dist/vanillajs/utils/page-handlers.d.ts.map +1 -0
- package/dist/vanillajs/utils/page-handlers.js +165 -0
- package/dist/vanillajs/utils/page-handlers.js.map +1 -0
- package/package.json +1 -1
package/dist/shared/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "@civic/auth:0.6.0
|
|
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,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,sBAAsB,CAAC"}
|
package/dist/shared/version.js
CHANGED
|
@@ -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,
|
|
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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"}
|