@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.
- package/dist/{CookieConsentSettings.component-B7HoVxDK.js → CookieConsentSettings.component-3Z3YnI96.js} +503 -451
- package/dist/auth/client/abyss-login.d.ts +61 -0
- package/dist/auth/client/abyss-login.spec.d.ts +1 -0
- package/dist/auth/client/auth-refresh-interceptor.d.ts +41 -0
- package/dist/auth/client/auth-refresh-interceptor.spec.d.ts +1 -0
- package/dist/auth/client/index.d.ts +2 -0
- package/dist/auth/client/web-bridge.d.ts +10 -5
- package/dist/auth/components/AuthHeroLayout/AuthHeroLayout.component.d.ts +39 -0
- package/dist/auth/components/AuthHeroLayout/AuthHeroLayout.component.spec.d.ts +1 -0
- package/dist/auth/components/AuthHeroLayout/auth-hero.context.d.ts +11 -0
- package/dist/auth/components/RequireSession/RequireSession.component.d.ts +17 -0
- package/dist/auth/components/RequireSession/RequireSession.component.spec.d.ts +1 -0
- package/dist/auth/components/RequireSession/RequireSession.logout.spec.d.ts +1 -0
- package/dist/auth/components/SessionBoundary/AbyssSessionBoundary.component.d.ts +27 -0
- package/dist/auth/components/SessionBoundary/AbyssSessionBoundary.component.spec.d.ts +1 -0
- package/dist/auth/components/SessionErrorScreen/SessionErrorScreen.component.d.ts +27 -0
- package/dist/auth/components/index.d.ts +9 -0
- package/dist/auth/components/shared/OneTimeCodeField.component.d.ts +6 -2
- package/dist/auth/components/shared/OneTimeCodeField.component.spec.d.ts +1 -0
- package/dist/auth/components/test-support/own-css.d.ts +5 -0
- package/dist/auth-client.js +33 -22
- package/dist/cookie-consent.js +1 -1
- package/dist/hooks/use-rich-intl.hook.d.ts +60 -0
- package/dist/{index-IWLHhMeY.js → index-B01u4RDj.js} +1 -1
- package/dist/{index-vc79tKxC.js → index-B9H2t9pf.js} +24698 -24125
- package/dist/{index-B9j-3Wv9.js → index-BFmCESKZ.js} +2 -2
- package/dist/{index-CuhdwbRD.js → index-BK9rDAfL.js} +4 -4
- package/dist/{index-C-ryoEBt.js → index-BNwzLulO.js} +2 -2
- package/dist/{index-BCNdS_hZ.js → index-BVI8irok.js} +2 -2
- package/dist/{index-alA0Reco.js → index-BdiCSg8E.js} +3 -3
- package/dist/{index-DQAX2wNI.js → index-BwMujprD.js} +2 -2
- package/dist/{index-CDh8wzu8.js → index-C2oiOgnk.js} +3 -3
- package/dist/{index-BlzK79bL.js → index-C5Uf33HY.js} +3 -3
- package/dist/{index-PxLJ-vzu.js → index-CLRN5aZY.js} +2 -2
- package/dist/{index-CMfXPyXq.js → index-CLberJb6.js} +4 -4
- package/dist/{index-DwOujeYK.js → index-DAtUrR1w.js} +2 -2
- package/dist/{index-DnCvSvTf.js → index-DEok2N8Y.js} +2 -2
- package/dist/{index-BYFdosUa.js → index-DIJAhLW1.js} +3 -3
- package/dist/{index-BQJ_IibV.js → index-D_Yt7xtB.js} +2 -2
- package/dist/{index-LoP5aAOy.js → index-DfMTxob_.js} +2 -2
- package/dist/{index-DZ8YTYOY.js → index-GYxgqfEX.js} +2 -2
- package/dist/{index-Db7YwEDm.js → index-LlUhqvEy.js} +2 -2
- package/dist/{index-Pm0jV-Wz.js → index-Qhz-eUY5.js} +2 -2
- package/dist/{index-DvjhhENb.js → index-acSfGhBy.js} +2 -2
- package/dist/{index-D0uOg6A0.js → index-mCtQ66kG.js} +4 -4
- package/dist/index.js +277 -259
- package/dist/translations/en.d.ts +26 -0
- package/dist/translations/fr.d.ts +26 -0
- package/dist/use-auth.hook-oRxzI95f.js +469 -0
- package/package.json +4 -4
- 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 {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
|
7
|
-
/** Apple Services ID of the site. */
|
|
8
|
-
appleServiceId
|
|
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
|
|
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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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).
|
|
14
|
-
*
|
|
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 @@
|
|
|
1
|
+
export {};
|
package/dist/auth-client.js
CHANGED
|
@@ -1,26 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
};
|
package/dist/cookie-consent.js
CHANGED
|
@@ -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-
|
|
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
|
};
|