@thunderid/browser 1.1.0 → 1.2.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/dist/ThunderIDBrowserClient.d.ts +2 -4
- package/dist/ThunderIDBrowserClient.d.ts.map +1 -1
- package/dist/cjs/index.cjs +82 -290
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/constants/SPAConstants.d.ts +3 -9
- package/dist/constants/SPAConstants.d.ts.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +80 -281
- package/dist/index.js.map +1 -1
- package/dist/models/BrowserConfig.d.ts +0 -6
- package/dist/models/BrowserConfig.d.ts.map +1 -1
- package/dist/utils/AuthenticationHelper.d.ts +16 -26
- package/dist/utils/AuthenticationHelper.d.ts.map +1 -1
- package/dist/utils/SPAUtils.d.ts +0 -14
- package/dist/utils/SPAUtils.d.ts.map +1 -1
- package/dist/utils/hasAuthParamsInUrl.d.ts +2 -2
- package/package.json +4 -4
- package/dist/utils/SessionManagementHelper.d.ts +0 -26
- package/dist/utils/SessionManagementHelper.d.ts.map +0 -1
|
@@ -2,17 +2,11 @@ export declare const ERROR = "error";
|
|
|
2
2
|
export declare const ERROR_DESCRIPTION = "error_description";
|
|
3
3
|
export declare const CUSTOM_GRANT_CONFIG = "custom_grant_config";
|
|
4
4
|
export declare const STATE_QUERY = "state";
|
|
5
|
-
export declare const OP_IFRAME = "opIFrame";
|
|
6
|
-
export declare const RP_IFRAME = "rpIFrame";
|
|
7
|
-
export declare const PROMPT_NONE_IFRAME = "promptNoneIFrame";
|
|
8
|
-
export declare const STATE = "Y2hlY2tTZXNzaW9u";
|
|
9
5
|
export declare const SILENT_SIGN_IN_STATE = "sign-in-silently";
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const PROMPT_NONE_REQUEST_SENT = "promptNoneRequestSent";
|
|
6
|
+
export declare const SILENT_SIGN_IN_TIMEOUT = 10000;
|
|
12
7
|
export declare const ACCESS_TOKEN_INVALID = "Access token is invalid";
|
|
13
8
|
export declare const REFRESH_ACCESS_TOKEN_ERR0R = "refresh-access-token-error";
|
|
14
9
|
export declare const TOKEN_REQUEST_CONFIG_KEY = "token_request_config";
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
17
|
-
export declare const SET_SESSION_STATE_FROM_IFRAME = "set_session_state_from_iframe";
|
|
10
|
+
export declare const SILENT_SIGN_IN_SIGNED_IN = "silent_sign_in_signed_in";
|
|
11
|
+
export declare const SILENT_SIGN_IN_SIGNED_OUT = "silent_sign_in_signed_out";
|
|
18
12
|
//# sourceMappingURL=SPAConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SPAConstants.d.ts","sourceRoot":"","sources":["../../src/constants/SPAConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"SPAConstants.d.ts","sourceRoot":"","sources":["../../src/constants/SPAConstants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,sBAAsB,QAAQ,CAAC;AAE5C,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,yBAAyB,8BAA8B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,8 +18,6 @@ export { default as SPACryptoUtils } from './utils/SPACryptoUtils';
|
|
|
18
18
|
export { default as SPAUtils } from './utils/SPAUtils';
|
|
19
19
|
export { default as SPAHelper } from './utils/SPAHelper';
|
|
20
20
|
export { default as AuthenticationHelper } from './utils/AuthenticationHelper';
|
|
21
|
-
export { default as createSessionManagementHelper } from './utils/SessionManagementHelper';
|
|
22
|
-
export type { SessionManagementHelperInterface } from './utils/SessionManagementHelper';
|
|
23
21
|
export { default as hasAuthParamsInUrl } from './utils/hasAuthParamsInUrl';
|
|
24
22
|
export { default as hasCalledForThisInstanceInUrl } from './utils/hasCalledForThisInstanceInUrl';
|
|
25
23
|
export { default as navigate } from './utils/navigate';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;GAEG;AAGH,OAAO,EAAC,OAAO,IAAI,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC1E,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAC,mBAAmB,EAAE,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAC,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAC,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAC,OAAO,IAAI,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -38,19 +38,13 @@ const ERROR = "error";
|
|
|
38
38
|
const ERROR_DESCRIPTION = "error_description";
|
|
39
39
|
const CUSTOM_GRANT_CONFIG = "custom_grant_config";
|
|
40
40
|
const STATE_QUERY = "state";
|
|
41
|
-
const OP_IFRAME = "opIFrame";
|
|
42
|
-
const RP_IFRAME = "rpIFrame";
|
|
43
|
-
const PROMPT_NONE_IFRAME = "promptNoneIFrame";
|
|
44
|
-
const STATE = "Y2hlY2tTZXNzaW9u";
|
|
45
41
|
const SILENT_SIGN_IN_STATE = "sign-in-silently";
|
|
46
|
-
const
|
|
47
|
-
const PROMPT_NONE_REQUEST_SENT = "promptNoneRequestSent";
|
|
42
|
+
const SILENT_SIGN_IN_TIMEOUT = 1e4;
|
|
48
43
|
const ACCESS_TOKEN_INVALID = "Access token is invalid";
|
|
49
44
|
const REFRESH_ACCESS_TOKEN_ERR0R = "refresh-access-token-error";
|
|
50
45
|
const TOKEN_REQUEST_CONFIG_KEY = "token_request_config";
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const SET_SESSION_STATE_FROM_IFRAME = "set_session_state_from_iframe";
|
|
46
|
+
const SILENT_SIGN_IN_SIGNED_IN = "silent_sign_in_signed_in";
|
|
47
|
+
const SILENT_SIGN_IN_SIGNED_OUT = "silent_sign_in_signed_out";
|
|
54
48
|
|
|
55
49
|
//#endregion
|
|
56
50
|
//#region src/FetchHttpClient.ts
|
|
@@ -288,13 +282,6 @@ var SPAUtils = class SPAUtils {
|
|
|
288
282
|
return false;
|
|
289
283
|
}
|
|
290
284
|
/**
|
|
291
|
-
* Returns `true` if a silent sign-in was previously initialized in this session.
|
|
292
|
-
*/
|
|
293
|
-
static wasSilentSignInCalled() {
|
|
294
|
-
const raw = sessionStorage.getItem(INITIALIZED_SILENT_SIGN_IN);
|
|
295
|
-
return Boolean(raw ? JSON.parse(raw) : null);
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
285
|
* Checks whether the current URL indicates a successful sign-out redirect.
|
|
299
286
|
* Clears the query string and session data if `true`.
|
|
300
287
|
*
|
|
@@ -357,21 +344,6 @@ var SPAUtils = class SPAUtils {
|
|
|
357
344
|
return !!urlObject.searchParams.get(ERROR) && urlObject.searchParams.get(STATE_QUERY) !== OIDCRequestConstants.Params.SIGN_OUT_SUCCESS;
|
|
358
345
|
}
|
|
359
346
|
/**
|
|
360
|
-
* Returns `true` if no prompt-none request has been sent yet this session.
|
|
361
|
-
*/
|
|
362
|
-
static canSendPromptNoneRequest() {
|
|
363
|
-
const raw = sessionStorage.getItem(PROMPT_NONE_REQUEST_SENT);
|
|
364
|
-
return !(raw ? JSON.parse(raw) : null);
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Records whether a prompt-none request has been sent.
|
|
368
|
-
*
|
|
369
|
-
* @param canSend - `true` marks the request as sent.
|
|
370
|
-
*/
|
|
371
|
-
static setPromptNoneRequestSent(canSend) {
|
|
372
|
-
sessionStorage.setItem(PROMPT_NONE_REQUEST_SENT, JSON.stringify(canSend));
|
|
373
|
-
}
|
|
374
|
-
/**
|
|
375
347
|
* Waits until the browser has redirected (non-blocking delay).
|
|
376
348
|
*
|
|
377
349
|
* @param time - Time to wait in seconds (default: 3).
|
|
@@ -400,7 +372,7 @@ var SPAUtils_default = SPAUtils;
|
|
|
400
372
|
//#region src/utils/AuthenticationHelper.ts
|
|
401
373
|
/**
|
|
402
374
|
* Browser-level authentication helper that orchestrates HTTP requests with token attachment,
|
|
403
|
-
* automatic token refresh,
|
|
375
|
+
* automatic token refresh, and the silent sign-in flow.
|
|
404
376
|
*
|
|
405
377
|
* @typeParam T - The browser client config extension type.
|
|
406
378
|
*/
|
|
@@ -460,18 +432,6 @@ var AuthenticationHelper = class {
|
|
|
460
432
|
httpClient?.disableHandler && httpClient.disableHandler();
|
|
461
433
|
}
|
|
462
434
|
/**
|
|
463
|
-
* Initializes OIDC Session Management via an RP iframe.
|
|
464
|
-
*
|
|
465
|
-
* @param config - The current auth config.
|
|
466
|
-
* @param oidcEndpoints - Resolved OIDC provider endpoints.
|
|
467
|
-
* @param getSessionState - Returns the current session state from storage.
|
|
468
|
-
* @param getAuthzURL - Builds an authorization URL with optional params.
|
|
469
|
-
* @param sessionManagementHelper - The session management helper instance.
|
|
470
|
-
*/
|
|
471
|
-
initializeSessionManger(config, oidcEndpoints, getSessionState, getAuthzURL, sessionManagementHelper) {
|
|
472
|
-
sessionManagementHelper.initialize(config.clientId, oidcEndpoints.checkSessionIframe ?? "", getSessionState, config.checkSessionInterval ?? 3, config.sessionRefreshInterval ?? 300, config.afterSignInUrl, getAuthzURL);
|
|
473
|
-
}
|
|
474
|
-
/**
|
|
475
435
|
* Executes a custom token exchange grant, enforcing `allowedExternalUrls` rules when applicable.
|
|
476
436
|
*
|
|
477
437
|
* @param config - The token exchange configuration.
|
|
@@ -641,76 +601,97 @@ var AuthenticationHelper = class {
|
|
|
641
601
|
});
|
|
642
602
|
}
|
|
643
603
|
/**
|
|
644
|
-
* Executes the silent sign-in flow
|
|
604
|
+
* Executes the silent sign-in flow by loading a `prompt=none` authorize request in a hidden iframe.
|
|
645
605
|
*
|
|
646
606
|
* @param constructSilentSignInUrl - Builds the prompt-none authorize URL.
|
|
647
607
|
* @param requestAccessToken - Exchanges the returned code for tokens.
|
|
648
|
-
* @param sessionManagementHelper - Handles the iFrame prompt-none response.
|
|
649
608
|
* @param additionalParams - Extra authorize request params.
|
|
650
609
|
* @param tokenRequestConfig - Additional params for the token request.
|
|
610
|
+
* @param timeout - How long to wait for the iframe's response, in milliseconds.
|
|
651
611
|
* @returns The user session, or `false` if the user is not signed in.
|
|
652
612
|
*/
|
|
653
|
-
async signInSilently(constructSilentSignInUrl, requestAccessToken,
|
|
613
|
+
async signInSilently(constructSilentSignInUrl, requestAccessToken, additionalParams, tokenRequestConfig, timeout = SILENT_SIGN_IN_TIMEOUT) {
|
|
654
614
|
if (SPAUtils_default.isInitializedSilentSignIn()) {
|
|
655
|
-
await
|
|
615
|
+
await this.handleSilentSignInResponse();
|
|
656
616
|
return Promise.resolve({
|
|
657
617
|
allowedScopes: "",
|
|
658
618
|
displayName: "",
|
|
659
619
|
email: "",
|
|
660
|
-
sessionState: "",
|
|
661
620
|
sub: "",
|
|
662
621
|
tenantDomain: "",
|
|
663
622
|
username: ""
|
|
664
623
|
});
|
|
665
624
|
}
|
|
666
|
-
|
|
625
|
+
let url;
|
|
667
626
|
try {
|
|
668
|
-
|
|
627
|
+
url = await constructSilentSignInUrl(additionalParams);
|
|
669
628
|
} catch (error) {
|
|
670
629
|
return Promise.reject(error);
|
|
671
630
|
}
|
|
631
|
+
const silentSignInIFrame = document.createElement("iframe");
|
|
632
|
+
silentSignInIFrame.style.display = "none";
|
|
672
633
|
return new Promise((resolve, reject) => {
|
|
634
|
+
const cleanUp = () => {
|
|
635
|
+
window.removeEventListener("message", listenToSilentSignInIFrame);
|
|
636
|
+
clearTimeout(timer);
|
|
637
|
+
silentSignInIFrame.remove();
|
|
638
|
+
};
|
|
673
639
|
const timer = setTimeout(() => {
|
|
640
|
+
cleanUp();
|
|
674
641
|
resolve(false);
|
|
675
|
-
},
|
|
676
|
-
const
|
|
642
|
+
}, timeout);
|
|
643
|
+
const listenToSilentSignInIFrame = async (e) => {
|
|
644
|
+
if (e.origin !== window.location.origin || e.source !== silentSignInIFrame.contentWindow) return;
|
|
677
645
|
const data = e.data;
|
|
678
|
-
if (data?.type
|
|
679
|
-
|
|
680
|
-
clearTimeout(timer);
|
|
646
|
+
if (data?.type === SILENT_SIGN_IN_SIGNED_OUT) {
|
|
647
|
+
cleanUp();
|
|
681
648
|
resolve(false);
|
|
682
649
|
}
|
|
683
|
-
if (data?.type
|
|
650
|
+
if (data?.type === SILENT_SIGN_IN_SIGNED_IN && data?.data?.code) {
|
|
684
651
|
const authInfo = data.data;
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
resolve(response);
|
|
688
|
-
}).catch((error) => {
|
|
689
|
-
window.removeEventListener("message", listenToPromptNoneIFrame);
|
|
690
|
-
reject(error);
|
|
691
|
-
}).finally(() => {
|
|
692
|
-
clearTimeout(timer);
|
|
693
|
-
});
|
|
652
|
+
cleanUp();
|
|
653
|
+
requestAccessToken(authInfo.code, authInfo.state, tokenRequestConfig).then(resolve).catch(reject);
|
|
694
654
|
}
|
|
695
655
|
};
|
|
696
|
-
window.addEventListener("message",
|
|
656
|
+
window.addEventListener("message", listenToSilentSignInIFrame);
|
|
657
|
+
silentSignInIFrame.src = url;
|
|
658
|
+
document.body.appendChild(silentSignInIFrame);
|
|
697
659
|
});
|
|
698
660
|
}
|
|
699
661
|
/**
|
|
662
|
+
* Handles the page load inside the silent sign-in iframe: relays the authorization response to the
|
|
663
|
+
* parent window and blanks the iframe.
|
|
664
|
+
*
|
|
665
|
+
* @returns `true` if the current page load was a silent sign-in response.
|
|
666
|
+
*/
|
|
667
|
+
async handleSilentSignInResponse() {
|
|
668
|
+
const url = new URL(window.location.href);
|
|
669
|
+
const state = url.searchParams.get(STATE_QUERY);
|
|
670
|
+
if (state === null || !state.includes(SILENT_SIGN_IN_STATE)) return false;
|
|
671
|
+
const code$1 = url.searchParams.get("code");
|
|
672
|
+
const message = code$1 !== null && code$1.length !== 0 ? {
|
|
673
|
+
data: {
|
|
674
|
+
code: code$1,
|
|
675
|
+
state
|
|
676
|
+
},
|
|
677
|
+
type: SILENT_SIGN_IN_SIGNED_IN
|
|
678
|
+
} : { type: SILENT_SIGN_IN_SIGNED_OUT };
|
|
679
|
+
window.parent.postMessage(message, window.location.origin);
|
|
680
|
+
window.location.href = "about:blank";
|
|
681
|
+
await SPAUtils_default.waitTillPageRedirect();
|
|
682
|
+
return true;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
700
685
|
* Handles the early-return path of `signIn()` when a session already exists
|
|
701
|
-
* or the page is handling a
|
|
686
|
+
* or the page is handling a silent sign-in response.
|
|
702
687
|
*
|
|
703
|
-
* @param shouldStopAuthn - Returns `true` if we should short-circuit and return early.
|
|
704
|
-
* @param checkSession - Callback to initialize OIDC session management.
|
|
705
688
|
* @returns The current user if already signed in, or `undefined` to continue normal sign-in.
|
|
706
689
|
*/
|
|
707
|
-
async handleSignIn(
|
|
708
|
-
|
|
709
|
-
if (await shouldStopAuthn()) return Promise.resolve({
|
|
690
|
+
async handleSignIn() {
|
|
691
|
+
if (await this.handleSilentSignInResponse()) return Promise.resolve({
|
|
710
692
|
allowedScopes: "",
|
|
711
693
|
displayName: "",
|
|
712
694
|
email: "",
|
|
713
|
-
sessionState: "",
|
|
714
695
|
sub: "",
|
|
715
696
|
tenantDomain: "",
|
|
716
697
|
username: ""
|
|
@@ -718,7 +699,6 @@ var AuthenticationHelper = class {
|
|
|
718
699
|
if (await this._isSignedIn()) {
|
|
719
700
|
await this._spaHelper.clearRefreshTokenTimeout();
|
|
720
701
|
await this._spaHelper.refreshAccessTokenAutomatically(() => this.refreshAccessToken());
|
|
721
|
-
if (configAny.syncSession) checkSession();
|
|
722
702
|
return Promise.resolve(await this._getUser());
|
|
723
703
|
}
|
|
724
704
|
const error = new URL(window.location.href).searchParams.get(ERROR);
|
|
@@ -836,164 +816,6 @@ const navigate = (url) => {
|
|
|
836
816
|
};
|
|
837
817
|
var navigate_default = navigate;
|
|
838
818
|
|
|
839
|
-
//#endregion
|
|
840
|
-
//#region src/utils/SessionManagementHelper.ts
|
|
841
|
-
/**
|
|
842
|
-
* Factory that creates an OIDC Session Management helper using an RP iframe and polling.
|
|
843
|
-
* Appends a hidden RP iframe to the document and returns the helper interface.
|
|
844
|
-
*
|
|
845
|
-
* @param signOut - Returns the sign-out URL for the current session.
|
|
846
|
-
* @param setSessionState - Stores a new session state from a prompt-none response.
|
|
847
|
-
* @returns A `SessionManagementHelperInterface` instance.
|
|
848
|
-
*/
|
|
849
|
-
const createSessionManagementHelper = async (signOut, setSessionState) => {
|
|
850
|
-
let _clientID;
|
|
851
|
-
let _checkSessionEndpoint;
|
|
852
|
-
let _sessionState;
|
|
853
|
-
let _interval;
|
|
854
|
-
let _redirectURL;
|
|
855
|
-
let _sessionRefreshInterval;
|
|
856
|
-
let _sessionRefreshIntervalTimeout;
|
|
857
|
-
let _checkSessionIntervalTimeout;
|
|
858
|
-
let _getSignInUrl;
|
|
859
|
-
const initialize = (clientId, checkSessionEndpoint, getSessionState, interval, sessionRefreshInterval, redirectURL, getSignInUrl) => {
|
|
860
|
-
_clientID = clientId;
|
|
861
|
-
_checkSessionEndpoint = checkSessionEndpoint;
|
|
862
|
-
_sessionState = getSessionState;
|
|
863
|
-
_interval = interval;
|
|
864
|
-
_redirectURL = redirectURL;
|
|
865
|
-
_sessionRefreshInterval = sessionRefreshInterval;
|
|
866
|
-
_getSignInUrl = getSignInUrl;
|
|
867
|
-
if (_interval > -1) initiateCheckSession();
|
|
868
|
-
if (_sessionRefreshInterval > -1) _sessionRefreshIntervalTimeout = setInterval(() => {
|
|
869
|
-
sendPromptNoneRequest();
|
|
870
|
-
}, _sessionRefreshInterval * 1e3);
|
|
871
|
-
};
|
|
872
|
-
const initiateCheckSession = async () => {
|
|
873
|
-
if (!_checkSessionEndpoint || !_clientID || !_redirectURL) return;
|
|
874
|
-
async function checkSession() {
|
|
875
|
-
const sessionState = await _sessionState();
|
|
876
|
-
if (Boolean(_clientID) && Boolean(sessionState)) {
|
|
877
|
-
const message = `${_clientID} ${sessionState}`;
|
|
878
|
-
(document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(OP_IFRAME)).contentWindow?.postMessage(message, _checkSessionEndpoint);
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
const opIframe = document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(OP_IFRAME);
|
|
882
|
-
opIframe.src = _checkSessionEndpoint + "?client_id=" + _clientID + "&redirect_uri=" + _redirectURL;
|
|
883
|
-
_checkSessionIntervalTimeout = setInterval(checkSession, _interval * 1e3);
|
|
884
|
-
listenToResponseFromOPIFrame();
|
|
885
|
-
};
|
|
886
|
-
const reset = () => {
|
|
887
|
-
clearInterval(_checkSessionIntervalTimeout);
|
|
888
|
-
clearInterval(_sessionRefreshIntervalTimeout);
|
|
889
|
-
};
|
|
890
|
-
const listenToResponseFromOPIFrame = () => {
|
|
891
|
-
async function receiveMessage(e) {
|
|
892
|
-
const targetOrigin = _checkSessionEndpoint;
|
|
893
|
-
if (!targetOrigin || targetOrigin?.indexOf(e.origin) < 0 || e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) return;
|
|
894
|
-
if (e.data === "unchanged") {} else if (e.data === "error") window.location.href = await signOut();
|
|
895
|
-
else if (e.data === "changed") sendPromptNoneRequest();
|
|
896
|
-
}
|
|
897
|
-
window?.addEventListener("message", receiveMessage, false);
|
|
898
|
-
};
|
|
899
|
-
const sendPromptNoneRequest = async () => {
|
|
900
|
-
const promptNoneIFrame = document.getElementById(RP_IFRAME)?.contentDocument?.getElementById(PROMPT_NONE_IFRAME);
|
|
901
|
-
if (SPAUtils_default.canSendPromptNoneRequest()) {
|
|
902
|
-
SPAUtils_default.setPromptNoneRequestSent(true);
|
|
903
|
-
const receiveMessageListener = (e) => {
|
|
904
|
-
if (e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
|
|
905
|
-
setSessionState(e?.data?.data ?? "");
|
|
906
|
-
window?.removeEventListener("message", receiveMessageListener);
|
|
907
|
-
}
|
|
908
|
-
};
|
|
909
|
-
window?.addEventListener("message", receiveMessageListener);
|
|
910
|
-
promptNoneIFrame.src = await _getSignInUrl({
|
|
911
|
-
prompt: "none",
|
|
912
|
-
response_mode: "query",
|
|
913
|
-
state: STATE
|
|
914
|
-
});
|
|
915
|
-
}
|
|
916
|
-
};
|
|
917
|
-
const receivePromptNoneResponse = async (setSessionStateFn) => {
|
|
918
|
-
const state = new URL(window.location.href).searchParams.get(STATE_QUERY);
|
|
919
|
-
const sessionState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.SESSION_STATE);
|
|
920
|
-
const parent = window.parent.parent;
|
|
921
|
-
if (state !== null && (state.includes(STATE) || state.includes(SILENT_SIGN_IN_STATE))) {
|
|
922
|
-
const code$1 = new URL(window.location.href).searchParams.get("code");
|
|
923
|
-
if (code$1 !== null && code$1.length !== 0) {
|
|
924
|
-
if (state.includes(SILENT_SIGN_IN_STATE)) {
|
|
925
|
-
const message = {
|
|
926
|
-
data: {
|
|
927
|
-
code: code$1,
|
|
928
|
-
sessionState: sessionState ?? "",
|
|
929
|
-
state
|
|
930
|
-
},
|
|
931
|
-
type: CHECK_SESSION_SIGNED_IN
|
|
932
|
-
};
|
|
933
|
-
sessionStorage.setItem(INITIALIZED_SILENT_SIGN_IN, "false");
|
|
934
|
-
parent.postMessage(message, parent.origin);
|
|
935
|
-
SPAUtils_default.setPromptNoneRequestSent(false);
|
|
936
|
-
window.location.href = "about:blank";
|
|
937
|
-
await SPAUtils_default.waitTillPageRedirect();
|
|
938
|
-
return true;
|
|
939
|
-
}
|
|
940
|
-
const newSessionState = new URL(window.location.href).searchParams.get("session_state");
|
|
941
|
-
setSessionStateFn && await setSessionStateFn(newSessionState);
|
|
942
|
-
SPAUtils_default.setPromptNoneRequestSent(false);
|
|
943
|
-
window.location.href = "about:blank";
|
|
944
|
-
await SPAUtils_default.waitTillPageRedirect();
|
|
945
|
-
return true;
|
|
946
|
-
} else {
|
|
947
|
-
if (state.includes(SILENT_SIGN_IN_STATE)) {
|
|
948
|
-
const message = { type: CHECK_SESSION_SIGNED_OUT };
|
|
949
|
-
window.parent.parent.postMessage(message, parent.origin);
|
|
950
|
-
SPAUtils_default.setPromptNoneRequestSent(false);
|
|
951
|
-
window.location.href = "about:blank";
|
|
952
|
-
await SPAUtils_default.waitTillPageRedirect();
|
|
953
|
-
return true;
|
|
954
|
-
}
|
|
955
|
-
SPAUtils_default.setPromptNoneRequestSent(false);
|
|
956
|
-
const signOutURL = await signOut();
|
|
957
|
-
parent.location.href = signOutURL;
|
|
958
|
-
window.location.href = "about:blank";
|
|
959
|
-
await SPAUtils_default.waitTillPageRedirect();
|
|
960
|
-
return true;
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
return false;
|
|
964
|
-
};
|
|
965
|
-
let rpIFrame = document.createElement("iframe");
|
|
966
|
-
rpIFrame.setAttribute("id", RP_IFRAME);
|
|
967
|
-
rpIFrame.style.display = "none";
|
|
968
|
-
let rpIframeLoaded = false;
|
|
969
|
-
rpIFrame.onload = () => {
|
|
970
|
-
rpIFrame = document.getElementById(RP_IFRAME);
|
|
971
|
-
const rpDoc = rpIFrame?.contentDocument;
|
|
972
|
-
const opIFrame = rpDoc?.createElement("iframe");
|
|
973
|
-
if (opIFrame) {
|
|
974
|
-
opIFrame.setAttribute("id", OP_IFRAME);
|
|
975
|
-
opIFrame.style.display = "none";
|
|
976
|
-
}
|
|
977
|
-
const promptNoneIFrame = rpDoc?.createElement("iframe");
|
|
978
|
-
if (promptNoneIFrame) {
|
|
979
|
-
promptNoneIFrame.setAttribute("id", PROMPT_NONE_IFRAME);
|
|
980
|
-
promptNoneIFrame.style.display = "none";
|
|
981
|
-
}
|
|
982
|
-
opIFrame && rpIFrame?.contentDocument?.body?.appendChild(opIFrame);
|
|
983
|
-
promptNoneIFrame && rpIFrame?.contentDocument?.body?.appendChild(promptNoneIFrame);
|
|
984
|
-
rpIframeLoaded = true;
|
|
985
|
-
};
|
|
986
|
-
document?.body?.appendChild(rpIFrame);
|
|
987
|
-
const sleep = () => new Promise((resolve) => setTimeout(resolve, 1));
|
|
988
|
-
while (!rpIframeLoaded) await sleep();
|
|
989
|
-
return {
|
|
990
|
-
initialize,
|
|
991
|
-
receivePromptNoneResponse,
|
|
992
|
-
reset
|
|
993
|
-
};
|
|
994
|
-
};
|
|
995
|
-
var SessionManagementHelper_default = createSessionManagementHelper;
|
|
996
|
-
|
|
997
819
|
//#endregion
|
|
998
820
|
//#region ../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
|
|
999
821
|
var require_base64_js = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js": ((exports) => {
|
|
@@ -2596,10 +2418,7 @@ var SPAHelper_default = SPAHelper;
|
|
|
2596
2418
|
const logger$2 = createPackageComponentLogger("@thunderid/browser", "ThunderIDBrowserClient");
|
|
2597
2419
|
const BROWSER_DEFAULT_CONFIG = {
|
|
2598
2420
|
autoLogoutOnTokenRefreshError: false,
|
|
2599
|
-
|
|
2600
|
-
periodicTokenRefresh: false,
|
|
2601
|
-
sessionRefreshInterval: 300,
|
|
2602
|
-
syncSession: false
|
|
2421
|
+
periodicTokenRefresh: false
|
|
2603
2422
|
};
|
|
2604
2423
|
const initiateStore = (storage) => {
|
|
2605
2424
|
switch (storage) {
|
|
@@ -2614,7 +2433,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2614
2433
|
_browserInstanceId = 0;
|
|
2615
2434
|
_httpClient;
|
|
2616
2435
|
_spaHelper;
|
|
2617
|
-
_sessionManagementHelper;
|
|
2618
2436
|
_authHelper;
|
|
2619
2437
|
_storage = BrowserStorage_default.SessionStorage;
|
|
2620
2438
|
_getSignOutURLFromSessionStorage = false;
|
|
@@ -2653,7 +2471,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2653
2471
|
await this._authHelper?.attachTokenToRequestConfig(request);
|
|
2654
2472
|
};
|
|
2655
2473
|
this._httpClient = FetchHttpClient_default.getInstance(this._browserInstanceId, true, attachToken);
|
|
2656
|
-
this._sessionManagementHelper = await SessionManagementHelper_default(async () => this.getSignOutUrl(), (sessionState) => sm.setSessionDataParameter(OIDCRequestConstants.Params.SESSION_STATE, sessionState));
|
|
2657
2474
|
this._authHelper = new AuthenticationHelper_default(sm, this._spaHelper, this._browserInstanceId, {
|
|
2658
2475
|
exchangeToken: (cfg) => super.exchangeToken(cfg),
|
|
2659
2476
|
getAccessToken: (sessionId) => this.getAccessToken(sessionId),
|
|
@@ -2694,30 +2511,27 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2694
2511
|
isLoading() {
|
|
2695
2512
|
return false;
|
|
2696
2513
|
}
|
|
2697
|
-
async signIn(config, authorizationCode,
|
|
2514
|
+
async signIn(config, authorizationCode, state, tokenRequestConfig) {
|
|
2698
2515
|
await this.isInitialized();
|
|
2699
2516
|
if (!SPAUtils_default.canContinueSignIn(Boolean(config?.callOnlyOnRedirect), authorizationCode)) return;
|
|
2700
2517
|
delete config?.callOnlyOnRedirect;
|
|
2701
|
-
const user = await this._signInInternal(config, authorizationCode,
|
|
2518
|
+
const user = await this._signInInternal(config, authorizationCode, state, tokenRequestConfig);
|
|
2702
2519
|
if (user && this._onSignInCallback) this._onSignInCallback(user);
|
|
2703
2520
|
return user;
|
|
2704
2521
|
}
|
|
2705
|
-
async _signInInternal(signInConfig, authorizationCode,
|
|
2522
|
+
async _signInInternal(signInConfig, authorizationCode, state, tokenRequestConfig) {
|
|
2706
2523
|
const sm = this.getStorageManager();
|
|
2707
2524
|
const config = await sm.getConfigData();
|
|
2708
|
-
const basicUserInfo = await this._authHelper.handleSignIn(
|
|
2525
|
+
const basicUserInfo = await this._authHelper.handleSignIn();
|
|
2709
2526
|
if (basicUserInfo) return basicUserInfo;
|
|
2710
2527
|
let resolvedAuthorizationCode;
|
|
2711
|
-
let resolvedSessionState;
|
|
2712
2528
|
let resolvedState;
|
|
2713
2529
|
let resolvedTokenRequestConfig = { params: {} };
|
|
2714
2530
|
if (config?.responseMode === "form_post" && authorizationCode) {
|
|
2715
2531
|
resolvedAuthorizationCode = authorizationCode;
|
|
2716
|
-
resolvedSessionState = sessionState ?? "";
|
|
2717
2532
|
resolvedState = state ?? "";
|
|
2718
2533
|
} else {
|
|
2719
2534
|
resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
|
|
2720
|
-
resolvedSessionState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.SESSION_STATE) ?? "";
|
|
2721
2535
|
resolvedState = new URL(window.location.href).searchParams.get(OIDCRequestConstants.Params.STATE) ?? "";
|
|
2722
2536
|
SPAUtils_default.removeAuthorizationCode();
|
|
2723
2537
|
}
|
|
@@ -2725,7 +2539,13 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2725
2539
|
sm.setSessionStatus("true");
|
|
2726
2540
|
const storedTokenRequestConfig = await sm.getTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY);
|
|
2727
2541
|
if (storedTokenRequestConfig && typeof storedTokenRequestConfig === "string") resolvedTokenRequestConfig = JSON.parse(storedTokenRequestConfig);
|
|
2728
|
-
return this._exchangeCodeForTokens(resolvedAuthorizationCode,
|
|
2542
|
+
return this._exchangeCodeForTokens(resolvedAuthorizationCode, resolvedState, resolvedTokenRequestConfig);
|
|
2543
|
+
}
|
|
2544
|
+
if ((config?.session)?.silentSignIn?.beforeRedirect && window.self === window.top && !signInConfig?.["prompt"]) try {
|
|
2545
|
+
const silentUser = await this._signInSilentlyInternal(signInConfig, tokenRequestConfig);
|
|
2546
|
+
if (silentUser && typeof silentUser === "object") return silentUser;
|
|
2547
|
+
} catch (error) {
|
|
2548
|
+
logger$2.debug("Checking for an existing session failed; continuing with the sign-in redirect.", error);
|
|
2729
2549
|
}
|
|
2730
2550
|
return this.getSignInUrl(signInConfig).then(async (url) => {
|
|
2731
2551
|
if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE) {
|
|
@@ -2739,37 +2559,39 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2739
2559
|
allowedScopes: "",
|
|
2740
2560
|
displayName: "",
|
|
2741
2561
|
email: "",
|
|
2742
|
-
sessionState: "",
|
|
2743
2562
|
sub: "",
|
|
2744
2563
|
tenantDomain: "",
|
|
2745
2564
|
username: ""
|
|
2746
2565
|
};
|
|
2747
2566
|
});
|
|
2748
2567
|
}
|
|
2749
|
-
async _exchangeCodeForTokens(authorizationCode,
|
|
2568
|
+
async _exchangeCodeForTokens(authorizationCode, state, tokenRequestConfig) {
|
|
2750
2569
|
const config = await this.getStorageManager().getConfigData();
|
|
2751
|
-
if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE &&
|
|
2752
|
-
const pkceKey = extractPkceStorageKeyFromState(
|
|
2570
|
+
if (this._storage === BrowserStorage_default.BrowserMemory && config.enablePKCE && state) {
|
|
2571
|
+
const pkceKey = extractPkceStorageKeyFromState(state);
|
|
2753
2572
|
const pkce = SPAUtils_default.getPKCE(pkceKey);
|
|
2754
2573
|
await this.setPKCECode(pkce, pkceKey);
|
|
2755
2574
|
}
|
|
2756
|
-
await this.requestAccessToken(authorizationCode,
|
|
2575
|
+
await this.requestAccessToken(authorizationCode, state ?? "", void 0, tokenRequestConfig);
|
|
2757
2576
|
try {
|
|
2758
2577
|
const signOutUrl = await this.getSignOutUrl();
|
|
2759
2578
|
SPAUtils_default.setSignOutURL(signOutUrl, config.clientId, this._browserInstanceId);
|
|
2760
2579
|
} catch {}
|
|
2761
2580
|
await this._spaHelper.clearRefreshTokenTimeout();
|
|
2762
2581
|
await this._spaHelper.refreshAccessTokenAutomatically(() => this.refreshAccessToken());
|
|
2763
|
-
if (config.syncSession) this._checkSession();
|
|
2764
2582
|
return this.getUser();
|
|
2765
2583
|
}
|
|
2766
2584
|
async signInSilently(additionalParams, tokenRequestConfig) {
|
|
2767
2585
|
await this.isInitialized();
|
|
2768
2586
|
if (SPAUtils_default.wasSignInCalled()) return;
|
|
2769
|
-
const response = await this.
|
|
2587
|
+
const response = await this._signInSilentlyInternal(additionalParams, tokenRequestConfig);
|
|
2770
2588
|
if (this._onSignInCallback && response) this._onSignInCallback(response);
|
|
2771
2589
|
return response;
|
|
2772
2590
|
}
|
|
2591
|
+
async _signInSilentlyInternal(additionalParams, tokenRequestConfig) {
|
|
2592
|
+
const { session } = await this.getStorageManager().getConfigData();
|
|
2593
|
+
return this._authHelper.signInSilently((params) => this._constructSilentSignInUrl(params), (code$1, s, trc) => this._exchangeCodeForTokens(code$1, s, trc), additionalParams, tokenRequestConfig, session?.silentSignIn?.timeout);
|
|
2594
|
+
}
|
|
2773
2595
|
async signOut(_options, sessionIdOrAfterSignOut, afterSignOutParam) {
|
|
2774
2596
|
let afterSignOut;
|
|
2775
2597
|
let sessionId;
|
|
@@ -2865,7 +2687,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2865
2687
|
await this._validateMethod();
|
|
2866
2688
|
const timer = await this._spaHelper.getRefreshTimeoutTimer();
|
|
2867
2689
|
await super.revokeAccessToken(userId);
|
|
2868
|
-
this._sessionManagementHelper?.reset();
|
|
2869
2690
|
await this._spaHelper.clearRefreshTokenTimeout(timer);
|
|
2870
2691
|
this._onEndUserSession && await this._onEndUserSession(true);
|
|
2871
2692
|
return true;
|
|
@@ -2879,17 +2700,7 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2879
2700
|
}
|
|
2880
2701
|
async reInitialize(config) {
|
|
2881
2702
|
await this.isInitialized();
|
|
2882
|
-
|
|
2883
|
-
const isCheckSessionIframeDifferent = !(existingConfig?.endpoints?.checkSessionIframe && config?.endpoints?.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === config.endpoints.checkSessionIframe);
|
|
2884
|
-
const result = await super.reInitialize(config);
|
|
2885
|
-
if ({
|
|
2886
|
-
...existingConfig,
|
|
2887
|
-
...config
|
|
2888
|
-
}.syncSession && isCheckSessionIframeDifferent) {
|
|
2889
|
-
this._sessionManagementHelper?.reset();
|
|
2890
|
-
this._checkSession();
|
|
2891
|
-
}
|
|
2892
|
-
return result;
|
|
2703
|
+
return super.reInitialize(config);
|
|
2893
2704
|
}
|
|
2894
2705
|
async startAutoRefreshToken() {
|
|
2895
2706
|
await this.isInitialized();
|
|
@@ -2952,18 +2763,6 @@ var ThunderIDBrowserClient = class ThunderIDBrowserClient extends ThunderIDJavaS
|
|
|
2952
2763
|
default: throw new ThunderIDAuthException("SPA-AUTH_CLIENT-ON-IV01", "Invalid hook.", `Unknown hook: "${hook}"`);
|
|
2953
2764
|
}
|
|
2954
2765
|
}
|
|
2955
|
-
async _checkSession() {
|
|
2956
|
-
const oidcEndpoints = await this.getOpenIDProviderEndpoints();
|
|
2957
|
-
const sm = this.getStorageManager();
|
|
2958
|
-
const config = await sm.getConfigData();
|
|
2959
|
-
this._authHelper.initializeSessionManger(config, oidcEndpoints, async () => (await sm.getSessionData())?.session_state ?? "", async (params) => this.getSignInUrl(params), this._sessionManagementHelper);
|
|
2960
|
-
}
|
|
2961
|
-
async _shouldStopAuthn() {
|
|
2962
|
-
const sm = this.getStorageManager();
|
|
2963
|
-
return this._sessionManagementHelper.receivePromptNoneResponse(async (sessionState) => {
|
|
2964
|
-
await sm.setSessionDataParameter(OIDCRequestConstants.Params.SESSION_STATE, sessionState ?? "");
|
|
2965
|
-
});
|
|
2966
|
-
}
|
|
2967
2766
|
_enableRetrievingSignOutURLFromSession(config) {
|
|
2968
2767
|
if (config.preventSignOutURLUpdate) this._getSignOutURLFromSessionStorage = true;
|
|
2969
2768
|
}
|
|
@@ -3012,10 +2811,10 @@ var Hooks_default = Hooks;
|
|
|
3012
2811
|
//#endregion
|
|
3013
2812
|
//#region src/utils/hasAuthParamsInUrl.ts
|
|
3014
2813
|
/**
|
|
3015
|
-
* Utility to check if `code`
|
|
2814
|
+
* Utility to check if `code` is available in the URL as a search param.
|
|
3016
2815
|
*
|
|
3017
2816
|
* @param params - The URL search params to check. Defaults to `window.location.search`.
|
|
3018
|
-
* @return `true` if the URL contains `code`
|
|
2817
|
+
* @return `true` if the URL contains a `code` search param, otherwise `false`.
|
|
3019
2818
|
*/
|
|
3020
2819
|
const hasAuthParamsInUrl = (params = window.location.search) => {
|
|
3021
2820
|
return /[?&]code=[^&]+/.test(params);
|
|
@@ -3943,5 +3742,5 @@ const normalizeBorderRadius = (raw) => {
|
|
|
3943
3742
|
var normalizeBorderRadius_default = normalizeBorderRadius;
|
|
3944
3743
|
|
|
3945
3744
|
//#endregion
|
|
3946
|
-
export { ACCESS_TOKEN_INVALID, ANONYMOUS_ANIMAL_ICONS, ANONYMOUS_ENTITY_ICONS, AVATAR_GRADIENT_COUNT, AVATAR_URI_SCHEME, AuthenticationHelper_default as AuthenticationHelper, Hooks as BrowserHooks, BrowserStorage_default as BrowserStorage,
|
|
3745
|
+
export { ACCESS_TOKEN_INVALID, ANONYMOUS_ANIMAL_ICONS, ANONYMOUS_ENTITY_ICONS, AVATAR_GRADIENT_COUNT, AVATAR_URI_SCHEME, AuthenticationHelper_default as AuthenticationHelper, Hooks as BrowserHooks, BrowserStorage_default as BrowserStorage, CUSTOM_GRANT_CONFIG, ERROR, ERROR_DESCRIPTION, FetchHttpClient_default as FetchHttpClient, Hooks_default as Hooks, LocalStore_default as LocalStore, MemoryStore_default as MemoryStore, REFRESH_ACCESS_TOKEN_ERR0R, SILENT_SIGN_IN_SIGNED_IN, SILENT_SIGN_IN_SIGNED_OUT, SILENT_SIGN_IN_STATE, SILENT_SIGN_IN_TIMEOUT, SPACryptoUtils_default as SPACryptoUtils, SPAHelper_default as SPAHelper, SPAUtils_default as SPAUtils, STATE_QUERY, SessionStore_default as SessionStore, TOKEN_REQUEST_CONFIG_KEY, ThunderIDBrowserClient_default as ThunderIDBrowserClient, buildAvatarSpec_default as buildAvatarSpec, createClassObserver, createHttpClientFetcher_default as createHttpClientFetcher, createMediaQueryListener, deriveAvatarContent, detectThemeMode, extractAvatarParamsFromUri_default as extractAvatarParamsFromUri, generateAvatarDataUri_default as generateAvatarDataUri, getActiveTheme_default as getActiveTheme, handleWebAuthnAuthentication_default as handleWebAuthnAuthentication, hasAuthParamsInUrl_default as hasAuthParamsInUrl, hasCalledForThisInstanceInUrl_default as hasCalledForThisInstanceInUrl, http_default as http, isAvatarUri_default as isAvatarUri, navigate_default as navigate, normalizeBorderRadius_default as normalizeBorderRadius, pickAnonymousAvatarName_default as pickAnonymousAvatarName, pickAnonymousEntityName_default as pickAnonymousEntityName, resolveEmojiUrisInHtml_default as resolveEmojiUrisInHtml, resolveLogoUri_default as resolveLogoUri };
|
|
3947
3746
|
//# sourceMappingURL=index.js.map
|