@abyss-project/commons-front-core 5.0.1 → 6.1.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 (51) hide show
  1. package/dist/{CookieConsentSettings.component-B7HoVxDK.js → CookieConsentSettings.component-3Z3YnI96.js} +503 -451
  2. package/dist/auth/client/abyss-login.d.ts +61 -0
  3. package/dist/auth/client/abyss-login.spec.d.ts +1 -0
  4. package/dist/auth/client/auth-refresh-interceptor.d.ts +41 -0
  5. package/dist/auth/client/auth-refresh-interceptor.spec.d.ts +1 -0
  6. package/dist/auth/client/index.d.ts +2 -0
  7. package/dist/auth/client/web-bridge.d.ts +10 -5
  8. package/dist/auth/components/AuthHeroLayout/AuthHeroLayout.component.d.ts +39 -0
  9. package/dist/auth/components/AuthHeroLayout/AuthHeroLayout.component.spec.d.ts +1 -0
  10. package/dist/auth/components/AuthHeroLayout/auth-hero.context.d.ts +11 -0
  11. package/dist/auth/components/RequireSession/RequireSession.component.d.ts +17 -0
  12. package/dist/auth/components/RequireSession/RequireSession.component.spec.d.ts +1 -0
  13. package/dist/auth/components/RequireSession/RequireSession.logout.spec.d.ts +1 -0
  14. package/dist/auth/components/SessionBoundary/AbyssSessionBoundary.component.d.ts +27 -0
  15. package/dist/auth/components/SessionBoundary/AbyssSessionBoundary.component.spec.d.ts +1 -0
  16. package/dist/auth/components/SessionErrorScreen/SessionErrorScreen.component.d.ts +27 -0
  17. package/dist/auth/components/index.d.ts +9 -0
  18. package/dist/auth/components/shared/OneTimeCodeField.component.d.ts +6 -2
  19. package/dist/auth/components/shared/OneTimeCodeField.component.spec.d.ts +1 -0
  20. package/dist/auth/components/test-support/own-css.d.ts +5 -0
  21. package/dist/auth-client.js +33 -22
  22. package/dist/cookie-consent.js +1 -1
  23. package/dist/hooks/use-rich-intl.hook.d.ts +60 -0
  24. package/dist/{index-IWLHhMeY.js → index-B01u4RDj.js} +1 -1
  25. package/dist/{index-vc79tKxC.js → index-B9H2t9pf.js} +24698 -24125
  26. package/dist/{index-B9j-3Wv9.js → index-BFmCESKZ.js} +2 -2
  27. package/dist/{index-CuhdwbRD.js → index-BK9rDAfL.js} +4 -4
  28. package/dist/{index-C-ryoEBt.js → index-BNwzLulO.js} +2 -2
  29. package/dist/{index-BCNdS_hZ.js → index-BVI8irok.js} +2 -2
  30. package/dist/{index-alA0Reco.js → index-BdiCSg8E.js} +3 -3
  31. package/dist/{index-DQAX2wNI.js → index-BwMujprD.js} +2 -2
  32. package/dist/{index-CDh8wzu8.js → index-C2oiOgnk.js} +3 -3
  33. package/dist/{index-BlzK79bL.js → index-C5Uf33HY.js} +3 -3
  34. package/dist/{index-PxLJ-vzu.js → index-CLRN5aZY.js} +2 -2
  35. package/dist/{index-CMfXPyXq.js → index-CLberJb6.js} +4 -4
  36. package/dist/{index-DwOujeYK.js → index-DAtUrR1w.js} +2 -2
  37. package/dist/{index-DnCvSvTf.js → index-DEok2N8Y.js} +2 -2
  38. package/dist/{index-BYFdosUa.js → index-DIJAhLW1.js} +3 -3
  39. package/dist/{index-BQJ_IibV.js → index-D_Yt7xtB.js} +2 -2
  40. package/dist/{index-LoP5aAOy.js → index-DfMTxob_.js} +2 -2
  41. package/dist/{index-DZ8YTYOY.js → index-GYxgqfEX.js} +2 -2
  42. package/dist/{index-Db7YwEDm.js → index-LlUhqvEy.js} +2 -2
  43. package/dist/{index-Pm0jV-Wz.js → index-Qhz-eUY5.js} +2 -2
  44. package/dist/{index-DvjhhENb.js → index-acSfGhBy.js} +2 -2
  45. package/dist/{index-D0uOg6A0.js → index-mCtQ66kG.js} +4 -4
  46. package/dist/index.js +277 -259
  47. package/dist/translations/en.d.ts +26 -0
  48. package/dist/translations/fr.d.ts +26 -0
  49. package/dist/use-auth.hook-oRxzI95f.js +469 -0
  50. package/package.json +4 -4
  51. package/dist/use-auth.hook-DatVLGxS.js +0 -394
