@asgardeo/browser 0.1.0 → 0.1.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/cjs/index.js CHANGED
@@ -1940,12 +1940,10 @@ __export(index_exports, {
1940
1940
  ResponseType: () => import_axios2.ResponseType,
1941
1941
  SPAHelper: () => SPAHelper,
1942
1942
  SPAUtils: () => SPAUtils,
1943
- StyleConstants: () => StyleConstants_default,
1944
1943
  TOKEN_REQUEST_CONFIG_KEY: () => TOKEN_REQUEST_CONFIG_KEY,
1945
1944
  WebWorkerClass: () => WebWorkerClass,
1946
1945
  WebWorkerClient: () => WebWorkerClient,
1947
1946
  hasAuthParamsInUrl: () => hasAuthParamsInUrl_default,
1948
- withVendorCSSClassPrefix: () => withVendorCSSClassPrefix_default,
1949
1947
  workerReceiver: () => workerReceiver
1950
1948
  });
1951
1949
  module.exports = __toCommonJS(index_exports);
@@ -1954,7 +1952,7 @@ module.exports = __toCommonJS(index_exports);
1954
1952
  var import_javascript8 = require("@asgardeo/javascript");
1955
1953
 
1956
1954
  // src/__legacy__/clients/main-thread-client.ts
1957
- var import_javascript6 = require("@asgardeo/javascript");
1955
+ var import_javascript5 = require("@asgardeo/javascript");
1958
1956
 
1959
1957
  // src/__legacy__/constants/messages-types.ts
1960
1958
  var INIT = "init";
@@ -2024,7 +2022,7 @@ var STATE_QUERY = "state";
2024
2022
  // src/__legacy__/constants/errors.ts
2025
2023
  var ACCESS_TOKEN_INVALID = "Access token is invalid";
2026
2024
 
2027
- // src/__legacy__/helpers/authentication-helper.ts
2025
+ // src/__legacy__/helpers/session-management-helper.ts
2028
2026
  var import_javascript2 = require("@asgardeo/javascript");
2029
2027
 
2030
2028
  // src/__legacy__/utils/message-utils.ts
@@ -2239,665 +2237,156 @@ __publicField(_SPAUtils, "until", (condition, timeout = 500) => {
2239
2237
  });
2240
2238
  var SPAUtils = _SPAUtils;
2241
2239
 
