@civic/auth 0.6.1-beta.3 → 0.6.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/CHANGELOG.md +3 -0
- package/README.md +7 -0
- package/dist/nextjs/config.d.ts.map +1 -1
- package/dist/nextjs/config.js +1 -5
- package/dist/nextjs/config.js.map +1 -1
- package/dist/nextjs/hooks/useUserCookie.d.ts.map +1 -1
- package/dist/nextjs/hooks/useUserCookie.js.map +1 -1
- package/dist/nextjs/middleware.d.ts.map +1 -1
- package/dist/nextjs/middleware.js +51 -18
- package/dist/nextjs/middleware.js.map +1 -1
- package/dist/nextjs/providers/NextAuthProvider.d.ts.map +1 -1
- package/dist/nextjs/providers/NextAuthProvider.js +0 -1
- package/dist/nextjs/providers/NextAuthProvider.js.map +1 -1
- package/dist/nextjs/routeHandler.d.ts.map +1 -1
- package/dist/nextjs/routeHandler.js +8 -0
- package/dist/nextjs/routeHandler.js.map +1 -1
- package/dist/shared/hooks/useSignIn.d.ts +4 -9
- package/dist/shared/hooks/useSignIn.d.ts.map +1 -1
- package/dist/shared/hooks/useSignIn.js +42 -75
- package/dist/shared/hooks/useSignIn.js.map +1 -1
- package/dist/shared/providers/AuthContext.d.ts +2 -7
- package/dist/shared/providers/AuthContext.d.ts.map +1 -1
- package/dist/shared/providers/AuthContext.js.map +1 -1
- package/dist/shared/providers/UserProvider.d.ts +1 -5
- package/dist/shared/providers/UserProvider.d.ts.map +1 -1
- package/dist/shared/providers/UserProvider.js.map +1 -1
- 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.map +1 -1
- package/dist/vanillajs/auth/AuthenticationEvents.js +2 -2
- package/dist/vanillajs/auth/AuthenticationEvents.js.map +1 -1
- package/dist/vanillajs/auth/CivicAuth.d.ts +107 -68
- package/dist/vanillajs/auth/CivicAuth.d.ts.map +1 -1
- package/dist/vanillajs/auth/CivicAuth.js +412 -389
- package/dist/vanillajs/auth/CivicAuth.js.map +1 -1
- package/dist/vanillajs/auth/{handlers/OAuthCallbackHandler.d.ts → OAuthCallbackHandler.d.ts} +2 -2
- 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.map +1 -1
- package/dist/vanillajs/auth/SessionManager.js +2 -2
- package/dist/vanillajs/auth/SessionManager.js.map +1 -1
- package/dist/vanillajs/auth/TokenRefresher.d.ts.map +1 -1
- package/dist/vanillajs/auth/TokenRefresher.js +2 -2
- package/dist/vanillajs/auth/TokenRefresher.js.map +1 -1
- package/dist/vanillajs/iframe/IframeManager.d.ts +0 -33
- package/dist/vanillajs/iframe/IframeManager.d.ts.map +1 -1
- package/dist/vanillajs/iframe/IframeManager.js +36 -163
- package/dist/vanillajs/iframe/IframeManager.js.map +1 -1
- package/dist/vanillajs/index.d.ts +2 -2
- package/dist/vanillajs/index.d.ts.map +1 -1
- package/dist/vanillajs/index.js +2 -2
- package/dist/vanillajs/index.js.map +1 -1
- package/dist/vanillajs/services/ApiService.d.ts.map +1 -1
- package/dist/vanillajs/services/ApiService.js +2 -2
- package/dist/vanillajs/services/ApiService.js.map +1 -1
- package/dist/vanillajs/types/index.d.ts +10 -15
- package/dist/vanillajs/types/index.d.ts.map +1 -1
- package/dist/vanillajs/types/index.js +10 -15
- package/dist/vanillajs/types/index.js.map +1 -1
- package/dist/vanillajs/utils/auth-utils.d.ts +1 -2
- package/dist/vanillajs/utils/auth-utils.d.ts.map +1 -1
- package/dist/vanillajs/utils/auth-utils.js +3 -6
- package/dist/vanillajs/utils/auth-utils.js.map +1 -1
- package/dist/vanillajs/utils/logger.d.ts +15 -16
- package/dist/vanillajs/utils/logger.d.ts.map +1 -1
- package/dist/vanillajs/utils/logger.js +19 -35
- package/dist/vanillajs/utils/logger.js.map +1 -1
- package/package.json +1 -6
- package/dist/vanillajs/auth/config/ConfigProcessor.d.ts +0 -6
- package/dist/vanillajs/auth/config/ConfigProcessor.d.ts.map +0 -1
- package/dist/vanillajs/auth/config/ConfigProcessor.js +0 -59
- package/dist/vanillajs/auth/config/ConfigProcessor.js.map +0 -1
- package/dist/vanillajs/auth/handlers/IframeAuthHandler.d.ts +0 -40
- package/dist/vanillajs/auth/handlers/IframeAuthHandler.d.ts.map +0 -1
- package/dist/vanillajs/auth/handlers/IframeAuthHandler.js +0 -388
- package/dist/vanillajs/auth/handlers/IframeAuthHandler.js.map +0 -1
- package/dist/vanillajs/auth/handlers/MessageHandler.d.ts +0 -170
- package/dist/vanillajs/auth/handlers/MessageHandler.d.ts.map +0 -1
- package/dist/vanillajs/auth/handlers/MessageHandler.js +0 -367
- package/dist/vanillajs/auth/handlers/MessageHandler.js.map +0 -1
- package/dist/vanillajs/auth/handlers/OAuthCallbackHandler.d.ts.map +0 -1
- package/dist/vanillajs/auth/handlers/OAuthCallbackHandler.js +0 -301
- package/dist/vanillajs/auth/handlers/OAuthCallbackHandler.js.map +0 -1
- package/dist/vanillajs/auth/handlers/PopupHandler.d.ts +0 -108
- package/dist/vanillajs/auth/handlers/PopupHandler.d.ts.map +0 -1
- package/dist/vanillajs/auth/handlers/PopupHandler.js +0 -333
- package/dist/vanillajs/auth/handlers/PopupHandler.js.map +0 -1
- package/dist/vanillajs/auth/types/AuthTypes.d.ts +0 -128
- package/dist/vanillajs/auth/types/AuthTypes.d.ts.map +0 -1
- package/dist/vanillajs/auth/types/AuthTypes.js +0 -40
- package/dist/vanillajs/auth/types/AuthTypes.js.map +0 -1
|
@@ -4,10 +4,6 @@ import type { AuthStatus, AuthStorage, DisplayMode, ForwardedTokens, User } from
|
|
|
4
4
|
import type { AuthContextType } from "../../shared/providers/AuthContext.js";
|
|
5
5
|
import type { JWTPayload } from "jose";
|
|
6
6
|
type UserContent = Record<string, unknown> & JWTPayload;
|
|
7
|
-
type SignInResult = {
|
|
8
|
-
user: User | null;
|
|
9
|
-
error: Error | null;
|
|
10
|
-
};
|
|
11
7
|
type UserContextType<T extends UserContent = UserContent> = {
|
|
12
8
|
user: User<T> | null;
|
|
13
9
|
} & {
|
|
@@ -22,7 +18,7 @@ declare const UserProvider: <T extends UserContent>({ children, storage, user: i
|
|
|
22
18
|
user: User<T> | null;
|
|
23
19
|
signOut: () => Promise<void>;
|
|
24
20
|
authStatus: AuthStatus;
|
|
25
|
-
signIn: (displayMode?: DisplayMode) => Promise<
|
|
21
|
+
signIn: (displayMode?: DisplayMode) => Promise<void>;
|
|
26
22
|
displayMode: DisplayMode;
|
|
27
23
|
}) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
28
24
|
export type { UserContextType };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0D,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;AACxD,KAAK,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IAC1D,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACtB,GAAG;IACF,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAE7C,QAAA,MAAM,WAAW,oDAA8C,CAAC;AAEhE,QAAA,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,qFAQxC;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,WAAW,EAAE,WAAW,CAAC;CAC1B,qDAmEA,CAAC;AAEF,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAS/E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/shared/providers/UserProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { createContext, useCallback, useEffect, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type {\n AuthStatus,\n AuthStorage,\n DisplayMode,\n ForwardedTokens,\n User,\n} from \"@/types.js\";\nimport { useSession } from \"@/shared/hooks/useSession.js\";\nimport type { AuthContextType } from \"@/shared/providers/AuthContext.js\";\nimport { GenericUserSession } from \"@/shared/lib/UserSession.js\";\nimport { useToken } from \"../hooks/useToken.js\";\nimport type { JWTPayload } from \"jose\";\n\ntype UserContent = Record<string, unknown> & JWTPayload;\ntype UserContextType<T extends UserContent = UserContent> = {\n user: User<T> | null;\n} & {\n accessToken?: string | null;\n idToken?: string | null;\n forwardedTokens?: ForwardedTokens;\n} & Omit<AuthContextType, \"isAuthenticated\">;\n\nconst UserContext = createContext<UserContextType | null>(null);\n\nconst UserProvider = <T extends UserContent>({\n children,\n storage,\n user: inputUser,\n signOut,\n authStatus,\n signIn,\n displayMode,\n}: {\n children: ReactNode;\n storage: AuthStorage;\n user: User<T> | null;\n signOut: () => Promise<void>;\n authStatus: AuthStatus;\n signIn: (displayMode?: DisplayMode) => Promise<void>;\n displayMode: DisplayMode;\n}) => {\n const {\n data: session,\n error: authError,\n isLoading: authLoading,\n } = useSession();\n const tokens = useToken();\n const [userLoading, setUserLoading] = useState<boolean>(false);\n const [userError, setUserError] = useState<Error | null>(null);\n const [user, setUser] = useState<User<T> | null>(inputUser);\n\n const fetchUser = useCallback(async (): Promise<User<T> | null> => {\n if (!session?.idToken) return null;\n const userSession = new GenericUserSession<T>(storage);\n return userSession.get();\n }, [session?.idToken, storage]);\n\n useEffect(() => {\n if (session?.idToken) {\n setUserLoading(true);\n fetchUser()\n .then((user) => {\n setUserLoading(false);\n setUser((prevUser) => {\n // we only want to update the user if it's set - if a user is passed in, don't assume it is wrong here\n // it could be just the fetchUser returned null for some other reason.\n // TODO consider cleaning this up in general to avoid needing context here.\n return user ?? prevUser;\n });\n })\n .catch((error) => {\n setUserLoading(false);\n setUserError(error);\n });\n } else {\n setUser(null);\n }\n }, [fetchUser, session?.idToken]);\n\n const isLoading = authLoading || userLoading;\n const error = authError ?? userError;\n\n // While we are passing a user as a prop _and_ storing it in state,\n // there is the case where the user is not set in the state yet\n // (setState is called but the rerender has not yet happened), but\n // is passed as a prop. In this case, we want to use the prop value.\n // A better solution is to avoid having multiple layers of context.\n // If the user is passed in, we just use that.\n // We should not split user state management across multiple contexts\n const userValue = user ?? inputUser;\n\n return (\n <UserContext.Provider\n value={{\n ...tokens,\n user: userValue,\n isLoading,\n error,\n signIn,\n signOut,\n authStatus,\n displayMode: displayMode || \"iframe\",\n }}\n >\n {children}\n </UserContext.Provider>\n );\n};\n\nexport type { UserContextType };\n\nexport { UserProvider, UserContext };\n"]}
|
package/dist/shared/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "@civic/auth:0.6.1
|
|
1
|
+
export declare const VERSION = "@civic/auth:0.6.1";
|
|
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.1\";\n"]}
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getCurrentLogger } from "../utils/logger.js";
|
|
2
2
|
export class AuthenticationEvents {
|
|
3
3
|
listeners = new Map();
|
|
4
|
-
logger =
|
|
4
|
+
logger = getCurrentLogger();
|
|
5
5
|
on(event, listener) {
|
|
6
6
|
if (!this.listeners.has(event)) {
|
|
7
7
|
this.listeners.set(event, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticationEvents.js","sourceRoot":"","sources":["../../../src/vanillajs/auth/AuthenticationEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
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"]}
|
|
@@ -1,29 +1,97 @@
|
|
|
1
|
+
import type { AuthenticationEvents } from "./AuthenticationEvents.js";
|
|
2
|
+
import type { DisplayMode, AuthStorage } from "../../types.js";
|
|
1
3
|
import type { AuthResult, Session } from "../types/index.js";
|
|
2
|
-
|
|
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
|
+
}
|
|
3
65
|
/**
|
|
4
66
|
* CivicAuth client for handling OAuth authentication
|
|
5
|
-
*
|
|
6
|
-
* This is a refactored version that uses a modular architecture for better maintainability.
|
|
7
67
|
*/
|
|
8
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
|
+
*/
|
|
9
76
|
private config;
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
private logger;
|
|
13
|
-
private sessionManager?;
|
|
14
|
-
private initialDisplayMode;
|
|
77
|
+
private iframeElement?;
|
|
78
|
+
private observer?;
|
|
15
79
|
private authPromise?;
|
|
16
80
|
private authPromiseResolve?;
|
|
17
81
|
private authPromiseReject?;
|
|
18
82
|
private authProcessTimeoutHandle?;
|
|
19
|
-
private
|
|
20
|
-
private
|
|
21
|
-
private
|
|
22
|
-
private
|
|
23
|
-
private
|
|
83
|
+
private messageEventHandler?;
|
|
84
|
+
private storage;
|
|
85
|
+
private endpoints?;
|
|
86
|
+
private logger;
|
|
87
|
+
private sessionManager?;
|
|
88
|
+
private iframeManager?;
|
|
24
89
|
/**
|
|
25
|
-
* Private constructor
|
|
90
|
+
* Private constructor for CivicAuth.
|
|
26
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
|
|
27
95
|
*/
|
|
28
96
|
private constructor();
|
|
29
97
|
/**
|
|
@@ -38,12 +106,9 @@ export declare class CivicAuth {
|
|
|
38
106
|
* ```typescript
|
|
39
107
|
* const auth = await CivicAuth.create({
|
|
40
108
|
* clientId: "your-client-id",
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* oauthServerBaseUrl: "https://auth-server.com/", // optional
|
|
45
|
-
* // scopes is optional - defaults to ['openid', 'profile', 'email', 'offline_access']
|
|
46
|
-
* scopes: ["openid", "profile"], // optional
|
|
109
|
+
* redirectUrl: "https://your-app.com/callback",
|
|
110
|
+
* oauthServerBaseUrl: "https://auth-server.com/",
|
|
111
|
+
* scopes: ["openid", "profile"],
|
|
47
112
|
* targetContainerElement: "auth-container",
|
|
48
113
|
* textSignals: {
|
|
49
114
|
* success: "Authentication successful!"
|
|
@@ -54,66 +119,46 @@ export declare class CivicAuth {
|
|
|
54
119
|
static create(config: CivicAuthClientConfig): Promise<CivicAuth>;
|
|
55
120
|
/**
|
|
56
121
|
* Initializes the auth client and checks for callback handling
|
|
122
|
+
* @throws {CivicAuthError} If initialization fails
|
|
57
123
|
*/
|
|
58
124
|
private init;
|
|
59
125
|
/**
|
|
60
|
-
*
|
|
126
|
+
* Gets the container element for the auth iframe
|
|
127
|
+
* @returns The container element or null if not found
|
|
61
128
|
*/
|
|
62
|
-
private
|
|
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;
|
|
63
136
|
/**
|
|
64
137
|
* Builds the authentication URL with PKCE challenge
|
|
138
|
+
* @returns The complete authentication URL
|
|
139
|
+
* @throws {CivicAuthError} If endpoints are not initialized
|
|
65
140
|
*/
|
|
66
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;
|
|
67
151
|
/**
|
|
68
152
|
* Starts the authentication process
|
|
69
153
|
* @returns A promise that resolves with the authentication result
|
|
70
154
|
* @throws {CivicAuthError} If authentication fails or times out
|
|
71
155
|
*/
|
|
72
156
|
startAuthentication(): Promise<AuthResult>;
|
|
73
|
-
/**
|
|
74
|
-
* Handle authentication based on display mode
|
|
75
|
-
*/
|
|
76
|
-
private handleAuthenticationByDisplayMode;
|
|
77
|
-
/**
|
|
78
|
-
* Handle popup error with redirect fallback
|
|
79
|
-
*/
|
|
80
|
-
private handlePopupErrorWithFallback;
|
|
81
|
-
/**
|
|
82
|
-
* Setup authentication timeout
|
|
83
|
-
*/
|
|
84
|
-
private setupAuthenticationTimeout;
|
|
85
|
-
/**
|
|
86
|
-
* Handle successful authentication
|
|
87
|
-
*/
|
|
88
|
-
private handleAuthSuccess;
|
|
89
|
-
/**
|
|
90
|
-
* Handle authentication error
|
|
91
|
-
*/
|
|
92
|
-
private handleAuthError;
|
|
93
|
-
/**
|
|
94
|
-
* Handle popup failure - simplified like React implementation
|
|
95
|
-
*/
|
|
96
|
-
private handlePopupFailure;
|
|
97
|
-
/**
|
|
98
|
-
* Show popup failure message to user
|
|
99
|
-
*/
|
|
100
|
-
private showPopupFailureMessage;
|
|
101
|
-
/**
|
|
102
|
-
* Setup popup failure timeout
|
|
103
|
-
*/
|
|
104
|
-
private setupPopupFailureTimeout;
|
|
105
|
-
/**
|
|
106
|
-
* Gets the container element for the auth iframe
|
|
107
|
-
*/
|
|
108
|
-
private getContainerElement;
|
|
109
|
-
/**
|
|
110
|
-
* Handle OAuth callback
|
|
111
|
-
*/
|
|
112
|
-
private handleCallback;
|
|
113
157
|
/**
|
|
114
158
|
* Cleans up resources and event listeners
|
|
115
159
|
*/
|
|
116
160
|
cleanup(): void;
|
|
161
|
+
private handleCallback;
|
|
117
162
|
/**
|
|
118
163
|
* Get the current session
|
|
119
164
|
*/
|
|
@@ -156,11 +201,5 @@ export declare class CivicAuth {
|
|
|
156
201
|
* Destroy the auth client and clean up all resources
|
|
157
202
|
*/
|
|
158
203
|
destroy(): Promise<void>;
|
|
159
|
-
/**
|
|
160
|
-
* Handle logout
|
|
161
|
-
*/
|
|
162
|
-
logout(): Promise<void>;
|
|
163
204
|
}
|
|
164
|
-
export type { CivicAuthClientConfig } from "./types/AuthTypes.js";
|
|
165
|
-
export { CivicAuthErrorCode } from "./types/AuthTypes.js";
|
|
166
205
|
//# sourceMappingURL=CivicAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CivicAuth.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/auth/CivicAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CivicAuth.d.ts","sourceRoot":"","sources":["../../../src/vanillajs/auth/CivicAuth.ts"],"names":[],"mappings":"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"}
|