@@ -0,0 +1,61 @@
1
+ import { AbyssService } from '@abyss-project/main';
2
+ import { AuthClient } from './auth-client';
3
+ /** Where a web satellite sends its users to sign in: abyss-main's single login page. */
4
+ export interface AbyssLoginTarget {
5
+ /** abyss-main's web origin (`VITE_ABYSS_URL`), with or without a trailing `/`. */
6
+ abyssSite: string;
7
+ /** The satellite asking: abyss-main brings the user back to its site once signed in. */
8
+ service: AbyssService;
9
+ /**
10
+ * The satellite page to come back to (`pathname + search`, see `currentReturnPath`). Absent:
11
+ * abyss-main brings the user back to the satellite's home page.
12
+ */
13
+ redirectPath?: string;
14
+ }
15
+ /** `sessionStorage` key of the guard against redirect loops (one automatic redirect per tab). */
16
+ export declare const LOGIN_REDIRECT_GUARD_KEY = "abyss-login-redirect";
17
+ /** A tab back from the login page still signed out within this delay does not redirect again. */
18
+ export declare const LOGIN_REDIRECT_GUARD_TTL_MS = 300000;
19
+ /**
20
+ * `<abyssSite>/auth/login?abyss_service=<service>[&redirect_path=<redirectPath>]`, each value
21
+ * percent-encoded (`&`, `+`, `#`, `%` and `/` included) so that abyss-main reads back the exact path.
22
+ */
23
+ export declare const buildAbyssLoginUrl: ({ abyssSite, service, redirectPath, }: AbyssLoginTarget) => string;
24
+ /**
25
+ * The page to come back to after signing in: `pathname + search`. The hash is dropped on purpose:
26
+ * it never reaches abyss-main's server-side checks and no satellite route depends on it.
27
+ */
28
+ export declare const currentReturnPath: (location?: Pick<Location, "pathname" | "search">) => string;
29
+ /**
30
+ * `true` while this tab was sent to the login page less than `LOGIN_REDIRECT_GUARD_TTL_MS` ago. An
31
+ * expired or unreadable guard is removed.
32
+ */
33
+ export declare const readLoginRedirectGuard: () => boolean;
34
+ /** Forgets the guard: the session is back, or the user asked to try again. */
35
+ export declare const clearLoginRedirectGuard: () => void;
36
+ /**
37
+ * The user asked to sign in (a **Sign in** button): leaves for abyss-main's login page. The guard
38
+ * is left as it is: it only counts automatic redirects (D8), so an explicit click never turns a
39
+ * later protected page into the "still signed out" screen.
40
+ */
41
+ export declare const redirectToAbyssLogin: (target: AbyssLoginTarget) => void;
42
+ /**
43
+ * The automatic redirect of a protected page opened without a session (`RequireSession`): sets the
44
+ * guard (now), then leaves for abyss-main's login page.
45
+ */
46
+ export declare const autoRedirectToAbyssLogin: (target: AbyssLoginTarget) => void;
47
+ /**
48
+ * `true` once `logoutToAbyss` started: the ANONYMOUS state that follows is this sign-out, not a
49
+ * session to restore, and must not redirect again (with this page's `redirect_path`).
50
+ */
51
+ export declare const isLeavingForAbyssLogin: () => boolean;
52
+ /**
53
+ * Revokes the session (abyss-main's single web session: every web service is signed out), then
54
+ * opens abyss-main's login page for this service, without `redirect_path`: signing in again brings
55
+ * the user to the service's home page. The page is marked as leaving first
56
+ * (`isLeavingForAbyssLogin`), so that `RequireSession` does not answer the sign-out with a redirect
57
+ * of its own, back to the page being left (CA8). The page is left even if the revocation call
58
+ * failed (the session is forgotten locally either way, `AuthClient.logout`); the failure still
59
+ * rejects.
60
+ */
61
+ export declare const logoutToAbyss: (client: AuthClient, { abyssSite, service }: Omit<AbyssLoginTarget, "redirectPath">) => Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ import { AuthClient } from './auth-client';
2
+ /** The request config an axios error carries, as far as the replay reads and writes it. */
3
+ interface ReplayableRequest {
4
+ url?: string;
5
+ headers?: Record<string, unknown>;
6
+ /** Set on the one replay of a request that met an expired access token. */
7
+ abyssAuthReplayed?: boolean;
8
+ }
9
+ interface RejectedRequest {
10
+ config?: ReplayableRequest;
11
+ response?: {
12
+ status?: number;
13
+ data?: {
14
+ error?: {
15
+ message?: string;
16
+ };
17
+ };
18
+ };
19
+ }
20
+ /**
21
+ * The parts of an axios instance the interceptor uses. Structural: every SDK core bundles its own
22
+ * axios, whose types are not the same declarations.
23
+ */
24
+ export interface AuthRefreshAxios {
25
+ interceptors: {
26
+ response: {
27
+ use(onFulfilled: null, onRejected: (error: RejectedRequest) => Promise<unknown>): number;
28
+ eject(id: number): void;
29
+ };
30
+ };
31
+ request(config: ReplayableRequest): Promise<unknown>;
32
+ }
33
+ /**
34
+ * On every given axios instance (the SDK cores of the app: `AbyssCore.axios`, its own core, the
35
+ * other cores it calls): a 401 `Token Expired`, outside abyss-main's `auth/` routes, triggers one
36
+ * `client.refresh()` then one replay with the new access token. A second 401 on the replay, any
37
+ * other 401, or no session after the refresh: the error is propagated as is. Returns the removal
38
+ * of these interceptors.
39
+ */
40
+ export declare const attachAuthRefreshInterceptor: (client: AuthClient, axiosInstances: readonly AuthRefreshAxios[]) => (() => void);
41
+ export {};
@@ -1,5 +1,7 @@
1
+ export * from './abyss-login';
1
2
  export * from './auth-bridge';