2242
- // src/__legacy__/helpers/authentication-helper.ts
2243
- var AuthenticationHelper = class {
2244
- constructor(authClient, spaHelper) {
2245
- __publicField(this, "_authenticationClient");
2246
- __publicField(this, "_storageManager");
2247
- __publicField(this, "_spaHelper");
2248
- __publicField(this, "_instanceID");
2249
- __publicField(this, "_isTokenRefreshing");
2250
- this._authenticationClient = authClient;
2251
- this._storageManager = this._authenticationClient.getStorageManager();
2252
- this._spaHelper = spaHelper;
2253
- this._instanceID = this._authenticationClient.getInstanceId();
2254
- this._isTokenRefreshing = false;
2255
- }
2256
- enableHttpHandler(httpClient) {
2257
- httpClient?.enableHandler && httpClient.enableHandler();
2258
- }
2259
- disableHttpHandler(httpClient) {
2260
- httpClient?.disableHandler && httpClient.disableHandler();
2261
- }
2262
- initializeSessionManger(config, oidcEndpoints, getSessionState, getAuthzURL, sessionManagementHelper) {
2263
- sessionManagementHelper.initialize(
2264
- config.clientId,
2265
- oidcEndpoints.checkSessionIframe ?? "",
2266
- getSessionState,
2267
- config.checkSessionInterval ?? 3,
2268
- config.sessionRefreshInterval ?? 300,
2269
- config.afterSignInUrl,
2270
- getAuthzURL
2271
- );
2272
- }
2273
- async exchangeToken(config, enableRetrievingSignOutURLFromSession) {
2274
- let useDefaultEndpoint = true;
2275
- let matches = false;
2276
- if (config?.tokenEndpoint) {
2277
- useDefaultEndpoint = false;
2278
- for (const baseUrl of [
2279
- ...(await this._storageManager.getConfigData())?.resourceServerURLs ?? [],
2280
- config.baseUrl
2281
- ]) {
2282
- if (baseUrl && config.tokenEndpoint?.startsWith(baseUrl)) {
2283
- matches = true;
2284
- break;
2285
- }
2286
- }
2240
+ // src/__legacy__/helpers/session-management-helper.ts
2241
+ var SessionManagementHelper = /* @__PURE__ */ (() => {
2242
+ let _clientID;
2243
+ let _checkSessionEndpoint;
2244
+ let _sessionState;
2245
+ let _interval;
2246
+ let _redirectURL;
2247
+ let _sessionRefreshInterval;
2248
+ let _signOut;
2249
+ let _sessionRefreshIntervalTimeout;
2250
+ let _checkSessionIntervalTimeout;
2251
+ let _storage;
2252
+ let _setSessionState;
2253
+ let _getSignInUrl;
2254
+ const initialize = (clientId, checkSessionEndpoint, getSessionState, interval, sessionRefreshInterval, redirectURL, getSignInUrl) => {
2255
+ _clientID = clientId;
2256
+ _checkSessionEndpoint = checkSessionEndpoint;
2257
+ _sessionState = getSessionState;
2258
+ _interval = interval;
2259
+ _redirectURL = redirectURL;
2260
+ _sessionRefreshInterval = sessionRefreshInterval;
2261
+ _getSignInUrl = getSignInUrl;
2262
+ if (_interval > -1) {
2263
+ initiateCheckSession();
2287
2264
  }
2288
- if (config.shouldReplayAfterRefresh) {
2289
- this._storageManager.setTemporaryDataParameter(CUSTOM_GRANT_CONFIG, JSON.stringify(config));
2265
+ if (_sessionRefreshInterval > -1) {
2266
+ sessionRefreshInterval = setInterval(() => {
2267
+ sendPromptNoneRequest();
2268
+ }, _sessionRefreshInterval * 1e3);
2290
2269
  }
2291
- if (useDefaultEndpoint || matches) {
2292
- return this._authenticationClient.exchangeToken(config).then(async (response) => {
2293
- if (enableRetrievingSignOutURLFromSession && typeof enableRetrievingSignOutURLFromSession === "function") {
2294
- enableRetrievingSignOutURLFromSession(config);
2295
- }
2296
- if (config.returnsSession) {
2297
- this._spaHelper.refreshAccessTokenAutomatically(this);
2298
- return this._authenticationClient.getUser();
2299
- } else {
2300
- return response;
2301
- }
2302
- }).catch((error) => {
2303
- return Promise.reject(error);
2304
- });
2305
- } else {
2306
- return Promise.reject(
2307
- new import_javascript2.AsgardeoAuthException(
2308
- "SPA-MAIN_THREAD_CLIENT-RCG-IV01",
2309
- "Request to the provided endpoint is prohibited.",
2310
- "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`"
2311
- )
2312
- );
2270
+ };
2271
+ const initiateCheckSession = async () => {
2272
+ if (!_checkSessionEndpoint || !_clientID || !_redirectURL) {
2273
+ return;
2313
2274
  }
2314
- }
2315
- async getCustomGrantConfigData() {
2316
- const configString = await this._storageManager.getTemporaryDataParameter(CUSTOM_GRANT_CONFIG);
2317
- if (configString) {
2318
- return JSON.parse(configString);
2319
- } else {
2320
- return null;
2275
+ const OP_IFRAME2 = "opIFrame";
2276
+ async function checkSession() {
2277
+ const sessionState = await _sessionState();
2278
+ if (Boolean(_clientID) && Boolean(sessionState)) {
2279
+ const message = `${_clientID} ${sessionState}`;
2280
+ const rpIFrame2 = document.getElementById(RP_IFRAME);
2281
+ const opIframe2 = rpIFrame2?.contentDocument?.getElementById(OP_IFRAME2);
2282
+ const win = opIframe2.contentWindow;
2283
+ win?.postMessage(message, _checkSessionEndpoint);
2284
+ }
2321
2285
  }
2322
- }
2323
- async refreshAccessToken(enableRetrievingSignOutURLFromSession) {
2324
- try {
2325
- await this._authenticationClient.refreshAccessToken();
2326
- const customGrantConfig = await this.getCustomGrantConfigData();
2327
- if (customGrantConfig) {
2328
- await this.exchangeToken(customGrantConfig, enableRetrievingSignOutURLFromSession);
2286
+ const rpIFrame = document.getElementById(RP_IFRAME);
2287
+ const opIframe = rpIFrame?.contentDocument?.getElementById(OP_IFRAME2);
2288
+ opIframe.src = _checkSessionEndpoint + "?client_id=" + _clientID + "&redirect_uri=" + _redirectURL;
2289
+ _checkSessionIntervalTimeout = setInterval(checkSession, _interval * 1e3);
2290
+ listenToResponseFromOPIFrame();
2291
+ };
2292
+ const reset = () => {
2293
+ clearInterval(_checkSessionIntervalTimeout);
2294
+ clearInterval(_sessionRefreshIntervalTimeout);
2295
+ };
2296
+ const listenToResponseFromOPIFrame = () => {
2297
+ async function receiveMessage(e) {
2298
+ const targetOrigin = _checkSessionEndpoint;
2299
+ if (!targetOrigin || targetOrigin?.indexOf(e.origin) < 0 || e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2300
+ return;
2329
2301
  }
2330
- this._spaHelper.refreshAccessTokenAutomatically(this);
2331
- return this._authenticationClient.getUser();
2332
- } catch (error) {
2333
- const refreshTokenError = {
2334
- type: REFRESH_ACCESS_TOKEN_ERR0R
2302
+ if (e.data === "unchanged") {
2303
+ } else if (e.data === "error") {
2304
+ window.location.href = await _signOut();
2305
+ } else if (e.data === "changed") {
2306
+ sendPromptNoneRequest();
2307
+ }
2308
+ }
2309
+ window?.addEventListener("message", receiveMessage, false);
2310
+ };
2311
+ const sendPromptNoneRequest = async () => {
2312
+ const rpIFrame = document.getElementById(RP_IFRAME);
2313
+ const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
2314
+ PROMPT_NONE_IFRAME
2315
+ );
2316
+ if (SPAUtils.canSendPromptNoneRequest()) {
2317
+ SPAUtils.setPromptNoneRequestSent(true);
2318
+ const receiveMessageListener = (e) => {
2319
+ if (e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2320
+ _setSessionState(e?.data?.data ?? "");
2321
+ window?.removeEventListener("message", receiveMessageListener);
2322
+ }
2335
2323
  };
2336
- window.postMessage(refreshTokenError);
2337
- return Promise.reject(error);
2324
+ if (_storage === "browserMemory" /* BrowserMemory */ || _storage === "webWorker" /* WebWorker */) {
2325
+ window?.addEventListener("message", receiveMessageListener);
2326
+ }
2327
+ const promptNoneURL = await _getSignInUrl({
2328
+ prompt: "none",
2329
+ response_mode: "query",
2330
+ state: STATE
2331
+ });
2332
+ promptNoneIFrame.src = promptNoneURL;
2338
2333
  }
2339
- }
2340
- async retryFailedRequests(failedRequest) {
2341
- const httpClient = failedRequest.httpClient;
2342
- const requestConfig = failedRequest.requestConfig;
2343
- const isHttpHandlerEnabled = failedRequest.isHttpHandlerEnabled;
2344
- const httpErrorCallback = failedRequest.httpErrorCallback;
2345
- const httpFinishCallback = failedRequest.httpFinishCallback;
2346
- await SPAUtils.until(() => !this._isTokenRefreshing);
2347
- try {
2348
- const httpResponse = await httpClient.request(requestConfig);
2349
- return Promise.resolve(httpResponse);
2350
- } catch (error) {
2351
- if (isHttpHandlerEnabled) {
2352
- if (typeof httpErrorCallback === "function") {
2353
- await httpErrorCallback(error);
2334
+ };
2335
+ const receivePromptNoneResponse = async (setSessionState) => {
2336
+ const state = new URL(window.location.href).searchParams.get(STATE_QUERY);
2337
+ const sessionState = new URL(window.location.href).searchParams.get(import_javascript2.OIDCRequestConstants.Params.SESSION_STATE);
2338
+ const parent = window.parent.parent;
2339
+ if (state !== null && (state.includes(STATE) || state.includes(SILENT_SIGN_IN_STATE))) {
2340
+ const code = new URL(window.location.href).searchParams.get("code");
2341
+ if (code !== null && code.length !== 0) {
2342
+ if (state.includes(SILENT_SIGN_IN_STATE)) {
2343
+ const message = {
2344
+ data: {
2345
+ code,
2346
+ sessionState: sessionState ?? "",
2347
+ state
2348
+ },
2349
+ type: CHECK_SESSION_SIGNED_IN
2350
+ };
2351
+ sessionStorage.setItem(INITIALIZED_SILENT_SIGN_IN, "false");
2352
+ parent.postMessage(message, parent.origin);
2353
+ SPAUtils.setPromptNoneRequestSent(false);
2354
+ window.location.href = "about:blank";
2355
+ await SPAUtils.waitTillPageRedirect();
2356
+ return true;
2354
2357
  }
2355
- if (typeof httpFinishCallback === "function") {
2356
- httpFinishCallback();
2358
+ const newSessionState = new URL(window.location.href).searchParams.get("session_state");
2359
+ if (_storage === "localStorage" /* LocalStorage */ || _storage === "sessionStorage" /* SessionStorage */) {
2360
+ setSessionState && await setSessionState(newSessionState);
2361
+ } else {
2362
+ const message = {
2363
+ data: newSessionState ?? "",
2364
+ type: SET_SESSION_STATE_FROM_IFRAME
2365
+ };
2366
+ window?.parent?.parent?.postMessage(message);
2367
+ }
2368
+ SPAUtils.setPromptNoneRequestSent(false);
2369
+ window.location.href = "about:blank";
2370
+ await SPAUtils.waitTillPageRedirect();
2371
+ return true;
2372
+ } else {
2373
+ if (state.includes(SILENT_SIGN_IN_STATE)) {
2374
+ const message = {
2375
+ type: CHECK_SESSION_SIGNED_OUT
2376
+ };
2377
+ window.parent.parent.postMessage(message, parent.origin);
2378
+ SPAUtils.setPromptNoneRequestSent(false);
2379
+ window.location.href = "about:blank";
2380
+ await SPAUtils.waitTillPageRedirect();
2381
+ return true;
2357
2382
  }
2358
- }
2359
- return Promise.reject(error);
2360
- }
2361
- }
2362
- async httpRequest(httpClient, requestConfig, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback, enableRetrievingSignOutURLFromSession) {
2363
- let matches = false;
2364
- const config = await this._storageManager.getConfigData();
2365
- for (const baseUrl of [...await config?.resourceServerURLs ?? [], config.baseUrl]) {
2366
- if (baseUrl && requestConfig?.url?.startsWith(baseUrl)) {
2367
- matches = true;
2368
- break;
2369
- }
2370
- }
2371
- if (matches) {
2372
- return httpClient.request(requestConfig).then((response) => {
2373
- return Promise.resolve(response);
2374
- }).catch(async (error) => {
2375
- if (error?.response?.status === 401 || !error?.response) {
2376
- if (this._isTokenRefreshing) {
2377
- return this.retryFailedRequests({
2378
- enableRetrievingSignOutURLFromSession,
2379
- httpClient,
2380
- httpErrorCallback,
2381
- httpFinishCallback,
2382
- isHttpHandlerEnabled,
2383
- requestConfig
2384
- });
2385
- }
2386
- this._isTokenRefreshing = true;
2387
- let refreshAccessTokenResponse;
2388
- try {
2389
- refreshAccessTokenResponse = await this.refreshAccessToken(enableRetrievingSignOutURLFromSession);
2390
- this._isTokenRefreshing = false;
2391
- } catch (refreshError) {
2392
- this._isTokenRefreshing = false;
2393
- if (isHttpHandlerEnabled) {
2394
- if (typeof httpErrorCallback === "function") {
2395
- await httpErrorCallback({
2396
- ...error,
2397
- code: ACCESS_TOKEN_INVALID
2398
- });
2399
- }
2400
- if (typeof httpFinishCallback === "function") {
2401
- httpFinishCallback();
2402
- }
2403
- }
2404
- throw new import_javascript2.AsgardeoAuthException(
2405
- "SPA-AUTH_HELPER-HR-SE01",
2406
- refreshError?.name ?? "Refresh token request failed.",
2407
- refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
2408
- );
2409
- }
2410
- if (refreshAccessTokenResponse) {
2411
- try {
2412
- const httpResponse = await httpClient.request(requestConfig);
2413
- return Promise.resolve(httpResponse);
2414
- } catch (error2) {
2415
- if (isHttpHandlerEnabled) {
2416
- if (typeof httpErrorCallback === "function") {
2417
- await httpErrorCallback(error2);
2418
- }
2419
- if (typeof httpFinishCallback === "function") {
2420
- httpFinishCallback();
2421
- }
2422
- }
2423
- return Promise.reject(error2);
2424
- }
2425
- }
2426
- }
2427
- if (isHttpHandlerEnabled) {
2428
- if (typeof httpErrorCallback === "function") {
2429
- await httpErrorCallback(error);
2430
- }
2431
- if (typeof httpFinishCallback === "function") {
2432
- httpFinishCallback();
2433
- }
2434
- }
2435
- return Promise.reject(error);
2436
- });
2437
- } else {
2438
- return Promise.reject(
2439
- new import_javascript2.AsgardeoAuthException(
2440
- "SPA-AUTH_HELPER-HR-IV02",
2441
- "Request to the provided endpoint is prohibited.",
2442
- "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`"
2443
- )
2444
- );
2445
- }
2446
- }
2447
- async httpRequestAll(requestConfigs, httpClient, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback) {
2448
- let matches = true;
2449
- const config = await this._storageManager.getConfigData();
2450
- for (const requestConfig of requestConfigs) {
2451
- let urlMatches = false;
2452
- for (const baseUrl of [...(await config)?.resourceServerURLs ?? [], config.baseUrl]) {
2453
- if (baseUrl && requestConfig.url?.startsWith(baseUrl)) {
2454
- urlMatches = true;
2455
- break;
2456
- }
2457
- }
2458
- if (!urlMatches) {
2459
- matches = false;
2460
- break;
2461
- }
2462
- }
2463
- const requests = [];
2464
- if (matches) {
2465
- requestConfigs.forEach((request) => {
2466
- requests.push(httpClient.request(request));
2467
- });
2468
- return httpClient?.all && httpClient.all(requests).then((responses) => {
2469
- return Promise.resolve(responses);
2470
- }).catch(async (error) => {
2471
- if (error?.response?.status === 401 || !error?.response) {
2472
- let refreshTokenResponse;
2473
- try {
2474
- refreshTokenResponse = await this._authenticationClient.refreshAccessToken();
2475
- } catch (refreshError) {
2476
- if (isHttpHandlerEnabled) {
2477
- if (typeof httpErrorCallback === "function") {
2478
- await httpErrorCallback({
2479
- ...error,
2480
- code: ACCESS_TOKEN_INVALID
2481
- });
2482
- }
2483
- if (typeof httpFinishCallback === "function") {
2484
- httpFinishCallback();
2485
- }
2486
- }
2487
- throw new import_javascript2.AsgardeoAuthException(
2488
- "SPA-AUTH_HELPER-HRA-SE01",
2489
- refreshError?.name ?? "Refresh token request failed.",
2490
- refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
2491
- );
2492
- }
2493
- if (refreshTokenResponse) {
2494
- return httpClient.all && httpClient.all(requests).then((response) => {
2495
- return Promise.resolve(response);
2496
- }).catch(async (error2) => {
2497
- if (isHttpHandlerEnabled) {
2498
- if (typeof httpErrorCallback === "function") {
2499
- await httpErrorCallback(error2);
2500
- }
2501
- if (typeof httpFinishCallback === "function") {
2502
- httpFinishCallback();
2503
- }
2504
- }
2505
- return Promise.reject(error2);
2506
- });
2507
- }
2508
- }
2509
- if (isHttpHandlerEnabled) {
2510
- if (typeof httpErrorCallback === "function") {
2511
- await httpErrorCallback(error);
2512
- }
2513
- if (typeof httpFinishCallback === "function") {
2514
- httpFinishCallback();
2515
- }
2516
- }
2517
- return Promise.reject(error);
2518
- });
2519
- } else {
2520
- throw new import_javascript2.AsgardeoAuthException(
2521
- "SPA-AUTH_HELPER-HRA-IV02",
2522
- "Request to the provided endpoint is prohibited.",
2523
- "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`"
2524
- );
2525
- }
2526
- }
2527
- async requestAccessToken(authorizationCode, sessionState, checkSession, pkce, state, tokenRequestConfig) {
2528
- const config = await this._storageManager.getConfigData();
2529
- if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE && sessionState) {
2530
- const pkce2 = SPAUtils.getPKCE((0, import_javascript2.extractPkceStorageKeyFromState)(sessionState));
2531
- await this._authenticationClient.setPKCECode((0, import_javascript2.extractPkceStorageKeyFromState)(sessionState), pkce2);
2532
- } else if (config.storage === "webWorker" /* WebWorker */ && pkce) {
2533
- await this._authenticationClient.setPKCECode(pkce, state ?? "");
2534
- }
2535
- if (authorizationCode) {
2536
- return this._authenticationClient.requestAccessToken(authorizationCode, sessionState ?? "", state ?? "", void 0, tokenRequestConfig).then(async () => {
2537
- if (config.storage !== "webWorker" /* WebWorker */) {
2538
- SPAUtils.setSignOutURL(await this._authenticationClient.getSignOutUrl(), config.clientId, this._instanceID);
2539
- if (this._spaHelper) {
2540
- this._spaHelper.clearRefreshTokenTimeout();
2541
- this._spaHelper.refreshAccessTokenAutomatically(this);
2542
- }
2543
- if (checkSession && typeof checkSession === "function" && config.enableOIDCSessionManagement) {
2544
- checkSession();
2545
- }
2546
- } else {
2547
- if (this._spaHelper) {
2548
- this._spaHelper.refreshAccessTokenAutomatically(this);
2549
- }
2550
- }
2551
- return this._authenticationClient.getUser();
2552
- }).catch((error) => {
2553
- return Promise.reject(error);
2554
- });
2555
- }
2556
- return Promise.reject(
2557
- new import_javascript2.AsgardeoAuthException(
2558
- "SPA-AUTH_HELPER-RAT1-NF01",
2559
- "No authorization code.",
2560
- "No authorization code was found."
2561
- )
2562
- );
2563
- }
2564
- async trySignInSilently(constructSilentSignInUrl, requestAccessToken, sessionManagementHelper, additionalParams, tokenRequestConfig) {
2565
- if (SPAUtils.isInitializedSilentSignIn()) {
2566
- await sessionManagementHelper.receivePromptNoneResponse();
2567
- return Promise.resolve({
2568
- allowedScopes: "",
2569
- displayName: "",
2570
- email: "",
2571
- sessionState: "",
2572
- sub: "",
2573
- tenantDomain: "",
2574
- username: ""
2575
- });
2576
- }
2577
- const rpIFrame = document.getElementById(RP_IFRAME);
2578
- const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
2579
- PROMPT_NONE_IFRAME
2580
- );
2581
- try {
2582
- const url = await constructSilentSignInUrl(additionalParams);
2583
- promptNoneIFrame.src = url;
2584
- } catch (error) {
2585
- return Promise.reject(error);
2586
- }
2587
- return new Promise((resolve, reject) => {
2588
- const timer = setTimeout(() => {
2589
- resolve(false);
2590
- }, 1e4);
2591
- const listenToPromptNoneIFrame = async (e) => {
2592
- const data = e.data;
2593
- if (data?.type == CHECK_SESSION_SIGNED_OUT) {
2594
- window.removeEventListener("message", listenToPromptNoneIFrame);
2595
- clearTimeout(timer);
2596
- resolve(false);
2597
- }
2598
- if (data?.type == CHECK_SESSION_SIGNED_IN && data?.data?.code) {
2599
- requestAccessToken(data?.data?.code, data?.data?.sessionState, data?.data?.state, tokenRequestConfig).then((response) => {
2600
- window.removeEventListener("message", listenToPromptNoneIFrame);
2601
- resolve(response);
2602
- }).catch((error) => {
2603
- window.removeEventListener("message", listenToPromptNoneIFrame);
2604
- reject(error);
2605
- }).finally(() => {
2606
- clearTimeout(timer);
2607
- });
2608
- }
2609
- };
2610
- window.addEventListener("message", listenToPromptNoneIFrame);
2611
- });
2612
- }
2613
- async handleSignIn(shouldStopAuthn, checkSession, tryRetrievingUserInfo) {
2614
- const config = await this._storageManager.getConfigData();
2615
- if (await shouldStopAuthn()) {
2616
- return Promise.resolve({
2617
- allowedScopes: "",
2618
- displayName: "",
2619
- email: "",
2620
- sessionState: "",
2621
- sub: "",
2622
- tenantDomain: "",
2623
- username: ""
2624
- });
2625
- }
2626
- if (config.storage !== "webWorker" /* WebWorker */) {
2627
- if (await this._authenticationClient.isSignedIn()) {
2628
- this._spaHelper.clearRefreshTokenTimeout();
2629
- this._spaHelper.refreshAccessTokenAutomatically(this);
2630
- if (config.enableOIDCSessionManagement) {
2631
- checkSession();
2632
- }
2633
- return Promise.resolve(await this._authenticationClient.getUser());
2634
- }
2635
- }
2636
- const error = new URL(window.location.href).searchParams.get(ERROR);
2637
- const errorDescription = new URL(window.location.href).searchParams.get(ERROR_DESCRIPTION);
2638
- if (error) {
2639
- const url = new URL(window.location.href);
2640
- url.searchParams.delete(ERROR);
2641
- url.searchParams.delete(ERROR_DESCRIPTION);
2642
- history.pushState(null, document.title, url.toString());
2643
- throw new import_javascript2.AsgardeoAuthException("SPA-AUTH_HELPER-SI-SE01", error, errorDescription ?? "");
2644
- }
2645
- if (config.storage === "webWorker" /* WebWorker */ && tryRetrievingUserInfo) {
2646
- const basicUserInfo = await tryRetrievingUserInfo();
2647
- if (basicUserInfo) {
2648
- return basicUserInfo;
2649
- }
2650
- }
2651
- return Promise.resolve(void 0);
2652
- }
2653
- async attachTokenToRequestConfig(request) {
2654
- const requestConfig = { attachToken: true, ...request };
2655
- if (requestConfig.attachToken) {
2656
- if (requestConfig.shouldAttachIDPAccessToken) {
2657
- request.headers = {
2658
- ...request.headers,
2659
- Authorization: `Bearer ${await this.getIDPAccessToken()}`
2660
- };
2661
- } else {
2662
- request.headers = {
2663
- ...request.headers,
2664
- Authorization: `Bearer ${await this.getAccessToken()}`
2665
- };
2666
- }
2667
- }
2668
- }
2669
- async getUser() {
2670
- return this._authenticationClient.getUser();
2671
- }
2672
- async getDecodedIdToken() {
2673
- return this._authenticationClient.getDecodedIdToken();
2674
- }
2675
- async getDecodedIDPIDToken() {
2676
- return this._authenticationClient.getDecodedIdToken();
2677
- }
2678
- async getCrypto() {
2679
- return this._authenticationClient.getCrypto();
2680
- }
2681
- async getIdToken() {
2682
- return this._authenticationClient.getIdToken();
2683
- }
2684
- async getOpenIDProviderEndpoints() {
2685
- return this._authenticationClient.getOpenIDProviderEndpoints();
2686
- }
2687
- async getAccessToken() {
2688
- return this._authenticationClient.getAccessToken();
2689
- }
2690
- async getIDPAccessToken() {
2691
- return (await this._storageManager.getSessionData())?.access_token;
2692
- }
2693
- getStorageManager() {
2694
- return this._storageManager;
2695
- }
2696
- async isSignedIn() {
2697
- return this._authenticationClient.isSignedIn();
2698
- }
2699
- };
2700
-
2701
- // src/__legacy__/helpers/spa-helper.ts
2702
- var import_javascript3 = require("@asgardeo/javascript");
2703
- var SPAHelper = class {
2704
- constructor(authClient) {
2705
- __publicField(this, "_authenticationClient");
2706
- __publicField(this, "_storageManager");
2707
- this._authenticationClient = authClient;
2708
- this._storageManager = this._authenticationClient.getStorageManager();
2709
- }
2710
- async refreshAccessTokenAutomatically(authenticationHelper) {
2711
- const shouldRefreshAutomatically = (await this._storageManager.getConfigData())?.periodicTokenRefresh ?? false;
2712
- if (!shouldRefreshAutomatically) {
2713
- return;
2714
- }
2715
- const sessionData = await this._storageManager.getSessionData();
2716
- if (sessionData.refresh_token) {
2717
- const expiryTime = parseInt(sessionData.expires_in);
2718
- const time = expiryTime <= 10 ? expiryTime : expiryTime - 10;
2719
- const timer = setTimeout(async () => {
2720
- await authenticationHelper.refreshAccessToken();
2721
- }, time * 1e3);
2722
- await this._storageManager.setTemporaryDataParameter(
2723
- import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER,
2724
- JSON.stringify(timer)
2725
- );
2726
- }
2727
- }
2728
- async getRefreshTimeoutTimer() {
2729
- if (await this._storageManager.getTemporaryDataParameter(import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER)) {
2730
- return JSON.parse(
2731
- await this._storageManager.getTemporaryDataParameter(
2732
- import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER
2733
- )
2734
- );
2735
- }
2736
- return -1;
2737
- }
2738
- async clearRefreshTokenTimeout(timer) {
2739
- if (timer) {
2740
- clearTimeout(timer);
2741
- return;
2742
- }
2743
- const refreshTimer = await this.getRefreshTimeoutTimer();
2744
- if (refreshTimer !== -1) {
2745
- clearTimeout(refreshTimer);
2746
- }
2747
- }
2748
- };
2749
-
2750
- // src/__legacy__/helpers/session-management-helper.ts
2751
- var import_javascript4 = require("@asgardeo/javascript");
2752
- var SessionManagementHelper = /* @__PURE__ */ (() => {
2753
- let _clientID;
2754
- let _checkSessionEndpoint;
2755
- let _sessionState;
2756
- let _interval;
2757
- let _redirectURL;
2758
- let _sessionRefreshInterval;
2759
- let _signOut;
2760
- let _sessionRefreshIntervalTimeout;
2761
- let _checkSessionIntervalTimeout;
2762
- let _storage;
2763
- let _setSessionState;
2764
- let _getSignInUrl;
2765
- const initialize = (clientId, checkSessionEndpoint, getSessionState, interval, sessionRefreshInterval, redirectURL, getSignInUrl) => {
2766
- _clientID = clientId;
2767
- _checkSessionEndpoint = checkSessionEndpoint;
2768
- _sessionState = getSessionState;
2769
- _interval = interval;
2770
- _redirectURL = redirectURL;
2771
- _sessionRefreshInterval = sessionRefreshInterval;
2772
- _getSignInUrl = getSignInUrl;
2773
- if (_interval > -1) {
2774
- initiateCheckSession();
2775
- }
2776
- if (_sessionRefreshInterval > -1) {
2777
- sessionRefreshInterval = setInterval(() => {
2778
- sendPromptNoneRequest();
2779
- }, _sessionRefreshInterval * 1e3);
2780
- }
2781
- };
2782
- const initiateCheckSession = async () => {
2783
- if (!_checkSessionEndpoint || !_clientID || !_redirectURL) {
2784
- return;
2785
- }
2786
- const OP_IFRAME2 = "opIFrame";
2787
- async function checkSession() {
2788
- const sessionState = await _sessionState();
2789
- if (Boolean(_clientID) && Boolean(sessionState)) {
2790
- const message = `${_clientID} ${sessionState}`;
2791
- const rpIFrame2 = document.getElementById(RP_IFRAME);
2792
- const opIframe2 = rpIFrame2?.contentDocument?.getElementById(OP_IFRAME2);
2793
- const win = opIframe2.contentWindow;
2794
- win?.postMessage(message, _checkSessionEndpoint);
2795
- }
2796
- }
2797
- const rpIFrame = document.getElementById(RP_IFRAME);
2798
- const opIframe = rpIFrame?.contentDocument?.getElementById(OP_IFRAME2);
2799
- opIframe.src = _checkSessionEndpoint + "?client_id=" + _clientID + "&redirect_uri=" + _redirectURL;
2800
- _checkSessionIntervalTimeout = setInterval(checkSession, _interval * 1e3);
2801
- listenToResponseFromOPIFrame();
2802
- };
2803
- const reset = () => {
2804
- clearInterval(_checkSessionIntervalTimeout);
2805
- clearInterval(_sessionRefreshIntervalTimeout);
2806
- };
2807
- const listenToResponseFromOPIFrame = () => {
2808
- async function receiveMessage(e) {
2809
- const targetOrigin = _checkSessionEndpoint;
2810
- if (!targetOrigin || targetOrigin?.indexOf(e.origin) < 0 || e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2811
- return;
2812
- }
2813
- if (e.data === "unchanged") {
2814
- } else if (e.data === "error") {
2815
- window.location.href = await _signOut();
2816
- } else if (e.data === "changed") {
2817
- sendPromptNoneRequest();
2818
- }
2819
- }
2820
- window?.addEventListener("message", receiveMessage, false);
2821
- };
2822
- const sendPromptNoneRequest = async () => {
2823
- const rpIFrame = document.getElementById(RP_IFRAME);
2824
- const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
2825
- PROMPT_NONE_IFRAME
2826
- );
2827
- if (SPAUtils.canSendPromptNoneRequest()) {
2828
- SPAUtils.setPromptNoneRequestSent(true);
2829
- const receiveMessageListener = (e) => {
2830
- if (e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2831
- _setSessionState(e?.data?.data ?? "");
2832
- window?.removeEventListener("message", receiveMessageListener);
2833
- }
2834
- };
2835
- if (_storage === "browserMemory" /* BrowserMemory */ || _storage === "webWorker" /* WebWorker */) {
2836
- window?.addEventListener("message", receiveMessageListener);
2837
- }
2838
- const promptNoneURL = await _getSignInUrl({
2839
- prompt: "none",
2840
- response_mode: "query",
2841
- state: STATE
2842
- });
2843
- promptNoneIFrame.src = promptNoneURL;
2844
- }
2845
- };
2846
- const receivePromptNoneResponse = async (setSessionState) => {
2847
- const state = new URL(window.location.href).searchParams.get(STATE_QUERY);
2848
- const sessionState = new URL(window.location.href).searchParams.get(import_javascript4.OIDCRequestConstants.Params.SESSION_STATE);
2849
- const parent = window.parent.parent;
2850
- if (state !== null && (state.includes(STATE) || state.includes(SILENT_SIGN_IN_STATE))) {
2851
- const code = new URL(window.location.href).searchParams.get("code");
2852
- if (code !== null && code.length !== 0) {
2853
- if (state.includes(SILENT_SIGN_IN_STATE)) {
2854
- const message = {
2855
- data: {
2856
- code,
2857
- sessionState: sessionState ?? "",
2858
- state
2859
- },
2860
- type: CHECK_SESSION_SIGNED_IN
2861
- };
2862
- sessionStorage.setItem(INITIALIZED_SILENT_SIGN_IN, "false");
2863
- parent.postMessage(message, parent.origin);
2864
- SPAUtils.setPromptNoneRequestSent(false);
2865
- window.location.href = "about:blank";
2866
- await SPAUtils.waitTillPageRedirect();
2867
- return true;
2868
- }
2869
- const newSessionState = new URL(window.location.href).searchParams.get("session_state");
2870
- if (_storage === "localStorage" /* LocalStorage */ || _storage === "sessionStorage" /* SessionStorage */) {
2871
- setSessionState && await setSessionState(newSessionState);
2872
- } else {
2873
- const message = {
2874
- data: newSessionState ?? "",
2875
- type: SET_SESSION_STATE_FROM_IFRAME
2876
- };
2877
- window?.parent?.parent?.postMessage(message);
2878
- }
2879
- SPAUtils.setPromptNoneRequestSent(false);
2880
- window.location.href = "about:blank";
2881
- await SPAUtils.waitTillPageRedirect();
2882
- return true;
2883
- } else {
2884
- if (state.includes(SILENT_SIGN_IN_STATE)) {
2885
- const message = {
2886
- type: CHECK_SESSION_SIGNED_OUT
2887
- };
2888
- window.parent.parent.postMessage(message, parent.origin);
2889
- SPAUtils.setPromptNoneRequestSent(false);
2890
- window.location.href = "about:blank";
2891
- await SPAUtils.waitTillPageRedirect();
2892
- return true;
2893
- }
2894
- SPAUtils.setPromptNoneRequestSent(false);
2895
- const signOutURL = await _signOut();
2896
- await import_javascript4.AsgardeoAuthClient.clearSession();
2897
- parent.location.href = signOutURL;
2898
- window.location.href = "about:blank";
2899
- await SPAUtils.waitTillPageRedirect();
2900
- return true;
2383
+ SPAUtils.setPromptNoneRequestSent(false);
2384
+ const signOutURL = await _signOut();
2385
+ await import_javascript2.AsgardeoAuthClient.clearSession();
2386
+ parent.location.href = signOutURL;
2387
+ window.location.href = "about:blank";
2388
+ await SPAUtils.waitTillPageRedirect();
2389
+ return true;
2901
2390
  }
2902
2391
  }
2903
2392
  return false;
@@ -2942,6 +2431,55 @@ var SessionManagementHelper = /* @__PURE__ */ (() => {
2942
2431
  };
2943
2432
  })();
2944
2433
 
2434
+ // src/__legacy__/helpers/spa-helper.ts
2435
+ var import_javascript3 = require("@asgardeo/javascript");
2436
+ var SPAHelper = class {
2437
+ constructor(authClient) {
2438
+ __publicField(this, "_authenticationClient");
2439
+ __publicField(this, "_storageManager");
2440
+ this._authenticationClient = authClient;
2441
+ this._storageManager = this._authenticationClient.getStorageManager();
2442
+ }
2443
+ async refreshAccessTokenAutomatically(authenticationHelper) {
2444
+ const shouldRefreshAutomatically = (await this._storageManager.getConfigData())?.periodicTokenRefresh ?? false;
2445
+ if (!shouldRefreshAutomatically) {
2446
+ return;
2447
+ }
2448
+ const sessionData = await this._storageManager.getSessionData();
2449
+ if (sessionData.refresh_token) {
2450
+ const expiryTime = parseInt(sessionData.expires_in);
2451
+ const time = expiryTime <= 10 ? expiryTime : expiryTime - 10;
2452
+ const timer = setTimeout(async () => {
2453
+ await authenticationHelper.refreshAccessToken();
2454
+ }, time * 1e3);
2455
+ await this._storageManager.setTemporaryDataParameter(
2456
+ import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER,
2457
+ JSON.stringify(timer)
2458
+ );
2459
+ }
2460
+ }
2461
+ async getRefreshTimeoutTimer() {
2462
+ if (await this._storageManager.getTemporaryDataParameter(import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER)) {
2463
+ return JSON.parse(
2464
+ await this._storageManager.getTemporaryDataParameter(
2465
+ import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER
2466
+ )
2467
+ );
2468
+ }
2469
+ return -1;
2470
+ }
2471
+ async clearRefreshTokenTimeout(timer) {
2472
+ if (timer) {
2473
+ clearTimeout(timer);
2474
+ return;
2475
+ }
2476
+ const refreshTimer = await this.getRefreshTimeoutTimer();
2477
+ if (refreshTimer !== -1) {
2478
+ clearTimeout(refreshTimer);
2479
+ }
2480
+ }
2481
+ };
2482
+
2945
2483
  // src/__legacy__/http-client/clients/axios-http-client.ts
2946
2484
  var import_axios = __toESM(require("axios"), 1);
2947
2485
 
@@ -3087,463 +2625,880 @@ var HttpClient = class {
3087
2625
  enableHandler() {
3088
2626
  HttpClient.isHandlerEnabled = true;
3089
2627
  }
3090
- /**
3091
- * Disables the handler.
3092
- */
3093
- disableHandler() {
3094
- HttpClient.isHandlerEnabled = false;
2628
+ /**
2629
+ * Disables the handler.
2630
+ */
2631
+ disableHandler() {
2632
+ HttpClient.isHandlerEnabled = false;
2633
+ }
2634
+ /**
2635
+ * Disables the handler for a given period of time.
2636
+ *
2637
+ * @param {number} timeout - Timeout in milliseconds.
2638
+ */
2639
+ disableHandlerWithTimeout(timeout = HttpClient.DEFAULT_HANDLER_DISABLE_TIMEOUT) {
2640
+ HttpClient.isHandlerEnabled = false;
2641
+ setTimeout(() => {
2642
+ HttpClient.isHandlerEnabled = true;
2643
+ }, timeout);
2644
+ }
2645
+ setHttpRequestStartCallback(callback) {
2646
+ this.requestStartCallback = callback;
2647
+ }
2648
+ setHttpRequestSuccessCallback(callback) {
2649
+ this.requestSuccessCallback = callback;
2650
+ }
2651
+ setHttpRequestErrorCallback(callback) {
2652
+ this.requestErrorCallback = callback;
2653
+ }
2654
+ setHttpRequestFinishCallback(callback) {
2655
+ this.requestFinishCallback = callback;
2656
+ }
2657
+ };
2658
+ __publicField(HttpClient, "axiosInstance");
2659
+ __publicField(HttpClient, "clientInstance");
2660
+ __publicField(HttpClient, "isHandlerEnabled");
2661
+ __publicField(HttpClient, "DEFAULT_HANDLER_DISABLE_TIMEOUT", 1e3);
2662
+ HttpClient = __decorateClass([
2663
+ staticDecorator()
2664
+ ], HttpClient);
2665
+
2666
+ // src/__legacy__/stores/local-store.ts
2667
+ var LocalStore = class {
2668
+ async setData(key, value) {
2669
+ localStorage.setItem(key, value);
2670
+ }
2671
+ async getData(key) {
2672
+ return localStorage.getItem(key) ?? "{}";
2673
+ }
2674
+ async removeData(key) {
2675
+ localStorage.removeItem(key);
2676
+ }
2677
+ };
2678
+
2679
+ // src/__legacy__/stores/memory-store.ts
2680
+ var MemoryStore = class {
2681
+ constructor() {
2682
+ __publicField(this, "_data");
2683
+ this._data = /* @__PURE__ */ new Map();
2684
+ }
2685
+ async setData(key, value) {
2686
+ this._data.set(key, value);
2687
+ }
2688
+ async getData(key) {
2689
+ return this._data?.get(key) ?? "{}";
2690
+ }
2691
+ async removeData(key) {
2692
+ this._data.delete(key);
2693
+ }
2694
+ };
2695
+
2696
+ // src/__legacy__/stores/session-store.ts
2697
+ var SessionStore = class {
2698
+ async setData(key, value) {
2699
+ sessionStorage.setItem(key, value);
2700
+ }
2701
+ async getData(key) {
2702
+ return sessionStorage.getItem(key) ?? "{}";
2703
+ }
2704
+ async removeData(key) {
2705
+ sessionStorage.removeItem(key);
3095
2706
  }
2707
+ };
2708
+
2709
+ // src/__legacy__/utils/crypto-utils.ts
2710
+ var import_buffer = __toESM(require_buffer(), 1);
2711
+ var import_javascript4 = require("@asgardeo/javascript");
2712
+ var import_base64url = __toESM(require("base64url"), 1);
2713
+ var import_fast_sha256 = __toESM(require("fast-sha256"), 1);
2714
+ var import_jose = require("jose");
2715
+ var import_randombytes = __toESM(require_browser(), 1);
2716
+ var SPACryptoUtils = class {
3096
2717
  /**
3097
- * Disables the handler for a given period of time.
2718
+ * Get URL encoded string.
3098
2719
  *
3099
- * @param {number} timeout - Timeout in milliseconds.
2720
+ * @returns {string} base 64 url encoded value.
3100
2721
  */
3101
- disableHandlerWithTimeout(timeout = HttpClient.DEFAULT_HANDLER_DISABLE_TIMEOUT) {
3102
- HttpClient.isHandlerEnabled = false;
3103
- setTimeout(() => {
3104
- HttpClient.isHandlerEnabled = true;
3105
- }, timeout);
2722
+ base64URLEncode(value) {
2723
+ return import_base64url.default.encode(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
3106
2724
  }
3107
- setHttpRequestStartCallback(callback) {
3108
- this.requestStartCallback = callback;
2725
+ base64URLDecode(value) {
2726
+ return import_base64url.default.decode(value).toString();
3109
2727
  }
3110
- setHttpRequestSuccessCallback(callback) {
3111
- this.requestSuccessCallback = callback;
2728
+ hashSha256(data) {
2729
+ return import_buffer.Buffer.from((0, import_fast_sha256.default)(new TextEncoder().encode(data)));
3112
2730
  }
3113
- setHttpRequestErrorCallback(callback) {
3114
- this.requestErrorCallback = callback;
2731
+ generateRandomBytes(length) {
2732
+ return (0, import_randombytes.default)(length);
3115
2733
  }
3116
- setHttpRequestFinishCallback(callback) {
3117
- this.requestFinishCallback = callback;
2734
+ verifyJwt(idToken, jwk, algorithms, clientId, issuer, subject, clockTolerance, validateJwtIssuer) {
2735
+ const jwtVerifyOptions = {
2736
+ algorithms,
2737
+ audience: clientId,
2738
+ clockTolerance,
2739
+ subject
2740
+ };
2741
+ if (validateJwtIssuer ?? true) {
2742
+ jwtVerifyOptions["issuer"] = issuer;
2743
+ }
2744
+ return (0, import_jose.jwtVerify)(
2745
+ idToken,
2746
+ (0, import_jose.createLocalJWKSet)({
2747
+ keys: [jwk]
2748
+ }),
2749
+ jwtVerifyOptions
2750
+ ).then(() => {
2751
+ return Promise.resolve(true);
2752
+ }).catch((error) => {
2753
+ return Promise.reject(
2754
+ new import_javascript4.AsgardeoAuthException(
2755
+ "SPA-CRYPTO-UTILS-VJ-IV01",
2756
+ error?.reason ?? JSON.stringify(error),
2757
+ `${error?.code} ${error?.claim}`
2758
+ )
2759
+ );
2760
+ });
2761
+ }
2762
+ };
2763
+
2764
+ // src/__legacy__/clients/main-thread-client.ts
2765
+ var initiateStore = (store) => {
2766
+ switch (store) {
2767
+ case "localStorage" /* LocalStorage */:
2768
+ return new LocalStore();
2769
+ case "sessionStorage" /* SessionStorage */:
2770
+ return new SessionStore();
2771
+ case "browserMemory" /* BrowserMemory */:
2772
+ return new MemoryStore();
2773
+ default:
2774
+ return new SessionStore();
3118
2775
  }
3119
2776
  };
3120
- __publicField(HttpClient, "axiosInstance");
3121
- __publicField(HttpClient, "clientInstance");
3122
- __publicField(HttpClient, "isHandlerEnabled");
3123
- __publicField(HttpClient, "DEFAULT_HANDLER_DISABLE_TIMEOUT", 1e3);
3124
- HttpClient = __decorateClass([
3125
- staticDecorator()
3126
- ], HttpClient);
2777
+ var MainThreadClient = async (instanceID, config, getAuthHelper) => {
2778
+ const _store = initiateStore(config.storage);
2779
+ const _cryptoUtils = new SPACryptoUtils();
2780
+ const _authenticationClient = new import_javascript5.AsgardeoAuthClient();
2781
+ await _authenticationClient.initialize(config, _store, _cryptoUtils, instanceID);
2782
+ const _spaHelper = new SPAHelper(_authenticationClient);
2783
+ const _dataLayer = _authenticationClient.getStorageManager();
2784
+ const _sessionManagementHelper = await SessionManagementHelper(
2785
+ async () => _authenticationClient.getSignOutUrl(),
2786
+ config.storage ?? "sessionStorage" /* SessionStorage */,
2787
+ (sessionState) => _dataLayer.setSessionDataParameter(
2788
+ import_javascript5.OIDCRequestConstants.Params.SESSION_STATE,
2789
+ sessionState ?? ""
2790
+ )
2791
+ );
2792
+ const _authenticationHelper = getAuthHelper(_authenticationClient, _spaHelper);
2793
+ let _getSignOutURLFromSessionStorage = false;
2794
+ const _httpClient = HttpClient.getInstance();
2795
+ let _isHttpHandlerEnabled = true;
2796
+ let _httpErrorCallback;
2797
+ let _httpFinishCallback;
2798
+ const attachToken = async (request) => {
2799
+ await _authenticationHelper.attachTokenToRequestConfig(request);
2800
+ };
2801
+ _httpClient?.init && await _httpClient.init(true, attachToken);
2802
+ const setHttpRequestStartCallback = (callback) => {
2803
+ _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
2804
+ };
2805
+ const setHttpRequestSuccessCallback = (callback) => {
2806
+ _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
2807
+ };
2808
+ const setHttpRequestFinishCallback = (callback) => {
2809
+ _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
2810
+ };
2811
+ const setHttpRequestErrorCallback = (callback) => {
2812
+ _httpErrorCallback = callback;
2813
+ };
2814
+ const httpRequest = async (requestConfig) => _authenticationHelper.httpRequest(
2815
+ _httpClient,
2816
+ requestConfig,
2817
+ _isHttpHandlerEnabled,
2818
+ _httpErrorCallback,
2819
+ _httpFinishCallback
2820
+ );
2821
+ const httpRequestAll = async (requestConfigs) => _authenticationHelper.httpRequestAll(
2822
+ requestConfigs,
2823
+ _httpClient,
2824
+ _isHttpHandlerEnabled,
2825
+ _httpErrorCallback,
2826
+ _httpFinishCallback
2827
+ );
2828
+ const getHttpClient = () => _httpClient;
2829
+ const enableHttpHandler = () => {
2830
+ _authenticationHelper.enableHttpHandler(_httpClient);
2831
+ _isHttpHandlerEnabled = true;
2832
+ return true;
2833
+ };
2834
+ const disableHttpHandler = () => {
2835
+ _authenticationHelper.disableHttpHandler(_httpClient);
2836
+ _isHttpHandlerEnabled = false;
2837
+ return true;
2838
+ };
2839
+ const checkSession = async () => {
2840
+ const oidcEndpoints = await _authenticationClient.getOpenIDProviderEndpoints();
2841
+ const config2 = await _dataLayer.getConfigData();
2842
+ _authenticationHelper.initializeSessionManger(
2843
+ config2,
2844
+ oidcEndpoints,
2845
+ async () => (await _authenticationClient.getUserSession()).sessionState,
2846
+ async (params) => _authenticationClient.getSignInUrl(params),
2847
+ _sessionManagementHelper
2848
+ );
2849
+ };
2850
+ const shouldStopAuthn = async () => _sessionManagementHelper.receivePromptNoneResponse(async (sessionState) => {
2851
+ await _dataLayer.setSessionDataParameter(
2852
+ import_javascript5.OIDCRequestConstants.Params.SESSION_STATE,
2853
+ sessionState ?? ""
2854
+ );
2855
+ });
2856
+ const setSessionStatus = async (sessionStatus) => {
2857
+ await _dataLayer.setSessionStatus(sessionStatus);
2858
+ };
2859
+ const signIn = async (signInConfig, authorizationCode, sessionState, state, tokenRequestConfig) => {
2860
+ const basicUserInfo = await _authenticationHelper.handleSignIn(shouldStopAuthn, checkSession, void 0);
2861
+ if (basicUserInfo) {
2862
+ return basicUserInfo;
2863
+ }
2864
+ let resolvedAuthorizationCode;
2865
+ let resolvedSessionState;
2866
+ let resolvedState;
2867
+ let resolvedTokenRequestConfig = { params: {} };
2868
+ if (config?.responseMode === "form_post" && authorizationCode) {
2869
+ resolvedAuthorizationCode = authorizationCode;
2870
+ resolvedSessionState = sessionState ?? "";
2871
+ resolvedState = state ?? "";
2872
+ } else {
2873
+ resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(import_javascript5.OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
2874
+ resolvedSessionState = new URL(window.location.href).searchParams.get(import_javascript5.OIDCRequestConstants.Params.SESSION_STATE) ?? "";
2875
+ resolvedState = new URL(window.location.href).searchParams.get(import_javascript5.OIDCRequestConstants.Params.STATE) ?? "";
2876
+ SPAUtils.removeAuthorizationCode();
2877
+ }
2878
+ if (resolvedAuthorizationCode && resolvedState) {
2879
+ setSessionStatus("true");
2880
+ const storedTokenRequestConfig = await _dataLayer.getTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY);
2881
+ if (storedTokenRequestConfig && typeof storedTokenRequestConfig === "string") {
2882
+ resolvedTokenRequestConfig = JSON.parse(storedTokenRequestConfig);
2883
+ }
2884
+ return requestAccessToken(
2885
+ resolvedAuthorizationCode,
2886
+ resolvedSessionState,
2887
+ resolvedState,
2888
+ resolvedTokenRequestConfig
2889
+ );
2890
+ }
2891
+ return _authenticationClient.getSignInUrl(signInConfig).then(async (url) => {
2892
+ if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE) {
2893
+ const pkceKey = (0, import_javascript5.extractPkceStorageKeyFromState)(resolvedState);
2894
+ SPAUtils.setPKCE(pkceKey, await _authenticationClient.getPKCECode(resolvedState));
2895
+ }
2896
+ if (tokenRequestConfig) {
2897
+ _dataLayer.setTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY, JSON.stringify(tokenRequestConfig));
2898
+ }
2899
+ if (signInConfig && signInConfig["response_mode"] === "direct") {
2900
+ const authorizeUrl = new URL(url);
2901
+ return (0, import_javascript5.initializeEmbeddedSignInFlow)({
2902
+ url: `${authorizeUrl.origin}${authorizeUrl.pathname}`,
2903
+ payload: Object.fromEntries(authorizeUrl.searchParams.entries())
2904
+ });
2905
+ }
2906
+ location.href = url;
2907
+ await SPAUtils.waitTillPageRedirect();
2908
+ return Promise.resolve({
2909
+ allowedScopes: "",
2910
+ displayName: "",
2911
+ email: "",
2912
+ sessionState: "",
2913
+ sub: "",
2914
+ tenantDomain: "",
2915
+ username: ""
2916
+ });
2917
+ });
2918
+ };
2919
+ const signOut = async () => {
2920
+ if (await _authenticationClient.isSignedIn() && !_getSignOutURLFromSessionStorage) {
2921
+ location.href = await _authenticationClient.getSignOutUrl();
2922
+ } else {
2923
+ location.href = SPAUtils.getSignOutUrl(config.clientId, instanceID);
2924
+ }
2925
+ _spaHelper.clearRefreshTokenTimeout();
2926
+ await _dataLayer.removeOIDCProviderMetaData();
2927
+ await _dataLayer.removeTemporaryData();
2928
+ await _dataLayer.removeSessionData();
2929
+ await _dataLayer.removeSessionStatus();
2930
+ await SPAUtils.waitTillPageRedirect();
2931
+ return true;
2932
+ };
2933
+ const enableRetrievingSignOutURLFromSession = (config2) => {
2934
+ if (config2.preventSignOutURLUpdate) {
2935
+ _getSignOutURLFromSessionStorage = true;
2936
+ }
2937
+ };
2938
+ const exchangeToken = async (config2) => _authenticationHelper.exchangeToken(config2, enableRetrievingSignOutURLFromSession);
2939
+ const refreshAccessToken = async () => {
2940
+ try {
2941
+ return await _authenticationHelper.refreshAccessToken(enableRetrievingSignOutURLFromSession);
2942
+ } catch (error) {
2943
+ return Promise.reject(error);
2944
+ }
2945
+ };
2946
+ const revokeAccessToken = async () => {
2947
+ const timer = await _spaHelper.getRefreshTimeoutTimer();
2948
+ return _authenticationClient.revokeAccessToken().then(() => {
2949
+ _sessionManagementHelper.reset();
2950
+ _spaHelper.clearRefreshTokenTimeout(timer);
2951
+ return Promise.resolve(true);
2952
+ }).catch((error) => Promise.reject(error));
2953
+ };
2954
+ const requestAccessToken = async (resolvedAuthorizationCode, resolvedSessionState, resolvedState, tokenRequestConfig) => _authenticationHelper.requestAccessToken(
2955
+ resolvedAuthorizationCode,
2956
+ resolvedSessionState,
2957
+ checkSession,
2958
+ void 0,
2959
+ resolvedState,
2960
+ tokenRequestConfig
2961
+ );
2962
+ const constructSilentSignInUrl = async (additionalParams = {}) => {
2963
+ const config2 = await _dataLayer.getConfigData();
2964
+ const urlString = await _authenticationClient.getSignInUrl({
2965
+ prompt: "none",
2966
+ state: SILENT_SIGN_IN_STATE,
2967
+ ...additionalParams
2968
+ });
2969
+ const urlObject = new URL(urlString);
2970
+ urlObject.searchParams.set("response_mode", "query");
2971
+ const url = urlObject.toString();
2972
+ if (config2.storage === "browserMemory" /* BrowserMemory */ && config2.enablePKCE) {
2973
+ const state = urlObject.searchParams.get(import_javascript5.OIDCRequestConstants.Params.STATE);
2974
+ SPAUtils.setPKCE(
2975
+ (0, import_javascript5.extractPkceStorageKeyFromState)(state ?? ""),
2976
+ await _authenticationClient.getPKCECode(state ?? "")
2977
+ );
2978
+ }
2979
+ return url;
2980
+ };
2981
+ const trySignInSilently = async (additionalParams, tokenRequestConfig) => _authenticationHelper.trySignInSilently(
2982
+ constructSilentSignInUrl,
2983
+ requestAccessToken,
2984
+ _sessionManagementHelper,
2985
+ additionalParams,
2986
+ tokenRequestConfig
2987
+ );
2988
+ const getUser = async () => _authenticationHelper.getUser();
2989
+ const getDecodedIdToken = async () => _authenticationHelper.getDecodedIdToken();
2990
+ const getCrypto = async () => _authenticationHelper.getCrypto();
2991
+ const getIdToken = async () => _authenticationHelper.getIdToken();
2992
+ const getOpenIDProviderEndpoints = async () => _authenticationHelper.getOpenIDProviderEndpoints();
2993
+ const getAccessToken = async () => _authenticationHelper.getAccessToken();
2994
+ const getStorageManager = async () => _authenticationHelper.getStorageManager();
2995
+ const getConfigData = async () => _dataLayer.getConfigData();
2996
+ const isSignedIn = async () => _authenticationHelper.isSignedIn();
2997
+ const isSessionActive = async () => await _dataLayer.getSessionStatus() === "true";
2998
+ const reInitialize = async (newConfig) => {
2999
+ const existingConfig = await _dataLayer.getConfigData();
3000
+ const isCheckSessionIframeDifferent = !(existingConfig && existingConfig.endpoints && existingConfig.endpoints.checkSessionIframe && newConfig && newConfig.endpoints && newConfig.endpoints.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === newConfig.endpoints.checkSessionIframe);
3001
+ const config2 = { ...existingConfig, ...newConfig };
3002
+ await _authenticationClient.reInitialize(config2);
3003
+ if (config2.enableOIDCSessionManagement && isCheckSessionIframeDifferent) {
3004
+ _sessionManagementHelper.reset();
3005
+ checkSession();
3006
+ }
3007
+ };
3008
+ return {
3009
+ disableHttpHandler,
3010
+ enableHttpHandler,
3011
+ getAccessToken,
3012
+ getUser,
3013
+ getConfigData,
3014
+ getCrypto,
3015
+ getStorageManager,
3016
+ getDecodedIdToken,
3017
+ getHttpClient,
3018
+ getIdToken,
3019
+ getOpenIDProviderEndpoints,
3020
+ httpRequest,
3021
+ httpRequestAll,
3022
+ isSignedIn,
3023
+ isSessionActive,
3024
+ refreshAccessToken,
3025
+ exchangeToken,
3026
+ revokeAccessToken,
3027
+ setHttpRequestErrorCallback,
3028
+ setHttpRequestFinishCallback,
3029
+ setHttpRequestStartCallback,
3030
+ setHttpRequestSuccessCallback,
3031
+ signIn,
3032
+ signOut,
3033
+ trySignInSilently,
3034
+ reInitialize
3035
+ };
3036
+ };
3127
3037
 
3128
- // src/__legacy__/stores/local-store.ts
3129
- var LocalStore = class {
3130
- async setData(key, value) {
3131
- localStorage.setItem(key, value);
3132
- }
3133
- async getData(key) {
3134
- return localStorage.getItem(key) ?? "{}";
3135
- }
3136
- async removeData(key) {
3137
- localStorage.removeItem(key);
3138
- }
3139
- };
3038
+ // src/__legacy__/clients/web-worker-client.ts
3039
+ var import_javascript7 = require("@asgardeo/javascript");
3140
3040
 
3141
- // src/__legacy__/stores/memory-store.ts
3142
- var MemoryStore = class {
3143
- constructor() {
3144
- __publicField(this, "_data");
3145
- this._data = /* @__PURE__ */ new Map();
3146
- }
3147
- async setData(key, value) {
3148
- this._data.set(key, value);
3149
- }
3150
- async getData(key) {
3151
- return this._data?.get(key) ?? "{}";
3152
- }
3153
- async removeData(key) {
3154
- this._data.delete(key);
3041
+ // src/__legacy__/helpers/authentication-helper.ts
3042
+ var import_javascript6 = require("@asgardeo/javascript");
3043
+ var AuthenticationHelper = class {
3044
+ constructor(authClient, spaHelper) {
3045
+ __publicField(this, "_authenticationClient");
3046
+ __publicField(this, "_storageManager");
3047
+ __publicField(this, "_spaHelper");
3048
+ __publicField(this, "_instanceID");
3049
+ __publicField(this, "_isTokenRefreshing");
3050
+ this._authenticationClient = authClient;
3051
+ this._storageManager = this._authenticationClient.getStorageManager();
3052
+ this._spaHelper = spaHelper;
3053
+ this._instanceID = this._authenticationClient.getInstanceId();
3054
+ this._isTokenRefreshing = false;
3155
3055
  }
3156
- };
3157
-
3158
- // src/__legacy__/stores/session-store.ts
3159
- var SessionStore = class {
3160
- async setData(key, value) {
3161
- sessionStorage.setItem(key, value);
3056
+ enableHttpHandler(httpClient) {
3057
+ httpClient?.enableHandler && httpClient.enableHandler();
3162
3058
  }
3163
- async getData(key) {
3164
- return sessionStorage.getItem(key) ?? "{}";
3059
+ disableHttpHandler(httpClient) {
3060
+ httpClient?.disableHandler && httpClient.disableHandler();
3165
3061
  }
3166
- async removeData(key) {
3167
- sessionStorage.removeItem(key);
3062
+ initializeSessionManger(config, oidcEndpoints, getSessionState, getAuthzURL, sessionManagementHelper) {
3063
+ sessionManagementHelper.initialize(
3064
+ config.clientId,
3065
+ oidcEndpoints.checkSessionIframe ?? "",
3066
+ getSessionState,
3067
+ config.checkSessionInterval ?? 3,
3068
+ config.sessionRefreshInterval ?? 300,
3069
+ config.afterSignInUrl,
3070
+ getAuthzURL
3071
+ );
3168
3072
  }
3169
- };
3170
-
3171
- // src/__legacy__/utils/crypto-utils.ts
3172
- var import_buffer = __toESM(require_buffer(), 1);
3173
- var import_javascript5 = require("@asgardeo/javascript");
3174
- var import_base64url = __toESM(require("base64url"), 1);
3175
- var import_fast_sha256 = __toESM(require("fast-sha256"), 1);
3176
- var import_jose = require("jose");
3177
- var import_randombytes = __toESM(require_browser(), 1);
3178
- var SPACryptoUtils = class {
3179
- /**
3180
- * Get URL encoded string.
3181
- *
3182
- * @returns {string} base 64 url encoded value.
3183
- */
3184
- base64URLEncode(value) {
3185
- return import_base64url.default.encode(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
3073
+ async exchangeToken(config, enableRetrievingSignOutURLFromSession) {
3074
+ let useDefaultEndpoint = true;
3075
+ let matches = false;
3076
+ if (config?.tokenEndpoint) {
3077
+ useDefaultEndpoint = false;
3078
+ for (const baseUrl of [
3079
+ ...(await this._storageManager.getConfigData())?.resourceServerURLs ?? [],
3080
+ config.baseUrl
3081
+ ]) {
3082
+ if (baseUrl && config.tokenEndpoint?.startsWith(baseUrl)) {
3083
+ matches = true;
3084
+ break;
3085
+ }
3086
+ }
3087
+ }
3088
+ if (config.shouldReplayAfterRefresh) {
3089
+ this._storageManager.setTemporaryDataParameter(CUSTOM_GRANT_CONFIG, JSON.stringify(config));
3090
+ }
3091
+ if (useDefaultEndpoint || matches) {
3092
+ return this._authenticationClient.exchangeToken(config).then(async (response) => {
3093
+ if (enableRetrievingSignOutURLFromSession && typeof enableRetrievingSignOutURLFromSession === "function") {
3094
+ enableRetrievingSignOutURLFromSession(config);
3095
+ }
3096
+ if (config.returnsSession) {
3097
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3098
+ return this._authenticationClient.getUser();
3099
+ } else {
3100
+ return response;
3101
+ }
3102
+ }).catch((error) => {
3103
+ return Promise.reject(error);
3104
+ });
3105
+ } else {
3106
+ return Promise.reject(
3107
+ new import_javascript6.AsgardeoAuthException(
3108
+ "SPA-MAIN_THREAD_CLIENT-RCG-IV01",
3109
+ "Request to the provided endpoint is prohibited.",
3110
+ "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`"
3111
+ )
3112
+ );
3113
+ }
3186
3114
  }
3187
- base64URLDecode(value) {
3188
- return import_base64url.default.decode(value).toString();
3115
+ async getCustomGrantConfigData() {
3116
+ const configString = await this._storageManager.getTemporaryDataParameter(CUSTOM_GRANT_CONFIG);
3117
+ if (configString) {
3118
+ return JSON.parse(configString);
3119
+ } else {
3120
+ return null;
3121
+ }
3189
3122
  }
3190
- hashSha256(data) {
3191
- return import_buffer.Buffer.from((0, import_fast_sha256.default)(new TextEncoder().encode(data)));
3123
+ async refreshAccessToken(enableRetrievingSignOutURLFromSession) {
3124
+ try {
3125
+ await this._authenticationClient.refreshAccessToken();
3126
+ const customGrantConfig = await this.getCustomGrantConfigData();
3127
+ if (customGrantConfig) {
3128
+ await this.exchangeToken(customGrantConfig, enableRetrievingSignOutURLFromSession);
3129
+ }
3130
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3131
+ return this._authenticationClient.getUser();
3132
+ } catch (error) {
3133
+ const refreshTokenError = {
3134
+ type: REFRESH_ACCESS_TOKEN_ERR0R
3135
+ };
3136
+ window.postMessage(refreshTokenError);
3137
+ return Promise.reject(error);
3138
+ }
3192
3139
  }
3193
- generateRandomBytes(length) {
3194
- return (0, import_randombytes.default)(length);
3140
+ async retryFailedRequests(failedRequest) {
3141
+ const httpClient = failedRequest.httpClient;
3142
+ const requestConfig = failedRequest.requestConfig;
3143
+ const isHttpHandlerEnabled = failedRequest.isHttpHandlerEnabled;
3144
+ const httpErrorCallback = failedRequest.httpErrorCallback;
3145
+ const httpFinishCallback = failedRequest.httpFinishCallback;
3146
+ await SPAUtils.until(() => !this._isTokenRefreshing);
3147
+ try {
3148
+ const httpResponse = await httpClient.request(requestConfig);
3149
+ return Promise.resolve(httpResponse);
3150
+ } catch (error) {
3151
+ if (isHttpHandlerEnabled) {
3152
+ if (typeof httpErrorCallback === "function") {
3153
+ await httpErrorCallback(error);
3154
+ }
3155
+ if (typeof httpFinishCallback === "function") {
3156
+ httpFinishCallback();
3157
+ }
3158
+ }
3159
+ return Promise.reject(error);
3160
+ }
3195
3161
  }
3196
- verifyJwt(idToken, jwk, algorithms, clientId, issuer, subject, clockTolerance, validateJwtIssuer) {
3197
- const jwtVerifyOptions = {
3198
- algorithms,
3199
- audience: clientId,
3200
- clockTolerance,
3201
- subject
3202
- };
3203
- if (validateJwtIssuer ?? true) {
3204
- jwtVerifyOptions["issuer"] = issuer;
3162
+ async httpRequest(httpClient, requestConfig, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback, enableRetrievingSignOutURLFromSession) {
3163
+ let matches = false;
3164
+ const config = await this._storageManager.getConfigData();
3165
+ for (const baseUrl of [...await config?.resourceServerURLs ?? [], config.baseUrl]) {
3166
+ if (baseUrl && requestConfig?.url?.startsWith(baseUrl)) {
3167
+ matches = true;
3168
+ break;
3169
+ }
3205
3170
  }
3206
- return (0, import_jose.jwtVerify)(
3207
- idToken,
3208
- (0, import_jose.createLocalJWKSet)({
3209
- keys: [jwk]
3210
- }),
3211
- jwtVerifyOptions
3212
- ).then(() => {
3213
- return Promise.resolve(true);
3214
- }).catch((error) => {
3171
+ if (matches) {
3172
+ return httpClient.request(requestConfig).then((response) => {
3173
+ return Promise.resolve(response);
3174
+ }).catch(async (error) => {
3175
+ if (error?.response?.status === 401 || !error?.response) {
3176
+ if (this._isTokenRefreshing) {
3177
+ return this.retryFailedRequests({
3178
+ enableRetrievingSignOutURLFromSession,
3179
+ httpClient,
3180
+ httpErrorCallback,
3181
+ httpFinishCallback,
3182
+ isHttpHandlerEnabled,
3183
+ requestConfig
3184
+ });
3185
+ }
3186
+ this._isTokenRefreshing = true;
3187
+ let refreshAccessTokenResponse;
3188
+ try {
3189
+ refreshAccessTokenResponse = await this.refreshAccessToken(enableRetrievingSignOutURLFromSession);
3190
+ this._isTokenRefreshing = false;
3191
+ } catch (refreshError) {
3192
+ this._isTokenRefreshing = false;
3193
+ if (isHttpHandlerEnabled) {
3194
+ if (typeof httpErrorCallback === "function") {
3195
+ await httpErrorCallback({
3196
+ ...error,
3197
+ code: ACCESS_TOKEN_INVALID
3198
+ });
3199
+ }
3200
+ if (typeof httpFinishCallback === "function") {
3201
+ httpFinishCallback();
3202
+ }
3203
+ }
3204
+ throw new import_javascript6.AsgardeoAuthException(
3205
+ "SPA-AUTH_HELPER-HR-SE01",
3206
+ refreshError?.name ?? "Refresh token request failed.",
3207
+ refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
3208
+ );
3209
+ }
3210
+ if (refreshAccessTokenResponse) {
3211
+ try {
3212
+ const httpResponse = await httpClient.request(requestConfig);
3213
+ return Promise.resolve(httpResponse);
3214
+ } catch (error2) {
3215
+ if (isHttpHandlerEnabled) {
3216
+ if (typeof httpErrorCallback === "function") {
3217
+ await httpErrorCallback(error2);
3218
+ }
3219
+ if (typeof httpFinishCallback === "function") {
3220
+ httpFinishCallback();
3221
+ }
3222
+ }
3223
+ return Promise.reject(error2);
3224
+ }
3225
+ }
3226
+ }
3227
+ if (isHttpHandlerEnabled) {
3228
+ if (typeof httpErrorCallback === "function") {
3229
+ await httpErrorCallback(error);
3230
+ }
3231
+ if (typeof httpFinishCallback === "function") {
3232
+ httpFinishCallback();
3233
+ }
3234
+ }
3235
+ return Promise.reject(error);
3236
+ });
3237
+ } else {
3215
3238
  return Promise.reject(
3216
- new import_javascript5.AsgardeoAuthException(
3217
- "SPA-CRYPTO-UTILS-VJ-IV01",
3218
- error?.reason ?? JSON.stringify(error),
3219
- `${error?.code} ${error?.claim}`
3239
+ new import_javascript6.AsgardeoAuthException(
3240
+ "SPA-AUTH_HELPER-HR-IV02",
3241
+ "Request to the provided endpoint is prohibited.",
3242
+ "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`"
3220
3243
  )
3221
3244
  );
3222
- });
3223
- }
3224
- };
3225
-
3226
- // src/__legacy__/clients/main-thread-client.ts
3227
- var initiateStore = (store) => {
3228
- switch (store) {
3229
- case "localStorage" /* LocalStorage */:
3230
- return new LocalStore();
3231
- case "sessionStorage" /* SessionStorage */:
3232
- return new SessionStore();
3233
- case "browserMemory" /* BrowserMemory */:
3234
- return new MemoryStore();
3235
- default:
3236
- return new SessionStore();
3237
- }
3238
- };
3239
- var MainThreadClient = async (instanceID, config, getAuthHelper) => {
3240
- const _store = initiateStore(config.storage);
3241
- const _cryptoUtils = new SPACryptoUtils();
3242
- const _authenticationClient = new import_javascript6.AsgardeoAuthClient();
3243
- await _authenticationClient.initialize(config, _store, _cryptoUtils, instanceID);
3244
- const _spaHelper = new SPAHelper(_authenticationClient);
3245
- const _dataLayer = _authenticationClient.getStorageManager();
3246
- const _sessionManagementHelper = await SessionManagementHelper(
3247
- async () => {
3248
- return _authenticationClient.getSignOutUrl();
3249
- },
3250
- config.storage ?? "sessionStorage" /* SessionStorage */,
3251
- (sessionState) => _dataLayer.setSessionDataParameter(
3252
- import_javascript6.OIDCRequestConstants.Params.SESSION_STATE,
3253
- sessionState ?? ""
3254
- )
3255
- );
3256
- const _authenticationHelper = getAuthHelper(_authenticationClient, _spaHelper);
3257
- let _getSignOutURLFromSessionStorage = false;
3258
- const _httpClient = HttpClient.getInstance();
3259
- let _isHttpHandlerEnabled = true;
3260
- let _httpErrorCallback;
3261
- let _httpFinishCallback;
3262
- const attachToken = async (request) => {
3263
- await _authenticationHelper.attachTokenToRequestConfig(request);
3264
- };
3265
- _httpClient?.init && await _httpClient.init(true, attachToken);
3266
- const setHttpRequestStartCallback = (callback) => {
3267
- _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
3268
- };
3269
- const setHttpRequestSuccessCallback = (callback) => {
3270
- _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
3271
- };
3272
- const setHttpRequestFinishCallback = (callback) => {
3273
- _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
3274
- };
3275
- const setHttpRequestErrorCallback = (callback) => {
3276
- _httpErrorCallback = callback;
3277
- };
3278
- const httpRequest = async (requestConfig) => {
3279
- return await _authenticationHelper.httpRequest(
3280
- _httpClient,
3281
- requestConfig,
3282
- _isHttpHandlerEnabled,
3283
- _httpErrorCallback,
3284
- _httpFinishCallback
3285
- );
3286
- };
3287
- const httpRequestAll = async (requestConfigs) => {
3288
- return await _authenticationHelper.httpRequestAll(
3289
- requestConfigs,
3290
- _httpClient,
3291
- _isHttpHandlerEnabled,
3292
- _httpErrorCallback,
3293
- _httpFinishCallback
3294
- );
3295
- };
3296
- const getHttpClient = () => {
3297
- return _httpClient;
3298
- };
3299
- const enableHttpHandler = () => {
3300
- _authenticationHelper.enableHttpHandler(_httpClient);
3301
- _isHttpHandlerEnabled = true;
3302
- return true;
3303
- };
3304
- const disableHttpHandler = () => {
3305
- _authenticationHelper.disableHttpHandler(_httpClient);
3306
- _isHttpHandlerEnabled = false;
3307
- return true;
3308
- };
3309
- const checkSession = async () => {
3310
- const oidcEndpoints = await _authenticationClient.getOpenIDProviderEndpoints();
3311
- const config2 = await _dataLayer.getConfigData();
3312
- _authenticationHelper.initializeSessionManger(
3313
- config2,
3314
- oidcEndpoints,
3315
- async () => (await _authenticationClient.getUserSession()).sessionState,
3316
- async (params) => _authenticationClient.getSignInUrl(params),
3317
- _sessionManagementHelper
3318
- );
3319
- };
3320
- const shouldStopAuthn = async () => {
3321
- return await _sessionManagementHelper.receivePromptNoneResponse(async (sessionState) => {
3322
- await _dataLayer.setSessionDataParameter(
3323
- import_javascript6.OIDCRequestConstants.Params.SESSION_STATE,
3324
- sessionState ?? ""
3325
- );
3326
- return;
3327
- });
3328
- };
3329
- const setSessionStatus = async (sessionStatus) => {
3330
- await _dataLayer.setSessionStatus(sessionStatus);
3331
- };
3332
- const signIn = async (signInConfig, authorizationCode, sessionState, state, tokenRequestConfig) => {
3333
- if (signInConfig["flow"]) {
3334
- return (0, import_javascript6.handleApplicationNativeAuthentication)({
3335
- url: signInConfig["flow"]["requestConfig"]["url"],
3336
- payload: signInConfig["flow"]["payload"]
3337
- });
3338
3245
  }
3339
- const basicUserInfo = await _authenticationHelper.handleSignIn(shouldStopAuthn, checkSession, void 0);
3340
- if (basicUserInfo) {
3341
- return basicUserInfo;
3342
- } else {
3343
- let resolvedAuthorizationCode;
3344
- let resolvedSessionState;
3345
- let resolvedState;
3346
- let resolvedTokenRequestConfig = { params: {} };
3347
- if (config?.responseMode === "form_post" && authorizationCode) {
3348
- resolvedAuthorizationCode = authorizationCode;
3349
- resolvedSessionState = sessionState ?? "";
3350
- resolvedState = state ?? "";
3351
- } else {
3352
- resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(import_javascript6.OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
3353
- resolvedSessionState = new URL(window.location.href).searchParams.get(import_javascript6.OIDCRequestConstants.Params.SESSION_STATE) ?? "";
3354
- resolvedState = new URL(window.location.href).searchParams.get(import_javascript6.OIDCRequestConstants.Params.STATE) ?? "";
3355
- SPAUtils.removeAuthorizationCode();
3356
- }
3357
- if (resolvedAuthorizationCode && resolvedState) {
3358
- setSessionStatus("true");
3359
- const storedTokenRequestConfig = await _dataLayer.getTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY);
3360
- if (storedTokenRequestConfig && typeof storedTokenRequestConfig === "string") {
3361
- resolvedTokenRequestConfig = JSON.parse(storedTokenRequestConfig);
3246
+ }
3247
+ async httpRequestAll(requestConfigs, httpClient, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback) {
3248
+ let matches = true;
3249
+ const config = await this._storageManager.getConfigData();
3250
+ for (const requestConfig of requestConfigs) {
3251
+ let urlMatches = false;
3252
+ for (const baseUrl of [...(await config)?.resourceServerURLs ?? [], config.baseUrl]) {
3253
+ if (baseUrl && requestConfig.url?.startsWith(baseUrl)) {
3254
+ urlMatches = true;
3255
+ break;
3362
3256
  }
3363
- return requestAccessToken(
3364
- resolvedAuthorizationCode,
3365
- resolvedSessionState,
3366
- resolvedState,
3367
- resolvedTokenRequestConfig
3368
- );
3369
3257
  }
3370
- return _authenticationClient.getSignInUrl(signInConfig).then(async (url) => {
3371
- if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE) {
3372
- const pkceKey = (0, import_javascript6.extractPkceStorageKeyFromState)(resolvedState);
3373
- SPAUtils.setPKCE(pkceKey, await _authenticationClient.getPKCECode(resolvedState));
3258
+ if (!urlMatches) {
3259
+ matches = false;
3260
+ break;
3261
+ }
3262
+ }
3263
+ const requests = [];
3264
+ if (matches) {
3265
+ requestConfigs.forEach((request) => {
3266
+ requests.push(httpClient.request(request));
3267
+ });
3268
+ return httpClient?.all && httpClient.all(requests).then((responses) => {
3269
+ return Promise.resolve(responses);
3270
+ }).catch(async (error) => {
3271
+ if (error?.response?.status === 401 || !error?.response) {
3272
+ let refreshTokenResponse;
3273
+ try {
3274
+ refreshTokenResponse = await this._authenticationClient.refreshAccessToken();
3275
+ } catch (refreshError) {
3276
+ if (isHttpHandlerEnabled) {
3277
+ if (typeof httpErrorCallback === "function") {
3278
+ await httpErrorCallback({
3279
+ ...error,
3280
+ code: ACCESS_TOKEN_INVALID
3281
+ });
3282
+ }
3283
+ if (typeof httpFinishCallback === "function") {
3284
+ httpFinishCallback();
3285
+ }
3286
+ }
3287
+ throw new import_javascript6.AsgardeoAuthException(
3288
+ "SPA-AUTH_HELPER-HRA-SE01",
3289
+ refreshError?.name ?? "Refresh token request failed.",
3290
+ refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
3291
+ );
3292
+ }
3293
+ if (refreshTokenResponse) {
3294
+ return httpClient.all && httpClient.all(requests).then((response) => {
3295
+ return Promise.resolve(response);
3296
+ }).catch(async (error2) => {
3297
+ if (isHttpHandlerEnabled) {
3298
+ if (typeof httpErrorCallback === "function") {
3299
+ await httpErrorCallback(error2);
3300
+ }
3301
+ if (typeof httpFinishCallback === "function") {
3302
+ httpFinishCallback();
3303
+ }
3304
+ }
3305
+ return Promise.reject(error2);
3306
+ });
3307
+ }
3374
3308
  }
3375
- if (tokenRequestConfig) {
3376
- _dataLayer.setTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY, JSON.stringify(tokenRequestConfig));
3309
+ if (isHttpHandlerEnabled) {
3310
+ if (typeof httpErrorCallback === "function") {
3311
+ await httpErrorCallback(error);
3312
+ }
3313
+ if (typeof httpFinishCallback === "function") {
3314
+ httpFinishCallback();
3315
+ }
3377
3316
  }
3378
- if (signInConfig["response_mode"] === "direct") {
3379
- const authorizeUrl = new URL(url);
3380
- return (0, import_javascript6.initializeApplicationNativeAuthentication)({
3381
- url: `${authorizeUrl.origin}${authorizeUrl.pathname}`,
3382
- payload: Object.fromEntries(authorizeUrl.searchParams.entries())
3383
- });
3317
+ return Promise.reject(error);
3318
+ });
3319
+ } else {
3320
+ throw new import_javascript6.AsgardeoAuthException(
3321
+ "SPA-AUTH_HELPER-HRA-IV02",
3322
+ "Request to the provided endpoint is prohibited.",
3323
+ "Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`"
3324
+ );
3325
+ }
3326
+ }
3327
+ async requestAccessToken(authorizationCode, sessionState, checkSession, pkce, state, tokenRequestConfig) {
3328
+ const config = await this._storageManager.getConfigData();
3329
+ if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE && sessionState) {
3330
+ const pkce2 = SPAUtils.getPKCE((0, import_javascript6.extractPkceStorageKeyFromState)(sessionState));
3331
+ await this._authenticationClient.setPKCECode((0, import_javascript6.extractPkceStorageKeyFromState)(sessionState), pkce2);
3332
+ } else if (config.storage === "webWorker" /* WebWorker */ && pkce) {
3333
+ await this._authenticationClient.setPKCECode(pkce, state ?? "");
3334
+ }
3335
+ if (authorizationCode) {
3336
+ return this._authenticationClient.requestAccessToken(authorizationCode, sessionState ?? "", state ?? "", void 0, tokenRequestConfig).then(async () => {
3337
+ if (config.storage !== "webWorker" /* WebWorker */) {
3338
+ SPAUtils.setSignOutURL(await this._authenticationClient.getSignOutUrl(), config.clientId, this._instanceID);
3339
+ if (this._spaHelper) {
3340
+ this._spaHelper.clearRefreshTokenTimeout();
3341
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3342
+ }
3343
+ if (checkSession && typeof checkSession === "function" && config.enableOIDCSessionManagement) {
3344
+ checkSession();
3345
+ }
3384
3346
  } else {
3385
- location.href = url;
3347
+ if (this._spaHelper) {
3348
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3349
+ }
3386
3350
  }
3387
- await SPAUtils.waitTillPageRedirect();
3388
- return Promise.resolve({
3389
- allowedScopes: "",
3390
- displayName: "",
3391
- email: "",
3392
- sessionState: "",
3393
- sub: "",
3394
- tenantDomain: "",
3395
- username: ""
3396
- });
3351
+ return this._authenticationClient.getUser();
3352
+ }).catch((error) => {
3353
+ return Promise.reject(error);
3397
3354
  });
3398
3355
  }
3399
- };
3400
- const signOut = async () => {
3401
- if (await _authenticationClient.isSignedIn() && !_getSignOutURLFromSessionStorage) {
3402
- location.href = await _authenticationClient.getSignOutUrl();
3403
- } else {
3404
- location.href = SPAUtils.getSignOutUrl(config.clientId, instanceID);
3405
- }
3406
- _spaHelper.clearRefreshTokenTimeout();
3407
- await _dataLayer.removeOIDCProviderMetaData();
3408
- await _dataLayer.removeTemporaryData();
3409
- await _dataLayer.removeSessionData();
3410
- await _dataLayer.removeSessionStatus();
3411
- await SPAUtils.waitTillPageRedirect();
3412
- return true;
3413
- };
3414
- const enableRetrievingSignOutURLFromSession = (config2) => {
3415
- if (config2.preventSignOutURLUpdate) {
3416
- _getSignOutURLFromSessionStorage = true;
3356
+ return Promise.reject(
3357
+ new import_javascript6.AsgardeoAuthException(
3358
+ "SPA-AUTH_HELPER-RAT1-NF01",
3359
+ "No authorization code.",
3360
+ "No authorization code was found."
3361
+ )
3362
+ );
3363
+ }
3364
+ async trySignInSilently(constructSilentSignInUrl, requestAccessToken, sessionManagementHelper, additionalParams, tokenRequestConfig) {
3365
+ if (SPAUtils.isInitializedSilentSignIn()) {
3366
+ await sessionManagementHelper.receivePromptNoneResponse();
3367
+ return Promise.resolve({
3368
+ allowedScopes: "",
3369
+ displayName: "",
3370
+ email: "",
3371
+ sessionState: "",
3372
+ sub: "",
3373
+ tenantDomain: "",
3374
+ username: ""
3375
+ });
3417
3376
  }
3418
- };
3419
- const exchangeToken = async (config2) => {
3420
- return await _authenticationHelper.exchangeToken(config2, enableRetrievingSignOutURLFromSession);
3421
- };
3422
- const refreshAccessToken = async () => {
3377
+ const rpIFrame = document.getElementById(RP_IFRAME);
3378
+ const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
3379
+ PROMPT_NONE_IFRAME
3380
+ );
3423
3381
  try {
3424
- return await _authenticationHelper.refreshAccessToken(enableRetrievingSignOutURLFromSession);
3382
+ const url = await constructSilentSignInUrl(additionalParams);
3383
+ promptNoneIFrame.src = url;
3425
3384
  } catch (error) {
3426
3385
  return Promise.reject(error);
3427
3386
  }
3428
- };
3429
- const revokeAccessToken = async () => {
3430
- const timer = await _spaHelper.getRefreshTimeoutTimer();
3431
- return _authenticationClient.revokeAccessToken().then(() => {
3432
- _sessionManagementHelper.reset();
3433
- _spaHelper.clearRefreshTokenTimeout(timer);
3434
- return Promise.resolve(true);
3435
- }).catch((error) => Promise.reject(error));
3436
- };
3437
- const requestAccessToken = async (resolvedAuthorizationCode, resolvedSessionState, resolvedState, tokenRequestConfig) => {
3438
- return await _authenticationHelper.requestAccessToken(
3439
- resolvedAuthorizationCode,
3440
- resolvedSessionState,
3441
- checkSession,
3442
- void 0,
3443
- resolvedState,
3444
- tokenRequestConfig
3445
- );
3446
- };
3447
- const constructSilentSignInUrl = async (additionalParams = {}) => {
3448
- const config2 = await _dataLayer.getConfigData();
3449
- const urlString = await _authenticationClient.getSignInUrl({
3450
- prompt: "none",
3451
- state: SILENT_SIGN_IN_STATE,
3452
- ...additionalParams
3387
+ return new Promise((resolve, reject) => {
3388
+ const timer = setTimeout(() => {
3389
+ resolve(false);
3390
+ }, 1e4);
3391
+ const listenToPromptNoneIFrame = async (e) => {
3392
+ const data = e.data;
3393
+ if (data?.type == CHECK_SESSION_SIGNED_OUT) {
3394
+ window.removeEventListener("message", listenToPromptNoneIFrame);
3395
+ clearTimeout(timer);
3396
+ resolve(false);
3397
+ }
3398
+ if (data?.type == CHECK_SESSION_SIGNED_IN && data?.data?.code) {
3399
+ requestAccessToken(data?.data?.code, data?.data?.sessionState, data?.data?.state, tokenRequestConfig).then((response) => {
3400
+ window.removeEventListener("message", listenToPromptNoneIFrame);
3401
+ resolve(response);
3402
+ }).catch((error) => {
3403
+ window.removeEventListener("message", listenToPromptNoneIFrame);
3404
+ reject(error);
3405
+ }).finally(() => {
3406
+ clearTimeout(timer);
3407
+ });
3408
+ }
3409
+ };
3410
+ window.addEventListener("message", listenToPromptNoneIFrame);
3453
3411
  });
3454
- const urlObject = new URL(urlString);
3455
- urlObject.searchParams.set("response_mode", "query");
3456
- const url = urlObject.toString();
3457
- if (config2.storage === "browserMemory" /* BrowserMemory */ && config2.enablePKCE) {
3458
- const state = urlObject.searchParams.get(import_javascript6.OIDCRequestConstants.Params.STATE);
3459
- SPAUtils.setPKCE(
3460
- (0, import_javascript6.extractPkceStorageKeyFromState)(state ?? ""),
3461
- await _authenticationClient.getPKCECode(state ?? "")
3462
- );
3412
+ }
3413
+ async handleSignIn(shouldStopAuthn, checkSession, tryRetrievingUserInfo) {
3414
+ const config = await this._storageManager.getConfigData();
3415
+ if (await shouldStopAuthn()) {
3416
+ return Promise.resolve({
3417
+ allowedScopes: "",
3418
+ displayName: "",
3419
+ email: "",
3420
+ sessionState: "",
3421
+ sub: "",
3422
+ tenantDomain: "",
3423
+ username: ""
3424
+ });
3463
3425
  }
3464
- return url;
3465
- };
3466
- const trySignInSilently = async (additionalParams, tokenRequestConfig) => {
3467
- return await _authenticationHelper.trySignInSilently(
3468
- constructSilentSignInUrl,
3469
- requestAccessToken,
3470
- _sessionManagementHelper,
3471
- additionalParams,
3472
- tokenRequestConfig
3473
- );
3474
- };
3475
- const getUser = async () => {
3476
- return _authenticationHelper.getUser();
3477
- };
3478
- const getDecodedIdToken = async () => {
3479
- return _authenticationHelper.getDecodedIdToken();
3480
- };
3481
- const getCrypto = async () => {
3482
- return _authenticationHelper.getCrypto();
3483
- };
3484
- const getIdToken = async () => {
3485
- return _authenticationHelper.getIdToken();
3486
- };
3487
- const getOpenIDProviderEndpoints = async () => {
3488
- return _authenticationHelper.getOpenIDProviderEndpoints();
3489
- };
3490
- const getAccessToken = async () => {
3491
- return _authenticationHelper.getAccessToken();
3492
- };
3493
- const getStorageManager = async () => {
3494
- return _authenticationHelper.getStorageManager();
3495
- };
3496
- const getConfigData = async () => {
3497
- return await _dataLayer.getConfigData();
3498
- };
3499
- const isSignedIn = async () => {
3500
- return _authenticationHelper.isSignedIn();
3501
- };
3502
- const isSessionActive = async () => {
3503
- return await _dataLayer.getSessionStatus() === "true";
3504
- };
3505
- const reInitialize = async (newConfig) => {
3506
- const existingConfig = await _dataLayer.getConfigData();
3507
- const isCheckSessionIframeDifferent = !(existingConfig && existingConfig.endpoints && existingConfig.endpoints.checkSessionIframe && newConfig && newConfig.endpoints && newConfig.endpoints.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === newConfig.endpoints.checkSessionIframe);
3508
- const config2 = { ...existingConfig, ...newConfig };
3509
- await _authenticationClient.reInitialize(config2);
3510
- if (config2.enableOIDCSessionManagement && isCheckSessionIframeDifferent) {
3511
- _sessionManagementHelper.reset();
3512
- checkSession();
3426
+ if (config.storage !== "webWorker" /* WebWorker */) {
3427
+ if (await this._authenticationClient.isSignedIn()) {
3428
+ this._spaHelper.clearRefreshTokenTimeout();
3429
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3430
+ if (config.enableOIDCSessionManagement) {
3431
+ checkSession();
3432
+ }
3433
+ return Promise.resolve(await this._authenticationClient.getUser());
3434
+ }
3513
3435
  }
3514
- };
3515
- return {
3516
- disableHttpHandler,
3517
- enableHttpHandler,
3518
- getAccessToken,
3519
- getUser,
3520
- getConfigData,
3521
- getCrypto,
3522
- getStorageManager,
3523
- getDecodedIdToken,
3524
- getHttpClient,
3525
- getIdToken,
3526
- getOpenIDProviderEndpoints,
3527
- httpRequest,
3528
- httpRequestAll,
3529
- isSignedIn,
3530
- isSessionActive,
3531
- refreshAccessToken,
3532
- exchangeToken,
3533
- revokeAccessToken,
3534
- setHttpRequestErrorCallback,
3535
- setHttpRequestFinishCallback,
3536
- setHttpRequestStartCallback,
3537
- setHttpRequestSuccessCallback,
3538
- signIn,
3539
- signOut,
3540
- trySignInSilently,
3541
- reInitialize
3542
- };
3436
+ const error = new URL(window.location.href).searchParams.get(ERROR);
3437
+ const errorDescription = new URL(window.location.href).searchParams.get(ERROR_DESCRIPTION);
3438
+ if (error) {
3439
+ const url = new URL(window.location.href);
3440
+ url.searchParams.delete(ERROR);
3441
+ url.searchParams.delete(ERROR_DESCRIPTION);
3442
+ history.pushState(null, document.title, url.toString());
3443
+ throw new import_javascript6.AsgardeoAuthException("SPA-AUTH_HELPER-SI-SE01", error, errorDescription ?? "");
3444
+ }
3445
+ if (config.storage === "webWorker" /* WebWorker */ && tryRetrievingUserInfo) {
3446
+ const basicUserInfo = await tryRetrievingUserInfo();
3447
+ if (basicUserInfo) {
3448
+ return basicUserInfo;
3449
+ }
3450
+ }
3451
+ return Promise.resolve(void 0);
3452
+ }
3453
+ async attachTokenToRequestConfig(request) {
3454
+ const requestConfig = { attachToken: true, ...request };
3455
+ if (requestConfig.attachToken) {
3456
+ if (requestConfig.shouldAttachIDPAccessToken) {
3457
+ request.headers = {
3458
+ ...request.headers,
3459
+ Authorization: `Bearer ${await this.getIDPAccessToken()}`
3460
+ };
3461
+ } else {
3462
+ request.headers = {
3463
+ ...request.headers,
3464
+ Authorization: `Bearer ${await this.getAccessToken()}`
3465
+ };
3466
+ }
3467
+ }
3468
+ }
3469
+ async getUser() {
3470
+ return this._authenticationClient.getUser();
3471
+ }
3472
+ async getDecodedIdToken() {
3473
+ return this._authenticationClient.getDecodedIdToken();
3474
+ }
3475
+ async getDecodedIDPIDToken() {
3476
+ return this._authenticationClient.getDecodedIdToken();
3477
+ }
3478
+ async getCrypto() {
3479
+ return this._authenticationClient.getCrypto();
3480
+ }
3481
+ async getIdToken() {
3482
+ return this._authenticationClient.getIdToken();
3483
+ }
3484
+ async getOpenIDProviderEndpoints() {
3485
+ return this._authenticationClient.getOpenIDProviderEndpoints();
3486
+ }
3487
+ async getAccessToken() {
3488
+ return this._authenticationClient.getAccessToken();
3489
+ }
3490
+ async getIDPAccessToken() {
3491
+ return (await this._storageManager.getSessionData())?.access_token;
3492
+ }
3493
+ getStorageManager() {
3494
+ return this._storageManager;
3495
+ }
3496
+ async isSignedIn() {
3497
+ return this._authenticationClient.isSignedIn();
3498
+ }
3543
3499
  };
3544
3500
 
3545
3501
  // src/__legacy__/clients/web-worker-client.ts
3546
- var import_javascript7 = require("@asgardeo/javascript");
3547
3502
  var initiateStore2 = (store) => {
3548
3503
  switch (store) {
3549
3504
  case "localStorage" /* LocalStorage */:
@@ -5385,17 +5340,6 @@ var workerReceiver = (getAuthHelper) => {
5385
5340
  };
5386
5341
  };
5387
5342
 
5388
- // src/constants/StyleConstants.ts
5389
- var StyleConstants = class {
5390
- constructor() {
5391
- }
5392
- };
5393
- /**
5394
- * CSS class prefix for out of the box components.
5395
- */
5396
- __publicField(StyleConstants, "VENDOR_CSS_CLASS_PREFIX", "asgardeo");
5397
- var StyleConstants_default = StyleConstants;
5398
-
5399
5343
  // src/utils/hasAuthParamsInUrl.ts
5400
5344
  var hasAuthParamsInUrl = (params = window.location.search) => {
5401
5345
  const MATCHER = /[?&]code=[^&]+/;
@@ -5403,12 +5347,6 @@ var hasAuthParamsInUrl = (params = window.location.search) => {
5403
5347
  };
5404
5348
  var hasAuthParamsInUrl_default = hasAuthParamsInUrl;
5405
5349
 
5406
- // src/utils/withVendorCSSClassPrefix.ts
5407
- var withVendorCSSClassPrefix = (className) => {
5408
- return `${StyleConstants_default.VENDOR_CSS_CLASS_PREFIX}-${className}`;
5409
- };
5410
- var withVendorCSSClassPrefix_default = withVendorCSSClassPrefix;
5411
-
5412
5350
  // src/AsgardeoBrowserClient.ts
5413
5351
  var import_javascript11 = require("@asgardeo/javascript");
5414
5352
  var AsgardeoBrowserClient = class extends import_javascript11.AsgardeoJavaScriptClient {