@auth0/auth0-spa-js 2.18.1 → 2.18.2
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/auth0-spa-js.development.js +2 -65
- package/dist/auth0-spa-js.development.js.map +1 -1
- package/dist/auth0-spa-js.production.esm.js +1 -1
- package/dist/auth0-spa-js.production.esm.js.map +1 -1
- package/dist/auth0-spa-js.production.js +1 -1
- package/dist/auth0-spa-js.production.js.map +1 -1
- package/dist/lib/auth0-spa-js.cjs.js +2 -65
- package/dist/lib/auth0-spa-js.cjs.js.map +1 -1
- package/dist/typings/Auth0Client.d.ts +439 -0
- package/dist/typings/Auth0Client.utils.d.ts +90 -0
- package/dist/typings/MyAccountApiClient.d.ts +92 -0
- package/dist/typings/TokenExchange.d.ts +77 -0
- package/dist/typings/api.d.ts +2 -0
- package/dist/typings/cache/cache-localstorage.d.ts +7 -0
- package/dist/typings/cache/cache-manager.d.ts +56 -0
- package/dist/typings/cache/cache-memory.d.ts +4 -0
- package/dist/typings/cache/index.d.ts +4 -0
- package/dist/typings/cache/key-manifest.d.ts +12 -0
- package/dist/typings/cache/shared.d.ts +68 -0
- package/dist/typings/constants.d.ts +58 -0
- package/dist/typings/dpop/dpop.d.ts +17 -0
- package/dist/typings/dpop/storage.d.ts +27 -0
- package/dist/typings/dpop/utils.d.ts +15 -0
- package/dist/typings/errors.d.ts +96 -0
- package/dist/typings/fetcher.d.ts +54 -0
- package/dist/typings/global.d.ts +819 -0
- package/dist/typings/http.d.ts +5 -0
- package/dist/typings/index.d.ts +24 -0
- package/dist/typings/jwt.d.ts +21 -0
- package/dist/typings/lock.d.ts +32 -0
- package/dist/typings/mfa/MfaApiClient.d.ts +225 -0
- package/dist/typings/mfa/MfaContextManager.d.ts +79 -0
- package/dist/typings/mfa/constants.d.ts +23 -0
- package/dist/typings/mfa/errors.d.ts +117 -0
- package/dist/typings/mfa/index.d.ts +4 -0
- package/dist/typings/mfa/types.d.ts +181 -0
- package/dist/typings/mfa/utils.d.ts +23 -0
- package/dist/typings/promise-utils.d.ts +2 -0
- package/dist/typings/scope.d.ts +35 -0
- package/dist/typings/storage.d.ts +26 -0
- package/dist/typings/transaction-manager.d.ts +33 -0
- package/dist/typings/utils.d.ts +36 -0
- package/dist/typings/version.d.ts +2 -0
- package/dist/typings/worker/token.worker.d.ts +1 -0
- package/dist/typings/worker/worker.types.d.ts +15 -0
- package/dist/typings/worker/worker.utils.d.ts +7 -0
- package/package.json +4 -3
- package/src/version.ts +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the configuration options required for initiating a Custom Token Exchange request
|
|
3
|
+
* following RFC 8693 specifications.
|
|
4
|
+
*
|
|
5
|
+
* @see {@link https://www.rfc-editor.org/rfc/rfc8693 | RFC 8693: OAuth 2.0 Token Exchange}
|
|
6
|
+
*/
|
|
7
|
+
export type CustomTokenExchangeOptions = {
|
|
8
|
+
/**
|
|
9
|
+
* The type identifier for the subject token being exchanged
|
|
10
|
+
*
|
|
11
|
+
* @pattern
|
|
12
|
+
* - Must be a namespaced URI under your organization's control
|
|
13
|
+
* - Forbidden patterns:
|
|
14
|
+
* - `^urn:ietf:params:oauth:*` (IETF reserved)
|
|
15
|
+
* - `^https:\/\/auth0\.com/*` (Auth0 reserved)
|
|
16
|
+
* - `^urn:auth0:*` (Auth0 reserved)
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* "urn:acme:legacy-system-token"
|
|
20
|
+
* "https://api.yourcompany.com/token-type/v1"
|
|
21
|
+
*/
|
|
22
|
+
subject_token_type: string;
|
|
23
|
+
/**
|
|
24
|
+
* The opaque token value being exchanged for Auth0 tokens
|
|
25
|
+
*
|
|
26
|
+
* @security
|
|
27
|
+
* - Must be validated in Auth0 Actions using strong cryptographic verification
|
|
28
|
+
* - Implement replay attack protection
|
|
29
|
+
* - Recommended validation libraries: `jose`, `jsonwebtoken`
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
|
|
33
|
+
*/
|
|
34
|
+
subject_token: string;
|
|
35
|
+
/**
|
|
36
|
+
* The target audience for the requested Auth0 token
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* Must match exactly with an API identifier configured in your Auth0 tenant.
|
|
40
|
+
* If not provided, falls back to the client's default audience.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* "https://api.your-service.com/v1"
|
|
44
|
+
*/
|
|
45
|
+
audience?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Space-separated list of OAuth 2.0 scopes being requested
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* Subject to API authorization policies configured in Auth0
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* "openid profile email read:data write:data"
|
|
54
|
+
*/
|
|
55
|
+
scope?: string;
|
|
56
|
+
/**
|
|
57
|
+
* ID or name of the organization to use when authenticating a user.
|
|
58
|
+
* When provided, the user will be authenticated using the organization context.
|
|
59
|
+
* The organization ID will be present in the access token payload.
|
|
60
|
+
*/
|
|
61
|
+
organization?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Additional custom parameters for Auth0 Action processing
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* Accessible in Action code via `event.request.body`
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* {
|
|
71
|
+
* custom_parameter: "session_context",
|
|
72
|
+
* device_fingerprint: "a3d8f7...",
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
[key: string]: unknown;
|
|
77
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ICache, Cacheable, MaybePromise } from './shared';
|
|
2
|
+
export declare class LocalStorageCache implements ICache {
|
|
3
|
+
set<T = Cacheable>(key: string, entry: T): void;
|
|
4
|
+
get<T = Cacheable>(key: string): MaybePromise<T | undefined>;
|
|
5
|
+
remove(key: string): void;
|
|
6
|
+
allKeys(): string[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CacheKeyManifest } from './key-manifest';
|
|
2
|
+
import { CacheEntry, ICache, CacheKey, DecodedToken, IdTokenEntry } from './shared';
|
|
3
|
+
export declare class CacheManager {
|
|
4
|
+
private cache;
|
|
5
|
+
private keyManifest?;
|
|
6
|
+
private nowProvider;
|
|
7
|
+
constructor(cache: ICache, keyManifest?: CacheKeyManifest | undefined, nowProvider?: () => number | Promise<number>);
|
|
8
|
+
setIdToken(clientId: string, idToken: string, decodedToken: DecodedToken): Promise<void>;
|
|
9
|
+
getIdToken(cacheKey: CacheKey): Promise<IdTokenEntry | undefined>;
|
|
10
|
+
get(cacheKey: CacheKey, expiryAdjustmentSeconds?: number, useMrrt?: boolean, cacheMode?: string): Promise<Partial<CacheEntry> | undefined>;
|
|
11
|
+
private modifiedCachedEntry;
|
|
12
|
+
set(entry: CacheEntry): Promise<void>;
|
|
13
|
+
remove(client_id: string, audience?: string, scope?: string): Promise<void>;
|
|
14
|
+
clear(clientId?: string): Promise<void>;
|
|
15
|
+
private wrapCacheEntry;
|
|
16
|
+
private getCacheKeys;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the cache key to be used to store the id token
|
|
19
|
+
* @param clientId The client id used to link to the id token
|
|
20
|
+
* @returns The constructed cache key, as a string, to store the id token
|
|
21
|
+
*/
|
|
22
|
+
private getIdTokenCacheKey;
|
|
23
|
+
/**
|
|
24
|
+
* Finds the corresponding key in the cache based on the provided cache key.
|
|
25
|
+
* The keys inside the cache are in the format {prefix}::{clientId}::{audience}::{scope}.
|
|
26
|
+
* The first key in the cache that satisfies the following conditions is returned
|
|
27
|
+
* - `prefix` is strict equal to Auth0's internally configured `keyPrefix`
|
|
28
|
+
* - `clientId` is strict equal to the `cacheKey.clientId`
|
|
29
|
+
* - `audience` is strict equal to the `cacheKey.audience`
|
|
30
|
+
* - `scope` contains at least all the `cacheKey.scope` values
|
|
31
|
+
* *
|
|
32
|
+
* @param keyToMatch The provided cache key
|
|
33
|
+
* @param allKeys A list of existing cache keys
|
|
34
|
+
*/
|
|
35
|
+
private matchExistingCacheKey;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the first entry that contains a refresh_token that satisfies the following conditions
|
|
38
|
+
* The keys inside the cache are in the format {prefix}::{clientId}::{audience}::{scope}.
|
|
39
|
+
* - `prefix` is strict equal to Auth0's internally configured `keyPrefix`
|
|
40
|
+
* - `clientId` is strict equal to the `cacheKey.clientId`
|
|
41
|
+
* @param keyToMatch The provided cache key
|
|
42
|
+
* @param allKeys A list of existing cache keys
|
|
43
|
+
*/
|
|
44
|
+
private getEntryWithRefreshToken;
|
|
45
|
+
/**
|
|
46
|
+
* Updates the refresh token in all cache entries that contain the old refresh token.
|
|
47
|
+
*
|
|
48
|
+
* When a refresh token is rotated, multiple cache entries (for different audiences/scopes)
|
|
49
|
+
* may share the same refresh token. This method propagates the new refresh token to all
|
|
50
|
+
* matching entries.
|
|
51
|
+
*
|
|
52
|
+
* @param oldRefreshToken The refresh token that was used and is now invalid
|
|
53
|
+
* @param newRefreshToken The new refresh token received from the server
|
|
54
|
+
*/
|
|
55
|
+
updateEntry(oldRefreshToken: string, newRefreshToken: string): Promise<void>;
|
|
56
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ICache, KeyManifestEntry, MaybePromise } from './shared';
|
|
2
|
+
export declare class CacheKeyManifest {
|
|
3
|
+
private cache;
|
|
4
|
+
private clientId;
|
|
5
|
+
private readonly manifestKey;
|
|
6
|
+
constructor(cache: ICache, clientId: string);
|
|
7
|
+
add(key: string): Promise<void>;
|
|
8
|
+
remove(key: string): Promise<void>;
|
|
9
|
+
get(): MaybePromise<KeyManifestEntry | undefined>;
|
|
10
|
+
clear(): MaybePromise<void>;
|
|
11
|
+
private createManifestKeyFrom;
|
|
12
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { IdToken, User } from '../global';
|
|
2
|
+
export declare const CACHE_KEY_PREFIX = "@@auth0spajs@@";
|
|
3
|
+
export declare const CACHE_KEY_ID_TOKEN_SUFFIX = "@@user@@";
|
|
4
|
+
export type CacheKeyData = {
|
|
5
|
+
audience?: string;
|
|
6
|
+
scope?: string;
|
|
7
|
+
clientId: string;
|
|
8
|
+
};
|
|
9
|
+
export declare class CacheKey {
|
|
10
|
+
prefix: string;
|
|
11
|
+
suffix?: string | undefined;
|
|
12
|
+
clientId: string;
|
|
13
|
+
scope?: string;
|
|
14
|
+
audience?: string;
|
|
15
|
+
constructor(data: CacheKeyData, prefix?: string, suffix?: string | undefined);
|
|
16
|
+
/**
|
|
17
|
+
* Converts this `CacheKey` instance into a string for use in a cache
|
|
18
|
+
* @returns A string representation of the key
|
|
19
|
+
*/
|
|
20
|
+
toKey(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Converts a cache key string into a `CacheKey` instance.
|
|
23
|
+
* @param key The key to convert
|
|
24
|
+
* @returns An instance of `CacheKey`
|
|
25
|
+
*/
|
|
26
|
+
static fromKey(key: string): CacheKey;
|
|
27
|
+
/**
|
|
28
|
+
* Utility function to build a `CacheKey` instance from a cache entry
|
|
29
|
+
* @param entry The entry
|
|
30
|
+
* @returns An instance of `CacheKey`
|
|
31
|
+
*/
|
|
32
|
+
static fromCacheEntry(entry: CacheEntry): CacheKey;
|
|
33
|
+
}
|
|
34
|
+
export interface DecodedToken {
|
|
35
|
+
claims: IdToken;
|
|
36
|
+
user: User;
|
|
37
|
+
}
|
|
38
|
+
export interface IdTokenEntry {
|
|
39
|
+
id_token: string;
|
|
40
|
+
decodedToken: DecodedToken;
|
|
41
|
+
}
|
|
42
|
+
export type CacheEntry = {
|
|
43
|
+
id_token?: string;
|
|
44
|
+
token_type?: string;
|
|
45
|
+
access_token: string;
|
|
46
|
+
expires_in: number;
|
|
47
|
+
decodedToken?: DecodedToken;
|
|
48
|
+
audience: string;
|
|
49
|
+
scope: string;
|
|
50
|
+
client_id: string;
|
|
51
|
+
refresh_token?: string;
|
|
52
|
+
oauthTokenScope?: string;
|
|
53
|
+
};
|
|
54
|
+
export type WrappedCacheEntry = {
|
|
55
|
+
body: Partial<CacheEntry>;
|
|
56
|
+
expiresAt: number;
|
|
57
|
+
};
|
|
58
|
+
export type KeyManifestEntry = {
|
|
59
|
+
keys: string[];
|
|
60
|
+
};
|
|
61
|
+
export type Cacheable = WrappedCacheEntry | KeyManifestEntry;
|
|
62
|
+
export type MaybePromise<T> = Promise<T> | T;
|
|
63
|
+
export interface ICache {
|
|
64
|
+
set<T = Cacheable>(key: string, entry: T): MaybePromise<void>;
|
|
65
|
+
get<T = Cacheable>(key: string): MaybePromise<T | undefined>;
|
|
66
|
+
remove(key: string): MaybePromise<void>;
|
|
67
|
+
allKeys?(): MaybePromise<string[]>;
|
|
68
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PopupConfigOptions } from './global';
|
|
2
|
+
/**
|
|
3
|
+
* @ignore
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_AUTHORIZE_TIMEOUT_IN_SECONDS = 60;
|
|
6
|
+
/**
|
|
7
|
+
* @ignore
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_POPUP_CONFIG_OPTIONS: PopupConfigOptions;
|
|
10
|
+
/**
|
|
11
|
+
* @ignore
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_SILENT_TOKEN_RETRY_COUNT = 3;
|
|
14
|
+
/**
|
|
15
|
+
* @ignore
|
|
16
|
+
*/
|
|
17
|
+
export declare const CLEANUP_IFRAME_TIMEOUT_IN_SECONDS = 2;
|
|
18
|
+
/**
|
|
19
|
+
* @ignore
|
|
20
|
+
*/
|
|
21
|
+
export declare const DEFAULT_FETCH_TIMEOUT_MS = 10000;
|
|
22
|
+
export declare const CACHE_LOCATION_MEMORY = "memory";
|
|
23
|
+
export declare const CACHE_LOCATION_LOCAL_STORAGE = "localstorage";
|
|
24
|
+
/**
|
|
25
|
+
* @ignore
|
|
26
|
+
*/
|
|
27
|
+
export declare const MISSING_REFRESH_TOKEN_ERROR_MESSAGE = "Missing Refresh Token";
|
|
28
|
+
/**
|
|
29
|
+
* @ignore
|
|
30
|
+
*/
|
|
31
|
+
export declare const INVALID_REFRESH_TOKEN_ERROR_MESSAGE = "invalid refresh token";
|
|
32
|
+
/**
|
|
33
|
+
* @ignore
|
|
34
|
+
*/
|
|
35
|
+
export declare const USER_BLOCKED_ERROR_MESSAGE = "user is blocked";
|
|
36
|
+
/**
|
|
37
|
+
* @ignore
|
|
38
|
+
* The error_description returned by the /authorize endpoint when MFA is required
|
|
39
|
+
* but prompt=none prevents interaction (iframe silent auth flow).
|
|
40
|
+
*/
|
|
41
|
+
export declare const MFA_STEP_UP_ERROR_DESCRIPTION = "Multifactor authentication required";
|
|
42
|
+
/**
|
|
43
|
+
* @ignore
|
|
44
|
+
*/
|
|
45
|
+
export declare const DEFAULT_SCOPE = "openid profile email";
|
|
46
|
+
/**
|
|
47
|
+
* @ignore
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_SESSION_CHECK_EXPIRY_DAYS = 1;
|
|
50
|
+
/**
|
|
51
|
+
* @ignore
|
|
52
|
+
*/
|
|
53
|
+
export declare const DEFAULT_AUTH0_CLIENT: {
|
|
54
|
+
name: string;
|
|
55
|
+
version: string;
|
|
56
|
+
};
|
|
57
|
+
export declare const DEFAULT_NOW_PROVIDER: () => number;
|
|
58
|
+
export declare const DEFAULT_AUDIENCE = "default";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DpopStorage } from './storage';
|
|
2
|
+
import * as dpopUtils from './utils';
|
|
3
|
+
export declare class Dpop {
|
|
4
|
+
protected readonly storage: DpopStorage;
|
|
5
|
+
constructor(clientId: string);
|
|
6
|
+
getNonce(id?: string): Promise<string | undefined>;
|
|
7
|
+
setNonce(nonce: string, id?: string): Promise<void>;
|
|
8
|
+
protected getOrGenerateKeyPair(): Promise<dpopUtils.KeyPair>;
|
|
9
|
+
generateProof(params: {
|
|
10
|
+
url: string;
|
|
11
|
+
method: string;
|
|
12
|
+
nonce?: string;
|
|
13
|
+
accessToken?: string;
|
|
14
|
+
}): Promise<string>;
|
|
15
|
+
calculateThumbprint(): Promise<string>;
|
|
16
|
+
clear(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type KeyPair } from './utils';
|
|
2
|
+
declare const TABLES: {
|
|
3
|
+
readonly NONCE: "nonce";
|
|
4
|
+
readonly KEYPAIR: "keypair";
|
|
5
|
+
};
|
|
6
|
+
type Table = (typeof TABLES)[keyof typeof TABLES];
|
|
7
|
+
export declare class DpopStorage {
|
|
8
|
+
protected readonly clientId: string;
|
|
9
|
+
protected dbHandle: IDBDatabase | undefined;
|
|
10
|
+
constructor(clientId: string);
|
|
11
|
+
protected getVersion(): number;
|
|
12
|
+
protected createDbHandle(): Promise<IDBDatabase>;
|
|
13
|
+
protected getDbHandle(): Promise<IDBDatabase>;
|
|
14
|
+
protected executeDbRequest<T = unknown>(table: string, mode: IDBTransactionMode, requestFactory: (table: IDBObjectStore) => IDBRequest<T>): Promise<T>;
|
|
15
|
+
protected buildKey(id?: string): string;
|
|
16
|
+
setNonce(nonce: string, id?: string): Promise<void>;
|
|
17
|
+
setKeyPair(keyPair: KeyPair): Promise<void>;
|
|
18
|
+
protected save(table: Table, key: IDBValidKey, obj: unknown): Promise<void>;
|
|
19
|
+
findNonce(id?: string): Promise<string | undefined>;
|
|
20
|
+
findKeyPair(): Promise<KeyPair | undefined>;
|
|
21
|
+
protected find<T = unknown>(table: Table, key: IDBValidKey): Promise<T | undefined>;
|
|
22
|
+
protected deleteBy(table: Table, predicate: (key: IDBValidKey) => boolean): Promise<void>;
|
|
23
|
+
protected deleteByClientId(table: Table, clientId: string): Promise<void>;
|
|
24
|
+
clearNonces(): Promise<void>;
|
|
25
|
+
clearKeyPairs(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as dpopLib from 'dpop';
|
|
2
|
+
export declare const DPOP_NONCE_HEADER = "dpop-nonce";
|
|
3
|
+
export type KeyPair = Readonly<dpopLib.KeyPair>;
|
|
4
|
+
type GenerateProofParams = {
|
|
5
|
+
keyPair: KeyPair;
|
|
6
|
+
url: string;
|
|
7
|
+
method: string;
|
|
8
|
+
nonce?: string;
|
|
9
|
+
accessToken?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function generateKeyPair(): Promise<KeyPair>;
|
|
12
|
+
export declare function calculateThumbprint(keyPair: Pick<KeyPair, 'publicKey'>): Promise<string>;
|
|
13
|
+
export declare function generateProof({ keyPair, url, method, nonce, accessToken }: GenerateProofParams): Promise<string>;
|
|
14
|
+
export declare function isGrantTypeSupported(grantType: string): boolean;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MFA requirements from an mfa_required error response
|
|
3
|
+
*/
|
|
4
|
+
export interface MfaRequirements {
|
|
5
|
+
/** Required enrollment types */
|
|
6
|
+
enroll?: Array<{
|
|
7
|
+
type: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** Required challenge types */
|
|
10
|
+
challenge?: Array<{
|
|
11
|
+
type: string;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Thrown when network requests to the Auth server fail.
|
|
16
|
+
*/
|
|
17
|
+
export declare class GenericError extends Error {
|
|
18
|
+
error: string;
|
|
19
|
+
error_description: string;
|
|
20
|
+
constructor(error: string, error_description: string);
|
|
21
|
+
static fromPayload({ error, error_description }: {
|
|
22
|
+
error: string;
|
|
23
|
+
error_description: string;
|
|
24
|
+
}): GenericError;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Thrown when handling the redirect callback fails, will be one of Auth0's
|
|
28
|
+
* Authentication API's Standard Error Responses: https://auth0.com/docs/api/authentication?javascript#standard-error-responses
|
|
29
|
+
*/
|
|
30
|
+
export declare class AuthenticationError extends GenericError {
|
|
31
|
+
state: string;
|
|
32
|
+
appState: any;
|
|
33
|
+
constructor(error: string, error_description: string, state: string, appState?: any);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Thrown when handling the redirect callback for the connect flow fails, will be one of Auth0's
|
|
37
|
+
* Authentication API's Standard Error Responses: https://auth0.com/docs/api/authentication?javascript#standard-error-responses
|
|
38
|
+
*/
|
|
39
|
+
export declare class ConnectError extends GenericError {
|
|
40
|
+
connection: string;
|
|
41
|
+
state: string;
|
|
42
|
+
appState: any;
|
|
43
|
+
constructor(error: string, error_description: string, connection: string, state: string, appState?: any);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Thrown when silent auth times out (usually due to a configuration issue) or
|
|
47
|
+
* when network requests to the Auth server timeout.
|
|
48
|
+
*/
|
|
49
|
+
export declare class TimeoutError extends GenericError {
|
|
50
|
+
constructor();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Error thrown when the login popup times out (if the user does not complete auth)
|
|
54
|
+
*/
|
|
55
|
+
export declare class PopupTimeoutError extends TimeoutError {
|
|
56
|
+
popup: Window;
|
|
57
|
+
constructor(popup: Window);
|
|
58
|
+
}
|
|
59
|
+
export declare class PopupCancelledError extends GenericError {
|
|
60
|
+
popup: Window;
|
|
61
|
+
constructor(popup: Window);
|
|
62
|
+
}
|
|
63
|
+
export declare class PopupOpenError extends GenericError {
|
|
64
|
+
constructor();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Error thrown when the token exchange results in a `mfa_required` error
|
|
68
|
+
*/
|
|
69
|
+
export declare class MfaRequiredError extends GenericError {
|
|
70
|
+
mfa_token: string;
|
|
71
|
+
mfa_requirements: MfaRequirements;
|
|
72
|
+
constructor(error: string, error_description: string, mfa_token: string, mfa_requirements: MfaRequirements);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Error thrown when there is no refresh token to use
|
|
76
|
+
*/
|
|
77
|
+
export declare class MissingRefreshTokenError extends GenericError {
|
|
78
|
+
audience: string;
|
|
79
|
+
scope: string;
|
|
80
|
+
constructor(audience: string, scope: string);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Error thrown when there are missing scopes after refreshing a token
|
|
84
|
+
*/
|
|
85
|
+
export declare class MissingScopesError extends GenericError {
|
|
86
|
+
audience: string;
|
|
87
|
+
scope: string;
|
|
88
|
+
constructor(audience: string, scope: string);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Error thrown when the wrong DPoP nonce is used and a potential subsequent retry wasn't able to fix it.
|
|
92
|
+
*/
|
|
93
|
+
export declare class UseDpopNonceError extends GenericError {
|
|
94
|
+
newDpopNonce: string | undefined;
|
|
95
|
+
constructor(newDpopNonce: string | undefined);
|
|
96
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { GetTokenSilentlyVerboseResponse } from './global';
|
|
2
|
+
export type ResponseHeaders = Record<string, string | null | undefined> | [string, string][] | {
|
|
3
|
+
get(name: string): string | null | undefined;
|
|
4
|
+
};
|
|
5
|
+
export type CustomFetchMinimalOutput = {
|
|
6
|
+
status: number;
|
|
7
|
+
headers: ResponseHeaders;
|
|
8
|
+
};
|
|
9
|
+
export type CustomFetchImpl<TOutput extends CustomFetchMinimalOutput> = (req: Request) => Promise<TOutput>;
|
|
10
|
+
export type AuthParams = {
|
|
11
|
+
scope?: string[];
|
|
12
|
+
audience?: string;
|
|
13
|
+
};
|
|
14
|
+
type AccessTokenFactory = (authParams?: AuthParams) => Promise<string | GetTokenSilentlyVerboseResponse>;
|
|
15
|
+
export type FetcherConfig<TOutput extends CustomFetchMinimalOutput> = {
|
|
16
|
+
getAccessToken?: AccessTokenFactory;
|
|
17
|
+
baseUrl?: string;
|
|
18
|
+
fetch?: CustomFetchImpl<TOutput>;
|
|
19
|
+
dpopNonceId?: string;
|
|
20
|
+
};
|
|
21
|
+
export type FetcherHooks = {
|
|
22
|
+
isDpopEnabled: () => boolean;
|
|
23
|
+
getAccessToken: AccessTokenFactory;
|
|
24
|
+
getDpopNonce: () => Promise<string | undefined>;
|
|
25
|
+
setDpopNonce: (nonce: string) => Promise<void>;
|
|
26
|
+
generateDpopProof: (params: {
|
|
27
|
+
url: string;
|
|
28
|
+
method: string;
|
|
29
|
+
nonce?: string;
|
|
30
|
+
accessToken: string;
|
|
31
|
+
}) => Promise<string>;
|
|
32
|
+
};
|
|
33
|
+
export type FetchWithAuthCallbacks<TOutput> = {
|
|
34
|
+
onUseDpopNonceError?(): Promise<TOutput>;
|
|
35
|
+
};
|
|
36
|
+
export declare class Fetcher<TOutput extends CustomFetchMinimalOutput> {
|
|
37
|
+
protected readonly config: Omit<FetcherConfig<TOutput>, 'fetch'> & Required<Pick<FetcherConfig<TOutput>, 'fetch'>>;
|
|
38
|
+
protected readonly hooks: FetcherHooks;
|
|
39
|
+
constructor(config: FetcherConfig<TOutput>, hooks: FetcherHooks);
|
|
40
|
+
protected isAbsoluteUrl(url: string): boolean;
|
|
41
|
+
protected buildUrl(baseUrl: string | undefined, url: string | undefined): string;
|
|
42
|
+
protected getAccessToken(authParams?: AuthParams): Promise<string | GetTokenSilentlyVerboseResponse>;
|
|
43
|
+
protected extractUrl(info: RequestInfo | URL): string;
|
|
44
|
+
protected buildBaseRequest(info: RequestInfo | URL, init: RequestInit | undefined): Request;
|
|
45
|
+
protected setAuthorizationHeader(request: Request, accessToken: string, tokenType?: string): void;
|
|
46
|
+
protected setDpopProofHeader(request: Request, accessToken: string): Promise<void>;
|
|
47
|
+
protected prepareRequest(request: Request, authParams?: AuthParams): Promise<void>;
|
|
48
|
+
protected getHeader(headers: ResponseHeaders, name: string): string;
|
|
49
|
+
protected hasUseDpopNonceError(response: TOutput): boolean;
|
|
50
|
+
protected handleResponse(response: TOutput, callbacks: FetchWithAuthCallbacks<TOutput>): Promise<TOutput>;
|
|
51
|
+
protected internalFetchWithAuth(info: RequestInfo | URL, init: RequestInit | undefined, callbacks: FetchWithAuthCallbacks<TOutput>, authParams?: AuthParams): Promise<TOutput>;
|
|
52
|
+
fetchWithAuth(info: RequestInfo | URL, init?: RequestInit, authParams?: AuthParams): Promise<TOutput>;
|
|
53
|
+
}
|
|
54
|
+
export {};
|