2
3
  export * from './auth-client';
4
+ export * from './auth-refresh-interceptor';
3
5
  export * from './native-plugin';
4
6
  export * from './token-storage';
5
7
  export * from './web-bridge';
@@ -1,13 +1,18 @@
1
1
  import { AuthBridge } from './auth-bridge';
2
2
  export declare const GOOGLE_IDENTITY_SCRIPT_URL = "https://accounts.google.com/gsi/client";
3
3
  export declare const APPLE_ID_SCRIPT_URL = "https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1.0/en_US/appleid.auth.js";
4
+ /**
5
+ * The provider identifiers of the site. Only abyss-main's login page offers Google and Apple on the
6
+ * web: a web satellite passes none, and `google()` / `apple()` then reject with
7
+ * `AuthBridgeErrorCode.UNSUPPORTED`. Passkeys never depend on them.
8
+ */
4
9
  export interface WebBridgeConfig {
5
- /** Google OAuth client id (web application type). */
6
- googleClientId: string;
7
- /** Apple Services ID of the site. */
8
- appleServiceId: string;
10
+ /** Google OAuth client id (web application type). Absent: `google()` is unsupported. */
11
+ googleClientId?: string;
12
+ /** Apple Services ID of the site. Absent (or no `appleRedirectUri`): `apple()` is unsupported. */
13
+ appleServiceId?: string;
9
14
  /** Return URL declared on the Services ID; required by Apple JS even in popup mode. */
10
- appleRedirectUri: string;
15
+ appleRedirectUri?: string;
11
16
  }
12
17
  /** The bridge of every web front: WebAuthn, Google Identity Services, Sign in with Apple JS. */
13
18
  export declare const createWebBridge: (config: WebBridgeConfig) => AuthBridge;
@@ -0,0 +1,39 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { AbyssService } from '@abyss-project/main';
3
+ /**
4
+ * - `web` (default): the hero below `md` only; from `md` up the children render alone, so the
5
+ * host keeps its own desktop layout (abyss-main's split screen).
6
+ * - `native`: the hero at every width, the sheet centred and at most `SHEET_MAX_WIDTH` wide on a
7
+ * large screen (a tablet in landscape keeps the service's identity).
8
+ */
9
+ export declare enum AuthHeroLayoutVariant {
10
+ WEB = "web",
11
+ NATIVE = "native"
12
+ }
13
+ export type AuthHeroLayoutProps = {
14
+ /**
15
+ * Requested service, already validated. null/undefined or a service without a tagline -> Abyss
16
+ * logo, name and tagline; a service without logo (Odyssey) -> Abyss logo, its own name and tagline.
17
+ */
18
+ service?: AbyssService | null;
19
+ /** `AuthHeroLayoutVariant.WEB` by default. */
20
+ variant?: AuthHeroLayoutVariant;
21
+ children: ReactNode;
22
+ };
23
+ /**
24
+ * The frame of the sign-in screen (D1, D6): a hero carrying the requested service's logo, name and
25
+ * tagline on the brand gradient, then a sheet with rounded top corners climbing over it, holding
26
+ * the children. The hero pads the top safe area, the sheet the bottom one (D7). The sheet is the
27
+ * page's `<main>` landmark (the hosts have none around the sign-in screen).
28
+ *
29
+ * - `AuthHeroLayoutVariant.WEB` (default): the hero below `md` only. From `md` up the children
30
+ * render alone, so the host keeps its own desktop layout; the wrappers then take no box
31
+ * (`display: contents`), which keeps the children mounted when the screen crosses the breakpoint
32
+ * (a rotated tablet does not restart the flow).
33
+ * - `AuthHeroLayoutVariant.NATIVE`: the hero at every width; on a screen wider than a phone the
34
+ * sheet is centred, at most 480 px wide, and the hero's content is aligned on it.
35
+ *
36
+ * Children shrink the hero through `useAuthHero().setCompact` (`AuthFlow` does it at the code,
37
+ * second-factor and enrolment steps).
38
+ */
39
+ export declare const AuthHeroLayout: FC<AuthHeroLayoutProps>;
@@ -0,0 +1,11 @@
1
+ import { Context } from 'react';
2
+ export interface AuthHeroContextValue {
3
+ /** Shrinks the hero (tile and name on one line, no tagline), or brings it back to full size. */
4
+ setCompact: (compact: boolean) => void;
5
+ /** Rendered in the hero's sheet: the hero pads the top safe area, the sheet the bottom one. */
6
+ insideHero: boolean;
7
+ }
8
+ /** Outside an `AuthHeroLayout` (or on a large screen): no hero to shrink, no safe area handled. */
9
+ export declare const AuthHeroContext: Context<AuthHeroContextValue>;
10
+ /** The hero around the auth screen, if any; a no-op outside `AuthHeroLayout`. */
11
+ export declare const useAuthHero: () => AuthHeroContextValue;
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ import { AbyssService } from '@abyss-project/main';
3
+ export type RequireSessionProps = {
4
+ service: AbyssService;
5
+ /** abyss-main's web origin (`VITE_ABYSS_URL`). */
6
+ abyssSite: string;
7
+ children: ReactNode;
8
+ };
9
+ /**
10
+ * Wraps the protected layouts of a web satellite (D1, D8). Signed in: the guard against redirect
11
+ * loops is cleared and the page renders. Signed out: one automatic redirect to abyss-main's login
12
+ * page per tab and per 5 min, back to this exact page (`pathname + search`); signed out again
13
+ * within that delay, or abyss-main unreachable: a terminal screen, never a new redirect. Signed
14
+ * out by `logoutToAbyss`: that function already leaves for the login page, so nothing more here
15
+ * than the loading screen (CA8).
16
+ */
17
+ export declare const RequireSession: ({ service, abyssSite, children, }: RequireSessionProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { AbyssService, IUser } from '@abyss-project/main';
3
+ export type AbyssSessionBoundaryProps = {
4
+ service: AbyssService;
5
+ /** abyss-main's web origin (`VITE_ABYSS_URL`). */
6
+ abyssSite: string;
7
+ /**
8
+ * Opens the service for the signed-in user before anything renders (`activateService` if
9
+ * needed, `user.me`…): run once per user id. A rejection shows the `prepare-failed` screen.
10
+ */
11
+ prepare?: (user: IUser) => Promise<void>;
12
+ /**
13
+ * **Sign out** of the `prepare-failed` screen, when the host signs out its own way (a native app,
14
+ * which has no abyss-main login page to leave for). Absent: `logoutToAbyss`.
15
+ */
16
+ onSignOut?: () => Promise<void> | void;
17
+ children: ReactNode;
18
+ };
19
+ /**
20
+ * The root of a web satellite, inside `<AuthProvider>` (D1): restores the session
21
+ * (`client.bootstrap()`) behind the loading screen, then prepares the service for the signed-in
22
+ * user. Signed out, it renders its children: public pages stay reachable, and `<RequireSession>`
23
+ * guards the protected ones. Signed in but offline (a native app started without network, its user
24
+ * restored): the children render unprepared, and the preparation runs once back online, the app
25
+ * staying on screen meanwhile.
26
+ */
27
+ export declare const AbyssSessionBoundary: ({ service, abyssSite, prepare, onSignOut, children, }: AbyssSessionBoundaryProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { AbyssService } from '@abyss-project/main';
2
+ /** Why a web satellite stops on this screen instead of redirecting (D8). */
3
+ export declare enum SessionErrorReason {
4
+ /** Back from abyss-main's login page still signed out, less than 5 min after leaving for it. */
5
+ STILL_ANONYMOUS = "still-anonymous",
6
+ /** abyss-main could not be reached at launch: no session to restore, no redirect either. */
7
+ UNREACHABLE = "unreachable",
8
+ /** Signed in, but the satellite could not open its service (`activateService`, `user.me`…). */
9
+ PREPARE_FAILED = "prepare-failed"
10
+ }
11
+ export type SessionErrorScreenProps = {
12
+ reason: SessionErrorReason;
13
+ /** The satellite: its name is said when it could not be opened. */
14
+ service: AbyssService;
15
+ /** **Try again**, always offered. */
16
+ onRetry: () => void;
17
+ /** **Sign in**, offered when given. */
18
+ onSignIn?: () => void;
19
+ /** **Sign out**, offered only for `PREPARE_FAILED` (a session exists then). */
20
+ onSignOut?: () => void;
21
+ };
22
+ /**
23
+ * The terminal screen of a web satellite's session (D8): it says why the page cannot open (a title
24
+ * and one sentence of explanation per reason), and never redirects by itself — every way out is a
25
+ * button.
26
+ */
27
+ export declare const SessionErrorScreen: ({ reason, service, onRetry, onSignIn, onSignOut, }: SessionErrorScreenProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,8 @@
1
1
  export { AuthFlow } from './AuthFlow/AuthFlow.component';
2
2
  export type { AuthFlowProps } from './AuthFlow/AuthFlow.component';
3
+ export { AuthHeroLayout, AuthHeroLayoutVariant, } from './AuthHeroLayout/AuthHeroLayout.component';
4
+ export type { AuthHeroLayoutProps } from './AuthHeroLayout/AuthHeroLayout.component';
5
+ export { useAuthHero } from './AuthHeroLayout/auth-hero.context';
3
6
  export type { AuthFlowContext, AuthFlowLegal, AuthFlowResult, } from './AuthFlow/auth-flow.types';
4
7
  export { AuthProviderButtons, AuthProviderKind, } from './AuthProviderButtons/AuthProviderButtons.component';
5
8
  export type { AuthFlowProviders, AuthProviderButtonsProps, } from './AuthProviderButtons/AuthProviderButtons.component';
@@ -9,3 +12,9 @@ export type { ReauthDialogProps } from './ReauthDialog/ReauthDialog.component';
9
12
  export { AuthReauthHost } from './ReauthDialog/AuthReauthHost.component';
10
13
  export { MfaRequirementBanner } from './MfaRequirementBanner/MfaRequirementBanner.component';
11
14
  export type { MfaRequirementBannerProps } from './MfaRequirementBanner/MfaRequirementBanner.component';
15
+ export { AbyssSessionBoundary } from './SessionBoundary/AbyssSessionBoundary.component';
16
+ export type { AbyssSessionBoundaryProps } from './SessionBoundary/AbyssSessionBoundary.component';
17
+ export { RequireSession } from './RequireSession/RequireSession.component';
18
+ export type { RequireSessionProps } from './RequireSession/RequireSession.component';
19
+ export { SessionErrorReason, SessionErrorScreen, } from './SessionErrorScreen/SessionErrorScreen.component';
20
+ export type { SessionErrorScreenProps } from './SessionErrorScreen/SessionErrorScreen.component';
@@ -10,8 +10,12 @@ type Props = {
10
10
  autoFocus?: boolean;
11
11
  };
12
12
  /**
13
- * Six-digit code field (e-mail code, TOTP). `one-time-code` lets the platform offer the code it
14
- * just received; a pasted code keeps working whatever its spacing, since only the digits are kept.
13
+ * Six-digit code field (e-mail code, TOTP), drawn as six cells. The cells only render the value:
14
+ * the field stays a single real `<input>` laid transparent over them, so `one-time-code` still
15
+ * lets the platform offer the code it just received, a pasted code keeps working whatever its
16
+ * spacing (only the digits are kept), and a click on any cell lands in that input. After an
17
+ * error, the focus comes back to the input as soon as it can be typed in again, and the cells
18
+ * leave their red state at the first new digit (the host's message keeps saying the cause).
15
19
  */
16
20
  export declare const OneTimeCodeField: ({ id, label, value, onChange, disabled, error, autoFocus, }: Props) => import("react/jsx-runtime").JSX.Element;
17
21
  export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The declarations emotion generated for an element's own classes (pseudo-elements excluded), as
3
+ * written: unlike `getComputedStyle`, it keeps `var(...)` and `calc(...)` values readable.
4
+ */
5
+ export declare const ownCss: (element: Element) => string;
@@ -1,26 +1,37 @@
1
- import { a as e, A as R, R as _, b as s, c as S, s as r } from "./token-storage-CbWrBeIP.js";
2
- import { g as A, i as T, j as o, A as u, G as L, c as h, L as M, d as O, e as P, a as C, b as I, R as c, U as d, f as H, h as N, u as g } from "./use-auth.hook-DatVLGxS.js";
1
+ import { q as e, t as R, u as r, A as E, G as t, L as _, a as o, k as A, j as S, m as T, n as L, g as u, h as i, R as c, U as d, p as h, f as n, b as g, d as I, o as G, s as M, c as O, i as b, l as C, r as P, e as N, v as U } from "./use-auth.hook-oRxzI95f.js";
2
+ import { a as H, A as Y, R as l, b as F, c as y, s as f } from "./token-storage-CbWrBeIP.js";
3
3
  export {
4
- A as APPLE_ID_SCRIPT_URL,
5
- e as AuthBridgeError,
6
- R as AuthBridgeErrorCode,
7
- T as AuthContext,
8
- o as AuthProvider,
9
- u as AuthStatus,
10
- L as GOOGLE_IDENTITY_SCRIPT_URL,
11
- h as LOST_RESPONSE_LATE_RETRIES_AT_MS,
12
- M as LOST_RESPONSE_RETRY_DELAYS_MS,
13
- O as REFRESH_ATTEMPT_TIMEOUT_MS,
14
- P as REFRESH_LOCK_NAME,
15
- C as REFRESH_MARGIN_MS,
16
- I as REFRESH_REPLAY_GRACE_MS,
17
- _ as REFRESH_TOKEN_STORAGE_KEY,
4
+ e as APPLE_ID_SCRIPT_URL,
5
+ H as AuthBridgeError,
6
+ Y as AuthBridgeErrorCode,
7
+ R as AuthContext,
8
+ r as AuthProvider,
9
+ E as AuthStatus,
10
+ t as GOOGLE_IDENTITY_SCRIPT_URL,
11
+ _ as LOGIN_REDIRECT_GUARD_KEY,
12
+ o as LOGIN_REDIRECT_GUARD_TTL_MS,
13
+ A as LOST_RESPONSE_LATE_RETRIES_AT_MS,
14
+ S as LOST_RESPONSE_RETRY_DELAYS_MS,
15
+ T as REFRESH_ATTEMPT_TIMEOUT_MS,
16
+ L as REFRESH_LOCK_NAME,
17
+ u as REFRESH_MARGIN_MS,
18
+ i as REFRESH_REPLAY_GRACE_MS,
19
+ l as REFRESH_TOKEN_STORAGE_KEY,
18
20
  c as ReauthMethod,
19
21
  d as UNREACHABLE_RETRY_MS,
20
- H as createAuthClient,
21
- s as createSecureTokenStorage,
22
- N as createWebBridge,
23
- S as createWebTokenStorage,
24
- r as sha256Hex,
25
- g as useAuth
22
+ h as attachAuthRefreshInterceptor,
23
+ n as autoRedirectToAbyssLogin,
24
+ g as buildAbyssLoginUrl,
25
+ I as clearLoginRedirectGuard,
26
+ G as createAuthClient,
27
+ F as createSecureTokenStorage,
28
+ M as createWebBridge,
29
+ y as createWebTokenStorage,
30
+ O as currentReturnPath,
31
+ b as isLeavingForAbyssLogin,
32
+ C as logoutToAbyss,
33
+ P as readLoginRedirectGuard,
34
+ N as redirectToAbyssLogin,
35
+ f as sha256Hex,
36
+ U as useAuth
26
37
  };
@@ -1,4 +1,4 @@
1
- import { A as s, c as a, C as n, a as C, D as i, R as t, V as r, d as A, f as k, r as c, e as l, u as D, b as E, w as I } from "./CookieConsentSettings.component-B7HoVxDK.js";
1
+ import { A as s, c as a, C as n, a as C, D as i, R as t, V as r, d as A, f as k, r as c, e as l, u as D, b as E, w as I } from "./CookieConsentSettings.component-3Z3YnI96.js";
2
2
  export {
3
3
  s as AbyssCookieConsentProvider,
4
4
  a as COOKIE_NAME,
@@ -203,6 +203,10 @@ export declare const translations: {
203
203
  title: string;
204
204
  content: string;
205
205
  };
206
+ "monitor-incident-escalated": {
207
+ title: string;
208
+ content: string;
209
+ };
206
210
  "monitor-incident-summary": {
207
211
  title: string;
208
212
  content: string;
@@ -1563,6 +1567,19 @@ export declare const translations: {
1563
1567
  };
1564
1568
  };
1565
1569
  auth: {
1570
+ hero: {
1571
+ tagline: {
1572
+ ABYSS: string;
1573
+ ABYSS_CLOUD: string;
1574
+ ABYSS_MEMORIES: string;
1575
+ ABYSS_TRAINING: string;
1576
+ ABYSS_FORM: string;
1577
+ ABYSS_CRYPT: string;
1578
+ ABYSS_BANKING: string;
1579
+ ABYSS_SPOTLIGHT: string;
1580
+ ABYSS_GAME_ODYSSEY: string;
1581
+ };
1582
+ };
1566
1583
  flow: {
1567
1584
  email: {
1568
1585
  title: string;
@@ -1846,6 +1863,19 @@ export declare const translations: {
1846
1863
  'organization-overdue': string;
1847
1864
  action: string;
1848
1865
  };
1866
+ 'session-error': {
1867
+ 'still-anonymous': string;
1868
+ unreachable: string;
1869
+ 'prepare-failed': string;
1870
+ details: {
1871
+ 'still-anonymous': string;
1872
+ unreachable: string;
1873
+ 'prepare-failed': string;
1874
+ };
1875
+ retry: string;
1876
+ 'sign-in': string;
1877
+ 'sign-out': string;
1878
+ };
1849
1879
  };
1850
1880
  };
1851
1881
  en: {
@@ -2049,6 +2079,10 @@ export declare const translations: {
2049
2079
  title: string;
2050
2080
  content: string;
2051
2081
  };
2082
+ "monitor-incident-escalated": {
2083
+ title: string;
2084
+ content: string;
2085
+ };
2052
2086
  "monitor-incident-summary": {
2053
2087
  title: string;
2054
2088
  content: string;
@@ -3409,6 +3443,19 @@ export declare const translations: {
3409
3443
  };
3410
3444
  };
3411
3445
  auth: {
3446
+ hero: {
3447
+ tagline: {
3448
+ ABYSS: string;
3449
+ ABYSS_CLOUD: string;
3450
+ ABYSS_MEMORIES: string;
3451
+ ABYSS_TRAINING: string;
3452
+ ABYSS_FORM: string;
3453
+ ABYSS_CRYPT: string;
3454
+ ABYSS_BANKING: string;
3455
+ ABYSS_SPOTLIGHT: string;
3456
+ ABYSS_GAME_ODYSSEY: string;
3457
+ };
3458
+ };
3412
3459
  flow: {
3413
3460
  email: {
3414
3461
  title: string;
@@ -3692,6 +3739,19 @@ export declare const translations: {
3692
3739
  'organization-overdue': string;
3693
3740
  action: string;
3694
3741
  };
3742
+ 'session-error': {
3743
+ 'still-anonymous': string;
3744
+ unreachable: string;
3745
+ 'prepare-failed': string;
3746
+ details: {
3747
+ 'still-anonymous': string;
3748
+ unreachable: string;
3749
+ 'prepare-failed': string;
3750
+ };
3751
+ retry: string;
3752
+ 'sign-in': string;
3753
+ 'sign-out': string;
3754
+ };
3695
3755
  };
3696
3756
  };
3697
3757
  };
@@ -1,4 +1,4 @@
1
- import { P as L, N as M, k as $, D as E, l as y, T as S, I as j } from "./index-vc79tKxC.js";
1
+ import { P as L, N as M, k as $, D as E, l as y, T as S, I as j } from "./index-B9H2t9pf.js";
2
2
  class v {
3
3
  /**
4
4
  @internal