@asgardeo/browser 0.0.1 → 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,21 +1940,19 @@ __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);
1952
1950
 
1953
1951
  // src/__legacy__/client.ts
1954
- var import_javascript10 = require("@asgardeo/javascript");
1952
+ var import_javascript8 = require("@asgardeo/javascript");
1955
1953
 
1956
- // src/__legacy__/helpers/authentication-helper.ts
1957
- var import_javascript2 = require("@asgardeo/javascript");
1954
+ // src/__legacy__/clients/main-thread-client.ts
1955
+ var import_javascript5 = require("@asgardeo/javascript");
1958
1956
 
1959
1957
  // src/__legacy__/constants/messages-types.ts
1960
1958
  var INIT = "init";
@@ -2024,6 +2022,9 @@ var STATE_QUERY = "state";
2024
2022
  // src/__legacy__/constants/errors.ts
2025
2023
  var ACCESS_TOKEN_INVALID = "Access token is invalid";
2026
2024
 
2025
+ // src/__legacy__/helpers/session-management-helper.ts
2026
+ var import_javascript2 = require("@asgardeo/javascript");
2027
+
2027
2028
  // src/__legacy__/utils/message-utils.ts
2028
2029
  var MessageUtils = class {
2029
2030
  // eslint-disable-next-line @typescript-eslint/no-empty-function
@@ -2079,15 +2080,15 @@ var _SPAUtils = class _SPAUtils {
2079
2080
  static setPKCE(pkceKey, pkce) {
2080
2081
  sessionStorage.setItem(pkceKey, pkce);
2081
2082
  }
2082
- static setSignOutURL(url, clientID, instanceID) {
2083
+ static setSignOutURL(url, clientId, instanceID) {
2083
2084
  sessionStorage.setItem(
2084
- `${import_javascript.OIDCRequestConstants.SignOut.Storage.StorageKeys.SIGN_OUT_URL}-instance_${instanceID}-${clientID}`,
2085
+ `${import_javascript.OIDCRequestConstants.SignOut.Storage.StorageKeys.SIGN_OUT_URL}-instance_${instanceID}-${clientId}`,
2085
2086
  url
2086
2087
  );
2087
2088
  }
2088
- static getSignOutURL(clientID, instanceID) {
2089
+ static getSignOutUrl(clientId, instanceID) {
2089
2090
  return sessionStorage.getItem(
2090
- `${import_javascript.OIDCRequestConstants.SignOut.Storage.StorageKeys.SIGN_OUT_URL}-instance_${instanceID}-${clientID}`
2091
+ `${import_javascript.OIDCRequestConstants.SignOut.Storage.StorageKeys.SIGN_OUT_URL}-instance_${instanceID}-${clientId}`
2091
2092
  ) ?? "";
2092
2093
  }
2093
2094
  static removePKCE(pkceKey) {
@@ -2141,7 +2142,7 @@ var _SPAUtils = class _SPAUtils {
2141
2142
  if (import_javascript.AsgardeoAuthClient.isSignOutSuccessful(window.location.href)) {
2142
2143
  const newUrl = window.location.href.split("?")[0];
2143
2144
  history.pushState({}, document.title, newUrl);
2144
- await import_javascript.AsgardeoAuthClient.clearUserSessionData();
2145
+ await import_javascript.AsgardeoAuthClient.clearSession();
2145
2146
  return true;
2146
2147
  }
2147
2148
  return false;
@@ -2236,1664 +2237,1268 @@ __publicField(_SPAUtils, "until", (condition, timeout = 500) => {
2236
2237
  });
2237
2238
  var SPAUtils = _SPAUtils;
2238
2239
 
2239
- // src/__legacy__/helpers/authentication-helper.ts
2240
- var AuthenticationHelper = class {
2241
- constructor(authClient, spaHelper) {
2242
- __publicField(this, "_authenticationClient");
2243
- __publicField(this, "_dataLayer");
2244
- __publicField(this, "_spaHelper");
2245
- __publicField(this, "_instanceID");
2246
- __publicField(this, "_isTokenRefreshing");
2247
- this._authenticationClient = authClient;
2248
- this._dataLayer = this._authenticationClient.getDataLayer();
2249
- this._spaHelper = spaHelper;
2250
- this._instanceID = this._authenticationClient.getInstanceID();
2251
- this._isTokenRefreshing = false;
2252
- }
2253
- enableHttpHandler(httpClient) {
2254
- httpClient?.enableHandler && httpClient.enableHandler();
2255
- }
2256
- disableHttpHandler(httpClient) {
2257
- httpClient?.disableHandler && httpClient.disableHandler();
2258
- }
2259
- initializeSessionManger(config, oidcEndpoints, getSessionState, getAuthzURL, sessionManagementHelper) {
2260
- sessionManagementHelper.initialize(
2261
- config.clientID,
2262
- oidcEndpoints.checkSessionIframe ?? "",
2263
- getSessionState,
2264
- config.checkSessionInterval ?? 3,
2265
- config.sessionRefreshInterval ?? 300,
2266
- config.signInRedirectURL,
2267
- getAuthzURL
2268
- );
2269
- }
2270
- async requestCustomGrant(config, enableRetrievingSignOutURLFromSession) {
2271
- let useDefaultEndpoint = true;
2272
- let matches = false;
2273
- if (config?.tokenEndpoint) {
2274
- useDefaultEndpoint = false;
2275
- for (const baseUrl of [
2276
- ...(await this._dataLayer.getConfigData())?.resourceServerURLs ?? [],
2277
- config.baseUrl
2278
- ]) {
2279
- if (baseUrl && config.tokenEndpoint?.startsWith(baseUrl)) {
2280
- matches = true;
2281
- break;
2282
- }
2283
- }
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();
2284
2264
  }
2285
- if (config.shouldReplayAfterRefresh) {
2286
- this._dataLayer.setTemporaryDataParameter(CUSTOM_GRANT_CONFIG, JSON.stringify(config));
2265
+ if (_sessionRefreshInterval > -1) {
2266
+ sessionRefreshInterval = setInterval(() => {
2267
+ sendPromptNoneRequest();
2268
+ }, _sessionRefreshInterval * 1e3);
2287
2269
  }
2288
- if (useDefaultEndpoint || matches) {
2289
- return this._authenticationClient.requestCustomGrant(config).then(async (response) => {
2290
- if (enableRetrievingSignOutURLFromSession && typeof enableRetrievingSignOutURLFromSession === "function") {
2291
- enableRetrievingSignOutURLFromSession(config);
2292
- }
2293
- if (config.returnsSession) {
2294
- this._spaHelper.refreshAccessTokenAutomatically(this);
2295
- return this._authenticationClient.getBasicUserInfo();
2296
- } else {
2297
- return response;
2298
- }
2299
- }).catch((error) => {
2300
- return Promise.reject(error);
2301
- });
2302
- } else {
2303
- return Promise.reject(
2304
- new import_javascript2.AsgardeoAuthException(
2305
- "SPA-MAIN_THREAD_CLIENT-RCG-IV01",
2306
- "Request to the provided endpoint is prohibited.",
2307
- "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`"
2308
- )
2309
- );
2270
+ };
2271
+ const initiateCheckSession = async () => {
2272
+ if (!_checkSessionEndpoint || !_clientID || !_redirectURL) {
2273
+ return;
2310
2274
  }
2311
- }
2312
- async getCustomGrantConfigData() {
2313
- const configString = await this._dataLayer.getTemporaryDataParameter(CUSTOM_GRANT_CONFIG);
2314
- if (configString) {
2315
- return JSON.parse(configString);
2316
- } else {
2317
- 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
+ }
2318
2285
  }
2319
- }
2320
- async refreshAccessToken(enableRetrievingSignOutURLFromSession) {
2321
- try {
2322
- await this._authenticationClient.refreshAccessToken();
2323
- const customGrantConfig = await this.getCustomGrantConfigData();
2324
- if (customGrantConfig) {
2325
- await this.requestCustomGrant(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;
2301
+ }
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();
2326
2307
  }
2327
- this._spaHelper.refreshAccessTokenAutomatically(this);
2328
- return this._authenticationClient.getBasicUserInfo();
2329
- } catch (error) {
2330
- const refreshTokenError = {
2331
- type: REFRESH_ACCESS_TOKEN_ERR0R
2332
- };
2333
- window.postMessage(refreshTokenError);
2334
- return Promise.reject(error);
2335
2308
  }
2336
- }
2337
- async retryFailedRequests(failedRequest) {
2338
- const httpClient = failedRequest.httpClient;
2339
- const requestConfig = failedRequest.requestConfig;
2340
- const isHttpHandlerEnabled = failedRequest.isHttpHandlerEnabled;
2341
- const httpErrorCallback = failedRequest.httpErrorCallback;
2342
- const httpFinishCallback = failedRequest.httpFinishCallback;
2343
- await SPAUtils.until(() => !this._isTokenRefreshing);
2344
- try {
2345
- const httpResponse = await httpClient.request(requestConfig);
2346
- return Promise.resolve(httpResponse);
2347
- } catch (error) {
2348
- if (isHttpHandlerEnabled) {
2349
- if (typeof httpErrorCallback === "function") {
2350
- await httpErrorCallback(error);
2351
- }
2352
- if (typeof httpFinishCallback === "function") {
2353
- httpFinishCallback();
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);
2354
2322
  }
2323
+ };
2324
+ if (_storage === "browserMemory" /* BrowserMemory */ || _storage === "webWorker" /* WebWorker */) {
2325
+ window?.addEventListener("message", receiveMessageListener);
2355
2326
  }
2356
- return Promise.reject(error);
2327
+ const promptNoneURL = await _getSignInUrl({
2328
+ prompt: "none",
2329
+ response_mode: "query",
2330
+ state: STATE
2331
+ });
2332
+ promptNoneIFrame.src = promptNoneURL;
2357
2333
  }
2358
- }
2359
- async httpRequest(httpClient, requestConfig, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback, enableRetrievingSignOutURLFromSession) {
2360
- let matches = false;
2361
- const config = await this._dataLayer.getConfigData();
2362
- for (const baseUrl of [...await config?.resourceServerURLs ?? [], config.baseUrl]) {
2363
- if (baseUrl && requestConfig?.url?.startsWith(baseUrl)) {
2364
- matches = true;
2365
- break;
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;
2357
+ }
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;
2382
+ }
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;
2366
2390
  }
2367
2391
  }
2368
- if (matches) {
2369
- return httpClient.request(requestConfig).then((response) => {
2370
- return Promise.resolve(response);
2371
- }).catch(async (error) => {
2372
- if (error?.response?.status === 401 || !error?.response) {
2373
- if (this._isTokenRefreshing) {
2374
- return this.retryFailedRequests({
2375
- enableRetrievingSignOutURLFromSession,
2376
- httpClient,
2377
- httpErrorCallback,
2378
- httpFinishCallback,
2379
- isHttpHandlerEnabled,
2380
- requestConfig
2381
- });
2382
- }
2383
- this._isTokenRefreshing = true;
2384
- let refreshAccessTokenResponse;
2385
- try {
2386
- refreshAccessTokenResponse = await this.refreshAccessToken(enableRetrievingSignOutURLFromSession);
2387
- this._isTokenRefreshing = false;
2388
- } catch (refreshError) {
2389
- this._isTokenRefreshing = false;
2390
- if (isHttpHandlerEnabled) {
2391
- if (typeof httpErrorCallback === "function") {
2392
- await httpErrorCallback({
2393
- ...error,
2394
- code: ACCESS_TOKEN_INVALID
2395
- });
2396
- }
2397
- if (typeof httpFinishCallback === "function") {
2398
- httpFinishCallback();
2399
- }
2400
- }
2401
- throw new import_javascript2.AsgardeoAuthException(
2402
- "SPA-AUTH_HELPER-HR-SE01",
2403
- refreshError?.name ?? "Refresh token request failed.",
2404
- refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
2405
- );
2406
- }
2407
- if (refreshAccessTokenResponse) {
2408
- try {
2409
- const httpResponse = await httpClient.request(requestConfig);
2410
- return Promise.resolve(httpResponse);
2411
- } catch (error2) {
2412
- if (isHttpHandlerEnabled) {
2413
- if (typeof httpErrorCallback === "function") {
2414
- await httpErrorCallback(error2);
2415
- }
2416
- if (typeof httpFinishCallback === "function") {
2417
- httpFinishCallback();
2418
- }
2419
- }
2420
- return Promise.reject(error2);
2421
- }
2422
- }
2423
- }
2424
- if (isHttpHandlerEnabled) {
2425
- if (typeof httpErrorCallback === "function") {
2426
- await httpErrorCallback(error);
2427
- }
2428
- if (typeof httpFinishCallback === "function") {
2429
- httpFinishCallback();
2430
- }
2431
- }
2432
- return Promise.reject(error);
2433
- });
2434
- } else {
2435
- return Promise.reject(
2436
- new import_javascript2.AsgardeoAuthException(
2437
- "SPA-AUTH_HELPER-HR-IV02",
2438
- "Request to the provided endpoint is prohibited.",
2439
- "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`"
2440
- )
2441
- );
2442
- }
2443
- }
2444
- async httpRequestAll(requestConfigs, httpClient, isHttpHandlerEnabled, httpErrorCallback, httpFinishCallback) {
2445
- let matches = true;
2446
- const config = await this._dataLayer.getConfigData();
2447
- for (const requestConfig of requestConfigs) {
2448
- let urlMatches = false;
2449
- for (const baseUrl of [...(await config)?.resourceServerURLs ?? [], config.baseUrl]) {
2450
- if (baseUrl && requestConfig.url?.startsWith(baseUrl)) {
2451
- urlMatches = true;
2452
- break;
2453
- }
2392
+ return false;
2393
+ };
2394
+ return async (signOut, storage, setSessionState) => {
2395
+ let rpIFrame = document.createElement("iframe");
2396
+ rpIFrame.setAttribute("id", RP_IFRAME);
2397
+ rpIFrame.style.display = "none";
2398
+ let rpIframeLoaded = false;
2399
+ rpIFrame.onload = () => {
2400
+ rpIFrame = document.getElementById(RP_IFRAME);
2401
+ const rpDoc = rpIFrame?.contentDocument;
2402
+ const opIFrame = rpDoc?.createElement("iframe");
2403
+ if (opIFrame) {
2404
+ opIFrame.setAttribute("id", OP_IFRAME);
2405
+ opIFrame.style.display = "none";
2454
2406
  }
2455
- if (!urlMatches) {
2456
- matches = false;
2457
- break;
2407
+ const promptNoneIFrame = rpDoc?.createElement("iframe");
2408
+ if (promptNoneIFrame) {
2409
+ promptNoneIFrame.setAttribute("id", PROMPT_NONE_IFRAME);
2410
+ promptNoneIFrame.style.display = "none";
2458
2411
  }
2412
+ opIFrame && rpIFrame?.contentDocument?.body?.appendChild(opIFrame);
2413
+ promptNoneIFrame && rpIFrame?.contentDocument?.body?.appendChild(promptNoneIFrame);
2414
+ rpIframeLoaded = true;
2415
+ };
2416
+ document?.body?.appendChild(rpIFrame);
2417
+ _signOut = signOut;
2418
+ _storage = storage;
2419
+ _setSessionState = setSessionState;
2420
+ const sleep = () => {
2421
+ return new Promise((resolve) => setTimeout(resolve, 1));
2422
+ };
2423
+ while (rpIframeLoaded === false) {
2424
+ await sleep();
2459
2425
  }
2460
- const requests = [];
2461
- if (matches) {
2462
- requestConfigs.forEach((request) => {
2463
- requests.push(httpClient.request(request));
2464
- });
2465
- return httpClient?.all && httpClient.all(requests).then((responses) => {
2466
- return Promise.resolve(responses);
2467
- }).catch(async (error) => {
2468
- if (error?.response?.status === 401 || !error?.response) {
2469
- let refreshTokenResponse;
2470
- try {
2471
- refreshTokenResponse = await this._authenticationClient.refreshAccessToken();
2472
- } catch (refreshError) {
2473
- if (isHttpHandlerEnabled) {
2474
- if (typeof httpErrorCallback === "function") {
2475
- await httpErrorCallback({
2476
- ...error,
2477
- code: ACCESS_TOKEN_INVALID
2478
- });
2479
- }
2480
- if (typeof httpFinishCallback === "function") {
2481
- httpFinishCallback();
2482
- }
2483
- }
2484
- throw new import_javascript2.AsgardeoAuthException(
2485
- "SPA-AUTH_HELPER-HRA-SE01",
2486
- refreshError?.name ?? "Refresh token request failed.",
2487
- refreshError?.message ?? "An error occurred while trying to refresh the access token following a 401 response from the server."
2488
- );
2489
- }
2490
- if (refreshTokenResponse) {
2491
- return httpClient.all && httpClient.all(requests).then((response) => {
2492
- return Promise.resolve(response);
2493
- }).catch(async (error2) => {
2494
- if (isHttpHandlerEnabled) {
2495
- if (typeof httpErrorCallback === "function") {
2496
- await httpErrorCallback(error2);
2497
- }
2498
- if (typeof httpFinishCallback === "function") {
2499
- httpFinishCallback();
2500
- }
2501
- }
2502
- return Promise.reject(error2);
2503
- });
2504
- }
2505
- }
2506
- if (isHttpHandlerEnabled) {
2507
- if (typeof httpErrorCallback === "function") {
2508
- await httpErrorCallback(error);
2509
- }
2510
- if (typeof httpFinishCallback === "function") {
2511
- httpFinishCallback();
2512
- }
2513
- }
2514
- return Promise.reject(error);
2515
- });
2516
- } else {
2517
- throw new import_javascript2.AsgardeoAuthException(
2518
- "SPA-AUTH_HELPER-HRA-IV02",
2519
- "Request to the provided endpoint is prohibited.",
2520
- "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`"
2426
+ return {
2427
+ initialize,
2428
+ receivePromptNoneResponse,
2429
+ reset
2430
+ };
2431
+ };
2432
+ })();
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)
2521
2458
  );
2522
2459
  }
2523
2460
  }
2524
- async requestAccessToken(authorizationCode, sessionState, checkSession, pkce, state, tokenRequestConfig) {
2525
- const config = await this._dataLayer.getConfigData();
2526
- if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE && sessionState) {
2527
- const pkce2 = SPAUtils.getPKCE((0, import_javascript2.extractPkceStorageKeyFromState)(sessionState));
2528
- await this._authenticationClient.setPKCECode((0, import_javascript2.extractPkceStorageKeyFromState)(sessionState), pkce2);
2529
- } else if (config.storage === "webWorker" /* WebWorker */ && pkce) {
2530
- await this._authenticationClient.setPKCECode(pkce, state ?? "");
2531
- }
2532
- if (authorizationCode) {
2533
- return this._authenticationClient.requestAccessToken(authorizationCode, sessionState ?? "", state ?? "", void 0, tokenRequestConfig).then(async () => {
2534
- if (config.storage !== "webWorker" /* WebWorker */) {
2535
- SPAUtils.setSignOutURL(await this._authenticationClient.getSignOutURL(), config.clientID, this._instanceID);
2536
- if (this._spaHelper) {
2537
- this._spaHelper.clearRefreshTokenTimeout();
2538
- this._spaHelper.refreshAccessTokenAutomatically(this);
2539
- }
2540
- if (checkSession && typeof checkSession === "function" && config.enableOIDCSessionManagement) {
2541
- checkSession();
2542
- }
2543
- } else {
2544
- if (this._spaHelper) {
2545
- this._spaHelper.refreshAccessTokenAutomatically(this);
2546
- }
2547
- }
2548
- return this._authenticationClient.getBasicUserInfo();
2549
- }).catch((error) => {
2550
- return Promise.reject(error);
2551
- });
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
+ );
2552
2468
  }
2553
- return Promise.reject(
2554
- new import_javascript2.AsgardeoAuthException(
2555
- "SPA-AUTH_HELPER-RAT1-NF01",
2556
- "No authorization code.",
2557
- "No authorization code was found."
2558
- )
2559
- );
2469
+ return -1;
2560
2470
  }
2561
- async trySignInSilently(constructSilentSignInUrl, requestAccessToken, sessionManagementHelper, additionalParams, tokenRequestConfig) {
2562
- if (SPAUtils.isInitializedSilentSignIn()) {
2563
- await sessionManagementHelper.receivePromptNoneResponse();
2564
- return Promise.resolve({
2565
- allowedScopes: "",
2566
- displayName: "",
2567
- email: "",
2568
- sessionState: "",
2569
- sub: "",
2570
- tenantDomain: "",
2571
- username: ""
2572
- });
2471
+ async clearRefreshTokenTimeout(timer) {
2472
+ if (timer) {
2473
+ clearTimeout(timer);
2474
+ return;
2573
2475
  }
2574
- const rpIFrame = document.getElementById(RP_IFRAME);
2575
- const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
2576
- PROMPT_NONE_IFRAME
2577
- );
2578
- try {
2579
- const url = await constructSilentSignInUrl(additionalParams);
2580
- promptNoneIFrame.src = url;
2581
- } catch (error) {
2582
- return Promise.reject(error);
2476
+ const refreshTimer = await this.getRefreshTimeoutTimer();
2477
+ if (refreshTimer !== -1) {
2478
+ clearTimeout(refreshTimer);
2583
2479
  }
2584
- return new Promise((resolve, reject) => {
2585
- const timer = setTimeout(() => {
2586
- resolve(false);
2587
- }, 1e4);
2588
- const listenToPromptNoneIFrame = async (e) => {
2589
- const data = e.data;
2590
- if (data?.type == CHECK_SESSION_SIGNED_OUT) {
2591
- window.removeEventListener("message", listenToPromptNoneIFrame);
2592
- clearTimeout(timer);
2593
- resolve(false);
2594
- }
2595
- if (data?.type == CHECK_SESSION_SIGNED_IN && data?.data?.code) {
2596
- requestAccessToken(data?.data?.code, data?.data?.sessionState, data?.data?.state, tokenRequestConfig).then((response) => {
2597
- window.removeEventListener("message", listenToPromptNoneIFrame);
2598
- resolve(response);
2599
- }).catch((error) => {
2600
- window.removeEventListener("message", listenToPromptNoneIFrame);
2601
- reject(error);
2602
- }).finally(() => {
2603
- clearTimeout(timer);
2604
- });
2605
- }
2606
- };
2607
- window.addEventListener("message", listenToPromptNoneIFrame);
2480
+ }
2481
+ };
2482
+
2483
+ // src/__legacy__/http-client/clients/axios-http-client.ts
2484
+ var import_axios = __toESM(require("axios"), 1);
2485
+
2486
+ // src/__legacy__/http-client/helpers/decorators.ts
2487
+ function staticDecorator() {
2488
+ return (_constructor) => {
2489
+ };
2490
+ }
2491
+
2492
+ // src/__legacy__/http-client/clients/axios-http-client.ts
2493
+ var HttpClient = class {
2494
+ /**
2495
+ * Private constructor to avoid object instantiation from outside
2496
+ * the class.
2497
+ *
2498
+ * @hideconstructor
2499
+ */
2500
+ constructor() {
2501
+ __publicField(this, "attachToken", () => Promise.resolve());
2502
+ __publicField(this, "requestStartCallback", () => null);
2503
+ __publicField(this, "requestSuccessCallback", () => null);
2504
+ __publicField(this, "requestErrorCallback", () => null);
2505
+ __publicField(this, "requestFinishCallback", () => null);
2506
+ this.init = this.init.bind(this);
2507
+ this.setHttpRequestErrorCallback = this.setHttpRequestErrorCallback.bind(this);
2508
+ this.setHttpRequestFinishCallback = this.setHttpRequestFinishCallback.bind(this);
2509
+ this.setHttpRequestStartCallback = this.setHttpRequestStartCallback.bind(this);
2510
+ this.setHttpRequestSuccessCallback = this.setHttpRequestSuccessCallback.bind(this);
2511
+ }
2512
+ /**
2513
+ * Returns an aggregated instance of type `HttpInstance` of `HttpClient`.
2514
+ *
2515
+ * @return {any}
2516
+ */
2517
+ static getInstance() {
2518
+ if (this.axiosInstance) {
2519
+ return this.axiosInstance;
2520
+ }
2521
+ this.axiosInstance = import_axios.default.create({
2522
+ withCredentials: true
2608
2523
  });
2524
+ if (!this.clientInstance) {
2525
+ this.clientInstance = new HttpClient();
2526
+ }
2527
+ this.axiosInstance.interceptors.request.use(async (request) => await this.clientInstance.requestHandler(request));
2528
+ this.axiosInstance.interceptors.response.use(
2529
+ (response) => this.clientInstance.successHandler(response),
2530
+ (error) => this.clientInstance.errorHandler(error)
2531
+ );
2532
+ this.axiosInstance.all = import_axios.default.all;
2533
+ this.axiosInstance.spread = import_axios.default.spread;
2534
+ this.axiosInstance.init = this.clientInstance.init;
2535
+ this.axiosInstance.enableHandler = this.clientInstance.enableHandler;
2536
+ this.axiosInstance.disableHandler = this.clientInstance.disableHandler;
2537
+ this.axiosInstance.disableHandlerWithTimeout = this.clientInstance.disableHandlerWithTimeout;
2538
+ this.axiosInstance.setHttpRequestStartCallback = this.clientInstance.setHttpRequestStartCallback;
2539
+ this.axiosInstance.setHttpRequestSuccessCallback = this.clientInstance.setHttpRequestSuccessCallback;
2540
+ this.axiosInstance.setHttpRequestErrorCallback = this.clientInstance.setHttpRequestErrorCallback;
2541
+ this.axiosInstance.setHttpRequestFinishCallback = this.clientInstance.setHttpRequestFinishCallback;
2542
+ return this.axiosInstance;
2609
2543
  }
2610
- async handleSignIn(shouldStopAuthn, checkSession, tryRetrievingUserInfo) {
2611
- const config = await this._dataLayer.getConfigData();
2612
- if (await shouldStopAuthn()) {
2613
- return Promise.resolve({
2614
- allowedScopes: "",
2615
- displayName: "",
2616
- email: "",
2617
- sessionState: "",
2618
- sub: "",
2619
- tenantDomain: "",
2620
- username: ""
2544
+ /**
2545
+ * Intercepts all the requests.
2546
+ * If the `isHandlerEnabled` flag is set to true, fires the `requestStartCallback`
2547
+ * and retrieves the access token from the server and attaches it to the request.
2548
+ * Else, just returns the original request.
2549
+ *
2550
+ * @param {HttpRequestConfig} request - Original request.
2551
+ * @return {HttpRequestConfig}
2552
+ */
2553
+ async requestHandler(request) {
2554
+ await this.attachToken(request);
2555
+ if (request?.shouldEncodeToFormData) {
2556
+ const data = request?.data;
2557
+ const formData = new FormData();
2558
+ Object.keys(data).forEach((key) => {
2559
+ formData.append(key, data[key]);
2621
2560
  });
2561
+ request.data = formData;
2622
2562
  }
2623
- if (config.storage !== "webWorker" /* WebWorker */) {
2624
- if (await this._authenticationClient.isAuthenticated()) {
2625
- this._spaHelper.clearRefreshTokenTimeout();
2626
- this._spaHelper.refreshAccessTokenAutomatically(this);
2627
- if (config.enableOIDCSessionManagement) {
2628
- checkSession();
2629
- }
2630
- return Promise.resolve(await this._authenticationClient.getBasicUserInfo());
2563
+ request.startTimeInMs = (/* @__PURE__ */ new Date()).getTime();
2564
+ if (HttpClient.isHandlerEnabled) {
2565
+ if (this.requestStartCallback && typeof this.requestStartCallback === "function") {
2566
+ this.requestStartCallback(request);
2631
2567
  }
2632
2568
  }
2633
- const error = new URL(window.location.href).searchParams.get(ERROR);
2634
- const errorDescription = new URL(window.location.href).searchParams.get(ERROR_DESCRIPTION);
2635
- if (error) {
2636
- const url = new URL(window.location.href);
2637
- url.searchParams.delete(ERROR);
2638
- url.searchParams.delete(ERROR_DESCRIPTION);
2639
- history.pushState(null, document.title, url.toString());
2640
- throw new import_javascript2.AsgardeoAuthException("SPA-AUTH_HELPER-SI-SE01", error, errorDescription ?? "");
2641
- }
2642
- if (config.storage === "webWorker" /* WebWorker */ && tryRetrievingUserInfo) {
2643
- const basicUserInfo = await tryRetrievingUserInfo();
2644
- if (basicUserInfo) {
2645
- return basicUserInfo;
2569
+ return request;
2570
+ }
2571
+ /**
2572
+ * Handles response errors.
2573
+ * If the `isHandlerEnabled` flag is set to true, fires the `requestErrorCallback`
2574
+ * and the `requestFinishCallback` functions. Else, just returns the original error.
2575
+ *
2576
+ * @param {HttpError} error - Original error.
2577
+ * @return {HttpError}
2578
+ */
2579
+ errorHandler(error) {
2580
+ if (HttpClient.isHandlerEnabled) {
2581
+ if (this.requestErrorCallback && typeof this.requestErrorCallback === "function") {
2582
+ this.requestErrorCallback(error);
2583
+ }
2584
+ if (this.requestFinishCallback && typeof this.requestFinishCallback === "function") {
2585
+ this.requestFinishCallback();
2646
2586
  }
2647
2587
  }
2648
- return Promise.resolve(void 0);
2588
+ throw error;
2649
2589
  }
2650
- async attachTokenToRequestConfig(request) {
2651
- const requestConfig = { attachToken: true, ...request };
2652
- if (requestConfig.attachToken) {
2653
- if (requestConfig.shouldAttachIDPAccessToken) {
2654
- request.headers = {
2655
- ...request.headers,
2656
- Authorization: `Bearer ${await this.getIDPAccessToken()}`
2657
- };
2658
- } else {
2659
- request.headers = {
2660
- ...request.headers,
2661
- Authorization: `Bearer ${await this.getAccessToken()}`
2662
- };
2590
+ /**
2591
+ * Handles response success.
2592
+ * If the `isHandlerEnabled` flag is set to true, fires the `requestSuccessCallback`
2593
+ * and the `requestFinishCallback` functions. Else, just returns the original response.
2594
+ *
2595
+ * @param {HttpResponse} response - Original response.
2596
+ * @return {HttpResponse}
2597
+ */
2598
+ successHandler(response) {
2599
+ if (HttpClient.isHandlerEnabled) {
2600
+ if (this.requestSuccessCallback && typeof this.requestSuccessCallback === "function") {
2601
+ this.requestSuccessCallback(response);
2602
+ }
2603
+ if (this.requestFinishCallback && typeof this.requestFinishCallback === "function") {
2604
+ this.requestFinishCallback();
2663
2605
  }
2664
2606
  }
2607
+ return response;
2608
+ }
2609
+ /**
2610
+ * Initializes the Http client.
2611
+ *
2612
+ * @param isHandlerEnabled - Flag to toggle handler enablement.
2613
+ * @param requestStartCallback - Callback function to be triggered on request start.
2614
+ * @param requestSuccessCallback - Callback function to be triggered on request success.
2615
+ * @param requestErrorCallback - Callback function to be triggered on request error.
2616
+ * @param requestFinishCallback - Callback function to be triggered on request error.
2617
+ */
2618
+ async init(isHandlerEnabled = true, attachToken) {
2619
+ HttpClient.isHandlerEnabled = isHandlerEnabled;
2620
+ this.attachToken = attachToken;
2665
2621
  }
2666
- async getBasicUserInfo() {
2667
- return this._authenticationClient.getBasicUserInfo();
2622
+ /**
2623
+ * Enables the handler.
2624
+ */
2625
+ enableHandler() {
2626
+ HttpClient.isHandlerEnabled = true;
2668
2627
  }
2669
- async getDecodedIDToken() {
2670
- return this._authenticationClient.getDecodedIDToken();
2628
+ /**
2629
+ * Disables the handler.
2630
+ */
2631
+ disableHandler() {
2632
+ HttpClient.isHandlerEnabled = false;
2671
2633
  }
2672
- async getDecodedIDPIDToken() {
2673
- return this._authenticationClient.getDecodedIDToken();
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);
2674
2644
  }
2675
- async getCryptoHelper() {
2676
- return this._authenticationClient.getCryptoHelper();
2645
+ setHttpRequestStartCallback(callback) {
2646
+ this.requestStartCallback = callback;
2677
2647
  }
2678
- async getIDToken() {
2679
- return this._authenticationClient.getIDToken();
2648
+ setHttpRequestSuccessCallback(callback) {
2649
+ this.requestSuccessCallback = callback;
2680
2650
  }
2681
- async getOIDCServiceEndpoints() {
2682
- return this._authenticationClient.getOIDCServiceEndpoints();
2651
+ setHttpRequestErrorCallback(callback) {
2652
+ this.requestErrorCallback = callback;
2683
2653
  }
2684
- async getAccessToken() {
2685
- return this._authenticationClient.getAccessToken();
2654
+ setHttpRequestFinishCallback(callback) {
2655
+ this.requestFinishCallback = callback;
2686
2656
  }
2687
- async getIDPAccessToken() {
2688
- return (await this._dataLayer.getSessionData())?.access_token;
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);
2689
2670
  }
2690
- getDataLayer() {
2691
- return this._dataLayer;
2671
+ async getData(key) {
2672
+ return localStorage.getItem(key) ?? "{}";
2692
2673
  }
2693
- async isAuthenticated() {
2694
- return this._authenticationClient.isAuthenticated();
2674
+ async removeData(key) {
2675
+ localStorage.removeItem(key);
2695
2676
  }
2696
2677
  };
2697
2678
 
2698
- // src/__legacy__/helpers/spa-helper.ts
2699
- var import_javascript3 = require("@asgardeo/javascript");
2700
- var SPAHelper = class {
2701
- constructor(authClient) {
2702
- __publicField(this, "_authenticationClient");
2703
- __publicField(this, "_dataLayer");
2704
- this._authenticationClient = authClient;
2705
- this._dataLayer = this._authenticationClient.getDataLayer();
2679
+ // src/__legacy__/stores/memory-store.ts
2680
+ var MemoryStore = class {
2681
+ constructor() {
2682
+ __publicField(this, "_data");
2683
+ this._data = /* @__PURE__ */ new Map();
2706
2684
  }
2707
- async refreshAccessTokenAutomatically(authenticationHelper) {
2708
- const shouldRefreshAutomatically = (await this._dataLayer.getConfigData())?.periodicTokenRefresh ?? false;
2709
- if (!shouldRefreshAutomatically) {
2710
- return;
2711
- }
2712
- const sessionData = await this._dataLayer.getSessionData();
2713
- if (sessionData.refresh_token) {
2714
- const expiryTime = parseInt(sessionData.expires_in);
2715
- const time = expiryTime <= 10 ? expiryTime : expiryTime - 10;
2716
- const timer = setTimeout(async () => {
2717
- await authenticationHelper.refreshAccessToken();
2718
- }, time * 1e3);
2719
- await this._dataLayer.setTemporaryDataParameter(
2720
- import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER,
2721
- JSON.stringify(timer)
2722
- );
2723
- }
2685
+ async setData(key, value) {
2686
+ this._data.set(key, value);
2724
2687
  }
2725
- async getRefreshTimeoutTimer() {
2726
- if (await this._dataLayer.getTemporaryDataParameter(import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER)) {
2727
- return JSON.parse(
2728
- await this._dataLayer.getTemporaryDataParameter(
2729
- import_javascript3.TokenConstants.Storage.StorageKeys.REFRESH_TOKEN_TIMER
2730
- )
2731
- );
2732
- }
2733
- return -1;
2688
+ async getData(key) {
2689
+ return this._data?.get(key) ?? "{}";
2734
2690
  }
2735
- async clearRefreshTokenTimeout(timer) {
2736
- if (timer) {
2737
- clearTimeout(timer);
2738
- return;
2739
- }
2740
- const refreshTimer = await this.getRefreshTimeoutTimer();
2741
- if (refreshTimer !== -1) {
2742
- clearTimeout(refreshTimer);
2743
- }
2691
+ async removeData(key) {
2692
+ this._data.delete(key);
2744
2693
  }
2745
2694
  };
2746
2695
 
2747
- // src/__legacy__/helpers/session-management-helper.ts
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);
2706
+ }
2707
+ };
2708
+
2709
+ // src/__legacy__/utils/crypto-utils.ts
2710
+ var import_buffer = __toESM(require_buffer(), 1);
2748
2711
  var import_javascript4 = require("@asgardeo/javascript");
2749
- var SessionManagementHelper = /* @__PURE__ */ (() => {
2750
- let _clientID;
2751
- let _checkSessionEndpoint;
2752
- let _sessionState;
2753
- let _interval;
2754
- let _redirectURL;
2755
- let _sessionRefreshInterval;
2756
- let _signOut;
2757
- let _sessionRefreshIntervalTimeout;
2758
- let _checkSessionIntervalTimeout;
2759
- let _storage;
2760
- let _setSessionState;
2761
- let _getAuthorizationURL;
2762
- const initialize = (clientID, checkSessionEndpoint, getSessionState, interval, sessionRefreshInterval, redirectURL, getAuthorizationURL) => {
2763
- _clientID = clientID;
2764
- _checkSessionEndpoint = checkSessionEndpoint;
2765
- _sessionState = getSessionState;
2766
- _interval = interval;
2767
- _redirectURL = redirectURL;
2768
- _sessionRefreshInterval = sessionRefreshInterval;
2769
- _getAuthorizationURL = getAuthorizationURL;
2770
- if (_interval > -1) {
2771
- initiateCheckSession();
2772
- }
2773
- if (_sessionRefreshInterval > -1) {
2774
- sessionRefreshInterval = setInterval(() => {
2775
- sendPromptNoneRequest();
2776
- }, _sessionRefreshInterval * 1e3);
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 {
2717
+ /**
2718
+ * Get URL encoded string.
2719
+ *
2720
+ * @returns {string} base 64 url encoded value.
2721
+ */
2722
+ base64URLEncode(value) {
2723
+ return import_base64url.default.encode(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
2724
+ }
2725
+ base64URLDecode(value) {
2726
+ return import_base64url.default.decode(value).toString();
2727
+ }
2728
+ hashSha256(data) {
2729
+ return import_buffer.Buffer.from((0, import_fast_sha256.default)(new TextEncoder().encode(data)));
2730
+ }
2731
+ generateRandomBytes(length) {
2732
+ return (0, import_randombytes.default)(length);
2733
+ }
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;
2777
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();
2775
+ }
2776
+ };
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);
2778
2800
  };
2779
- const initiateCheckSession = async () => {
2780
- if (!_checkSessionEndpoint || !_clientID || !_redirectURL) {
2781
- return;
2782
- }
2783
- const OP_IFRAME2 = "opIFrame";
2784
- async function checkSession() {
2785
- const sessionState = await _sessionState();
2786
- if (Boolean(_clientID) && Boolean(sessionState)) {
2787
- const message = `${_clientID} ${sessionState}`;
2788
- const rpIFrame2 = document.getElementById(RP_IFRAME);
2789
- const opIframe2 = rpIFrame2?.contentDocument?.getElementById(OP_IFRAME2);
2790
- const win = opIframe2.contentWindow;
2791
- win?.postMessage(message, _checkSessionEndpoint);
2792
- }
2793
- }
2794
- const rpIFrame = document.getElementById(RP_IFRAME);
2795
- const opIframe = rpIFrame?.contentDocument?.getElementById(OP_IFRAME2);
2796
- opIframe.src = _checkSessionEndpoint + "?client_id=" + _clientID + "&redirect_uri=" + _redirectURL;
2797
- _checkSessionIntervalTimeout = setInterval(checkSession, _interval * 1e3);
2798
- listenToResponseFromOPIFrame();
2801
+ _httpClient?.init && await _httpClient.init(true, attachToken);
2802
+ const setHttpRequestStartCallback = (callback) => {
2803
+ _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
2799
2804
  };
2800
- const reset = () => {
2801
- clearInterval(_checkSessionIntervalTimeout);
2802
- clearInterval(_sessionRefreshIntervalTimeout);
2805
+ const setHttpRequestSuccessCallback = (callback) => {
2806
+ _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
2803
2807
  };
2804
- const listenToResponseFromOPIFrame = () => {
2805
- async function receiveMessage(e) {
2806
- const targetOrigin = _checkSessionEndpoint;
2807
- if (!targetOrigin || targetOrigin?.indexOf(e.origin) < 0 || e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2808
- return;
2809
- }
2810
- if (e.data === "unchanged") {
2811
- } else if (e.data === "error") {
2812
- window.location.href = await _signOut();
2813
- } else if (e.data === "changed") {
2814
- sendPromptNoneRequest();
2815
- }
2816
- }
2817
- window?.addEventListener("message", receiveMessage, false);
2808
+ const setHttpRequestFinishCallback = (callback) => {
2809
+ _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
2818
2810
  };
2819
- const sendPromptNoneRequest = async () => {
2820
- const rpIFrame = document.getElementById(RP_IFRAME);
2821
- const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
2822
- PROMPT_NONE_IFRAME
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
2823
2848
  );
2824
- if (SPAUtils.canSendPromptNoneRequest()) {
2825
- SPAUtils.setPromptNoneRequestSent(true);
2826
- const receiveMessageListener = (e) => {
2827
- if (e?.data?.type === SET_SESSION_STATE_FROM_IFRAME) {
2828
- _setSessionState(e?.data?.data ?? "");
2829
- window?.removeEventListener("message", receiveMessageListener);
2830
- }
2831
- };
2832
- if (_storage === "browserMemory" /* BrowserMemory */ || _storage === "webWorker" /* WebWorker */) {
2833
- window?.addEventListener("message", receiveMessageListener);
2834
- }
2835
- const promptNoneURL = await _getAuthorizationURL({
2836
- prompt: "none",
2837
- response_mode: "query",
2838
- state: STATE
2839
- });
2840
- promptNoneIFrame.src = promptNoneURL;
2841
- }
2842
2849
  };
2843
- const receivePromptNoneResponse = async (setSessionState) => {
2844
- const state = new URL(window.location.href).searchParams.get(STATE_QUERY);
2845
- const sessionState = new URL(window.location.href).searchParams.get(import_javascript4.OIDCRequestConstants.Params.SESSION_STATE);
2846
- const parent = window.parent.parent;
2847
- if (state !== null && (state.includes(STATE) || state.includes(SILENT_SIGN_IN_STATE))) {
2848
- const code = new URL(window.location.href).searchParams.get("code");
2849
- if (code !== null && code.length !== 0) {
2850
- if (state.includes(SILENT_SIGN_IN_STATE)) {
2851
- const message = {
2852
- data: {
2853
- code,
2854
- sessionState: sessionState ?? "",
2855
- state
2856
- },
2857
- type: CHECK_SESSION_SIGNED_IN
2858
- };
2859
- sessionStorage.setItem(INITIALIZED_SILENT_SIGN_IN, "false");
2860
- parent.postMessage(message, parent.origin);
2861
- SPAUtils.setPromptNoneRequestSent(false);
2862
- window.location.href = "about:blank";
2863
- await SPAUtils.waitTillPageRedirect();
2864
- return true;
2865
- }
2866
- const newSessionState = new URL(window.location.href).searchParams.get("session_state");
2867
- if (_storage === "localStorage" /* LocalStorage */ || _storage === "sessionStorage" /* SessionStorage */) {
2868
- setSessionState && await setSessionState(newSessionState);
2869
- } else {
2870
- const message = {
2871
- data: newSessionState ?? "",
2872
- type: SET_SESSION_STATE_FROM_IFRAME
2873
- };
2874
- window?.parent?.parent?.postMessage(message);
2875
- }
2876
- SPAUtils.setPromptNoneRequestSent(false);
2877
- window.location.href = "about:blank";
2878
- await SPAUtils.waitTillPageRedirect();
2879
- return true;
2880
- } else {
2881
- if (state.includes(SILENT_SIGN_IN_STATE)) {
2882
- const message = {
2883
- type: CHECK_SESSION_SIGNED_OUT
2884
- };
2885
- window.parent.parent.postMessage(message, parent.origin);
2886
- SPAUtils.setPromptNoneRequestSent(false);
2887
- window.location.href = "about:blank";
2888
- await SPAUtils.waitTillPageRedirect();
2889
- return true;
2890
- }
2891
- SPAUtils.setPromptNoneRequestSent(false);
2892
- const signOutURL = await _signOut();
2893
- await import_javascript4.AsgardeoAuthClient.clearUserSessionData();
2894
- parent.location.href = signOutURL;
2895
- window.location.href = "about:blank";
2896
- await SPAUtils.waitTillPageRedirect();
2897
- return true;
2898
- }
2899
- }
2900
- return false;
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);
2901
2858
  };
2902
- return async (signOut, storage, setSessionState) => {
2903
- let rpIFrame = document.createElement("iframe");
2904
- rpIFrame.setAttribute("id", RP_IFRAME);
2905
- rpIFrame.style.display = "none";
2906
- let rpIframeLoaded = false;
2907
- rpIFrame.onload = () => {
2908
- rpIFrame = document.getElementById(RP_IFRAME);
2909
- const rpDoc = rpIFrame?.contentDocument;
2910
- const opIFrame = rpDoc?.createElement("iframe");
2911
- if (opIFrame) {
2912
- opIFrame.setAttribute("id", OP_IFRAME);
2913
- opIFrame.style.display = "none";
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));
2914
2895
  }
2915
- const promptNoneIFrame = rpDoc?.createElement("iframe");
2916
- if (promptNoneIFrame) {
2917
- promptNoneIFrame.setAttribute("id", PROMPT_NONE_IFRAME);
2918
- promptNoneIFrame.style.display = "none";
2896
+ if (tokenRequestConfig) {
2897
+ _dataLayer.setTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY, JSON.stringify(tokenRequestConfig));
2919
2898
  }
2920
- opIFrame && rpIFrame?.contentDocument?.body?.appendChild(opIFrame);
2921
- promptNoneIFrame && rpIFrame?.contentDocument?.body?.appendChild(promptNoneIFrame);
2922
- rpIframeLoaded = true;
2923
- };
2924
- document?.body?.appendChild(rpIFrame);
2925
- _signOut = signOut;
2926
- _storage = storage;
2927
- _setSessionState = setSessionState;
2928
- const sleep = () => {
2929
- return new Promise((resolve) => setTimeout(resolve, 1));
2930
- };
2931
- while (rpIframeLoaded === false) {
2932
- await sleep();
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);
2933
2924
  }
2934
- return {
2935
- initialize,
2936
- receivePromptNoneResponse,
2937
- reset
2938
- };
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;
2939
2932
  };
2940
- })();
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
+ };
2941
3037
 
2942
- // src/__legacy__/worker/worker-receiver.ts
3038
+ // src/__legacy__/clients/web-worker-client.ts
2943
3039
  var import_javascript7 = require("@asgardeo/javascript");
2944
3040
 
2945
- // src/__legacy__/worker/worker-core.ts
3041
+ // src/__legacy__/helpers/authentication-helper.ts
2946
3042
  var import_javascript6 = require("@asgardeo/javascript");
2947
-
2948
- // src/__legacy__/http-client/clients/axios-http-client.ts
2949
- var import_axios = __toESM(require("axios"), 1);
2950
-
2951
- // src/__legacy__/http-client/helpers/decorators.ts
2952
- function staticDecorator() {
2953
- return (_constructor) => {
2954
- };
2955
- }
2956
-
2957
- // src/__legacy__/http-client/clients/axios-http-client.ts
2958
- var HttpClient = class {
2959
- /**
2960
- * Private constructor to avoid object instantiation from outside
2961
- * the class.
2962
- *
2963
- * @hideconstructor
2964
- */
2965
- constructor() {
2966
- __publicField(this, "attachToken", () => Promise.resolve());
2967
- __publicField(this, "requestStartCallback", () => null);
2968
- __publicField(this, "requestSuccessCallback", () => null);
2969
- __publicField(this, "requestErrorCallback", () => null);
2970
- __publicField(this, "requestFinishCallback", () => null);
2971
- this.init = this.init.bind(this);
2972
- this.setHttpRequestErrorCallback = this.setHttpRequestErrorCallback.bind(this);
2973
- this.setHttpRequestFinishCallback = this.setHttpRequestFinishCallback.bind(this);
2974
- this.setHttpRequestStartCallback = this.setHttpRequestStartCallback.bind(this);
2975
- this.setHttpRequestSuccessCallback = this.setHttpRequestSuccessCallback.bind(this);
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;
2976
3055
  }
2977
- /**
2978
- * Returns an aggregated instance of type `HttpInstance` of `HttpClient`.
2979
- *
2980
- * @return {any}
2981
- */
2982
- static getInstance() {
2983
- if (this.axiosInstance) {
2984
- return this.axiosInstance;
2985
- }
2986
- this.axiosInstance = import_axios.default.create({
2987
- withCredentials: true
2988
- });
2989
- if (!this.clientInstance) {
2990
- this.clientInstance = new HttpClient();
2991
- }
2992
- this.axiosInstance.interceptors.request.use(async (request) => await this.clientInstance.requestHandler(request));
2993
- this.axiosInstance.interceptors.response.use(
2994
- (response) => this.clientInstance.successHandler(response),
2995
- (error) => this.clientInstance.errorHandler(error)
2996
- );
2997
- this.axiosInstance.all = import_axios.default.all;
2998
- this.axiosInstance.spread = import_axios.default.spread;
2999
- this.axiosInstance.init = this.clientInstance.init;
3000
- this.axiosInstance.enableHandler = this.clientInstance.enableHandler;
3001
- this.axiosInstance.disableHandler = this.clientInstance.disableHandler;
3002
- this.axiosInstance.disableHandlerWithTimeout = this.clientInstance.disableHandlerWithTimeout;
3003
- this.axiosInstance.setHttpRequestStartCallback = this.clientInstance.setHttpRequestStartCallback;
3004
- this.axiosInstance.setHttpRequestSuccessCallback = this.clientInstance.setHttpRequestSuccessCallback;
3005
- this.axiosInstance.setHttpRequestErrorCallback = this.clientInstance.setHttpRequestErrorCallback;
3006
- this.axiosInstance.setHttpRequestFinishCallback = this.clientInstance.setHttpRequestFinishCallback;
3007
- return this.axiosInstance;
3056
+ enableHttpHandler(httpClient) {
3057
+ httpClient?.enableHandler && httpClient.enableHandler();
3008
3058
  }
3009
- /**
3010
- * Intercepts all the requests.
3011
- * If the `isHandlerEnabled` flag is set to true, fires the `requestStartCallback`
3012
- * and retrieves the access token from the server and attaches it to the request.
3013
- * Else, just returns the original request.
3014
- *
3015
- * @param {HttpRequestConfig} request - Original request.
3016
- * @return {HttpRequestConfig}
3017
- */
3018
- async requestHandler(request) {
3019
- await this.attachToken(request);
3020
- if (request?.shouldEncodeToFormData) {
3021
- const data = request?.data;
3022
- const formData = new FormData();
3023
- Object.keys(data).forEach((key) => {
3024
- formData.append(key, data[key]);
3059
+ disableHttpHandler(httpClient) {
3060
+ httpClient?.disableHandler && httpClient.disableHandler();
3061
+ }
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
+ );
3072
+ }
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);
3025
3104
  });
3026
- request.data = formData;
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
+ );
3027
3113
  }
3028
- request.startTimeInMs = (/* @__PURE__ */ new Date()).getTime();
3029
- if (HttpClient.isHandlerEnabled) {
3030
- if (this.requestStartCallback && typeof this.requestStartCallback === "function") {
3031
- this.requestStartCallback(request);
3114
+ }
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
+ }
3122
+ }
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);
3032
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);
3033
3138
  }
3034
- return request;
3035
3139
  }
3036
- /**
3037
- * Handles response errors.
3038
- * If the `isHandlerEnabled` flag is set to true, fires the `requestErrorCallback`
3039
- * and the `requestFinishCallback` functions. Else, just returns the original error.
3040
- *
3041
- * @param {HttpError} error - Original error.
3042
- * @return {HttpError}
3043
- */
3044
- errorHandler(error) {
3045
- if (HttpClient.isHandlerEnabled) {
3046
- if (this.requestErrorCallback && typeof this.requestErrorCallback === "function") {
3047
- this.requestErrorCallback(error);
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
+ }
3048
3158
  }
3049
- if (this.requestFinishCallback && typeof this.requestFinishCallback === "function") {
3050
- this.requestFinishCallback();
3159
+ return Promise.reject(error);
3160
+ }
3161
+ }
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;
3051
3169
  }
3052
3170
  }
3053
- throw 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 {
3238
+ return Promise.reject(
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`"
3243
+ )
3244
+ );
3245
+ }
3054
3246
  }
3055
- /**
3056
- * Handles response success.
3057
- * If the `isHandlerEnabled` flag is set to true, fires the `requestSuccessCallback`
3058
- * and the `requestFinishCallback` functions. Else, just returns the original response.
3059
- *
3060
- * @param {HttpResponse} response - Original response.
3061
- * @return {HttpResponse}
3062
- */
3063
- successHandler(response) {
3064
- if (HttpClient.isHandlerEnabled) {
3065
- if (this.requestSuccessCallback && typeof this.requestSuccessCallback === "function") {
3066
- this.requestSuccessCallback(response);
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;
3256
+ }
3067
3257
  }
3068
- if (this.requestFinishCallback && typeof this.requestFinishCallback === "function") {
3069
- this.requestFinishCallback();
3258
+ if (!urlMatches) {
3259
+ matches = false;
3260
+ break;
3070
3261
  }
3071
3262
  }
3072
- return response;
3073
- }
3074
- /**
3075
- * Initializes the Http client.
3076
- *
3077
- * @param isHandlerEnabled - Flag to toggle handler enablement.
3078
- * @param requestStartCallback - Callback function to be triggered on request start.
3079
- * @param requestSuccessCallback - Callback function to be triggered on request success.
3080
- * @param requestErrorCallback - Callback function to be triggered on request error.
3081
- * @param requestFinishCallback - Callback function to be triggered on request error.
3082
- */
3083
- async init(isHandlerEnabled = true, attachToken) {
3084
- HttpClient.isHandlerEnabled = isHandlerEnabled;
3085
- this.attachToken = attachToken;
3086
- }
3087
- /**
3088
- * Enables the handler.
3089
- */
3090
- enableHandler() {
3091
- HttpClient.isHandlerEnabled = true;
3092
- }
3093
- /**
3094
- * Disables the handler.
3095
- */
3096
- disableHandler() {
3097
- HttpClient.isHandlerEnabled = false;
3098
- }
3099
- /**
3100
- * Disables the handler for a given period of time.
3101
- *
3102
- * @param {number} timeout - Timeout in milliseconds.
3103
- */
3104
- disableHandlerWithTimeout(timeout = HttpClient.DEFAULT_HANDLER_DISABLE_TIMEOUT) {
3105
- HttpClient.isHandlerEnabled = false;
3106
- setTimeout(() => {
3107
- HttpClient.isHandlerEnabled = true;
3108
- }, timeout);
3109
- }
3110
- setHttpRequestStartCallback(callback) {
3111
- this.requestStartCallback = callback;
3112
- }
3113
- setHttpRequestSuccessCallback(callback) {
3114
- this.requestSuccessCallback = callback;
3115
- }
3116
- setHttpRequestErrorCallback(callback) {
3117
- this.requestErrorCallback = callback;
3118
- }
3119
- setHttpRequestFinishCallback(callback) {
3120
- this.requestFinishCallback = callback;
3121
- }
3122
- };
3123
- __publicField(HttpClient, "axiosInstance");
3124
- __publicField(HttpClient, "clientInstance");
3125
- __publicField(HttpClient, "isHandlerEnabled");
3126
- __publicField(HttpClient, "DEFAULT_HANDLER_DISABLE_TIMEOUT", 1e3);
3127
- HttpClient = __decorateClass([
3128
- staticDecorator()
3129
- ], HttpClient);
3130
-
3131
- // src/__legacy__/stores/local-store.ts
3132
- var LocalStore = class {
3133
- async setData(key, value) {
3134
- localStorage.setItem(key, value);
3135
- }
3136
- async getData(key) {
3137
- return localStorage.getItem(key) ?? "{}";
3138
- }
3139
- async removeData(key) {
3140
- localStorage.removeItem(key);
3141
- }
3142
- };
3143
-
3144
- // src/__legacy__/stores/memory-store.ts
3145
- var MemoryStore = class {
3146
- constructor() {
3147
- __publicField(this, "_data");
3148
- this._data = /* @__PURE__ */ new Map();
3149
- }
3150
- async setData(key, value) {
3151
- this._data.set(key, value);
3152
- }
3153
- async getData(key) {
3154
- return this._data?.get(key) ?? "{}";
3155
- }
3156
- async removeData(key) {
3157
- this._data.delete(key);
3158
- }
3159
- };
3160
-
3161
- // src/__legacy__/stores/session-store.ts
3162
- var SessionStore = class {
3163
- async setData(key, value) {
3164
- sessionStorage.setItem(key, value);
3165
- }
3166
- async getData(key) {
3167
- return sessionStorage.getItem(key) ?? "{}";
3168
- }
3169
- async removeData(key) {
3170
- sessionStorage.removeItem(key);
3171
- }
3172
- };
3173
-
3174
- // src/__legacy__/utils/crypto-utils.ts
3175
- var import_buffer = __toESM(require_buffer(), 1);
3176
- var import_javascript5 = require("@asgardeo/javascript");
3177
- var import_base64url = __toESM(require("base64url"), 1);
3178
- var import_fast_sha256 = __toESM(require("fast-sha256"), 1);
3179
- var import_jose = require("jose");
3180
- var import_randombytes = __toESM(require_browser(), 1);
3181
- var SPACryptoUtils = class {
3182
- /**
3183
- * Get URL encoded string.
3184
- *
3185
- * @returns {string} base 64 url encoded value.
3186
- */
3187
- base64URLEncode(value) {
3188
- return import_base64url.default.encode(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
3189
- }
3190
- base64URLDecode(value) {
3191
- return import_base64url.default.decode(value).toString();
3192
- }
3193
- hashSha256(data) {
3194
- return import_buffer.Buffer.from((0, import_fast_sha256.default)(new TextEncoder().encode(data)));
3195
- }
3196
- generateRandomBytes(length) {
3197
- return (0, import_randombytes.default)(length);
3198
- }
3199
- verifyJwt(idToken, jwk, algorithms, clientID, issuer, subject, clockTolerance, validateJwtIssuer) {
3200
- const jwtVerifyOptions = {
3201
- algorithms,
3202
- audience: clientID,
3203
- clockTolerance,
3204
- subject
3205
- };
3206
- if (validateJwtIssuer ?? true) {
3207
- jwtVerifyOptions["issuer"] = issuer;
3208
- }
3209
- return (0, import_jose.jwtVerify)(
3210
- idToken,
3211
- (0, import_jose.createLocalJWKSet)({
3212
- keys: [jwk]
3213
- }),
3214
- jwtVerifyOptions
3215
- ).then(() => {
3216
- return Promise.resolve(true);
3217
- }).catch((error) => {
3218
- return Promise.reject(
3219
- new import_javascript5.AsgardeoAuthException(
3220
- "SPA-CRYPTO-UTILS-VJ-IV01",
3221
- error?.reason ?? JSON.stringify(error),
3222
- `${error?.code} ${error?.claim}`
3223
- )
3224
- );
3225
- });
3226
- }
3227
- };
3228
-
3229
- // src/__legacy__/worker/worker-core.ts
3230
- var WebWorkerCore = async (config, getAuthHelper) => {
3231
- const _store = new MemoryStore();
3232
- const _cryptoUtils = new SPACryptoUtils();
3233
- const _authenticationClient = new import_javascript6.AsgardeoAuthClient();
3234
- await _authenticationClient.initialize(config, _store, _cryptoUtils);
3235
- const _spaHelper = new SPAHelper(_authenticationClient);
3236
- const _authenticationHelper = getAuthHelper(
3237
- _authenticationClient,
3238
- _spaHelper
3239
- );
3240
- const _dataLayer = _authenticationClient.getDataLayer();
3241
- const _httpClient = HttpClient.getInstance();
3242
- const attachToken = async (request) => {
3243
- await _authenticationHelper.attachTokenToRequestConfig(request);
3244
- };
3245
- _httpClient?.init && await _httpClient.init(true, attachToken);
3246
- const setHttpRequestStartCallback = (callback) => {
3247
- _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
3248
- };
3249
- const setHttpRequestSuccessCallback = (callback) => {
3250
- _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
3251
- };
3252
- const setHttpRequestFinishCallback = (callback) => {
3253
- _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
3254
- };
3255
- const httpRequest = async (requestConfig) => {
3256
- return await _authenticationHelper.httpRequest(_httpClient, requestConfig);
3257
- };
3258
- const httpRequestAll = async (requestConfigs) => {
3259
- return await _authenticationHelper.httpRequestAll(requestConfigs, _httpClient);
3260
- };
3261
- const enableHttpHandler = () => {
3262
- _authenticationHelper.enableHttpHandler(_httpClient);
3263
- };
3264
- const disableHttpHandler = () => {
3265
- _authenticationHelper.disableHttpHandler(_httpClient);
3266
- };
3267
- const getAuthorizationURL = async (params) => {
3268
- return _authenticationClient.getAuthorizationURL(params).then(async (url) => {
3269
- const urlObject = new URL(url);
3270
- const state = urlObject.searchParams.get(import_javascript6.OIDCRequestConstants.Params.STATE) ?? "";
3271
- const pkce = await _authenticationClient.getPKCECode(state);
3272
- return { authorizationURL: url, pkce };
3273
- }).catch((error) => Promise.reject(error));
3274
- };
3275
- const startAutoRefreshToken = async () => {
3276
- _spaHelper.clearRefreshTokenTimeout();
3277
- _spaHelper.refreshAccessTokenAutomatically(_authenticationHelper);
3278
- return;
3279
- };
3280
- const requestAccessToken = async (authorizationCode, sessionState, pkce, state) => {
3281
- return await _authenticationHelper.requestAccessToken(authorizationCode, sessionState, void 0, pkce, state);
3282
- };
3283
- const signOut = async () => {
3284
- _spaHelper.clearRefreshTokenTimeout();
3285
- return await _authenticationClient.getSignOutURL();
3286
- };
3287
- const getSignOutURL = async () => {
3288
- return await _authenticationClient.getSignOutURL();
3289
- };
3290
- const requestCustomGrant = async (config2) => {
3291
- return await _authenticationHelper.requestCustomGrant(config2);
3292
- };
3293
- const refreshAccessToken = async () => {
3294
- try {
3295
- return await _authenticationHelper.refreshAccessToken();
3296
- } catch (error) {
3297
- return Promise.reject(error);
3298
- }
3299
- };
3300
- const revokeAccessToken = async () => {
3301
- const timer = await _spaHelper.getRefreshTimeoutTimer();
3302
- return _authenticationClient.revokeAccessToken().then(() => {
3303
- _spaHelper.clearRefreshTokenTimeout(timer);
3304
- return Promise.resolve(true);
3305
- }).catch((error) => Promise.reject(error));
3306
- };
3307
- const getBasicUserInfo = async () => {
3308
- return _authenticationHelper.getBasicUserInfo();
3309
- };
3310
- const getDecodedIDToken = async () => {
3311
- return _authenticationHelper.getDecodedIDToken();
3312
- };
3313
- const getCryptoHelper = async () => {
3314
- return _authenticationHelper.getCryptoHelper();
3315
- };
3316
- const getDecodedIDPIDToken = async () => {
3317
- return _authenticationHelper.getDecodedIDPIDToken();
3318
- };
3319
- const getIDToken = async () => {
3320
- return _authenticationHelper.getIDToken();
3321
- };
3322
- const getOIDCServiceEndpoints = async () => {
3323
- return _authenticationHelper.getOIDCServiceEndpoints();
3324
- };
3325
- const getAccessToken = () => {
3326
- return _authenticationHelper.getAccessToken();
3327
- };
3328
- const isAuthenticated = () => {
3329
- return _authenticationHelper.isAuthenticated();
3330
- };
3331
- const setSessionState = async (sessionState) => {
3332
- await _dataLayer.setSessionDataParameter(
3333
- import_javascript6.OIDCRequestConstants.Params.SESSION_STATE,
3334
- sessionState
3335
- );
3336
- return;
3337
- };
3338
- const updateConfig = async (config2) => {
3339
- await _authenticationClient.updateConfig(config2);
3340
- return;
3341
- };
3342
- const getConfigData = async () => {
3343
- return _dataLayer.getConfigData();
3344
- };
3345
- return {
3346
- disableHttpHandler,
3347
- enableHttpHandler,
3348
- getAccessToken,
3349
- getAuthorizationURL,
3350
- getBasicUserInfo,
3351
- getConfigData,
3352
- getCryptoHelper,
3353
- getDecodedIDPIDToken,
3354
- getDecodedIDToken,
3355
- getIDToken,
3356
- getOIDCServiceEndpoints,
3357
- getSignOutURL,
3358
- httpRequest,
3359
- httpRequestAll,
3360
- isAuthenticated,
3361
- refreshAccessToken,
3362
- requestAccessToken,
3363
- requestCustomGrant,
3364
- revokeAccessToken,
3365
- setHttpRequestFinishCallback,
3366
- setHttpRequestStartCallback,
3367
- setHttpRequestSuccessCallback,
3368
- setSessionState,
3369
- signOut,
3370
- startAutoRefreshToken,
3371
- updateConfig
3372
- };
3373
- };
3374
-
3375
- // src/__legacy__/worker/worker-receiver.ts
3376
- var workerReceiver = (getAuthHelper) => {
3377
- const ctx = self;
3378
- let webWorker;
3379
- ctx.onmessage = async ({ data, ports }) => {
3380
- const port = ports[0];
3381
- if (data.type !== INIT && !webWorker) {
3382
- port.postMessage(
3383
- MessageUtils.generateFailureMessage(
3384
- new import_javascript7.AsgardeoAuthException(
3385
- "SPA-CLIENT_WORKER-ONMSG-NF01",
3386
- "The web worker has not been initialized yet.",
3387
- "The initialize method needs to be called before the specified operation can be carried out."
3388
- )
3389
- )
3390
- );
3391
- return;
3392
- }
3393
- switch (data.type) {
3394
- case INIT:
3395
- try {
3396
- const config = { ...data.data };
3397
- webWorker = await WebWorkerCore(config, getAuthHelper);
3398
- webWorker.setHttpRequestFinishCallback(onRequestFinishCallback);
3399
- webWorker.setHttpRequestStartCallback(onRequestStartCallback);
3400
- webWorker.setHttpRequestSuccessCallback(onRequestSuccessCallback);
3401
- port.postMessage(MessageUtils.generateSuccessMessage());
3402
- } catch (error) {
3403
- port.postMessage(MessageUtils.generateFailureMessage(error));
3404
- }
3405
- break;
3406
- case GET_AUTH_URL:
3407
- webWorker.getAuthorizationURL(data?.data).then((response) => {
3408
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3409
- }).catch((error) => {
3410
- port.postMessage(MessageUtils.generateFailureMessage(error));
3411
- });
3412
- break;
3413
- case REQUEST_ACCESS_TOKEN:
3414
- webWorker.requestAccessToken(data?.data?.code, data?.data?.sessionState, data?.data?.pkce, data?.data?.state).then((response) => {
3415
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3416
- }).catch((error) => {
3417
- port.postMessage(MessageUtils.generateFailureMessage(error));
3418
- });
3419
- break;
3420
- case HTTP_REQUEST: {
3421
- const request = data.data;
3422
- const requestData = request?.data;
3423
- if (data.data?.data?.formData === true) {
3424
- const formData = new FormData();
3425
- for (const key in requestData) {
3426
- if (key === "formData") {
3427
- continue;
3428
- }
3429
- formData.append(key, requestData[key]);
3430
- }
3431
- request.data = formData;
3432
- }
3433
- webWorker.httpRequest(request).then((response) => {
3434
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3435
- }).catch((error) => {
3436
- port.postMessage(MessageUtils.generateFailureMessage(error));
3437
- });
3438
- break;
3439
- }
3440
- case HTTP_REQUEST_ALL:
3441
- webWorker.httpRequestAll(data.data).then((response) => {
3442
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3443
- }).catch((error) => {
3444
- port.postMessage(MessageUtils.generateFailureMessage(error));
3445
- });
3446
- break;
3447
- case SIGN_OUT:
3448
- try {
3449
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.signOut()));
3450
- } catch (error) {
3451
- port.postMessage(MessageUtils.generateFailureMessage(error));
3452
- }
3453
- break;
3454
- case REQUEST_CUSTOM_GRANT:
3455
- webWorker.requestCustomGrant(data.data).then((response) => {
3456
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3457
- }).catch((error) => {
3458
- port.postMessage(MessageUtils.generateFailureMessage(error));
3459
- });
3460
- break;
3461
- case REVOKE_ACCESS_TOKEN:
3462
- webWorker.revokeAccessToken().then((response) => {
3463
- port.postMessage(MessageUtils.generateSuccessMessage(response));
3464
- }).catch((error) => {
3465
- port.postMessage(MessageUtils.generateFailureMessage(error));
3466
- });
3467
- break;
3468
- case GET_OIDC_SERVICE_ENDPOINTS:
3469
- try {
3470
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getOIDCServiceEndpoints()));
3471
- } catch (error) {
3472
- port.postMessage(MessageUtils.generateFailureMessage(error));
3473
- }
3474
- break;
3475
- case GET_BASIC_USER_INFO:
3476
- try {
3477
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getBasicUserInfo()));
3478
- } catch (error) {
3479
- port.postMessage(MessageUtils.generateFailureMessage(error));
3480
- }
3481
- break;
3482
- case GET_DECODED_ID_TOKEN:
3483
- try {
3484
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getDecodedIDToken()));
3485
- } catch (error) {
3486
- port.postMessage(MessageUtils.generateFailureMessage(error));
3487
- }
3488
- break;
3489
- case GET_CRYPTO_HELPER:
3490
- try {
3491
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getCryptoHelper()));
3492
- } catch (error) {
3493
- port.postMessage(MessageUtils.generateFailureMessage(error));
3494
- }
3495
- break;
3496
- case GET_ID_TOKEN:
3497
- try {
3498
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getIDToken()));
3499
- } catch (error) {
3500
- port.postMessage(MessageUtils.generateFailureMessage(error));
3501
- }
3502
- break;
3503
- case ENABLE_HTTP_HANDLER:
3504
- webWorker.enableHttpHandler();
3505
- port.postMessage(MessageUtils.generateSuccessMessage());
3506
- break;
3507
- case DISABLE_HTTP_HANDLER:
3508
- webWorker.disableHttpHandler();
3509
- port.postMessage(MessageUtils.generateSuccessMessage());
3510
- break;
3511
- case IS_AUTHENTICATED:
3512
- try {
3513
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.isAuthenticated()));
3514
- } catch (error) {
3515
- port.postMessage(MessageUtils.generateFailureMessage(error));
3516
- }
3517
- break;
3518
- case GET_SIGN_OUT_URL:
3519
- try {
3520
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getSignOutURL()));
3521
- } catch (error) {
3522
- port.postMessage(MessageUtils.generateFailureMessage(error));
3523
- }
3524
- break;
3525
- case REFRESH_ACCESS_TOKEN:
3526
- try {
3527
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.refreshAccessToken()));
3528
- } catch (error) {
3529
- port.postMessage(MessageUtils.generateFailureMessage(error));
3530
- }
3531
- break;
3532
- case START_AUTO_REFRESH_TOKEN:
3533
- try {
3534
- port.postMessage(MessageUtils.generateSuccessMessage(webWorker.startAutoRefreshToken()));
3535
- } catch (error) {
3536
- port.postMessage(MessageUtils.generateFailureMessage(error));
3537
- }
3538
- break;
3539
- case SET_SESSION_STATE:
3540
- try {
3541
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.setSessionState(data?.data)));
3542
- } catch (error) {
3543
- port.postMessage(MessageUtils.generateFailureMessage(error));
3544
- }
3545
- break;
3546
- case UPDATE_CONFIG:
3547
- try {
3548
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.updateConfig(data?.data)));
3549
- } catch (error) {
3550
- port.postMessage(MessageUtils.generateFailureMessage(error));
3551
- }
3552
- break;
3553
- case GET_CONFIG_DATA:
3554
- try {
3555
- port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getConfigData()));
3556
- } catch (error) {
3557
- port.postMessage(MessageUtils.generateFailureMessage(error));
3558
- }
3559
- break;
3560
- default:
3561
- port?.postMessage(
3562
- MessageUtils.generateFailureMessage(
3563
- new import_javascript7.AsgardeoAuthException(
3564
- "SPA-CLIENT_WORKER-ONMSG-IV02",
3565
- "The message type is invalid.",
3566
- `The message type provided, ${data.type}, is invalid.`
3567
- )
3568
- )
3569
- );
3570
- }
3571
- };
3572
- const onRequestStartCallback = () => {
3573
- ctx.postMessage({ type: REQUEST_START });
3574
- };
3575
- const onRequestSuccessCallback = (response) => {
3576
- ctx.postMessage({ data: JSON.stringify(response ?? ""), type: REQUEST_SUCCESS });
3577
- };
3578
- const onRequestFinishCallback = () => {
3579
- ctx.postMessage({ type: REQUEST_FINISH });
3580
- };
3581
- };
3582
-
3583
- // src/worker.ts
3584
- workerReceiver((authClient, spaHelper) => {
3585
- return new AuthenticationHelper(authClient, spaHelper);
3586
- });
3587
- var worker_default = {};
3588
-
3589
- // src/__legacy__/clients/main-thread-client.ts
3590
- var import_javascript8 = require("@asgardeo/javascript");
3591
- var initiateStore = (store) => {
3592
- switch (store) {
3593
- case "localStorage" /* LocalStorage */:
3594
- return new LocalStore();
3595
- case "sessionStorage" /* SessionStorage */:
3596
- return new SessionStore();
3597
- case "browserMemory" /* BrowserMemory */:
3598
- return new MemoryStore();
3599
- default:
3600
- return new SessionStore();
3601
- }
3602
- };
3603
- var MainThreadClient = async (instanceID, config, getAuthHelper) => {
3604
- const _store = initiateStore(config.storage);
3605
- const _cryptoUtils = new SPACryptoUtils();
3606
- const _authenticationClient = new import_javascript8.AsgardeoAuthClient();
3607
- await _authenticationClient.initialize(config, _store, _cryptoUtils, instanceID);
3608
- const _spaHelper = new SPAHelper(_authenticationClient);
3609
- const _dataLayer = _authenticationClient.getDataLayer();
3610
- const _sessionManagementHelper = await SessionManagementHelper(
3611
- async () => {
3612
- return _authenticationClient.getSignOutURL();
3613
- },
3614
- config.storage ?? "sessionStorage" /* SessionStorage */,
3615
- (sessionState) => _dataLayer.setSessionDataParameter(
3616
- import_javascript8.OIDCRequestConstants.Params.SESSION_STATE,
3617
- sessionState ?? ""
3618
- )
3619
- );
3620
- const _authenticationHelper = getAuthHelper(_authenticationClient, _spaHelper);
3621
- let _getSignOutURLFromSessionStorage = false;
3622
- const _httpClient = HttpClient.getInstance();
3623
- let _isHttpHandlerEnabled = true;
3624
- let _httpErrorCallback;
3625
- let _httpFinishCallback;
3626
- const attachToken = async (request) => {
3627
- await _authenticationHelper.attachTokenToRequestConfig(request);
3628
- };
3629
- _httpClient?.init && await _httpClient.init(true, attachToken);
3630
- const setHttpRequestStartCallback = (callback) => {
3631
- _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
3632
- };
3633
- const setHttpRequestSuccessCallback = (callback) => {
3634
- _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
3635
- };
3636
- const setHttpRequestFinishCallback = (callback) => {
3637
- _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
3638
- };
3639
- const setHttpRequestErrorCallback = (callback) => {
3640
- _httpErrorCallback = callback;
3641
- };
3642
- const httpRequest = async (requestConfig) => {
3643
- return await _authenticationHelper.httpRequest(
3644
- _httpClient,
3645
- requestConfig,
3646
- _isHttpHandlerEnabled,
3647
- _httpErrorCallback,
3648
- _httpFinishCallback
3649
- );
3650
- };
3651
- const httpRequestAll = async (requestConfigs) => {
3652
- return await _authenticationHelper.httpRequestAll(
3653
- requestConfigs,
3654
- _httpClient,
3655
- _isHttpHandlerEnabled,
3656
- _httpErrorCallback,
3657
- _httpFinishCallback
3658
- );
3659
- };
3660
- const getHttpClient = () => {
3661
- return _httpClient;
3662
- };
3663
- const enableHttpHandler = () => {
3664
- _authenticationHelper.enableHttpHandler(_httpClient);
3665
- _isHttpHandlerEnabled = true;
3666
- return true;
3667
- };
3668
- const disableHttpHandler = () => {
3669
- _authenticationHelper.disableHttpHandler(_httpClient);
3670
- _isHttpHandlerEnabled = false;
3671
- return true;
3672
- };
3673
- const checkSession = async () => {
3674
- const oidcEndpoints = await _authenticationClient.getOIDCServiceEndpoints();
3675
- const config2 = await _dataLayer.getConfigData();
3676
- _authenticationHelper.initializeSessionManger(
3677
- config2,
3678
- oidcEndpoints,
3679
- async () => (await _authenticationClient.getBasicUserInfo()).sessionState,
3680
- async (params) => _authenticationClient.getAuthorizationURL(params),
3681
- _sessionManagementHelper
3682
- );
3683
- };
3684
- const shouldStopAuthn = async () => {
3685
- return await _sessionManagementHelper.receivePromptNoneResponse(async (sessionState) => {
3686
- await _dataLayer.setSessionDataParameter(
3687
- import_javascript8.OIDCRequestConstants.Params.SESSION_STATE,
3688
- sessionState ?? ""
3689
- );
3690
- return;
3691
- });
3692
- };
3693
- const setSessionStatus = async (sessionStatus) => {
3694
- await _dataLayer.setSessionStatus(sessionStatus);
3695
- };
3696
- const signIn = async (signInConfig, authorizationCode, sessionState, state, tokenRequestConfig) => {
3697
- const basicUserInfo = await _authenticationHelper.handleSignIn(shouldStopAuthn, checkSession, void 0);
3698
- if (basicUserInfo) {
3699
- return basicUserInfo;
3700
- } else {
3701
- let resolvedAuthorizationCode;
3702
- let resolvedSessionState;
3703
- let resolvedState;
3704
- let resolvedTokenRequestConfig = { params: {} };
3705
- if (config?.responseMode === import_javascript8.ResponseMode.FormPost && authorizationCode) {
3706
- resolvedAuthorizationCode = authorizationCode;
3707
- resolvedSessionState = sessionState ?? "";
3708
- resolvedState = state ?? "";
3709
- } else {
3710
- resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(import_javascript8.OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
3711
- resolvedSessionState = new URL(window.location.href).searchParams.get(import_javascript8.OIDCRequestConstants.Params.SESSION_STATE) ?? "";
3712
- resolvedState = new URL(window.location.href).searchParams.get(import_javascript8.OIDCRequestConstants.Params.STATE) ?? "";
3713
- SPAUtils.removeAuthorizationCode();
3714
- }
3715
- if (resolvedAuthorizationCode && resolvedState) {
3716
- setSessionStatus("true");
3717
- const storedTokenRequestConfig = await _dataLayer.getTemporaryDataParameter(TOKEN_REQUEST_CONFIG_KEY);
3718
- if (storedTokenRequestConfig && typeof storedTokenRequestConfig === "string") {
3719
- resolvedTokenRequestConfig = JSON.parse(storedTokenRequestConfig);
3720
- }
3721
- return requestAccessToken(
3722
- resolvedAuthorizationCode,
3723
- resolvedSessionState,
3724
- resolvedState,
3725
- resolvedTokenRequestConfig
3726
- );
3727
- }
3728
- return _authenticationClient.getAuthorizationURL(signInConfig).then(async (url) => {
3729
- if (config.storage === "browserMemory" /* BrowserMemory */ && config.enablePKCE) {
3730
- const pkceKey = (0, import_javascript8.extractPkceStorageKeyFromState)(resolvedState);
3731
- SPAUtils.setPKCE(pkceKey, await _authenticationClient.getPKCECode(resolvedState));
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
+ }
3732
3308
  }
3733
- if (tokenRequestConfig) {
3734
- _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
+ }
3735
3316
  }
3736
- location.href = url;
3737
- await SPAUtils.waitTillPageRedirect();
3738
- return Promise.resolve({
3739
- allowedScopes: "",
3740
- displayName: "",
3741
- email: "",
3742
- sessionState: "",
3743
- sub: "",
3744
- tenantDomain: "",
3745
- username: ""
3746
- });
3317
+ return Promise.reject(error);
3747
3318
  });
3748
- }
3749
- };
3750
- const signOut = async () => {
3751
- if (await _authenticationClient.isAuthenticated() && !_getSignOutURLFromSessionStorage) {
3752
- location.href = await _authenticationClient.getSignOutURL();
3753
3319
  } else {
3754
- location.href = SPAUtils.getSignOutURL(config.clientID, instanceID);
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
+ );
3755
3325
  }
3756
- _spaHelper.clearRefreshTokenTimeout();
3757
- await _dataLayer.removeOIDCProviderMetaData();
3758
- await _dataLayer.removeTemporaryData();
3759
- await _dataLayer.removeSessionData();
3760
- await _dataLayer.removeSessionStatus();
3761
- await SPAUtils.waitTillPageRedirect();
3762
- return true;
3763
- };
3764
- const enableRetrievingSignOutURLFromSession = (config2) => {
3765
- if (config2.preventSignOutURLUpdate) {
3766
- _getSignOutURLFromSessionStorage = true;
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 ?? "");
3767
3334
  }
3768
- };
3769
- const requestCustomGrant = async (config2) => {
3770
- return await _authenticationHelper.requestCustomGrant(config2, enableRetrievingSignOutURLFromSession);
3771
- };
3772
- const refreshAccessToken = async () => {
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
+ }
3346
+ } else {
3347
+ if (this._spaHelper) {
3348
+ this._spaHelper.refreshAccessTokenAutomatically(this);
3349
+ }
3350
+ }
3351
+ return this._authenticationClient.getUser();
3352
+ }).catch((error) => {
3353
+ return Promise.reject(error);
3354
+ });
3355
+ }
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
+ });
3376
+ }
3377
+ const rpIFrame = document.getElementById(RP_IFRAME);
3378
+ const promptNoneIFrame = rpIFrame?.contentDocument?.getElementById(
3379
+ PROMPT_NONE_IFRAME
3380
+ );
3773
3381
  try {
3774
- return await _authenticationHelper.refreshAccessToken(enableRetrievingSignOutURLFromSession);
3382
+ const url = await constructSilentSignInUrl(additionalParams);
3383
+ promptNoneIFrame.src = url;
3775
3384
  } catch (error) {
3776
3385
  return Promise.reject(error);
3777
3386
  }
3778
- };
3779
- const revokeAccessToken = async () => {
3780
- const timer = await _spaHelper.getRefreshTimeoutTimer();
3781
- return _authenticationClient.revokeAccessToken().then(() => {
3782
- _sessionManagementHelper.reset();
3783
- _spaHelper.clearRefreshTokenTimeout(timer);
3784
- return Promise.resolve(true);
3785
- }).catch((error) => Promise.reject(error));
3786
- };
3787
- const requestAccessToken = async (resolvedAuthorizationCode, resolvedSessionState, resolvedState, tokenRequestConfig) => {
3788
- return await _authenticationHelper.requestAccessToken(
3789
- resolvedAuthorizationCode,
3790
- resolvedSessionState,
3791
- checkSession,
3792
- void 0,
3793
- resolvedState,
3794
- tokenRequestConfig
3795
- );
3796
- };
3797
- const constructSilentSignInUrl = async (additionalParams = {}) => {
3798
- const config2 = await _dataLayer.getConfigData();
3799
- const urlString = await _authenticationClient.getAuthorizationURL({
3800
- prompt: "none",
3801
- state: SILENT_SIGN_IN_STATE,
3802
- ...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);
3803
3411
  });
3804
- const urlObject = new URL(urlString);
3805
- urlObject.searchParams.set("response_mode", "query");
3806
- const url = urlObject.toString();
3807
- if (config2.storage === "browserMemory" /* BrowserMemory */ && config2.enablePKCE) {
3808
- const state = urlObject.searchParams.get(import_javascript8.OIDCRequestConstants.Params.STATE);
3809
- SPAUtils.setPKCE(
3810
- (0, import_javascript8.extractPkceStorageKeyFromState)(state ?? ""),
3811
- await _authenticationClient.getPKCECode(state ?? "")
3812
- );
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
+ });
3813
3425
  }
3814
- return url;
3815
- };
3816
- const trySignInSilently = async (additionalParams, tokenRequestConfig) => {
3817
- return await _authenticationHelper.trySignInSilently(
3818
- constructSilentSignInUrl,
3819
- requestAccessToken,
3820
- _sessionManagementHelper,
3821
- additionalParams,
3822
- tokenRequestConfig
3823
- );
3824
- };
3825
- const getBasicUserInfo = async () => {
3826
- return _authenticationHelper.getBasicUserInfo();
3827
- };
3828
- const getDecodedIDToken = async () => {
3829
- return _authenticationHelper.getDecodedIDToken();
3830
- };
3831
- const getCryptoHelper = async () => {
3832
- return _authenticationHelper.getCryptoHelper();
3833
- };
3834
- const getIDToken = async () => {
3835
- return _authenticationHelper.getIDToken();
3836
- };
3837
- const getOIDCServiceEndpoints = async () => {
3838
- return _authenticationHelper.getOIDCServiceEndpoints();
3839
- };
3840
- const getAccessToken = async () => {
3841
- return _authenticationHelper.getAccessToken();
3842
- };
3843
- const getDataLayer = async () => {
3844
- return _authenticationHelper.getDataLayer();
3845
- };
3846
- const getConfigData = async () => {
3847
- return await _dataLayer.getConfigData();
3848
- };
3849
- const isAuthenticated = async () => {
3850
- return _authenticationHelper.isAuthenticated();
3851
- };
3852
- const isSessionActive = async () => {
3853
- return await _dataLayer.getSessionStatus() === "true";
3854
- };
3855
- const updateConfig = async (newConfig) => {
3856
- const existingConfig = await _dataLayer.getConfigData();
3857
- const isCheckSessionIframeDifferent = !(existingConfig && existingConfig.endpoints && existingConfig.endpoints.checkSessionIframe && newConfig && newConfig.endpoints && newConfig.endpoints.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === newConfig.endpoints.checkSessionIframe);
3858
- const config2 = { ...existingConfig, ...newConfig };
3859
- await _authenticationClient.updateConfig(config2);
3860
- if (config2.enableOIDCSessionManagement && isCheckSessionIframeDifferent) {
3861
- _sessionManagementHelper.reset();
3862
- 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
+ }
3863
3435
  }
3864
- };
3865
- return {
3866
- disableHttpHandler,
3867
- enableHttpHandler,
3868
- getAccessToken,
3869
- getBasicUserInfo,
3870
- getConfigData,
3871
- getCryptoHelper,
3872
- getDataLayer,
3873
- getDecodedIDToken,
3874
- getHttpClient,
3875
- getIDToken,
3876
- getOIDCServiceEndpoints,
3877
- httpRequest,
3878
- httpRequestAll,
3879
- isAuthenticated,
3880
- isSessionActive,
3881
- refreshAccessToken,
3882
- requestCustomGrant,
3883
- revokeAccessToken,
3884
- setHttpRequestErrorCallback,
3885
- setHttpRequestFinishCallback,
3886
- setHttpRequestStartCallback,
3887
- setHttpRequestSuccessCallback,
3888
- signIn,
3889
- signOut,
3890
- trySignInSilently,
3891
- updateConfig
3892
- };
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
+ }
3893
3499
  };
3894
3500
 
3895
3501
  // src/__legacy__/clients/web-worker-client.ts
3896
- var import_javascript9 = require("@asgardeo/javascript");
3897
3502
  var initiateStore2 = (store) => {
3898
3503
  switch (store) {
3899
3504
  case "localStorage" /* LocalStorage */:
@@ -3913,7 +3518,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
3913
3518
  let _getSignOutURLFromSessionStorage = false;
3914
3519
  const _store = initiateStore2(config.storage);
3915
3520
  const _cryptoUtils = new SPACryptoUtils();
3916
- const _authenticationClient = new import_javascript9.AsgardeoAuthClient();
3521
+ const _authenticationClient = new import_javascript7.AsgardeoAuthClient();
3917
3522
  await _authenticationClient.initialize(config, _store, _cryptoUtils, instanceID);
3918
3523
  const _spaHelper = new SPAHelper(_authenticationClient);
3919
3524
  const _sessionManagementHelper = await SessionManagementHelper(
@@ -3925,7 +3530,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
3925
3530
  const signOutURL = await communicate(message);
3926
3531
  return signOutURL;
3927
3532
  } catch {
3928
- return SPAUtils.getSignOutURL(config.clientID, instanceID);
3533
+ return SPAUtils.getSignOutUrl(config.clientId, instanceID);
3929
3534
  }
3930
3535
  },
3931
3536
  config.storage,
@@ -3942,7 +3547,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
3942
3547
  return new Promise((resolve, reject) => {
3943
3548
  const timer = setTimeout(() => {
3944
3549
  reject(
3945
- new import_javascript9.AsgardeoAuthException(
3550
+ new import_javascript7.AsgardeoAuthException(
3946
3551
  "SPA-WEB_WORKER_CLIENT-COM-TO01",
3947
3552
  "Operation timed out.",
3948
3553
  "No response was received from the web worker for " + _requestTimeout / 1e3 + " since dispatching the request"
@@ -3965,7 +3570,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
3965
3570
  };
3966
3571
  });
3967
3572
  };
3968
- const requestCustomGrant = (requestParams) => {
3573
+ const exchangeToken = (requestParams) => {
3969
3574
  const message = {
3970
3575
  data: requestParams,
3971
3576
  type: REQUEST_CUSTOM_GRANT
@@ -4088,13 +3693,13 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4088
3693
  return communicate(message);
4089
3694
  };
4090
3695
  const checkSession = async () => {
4091
- const oidcEndpoints = await getOIDCServiceEndpoints();
3696
+ const oidcEndpoints = await getOpenIDProviderEndpoints();
4092
3697
  const config2 = await getConfigData();
4093
3698
  _authenticationHelper.initializeSessionManger(
4094
3699
  config2,
4095
3700
  oidcEndpoints,
4096
- async () => (await getBasicUserInfo()).sessionState,
4097
- async (params) => (await getAuthorizationURL(params)).authorizationURL,
3701
+ async () => (await _authenticationClient.getUserSession()).sessionState,
3702
+ async (params) => (await getSignInUrl(params)).authorizationURL,
4098
3703
  _sessionManagementHelper
4099
3704
  );
4100
3705
  };
@@ -4108,9 +3713,11 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4108
3713
  },
4109
3714
  type: GET_AUTH_URL
4110
3715
  };
4111
- const response = await communicate(message);
4112
- const pkceKey = (0, import_javascript9.extractPkceStorageKeyFromState)(
4113
- new URL(response.authorizationURL).searchParams.get(import_javascript9.OIDCRequestConstants.Params.STATE) ?? ""
3716
+ const response = await communicate(
3717
+ message
3718
+ );
3719
+ const pkceKey = (0, import_javascript7.extractPkceStorageKeyFromState)(
3720
+ new URL(response.authorizationURL).searchParams.get(import_javascript7.OIDCRequestConstants.Params.STATE) ?? ""
4114
3721
  );
4115
3722
  response.pkce && config2.enablePKCE && SPAUtils.setPKCE(pkceKey, response.pkce);
4116
3723
  const urlString = response.authorizationURL;
@@ -4128,7 +3735,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4128
3735
  tokenRequestConfig
4129
3736
  );
4130
3737
  };
4131
- const getAuthorizationURL = async (params) => {
3738
+ const getSignInUrl = async (params) => {
4132
3739
  const config2 = await getConfigData();
4133
3740
  const message = {
4134
3741
  data: params,
@@ -4137,8 +3744,8 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4137
3744
  return communicate(message).then(
4138
3745
  async (response) => {
4139
3746
  if (response.pkce && config2.enablePKCE) {
4140
- const pkceKey = (0, import_javascript9.extractPkceStorageKeyFromState)(
4141
- new URL(response.authorizationURL).searchParams.get(import_javascript9.OIDCRequestConstants.Params.STATE) ?? ""
3747
+ const pkceKey = (0, import_javascript7.extractPkceStorageKeyFromState)(
3748
+ new URL(response.authorizationURL).searchParams.get(import_javascript7.OIDCRequestConstants.Params.STATE) ?? ""
4142
3749
  );
4143
3750
  SPAUtils.setPKCE(pkceKey, response.pkce);
4144
3751
  }
@@ -4148,7 +3755,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4148
3755
  };
4149
3756
  const requestAccessToken = async (resolvedAuthorizationCode, resolvedSessionState, resolvedState, tokenRequestConfig) => {
4150
3757
  const config2 = await getConfigData();
4151
- const pkceKey = (0, import_javascript9.extractPkceStorageKeyFromState)(resolvedState);
3758
+ const pkceKey = (0, import_javascript7.extractPkceStorageKeyFromState)(resolvedState);
4152
3759
  const message = {
4153
3760
  data: {
4154
3761
  code: resolvedAuthorizationCode,
@@ -4165,7 +3772,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4165
3772
  type: GET_SIGN_OUT_URL
4166
3773
  };
4167
3774
  return communicate(message2).then((url) => {
4168
- SPAUtils.setSignOutURL(url, config2.clientID, instanceID);
3775
+ SPAUtils.setSignOutURL(url, config2.clientId, instanceID);
4169
3776
  if (config2.enableOIDCSessionManagement) {
4170
3777
  checkSession();
4171
3778
  }
@@ -4184,12 +3791,12 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4184
3791
  });
4185
3792
  };
4186
3793
  const tryRetrievingUserInfo = async () => {
4187
- if (await isAuthenticated()) {
3794
+ if (await isSignedIn()) {
4188
3795
  await startAutoRefreshToken();
4189
3796
  if (config.enableOIDCSessionManagement) {
4190
3797
  checkSession();
4191
3798
  }
4192
- return getBasicUserInfo();
3799
+ return getUser();
4193
3800
  }
4194
3801
  return Promise.resolve(void 0);
4195
3802
  };
@@ -4205,20 +3812,20 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4205
3812
  let resolvedAuthorizationCode;
4206
3813
  let resolvedSessionState;
4207
3814
  let resolvedState;
4208
- if (config?.responseMode === import_javascript9.ResponseMode.FormPost && authorizationCode) {
3815
+ if (config?.responseMode === "form_post" && authorizationCode) {
4209
3816
  resolvedAuthorizationCode = authorizationCode;
4210
3817
  resolvedSessionState = sessionState ?? "";
4211
3818
  resolvedState = state ?? "";
4212
3819
  } else {
4213
- resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(import_javascript9.OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
4214
- resolvedSessionState = new URL(window.location.href).searchParams.get(import_javascript9.OIDCRequestConstants.Params.SESSION_STATE) ?? "";
4215
- resolvedState = new URL(window.location.href).searchParams.get(import_javascript9.OIDCRequestConstants.Params.STATE) ?? "";
3820
+ resolvedAuthorizationCode = new URL(window.location.href).searchParams.get(import_javascript7.OIDCRequestConstants.Params.AUTHORIZATION_CODE) ?? "";
3821
+ resolvedSessionState = new URL(window.location.href).searchParams.get(import_javascript7.OIDCRequestConstants.Params.SESSION_STATE) ?? "";
3822
+ resolvedState = new URL(window.location.href).searchParams.get(import_javascript7.OIDCRequestConstants.Params.STATE) ?? "";
4216
3823
  SPAUtils.removeAuthorizationCode();
4217
3824
  }
4218
3825
  if (resolvedAuthorizationCode && resolvedState) {
4219
3826
  return requestAccessToken(resolvedAuthorizationCode, resolvedSessionState, resolvedState, tokenRequestConfig);
4220
3827
  }
4221
- return getAuthorizationURL(params).then(async (response) => {
3828
+ return getSignInUrl(params).then(async (response) => {
4222
3829
  location.href = response.authorizationURL;
4223
3830
  await SPAUtils.waitTillPageRedirect();
4224
3831
  return Promise.resolve({
@@ -4249,7 +3856,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4249
3856
  return reject(error);
4250
3857
  });
4251
3858
  } else {
4252
- window.location.href = SPAUtils.getSignOutURL(config.clientID, instanceID);
3859
+ window.location.href = SPAUtils.getSignOutUrl(config.clientId, instanceID);
4253
3860
  return SPAUtils.waitTillPageRedirect().then(() => {
4254
3861
  return Promise.resolve(true);
4255
3862
  });
@@ -4267,7 +3874,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4267
3874
  return Promise.reject(error);
4268
3875
  });
4269
3876
  };
4270
- const getOIDCServiceEndpoints = () => {
3877
+ const getOpenIDProviderEndpoints = () => {
4271
3878
  const message = {
4272
3879
  type: GET_OIDC_SERVICE_ENDPOINTS
4273
3880
  };
@@ -4287,7 +3894,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4287
3894
  return Promise.reject(error);
4288
3895
  });
4289
3896
  };
4290
- const getBasicUserInfo = () => {
3897
+ const getUser = () => {
4291
3898
  const message = {
4292
3899
  type: GET_BASIC_USER_INFO
4293
3900
  };
@@ -4297,7 +3904,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4297
3904
  return Promise.reject(error);
4298
3905
  });
4299
3906
  };
4300
- const getDecodedIDToken = () => {
3907
+ const getDecodedIdToken = () => {
4301
3908
  const message = {
4302
3909
  type: GET_DECODED_ID_TOKEN
4303
3910
  };
@@ -4317,7 +3924,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4317
3924
  return Promise.reject(error);
4318
3925
  });
4319
3926
  };
4320
- const getCryptoHelper = () => {
3927
+ const getCrypto = () => {
4321
3928
  const message = {
4322
3929
  type: GET_CRYPTO_HELPER
4323
3930
  };
@@ -4327,7 +3934,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4327
3934
  return Promise.reject(error);
4328
3935
  });
4329
3936
  };
4330
- const getIDToken = () => {
3937
+ const getIdToken = () => {
4331
3938
  const message = {
4332
3939
  type: GET_ID_TOKEN
4333
3940
  };
@@ -4337,7 +3944,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4337
3944
  return Promise.reject(error);
4338
3945
  });
4339
3946
  };
4340
- const isAuthenticated = () => {
3947
+ const isSignedIn = () => {
4341
3948
  const message = {
4342
3949
  type: IS_AUTHENTICATED
4343
3950
  };
@@ -4373,7 +3980,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4373
3980
  httpClientHandlers.requestFinishCallback = callback;
4374
3981
  }
4375
3982
  };
4376
- const updateConfig = async (newConfig) => {
3983
+ const reInitialize = async (newConfig) => {
4377
3984
  const existingConfig = await getConfigData();
4378
3985
  const isCheckSessionIframeDifferent = !(existingConfig && existingConfig.endpoints && existingConfig.endpoints.checkSessionIframe && newConfig && newConfig.endpoints && newConfig.endpoints.checkSessionIframe && existingConfig.endpoints.checkSessionIframe === newConfig.endpoints.checkSessionIframe);
4379
3986
  const config2 = { ...existingConfig, ...newConfig };
@@ -4390,19 +3997,19 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4390
3997
  return {
4391
3998
  disableHttpHandler,
4392
3999
  enableHttpHandler,
4393
- getBasicUserInfo,
4000
+ getUser,
4394
4001
  getConfigData,
4395
- getCryptoHelper,
4002
+ getCrypto,
4396
4003
  getDecodedIDPIDToken,
4397
- getDecodedIDToken,
4398
- getIDToken,
4399
- getOIDCServiceEndpoints,
4004
+ getDecodedIdToken,
4005
+ getIdToken,
4006
+ getOpenIDProviderEndpoints,
4400
4007
  httpRequest,
4401
4008
  httpRequestAll,
4402
4009
  initialize,
4403
- isAuthenticated,
4010
+ isSignedIn,
4404
4011
  refreshAccessToken,
4405
- requestCustomGrant,
4012
+ exchangeToken,
4406
4013
  revokeAccessToken,
4407
4014
  setHttpRequestErrorCallback,
4408
4015
  setHttpRequestFinishCallback,
@@ -4411,7 +4018,7 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4411
4018
  signIn,
4412
4019
  signOut,
4413
4020
  trySignInSilently,
4414
- updateConfig
4021
+ reInitialize
4415
4022
  };
4416
4023
  };
4417
4024
 
@@ -4419,7 +4026,6 @@ var WebWorkerClient = async (instanceID, config, webWorker, getAuthHelper) => {
4419
4026
  var DefaultConfig = {
4420
4027
  autoLogoutOnTokenRefreshError: true,
4421
4028
  checkSessionInterval: 3,
4422
- clientHost: origin,
4423
4029
  enableOIDCSessionManagement: false,
4424
4030
  periodicTokenRefresh: false,
4425
4031
  sessionRefreshInterval: 300,
@@ -4430,7 +4036,8 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4430
4036
  __publicField(this, "_client");
4431
4037
  __publicField(this, "_storage");
4432
4038
  __publicField(this, "_authHelper", AuthenticationHelper);
4433
- __publicField(this, "_worker", worker_default);
4039
+ // protected _worker: new () => Worker = WorkerFile;
4040
+ __publicField(this, "_worker", null);
4434
4041
  __publicField(this, "_initialized", false);
4435
4042
  __publicField(this, "_startedInitialize", false);
4436
4043
  __publicField(this, "_onSignInCallback", () => null);
@@ -4449,13 +4056,13 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4449
4056
  this._authHelper = AuthenticationHelper;
4450
4057
  }
4451
4058
  }
4452
- instantiateWorker(worker) {
4453
- if (worker) {
4454
- this._worker = worker;
4455
- } else {
4456
- this._worker = worker_default;
4457
- }
4458
- }
4059
+ // public instantiateWorker(worker: new () => Worker) {
4060
+ // if (worker) {
4061
+ // this._worker = worker;
4062
+ // } else {
4063
+ // this._worker = WorkerFile;
4064
+ // }
4065
+ // }
4459
4066
  /**
4460
4067
  * This method specifies if the `AsgardeoSPAClient` has been initialized or not.
4461
4068
  *
@@ -4465,7 +4072,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4465
4072
  *
4466
4073
  * @private
4467
4074
  */
4468
- async _isInitialized() {
4075
+ async isInitialized() {
4469
4076
  if (!this._startedInitialize) {
4470
4077
  return false;
4471
4078
  }
@@ -4495,18 +4102,18 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4495
4102
  * @private
4496
4103
  */
4497
4104
  async _validateMethod(validateAuthentication = true) {
4498
- if (!await this._isInitialized()) {
4105
+ if (!await this.isInitialized()) {
4499
4106
  return Promise.reject(
4500
- new import_javascript10.AsgardeoAuthException(
4107
+ new import_javascript8.AsgardeoAuthException(
4501
4108
  "SPA-AUTH_CLIENT-VM-NF01",
4502
4109
  "The SDK is not initialized.",
4503
4110
  "The SDK must be initialized first."
4504
4111
  )
4505
4112
  );
4506
4113
  }
4507
- if (validateAuthentication && !await this.isAuthenticated()) {
4114
+ if (validateAuthentication && !await this.isSignedIn()) {
4508
4115
  return Promise.reject(
4509
- new import_javascript10.AsgardeoAuthException(
4116
+ new import_javascript8.AsgardeoAuthException(
4510
4117
  "SPA-AUTH_CLIENT-VM-IV02",
4511
4118
  "The user is not authenticated.",
4512
4119
  "The user must be authenticated first."
@@ -4556,8 +4163,8 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4556
4163
  * @example
4557
4164
  * ```
4558
4165
  * auth.initialize({
4559
- * signInRedirectURL: "http://localhost:3000/sign-in",
4560
- * clientID: "client ID",
4166
+ * afterSignInUrl: "http://localhost:3000/sign-in",
4167
+ * clientId: "client ID",
4561
4168
  * baseUrl: "https://api.asgardeo.io"
4562
4169
  * });
4563
4170
  * ```
@@ -4573,7 +4180,6 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4573
4180
  this._initialized = false;
4574
4181
  this._startedInitialize = true;
4575
4182
  authHelper && this.instantiateAuthHelper(authHelper);
4576
- workerFile && this.instantiateWorker(workerFile);
4577
4183
  const _config = await this._client?.getConfigData();
4578
4184
  if (!(this._storage === "webWorker" /* WebWorker */)) {
4579
4185
  const mainThreadClientConfig = config;
@@ -4634,11 +4240,11 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4634
4240
  /**
4635
4241
  * This method returns a Promise that resolves with the basic user information obtained from the ID token.
4636
4242
  *
4637
- * @return {Promise<BasicUserInfo>} - A promise that resolves with the user information.
4243
+ * @return {Promise<User>} - A promise that resolves with the user information.
4638
4244
  *
4639
4245
  * @example
4640
4246
  * ```
4641
- * auth.getBasicUserInfo().then((response) => {
4247
+ * auth.getUser().then((response) => {
4642
4248
  * // console.log(response);
4643
4249
  * }).catch((error) => {
4644
4250
  * // console.error(error);
@@ -4651,9 +4257,9 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4651
4257
  *
4652
4258
  * @preserve
4653
4259
  */
4654
- async getBasicUserInfo() {
4260
+ async getUser() {
4655
4261
  await this._validateMethod();
4656
- return this._client?.getBasicUserInfo();
4262
+ return this._client?.getUser();
4657
4263
  }
4658
4264
  /**
4659
4265
  * This method initiates the authentication flow. This should be called twice.
@@ -4678,7 +4284,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4678
4284
  * @param {string} sessionState - The session state. (Optional)
4679
4285
  * @param {string} state - The state. (Optional)
4680
4286
  *
4681
- * @return {Promise<BasicUserInfo>} - A promise that resolves with the user information.
4287
+ * @return {Promise<User>} - A promise that resolves with the user information.
4682
4288
  *
4683
4289
  * @example
4684
4290
  * ```
@@ -4692,16 +4298,14 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4692
4298
  * @preserve
4693
4299
  */
4694
4300
  async signIn(config, authorizationCode, sessionState, state, tokenRequestConfig) {
4695
- await this._isInitialized();
4301
+ await this.isInitialized();
4696
4302
  if (!SPAUtils.canContinueSignIn(Boolean(config?.callOnlyOnRedirect), authorizationCode)) {
4697
4303
  return void 0;
4698
4304
  }
4699
4305
  delete config?.callOnlyOnRedirect;
4700
4306
  return this._client?.signIn(config, authorizationCode, sessionState, state, tokenRequestConfig).then((response) => {
4701
4307
  if (this._onSignInCallback) {
4702
- if (response.allowedScopes || response.displayName || response.email || response.username) {
4703
- this._onSignInCallback(response);
4704
- }
4308
+ this._onSignInCallback(response);
4705
4309
  }
4706
4310
  return response;
4707
4311
  });
@@ -4714,7 +4318,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4714
4318
  * If this method is to be called on page load and the `signIn` method is also to be called on page load,
4715
4319
  * then it is advisable to call this method after the `signIn` call.
4716
4320
  *
4717
- * @return {Promise<BasicUserInfo | boolean>} - A Promise that resolves with the user information after signing in
4321
+ * @return {Promise<User | boolean>} - A Promise that resolves with the user information after signing in
4718
4322
  * or with `false` if the user is not signed in.
4719
4323
  *
4720
4324
  * @example
@@ -4723,16 +4327,13 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4723
4327
  *```
4724
4328
  */
4725
4329
  async trySignInSilently(additionalParams, tokenRequestConfig) {
4726
- await this._isInitialized();
4330
+ await this.isInitialized();
4727
4331
  if (SPAUtils.wasSignInCalled()) {
4728
4332
  return void 0;
4729
4333
  }
4730
4334
  return this._client?.trySignInSilently(additionalParams, tokenRequestConfig).then((response) => {
4731
4335
  if (this._onSignInCallback && response) {
4732
- const basicUserInfo = response;
4733
- if (basicUserInfo.allowedScopes || basicUserInfo.displayName || basicUserInfo.email || basicUserInfo.username) {
4734
- this._onSignInCallback(basicUserInfo);
4735
- }
4336
+ this._onSignInCallback(response);
4736
4337
  }
4737
4338
  return response;
4738
4339
  });
@@ -4885,7 +4486,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4885
4486
  *
4886
4487
  * @preserve
4887
4488
  */
4888
- async requestCustomGrant(config) {
4489
+ async exchangeToken(config) {
4889
4490
  if (config.signInRequired) {
4890
4491
  await this._validateMethod();
4891
4492
  } else {
@@ -4893,14 +4494,14 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4893
4494
  }
4894
4495
  if (!config.id) {
4895
4496
  return Promise.reject(
4896
- new import_javascript10.AsgardeoAuthException(
4497
+ new import_javascript8.AsgardeoAuthException(
4897
4498
  "SPA-AUTH_CLIENT-RCG-NF01",
4898
4499
  "The custom grant request id not found.",
4899
4500
  "The id attribute of the custom grant config object passed as an argument should have a value."
4900
4501
  )
4901
4502
  );
4902
4503
  }
4903
- const customGrantResponse = await this._client?.requestCustomGrant(config);
4504
+ const customGrantResponse = await this._client?.exchangeToken(config);
4904
4505
  const customGrantCallback = this._onCustomGrant.get(config.id);
4905
4506
  customGrantCallback && customGrantCallback(this._onCustomGrant?.get(config.id));
4906
4507
  return customGrantResponse;
@@ -4951,9 +4552,9 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4951
4552
  *
4952
4553
  * @preserve
4953
4554
  */
4954
- async getOIDCServiceEndpoints() {
4955
- await this._isInitialized();
4956
- return this._client?.getOIDCServiceEndpoints();
4555
+ async getOpenIDProviderEndpoints() {
4556
+ await this.isInitialized();
4557
+ return this._client?.getOpenIDProviderEndpoints();
4957
4558
  }
4958
4559
  /**
4959
4560
  * This methods returns the Axios http client.
@@ -4970,13 +4571,13 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4970
4571
  const mainThreadClient = this._client;
4971
4572
  return mainThreadClient.getHttpClient();
4972
4573
  }
4973
- throw new import_javascript10.AsgardeoAuthException(
4574
+ throw new import_javascript8.AsgardeoAuthException(
4974
4575
  "SPA-AUTH_CLIENT-GHC-IV01",
4975
4576
  "Http client cannot be returned.",
4976
4577
  "The http client cannot be returned when the storage type is set to webWorker."
4977
4578
  );
4978
4579
  }
4979
- throw new import_javascript10.AsgardeoAuthException(
4580
+ throw new import_javascript8.AsgardeoAuthException(
4980
4581
  "SPA-AUTH_CLIENT-GHC-NF02",
4981
4582
  "The SDK is not initialized.",
4982
4583
  "The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method."
@@ -4990,7 +4591,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
4990
4591
  *
4991
4592
  * @example
4992
4593
  * ```
4993
- * auth.getDecodedIDToken().then((response)=>{
4594
+ * auth.getDecodedIdToken().then((response)=>{
4994
4595
  * // console.log(response);
4995
4596
  * }).catch((error)=>{
4996
4597
  * // console.error(error);
@@ -5002,9 +4603,9 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5002
4603
  *
5003
4604
  * @preserve
5004
4605
  */
5005
- async getDecodedIDToken() {
4606
+ async getDecodedIdToken() {
5006
4607
  await this._validateMethod();
5007
- return this._client?.getDecodedIDToken();
4608
+ return this._client?.getDecodedIdToken();
5008
4609
  }
5009
4610
  /**
5010
4611
  * This method returns the IsomorphicCrypto instance.
@@ -5014,21 +4615,21 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5014
4615
  *
5015
4616
  * @example
5016
4617
  * ```
5017
- * auth.getCryptoHelper().then((response)=>{
4618
+ * auth.getCrypto().then((response)=>{
5018
4619
  * // console.log(response);
5019
4620
  * }).catch((error)=>{
5020
4621
  * // console.error(error);
5021
4622
  * });
5022
4623
  * ```
5023
- * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#getCryptoHelper
4624
+ * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#getCrypto
5024
4625
  *
5025
4626
  * @memberof AsgardeoSPAClient
5026
4627
  *
5027
4628
  * @preserve
5028
4629
  */
5029
- async getCryptoHelper() {
4630
+ async getCrypto() {
5030
4631
  await this._validateMethod();
5031
- return this._client?.getCryptoHelper();
4632
+ return this._client?.getCrypto();
5032
4633
  }
5033
4634
  /**
5034
4635
  * This method return the ID token.
@@ -5037,18 +4638,18 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5037
4638
  *
5038
4639
  * @example
5039
4640
  * ```
5040
- * const idToken = await auth.getIDToken();
4641
+ * const idToken = await auth.getIdToken();
5041
4642
  * ```
5042
4643
  *
5043
- * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#getIDToken
4644
+ * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#getIdToken
5044
4645
  *
5045
4646
  * @memberof AsgardeoAuthClient
5046
4647
  *
5047
4648
  * @preserve
5048
4649
  */
5049
- async getIDToken() {
4650
+ async getIdToken() {
5050
4651
  await this._validateMethod();
5051
- return this._client?.getIDToken();
4652
+ return this._client?.getIdToken();
5052
4653
  }
5053
4654
  /**
5054
4655
  * This method return a Promise that resolves with the access token.
@@ -5076,7 +4677,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5076
4677
  await this._validateMethod();
5077
4678
  if (this._storage && [("webWorker" /* WebWorker */, "browserMemory" /* BrowserMemory */)].includes(this._storage)) {
5078
4679
  return Promise.reject(
5079
- new import_javascript10.AsgardeoAuthException(
4680
+ new import_javascript8.AsgardeoAuthException(
5080
4681
  "SPA-AUTH_CLIENT-GAT-IV01",
5081
4682
  "The access token cannot be returned.",
5082
4683
  "The access token cannot be returned when the storage type is set to webWorker or browserMemory."
@@ -5112,7 +4713,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5112
4713
  await this._validateMethod();
5113
4714
  if (this._storage && [("webWorker" /* WebWorker */, "browserMemory" /* BrowserMemory */)].includes(this._storage)) {
5114
4715
  return Promise.reject(
5115
- new import_javascript10.AsgardeoAuthException(
4716
+ new import_javascript8.AsgardeoAuthException(
5116
4717
  "SPA-AUTH_CLIENT-GIAT-IV01",
5117
4718
  "The access token cannot be returned.",
5118
4719
  "The access token cannot be returned when the storage type is set to webWorker or browserMemory."
@@ -5131,7 +4732,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5131
4732
  *
5132
4733
  * @example
5133
4734
  * ```
5134
- * auth.getDataLayer().then((dataLayer) => {
4735
+ * auth.getStorageManager().then((dataLayer) => {
5135
4736
  * // console.log(dataLayer);
5136
4737
  * }).catch((error) => {
5137
4738
  * // console.error(error);
@@ -5144,11 +4745,11 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5144
4745
  *
5145
4746
  * @preserve
5146
4747
  */
5147
- async getDataLayer() {
4748
+ async getStorageManager() {
5148
4749
  await this._validateMethod();
5149
4750
  if (this._storage && [("webWorker" /* WebWorker */, "browserMemory" /* BrowserMemory */)].includes(this._storage)) {
5150
4751
  return Promise.reject(
5151
- new import_javascript10.AsgardeoAuthException(
4752
+ new import_javascript8.AsgardeoAuthException(
5152
4753
  "SPA-AUTH_CLIENT-GDL-IV01",
5153
4754
  "The data layer cannot be returned.",
5154
4755
  "The data layer cannot be returned when the storage type is set to webWorker or browserMemory."
@@ -5156,7 +4757,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5156
4757
  );
5157
4758
  }
5158
4759
  const mainThreadClient = this._client;
5159
- return mainThreadClient.getDataLayer();
4760
+ return mainThreadClient.getStorageManager();
5160
4761
  }
5161
4762
  /**
5162
4763
  * This method return a Promise that resolves with the config data stored in the storage.
@@ -5215,9 +4816,9 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5215
4816
  *
5216
4817
  * @preserve
5217
4818
  */
5218
- async isAuthenticated() {
5219
- await this._isInitialized();
5220
- return this._client?.isAuthenticated();
4819
+ async isSignedIn() {
4820
+ await this.isInitialized();
4821
+ return this._client?.isSignedIn();
5221
4822
  }
5222
4823
  /**
5223
4824
  * This method specifies if there is an active session in the browser or not.
@@ -5229,10 +4830,10 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5229
4830
  * @preserve
5230
4831
  */
5231
4832
  async isSessionActive() {
5232
- await this._isInitialized();
4833
+ await this.isInitialized();
5233
4834
  if (this._storage && [("webWorker" /* WebWorker */, "browserMemory" /* BrowserMemory */)].includes(this._storage)) {
5234
4835
  return Promise.reject(
5235
- new import_javascript10.AsgardeoAuthException(
4836
+ new import_javascript8.AsgardeoAuthException(
5236
4837
  "SPA-AUTH_CLIENT-ISA-IV01",
5237
4838
  "The active session cannot be returned.",
5238
4839
  "The active session cannot be returned when the storage type is set to webWorker or browserMemory."
@@ -5243,7 +4844,7 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5243
4844
  return mainThreadClient?.isSessionActive();
5244
4845
  }
5245
4846
  async on(hook, callback, id) {
5246
- await this._isInitialized();
4847
+ await this.isInitialized();
5247
4848
  if (callback && typeof callback === "function") {
5248
4849
  switch (hook) {
5249
4850
  case "sign-in" /* SignIn */:
@@ -5282,115 +4883,462 @@ var _AsgardeoSPAClient = class _AsgardeoSPAClient {
5282
4883
  if (signOutFail) {
5283
4884
  this._onSignOutFailedCallback(signOutFail);
5284
4885
  }
5285
- break;
4886
+ break;
4887
+ }
4888
+ default:
4889
+ throw new import_javascript8.AsgardeoAuthException("SPA-AUTH_CLIENT-ON-IV01", "Invalid hook.", "The provided hook is invalid.");
4890
+ }
4891
+ } else {
4892
+ throw new import_javascript8.AsgardeoAuthException(
4893
+ "SPA-AUTH_CLIENT-ON-IV02",
4894
+ "Invalid callback function.",
4895
+ "The provided callback function is invalid."
4896
+ );
4897
+ }
4898
+ }
4899
+ /**
4900
+ * This method enables callback functions attached to the http client.
4901
+ *
4902
+ * @return {Promise<boolean>} - A promise that resolves with True.
4903
+ *
4904
+ * @example
4905
+ * ```
4906
+ * auth.enableHttpHandler();
4907
+ * ```
4908
+ *
4909
+ * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#enableHttpHandler
4910
+ *
4911
+ * @memberof AsgardeoSPAClient
4912
+ *
4913
+ * @preserve
4914
+ */
4915
+ async enableHttpHandler() {
4916
+ await this.isInitialized();
4917
+ return this._client?.enableHttpHandler();
4918
+ }
4919
+ /**
4920
+ * This method disables callback functions attached to the http client.
4921
+ *
4922
+ * @return {Promise<boolean>} - A promise that resolves with True.
4923
+ *
4924
+ * @example
4925
+ * ```
4926
+ * auth.disableHttpHandler();
4927
+ * ```
4928
+ *
4929
+ * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#disableHttpHandler
4930
+ *
4931
+ * @memberof AsgardeoSPAClient
4932
+ *
4933
+ * @preserve
4934
+ */
4935
+ async disableHttpHandler() {
4936
+ await this.isInitialized();
4937
+ return this._client?.disableHttpHandler();
4938
+ }
4939
+ /**
4940
+ * This method updates the configuration that was passed into the constructor when instantiating this class.
4941
+ *
4942
+ * @param {Partial<AuthClientConfig<T>>} config - A config object to update the SDK configurations with.
4943
+ *
4944
+ * @example
4945
+ * ```
4946
+ * const config = {
4947
+ * afterSignInUrl: "http://localhost:3000/sign-in",
4948
+ * clientId: "client ID",
4949
+ * baseUrl: "https://api.asgardeo.io"
4950
+ * }
4951
+ * const auth.reInitialize(config);
4952
+ * ```
4953
+ * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master/lib#reInitialize
4954
+ *
4955
+ * @memberof AsgardeoAuthClient
4956
+ *
4957
+ * @preserve
4958
+ */
4959
+ async reInitialize(config) {
4960
+ await this.isInitialized();
4961
+ if (this._storage === "webWorker" /* WebWorker */) {
4962
+ const client = this._client;
4963
+ await client.reInitialize(config);
4964
+ } else {
4965
+ const client = this._client;
4966
+ await client.reInitialize(config);
4967
+ }
4968
+ return;
4969
+ }
4970
+ };
4971
+ __publicField(_AsgardeoSPAClient, "_instances", /* @__PURE__ */ new Map());
4972
+ var AsgardeoSPAClient = _AsgardeoSPAClient;
4973
+
4974
+ // src/__legacy__/models/http-client.ts
4975
+ var import_axios2 = require("axios");
4976
+
4977
+ // src/__legacy__/models/web-worker.ts
4978
+ var WebWorkerClass = class {
4979
+ constructor() {
4980
+ __publicField(this, "onmessage", () => null);
4981
+ __publicField(this, "postMessage", () => null);
4982
+ }
4983
+ };
4984
+
4985
+ // src/__legacy__/worker/worker-receiver.ts
4986
+ var import_javascript10 = require("@asgardeo/javascript");
4987
+
4988
+ // src/__legacy__/worker/worker-core.ts
4989
+ var import_javascript9 = require("@asgardeo/javascript");
4990
+ var WebWorkerCore = async (config, getAuthHelper) => {
4991
+ const _store = new MemoryStore();
4992
+ const _cryptoUtils = new SPACryptoUtils();
4993
+ const _authenticationClient = new import_javascript9.AsgardeoAuthClient();
4994
+ await _authenticationClient.initialize(config, _store, _cryptoUtils);
4995
+ const _spaHelper = new SPAHelper(_authenticationClient);
4996
+ const _authenticationHelper = getAuthHelper(
4997
+ _authenticationClient,
4998
+ _spaHelper
4999
+ );
5000
+ const _dataLayer = _authenticationClient.getStorageManager();
5001
+ const _httpClient = HttpClient.getInstance();
5002
+ const attachToken = async (request) => {
5003
+ await _authenticationHelper.attachTokenToRequestConfig(request);
5004
+ };
5005
+ _httpClient?.init && await _httpClient.init(true, attachToken);
5006
+ const setHttpRequestStartCallback = (callback) => {
5007
+ _httpClient?.setHttpRequestStartCallback && _httpClient.setHttpRequestStartCallback(callback);
5008
+ };
5009
+ const setHttpRequestSuccessCallback = (callback) => {
5010
+ _httpClient?.setHttpRequestSuccessCallback && _httpClient.setHttpRequestSuccessCallback(callback);
5011
+ };
5012
+ const setHttpRequestFinishCallback = (callback) => {
5013
+ _httpClient?.setHttpRequestFinishCallback && _httpClient.setHttpRequestFinishCallback(callback);
5014
+ };
5015
+ const httpRequest = async (requestConfig) => {
5016
+ return await _authenticationHelper.httpRequest(_httpClient, requestConfig);
5017
+ };
5018
+ const httpRequestAll = async (requestConfigs) => {
5019
+ return await _authenticationHelper.httpRequestAll(requestConfigs, _httpClient);
5020
+ };
5021
+ const enableHttpHandler = () => {
5022
+ _authenticationHelper.enableHttpHandler(_httpClient);
5023
+ };
5024
+ const disableHttpHandler = () => {
5025
+ _authenticationHelper.disableHttpHandler(_httpClient);
5026
+ };
5027
+ const getSignInUrl = async (params) => {
5028
+ return _authenticationClient.getSignInUrl(params).then(async (url) => {
5029
+ const urlObject = new URL(url);
5030
+ const state = urlObject.searchParams.get(import_javascript9.OIDCRequestConstants.Params.STATE) ?? "";
5031
+ const pkce = await _authenticationClient.getPKCECode(state);
5032
+ return { authorizationURL: url, pkce };
5033
+ }).catch((error) => Promise.reject(error));
5034
+ };
5035
+ const startAutoRefreshToken = async () => {
5036
+ _spaHelper.clearRefreshTokenTimeout();
5037
+ _spaHelper.refreshAccessTokenAutomatically(_authenticationHelper);
5038
+ return;
5039
+ };
5040
+ const requestAccessToken = async (authorizationCode, sessionState, pkce, state) => {
5041
+ return await _authenticationHelper.requestAccessToken(authorizationCode, sessionState, void 0, pkce, state);
5042
+ };
5043
+ const signOut = async () => {
5044
+ _spaHelper.clearRefreshTokenTimeout();
5045
+ return await _authenticationClient.getSignOutUrl();
5046
+ };
5047
+ const getSignOutUrl = async () => {
5048
+ return await _authenticationClient.getSignOutUrl();
5049
+ };
5050
+ const exchangeToken = async (config2) => {
5051
+ return await _authenticationHelper.exchangeToken(config2);
5052
+ };
5053
+ const refreshAccessToken = async () => {
5054
+ try {
5055
+ return await _authenticationHelper.refreshAccessToken();
5056
+ } catch (error) {
5057
+ return Promise.reject(error);
5058
+ }
5059
+ };
5060
+ const revokeAccessToken = async () => {
5061
+ const timer = await _spaHelper.getRefreshTimeoutTimer();
5062
+ return _authenticationClient.revokeAccessToken().then(() => {
5063
+ _spaHelper.clearRefreshTokenTimeout(timer);
5064
+ return Promise.resolve(true);
5065
+ }).catch((error) => Promise.reject(error));
5066
+ };
5067
+ const getUser = async () => {
5068
+ return _authenticationHelper.getUser();
5069
+ };
5070
+ const getDecodedIdToken = async () => {
5071
+ return _authenticationHelper.getDecodedIdToken();
5072
+ };
5073
+ const getCrypto = async () => {
5074
+ return _authenticationHelper.getCrypto();
5075
+ };
5076
+ const getDecodedIDPIDToken = async () => {
5077
+ return _authenticationHelper.getDecodedIDPIDToken();
5078
+ };
5079
+ const getIdToken = async () => {
5080
+ return _authenticationHelper.getIdToken();
5081
+ };
5082
+ const getOpenIDProviderEndpoints = async () => {
5083
+ return _authenticationHelper.getOpenIDProviderEndpoints();
5084
+ };
5085
+ const getAccessToken = () => {
5086
+ return _authenticationHelper.getAccessToken();
5087
+ };
5088
+ const isSignedIn = () => {
5089
+ return _authenticationHelper.isSignedIn();
5090
+ };
5091
+ const setSessionState = async (sessionState) => {
5092
+ await _dataLayer.setSessionDataParameter(
5093
+ import_javascript9.OIDCRequestConstants.Params.SESSION_STATE,
5094
+ sessionState
5095
+ );
5096
+ return;
5097
+ };
5098
+ const reInitialize = async (config2) => {
5099
+ await _authenticationClient.reInitialize(config2);
5100
+ return;
5101
+ };
5102
+ const getConfigData = async () => {
5103
+ return _dataLayer.getConfigData();
5104
+ };
5105
+ return {
5106
+ disableHttpHandler,
5107
+ enableHttpHandler,
5108
+ getAccessToken,
5109
+ getSignInUrl,
5110
+ getUser,
5111
+ getConfigData,
5112
+ getCrypto,
5113
+ getDecodedIDPIDToken,
5114
+ getDecodedIdToken,
5115
+ getIdToken,
5116
+ getOpenIDProviderEndpoints,
5117
+ getSignOutUrl,
5118
+ httpRequest,
5119
+ httpRequestAll,
5120
+ isSignedIn,
5121
+ refreshAccessToken,
5122
+ requestAccessToken,
5123
+ exchangeToken,
5124
+ revokeAccessToken,
5125
+ setHttpRequestFinishCallback,
5126
+ setHttpRequestStartCallback,
5127
+ setHttpRequestSuccessCallback,
5128
+ setSessionState,
5129
+ signOut,
5130
+ startAutoRefreshToken,
5131
+ reInitialize
5132
+ };
5133
+ };
5134
+
5135
+ // src/__legacy__/worker/worker-receiver.ts
5136
+ var workerReceiver = (getAuthHelper) => {
5137
+ const ctx = self;
5138
+ let webWorker;
5139
+ ctx.onmessage = async ({ data, ports }) => {
5140
+ const port = ports[0];
5141
+ if (data.type !== INIT && !webWorker) {
5142
+ port.postMessage(
5143
+ MessageUtils.generateFailureMessage(
5144
+ new import_javascript10.AsgardeoAuthException(
5145
+ "SPA-CLIENT_WORKER-ONMSG-NF01",
5146
+ "The web worker has not been initialized yet.",
5147
+ "The initialize method needs to be called before the specified operation can be carried out."
5148
+ )
5149
+ )
5150
+ );
5151
+ return;
5152
+ }
5153
+ switch (data.type) {
5154
+ case INIT:
5155
+ try {
5156
+ const config = { ...data.data };
5157
+ webWorker = await WebWorkerCore(config, getAuthHelper);
5158
+ webWorker.setHttpRequestFinishCallback(onRequestFinishCallback);
5159
+ webWorker.setHttpRequestStartCallback(onRequestStartCallback);
5160
+ webWorker.setHttpRequestSuccessCallback(onRequestSuccessCallback);
5161
+ port.postMessage(MessageUtils.generateSuccessMessage());
5162
+ } catch (error) {
5163
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5164
+ }
5165
+ break;
5166
+ case GET_AUTH_URL:
5167
+ webWorker.getSignInUrl(data?.data).then((response) => {
5168
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5169
+ }).catch((error) => {
5170
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5171
+ });
5172
+ break;
5173
+ case REQUEST_ACCESS_TOKEN:
5174
+ webWorker.requestAccessToken(data?.data?.code, data?.data?.sessionState, data?.data?.pkce, data?.data?.state).then((response) => {
5175
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5176
+ }).catch((error) => {
5177
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5178
+ });
5179
+ break;
5180
+ case HTTP_REQUEST: {
5181
+ const request = data.data;
5182
+ const requestData = request?.data;
5183
+ if (data.data?.data?.formData === true) {
5184
+ const formData = new FormData();
5185
+ for (const key in requestData) {
5186
+ if (key === "formData") {
5187
+ continue;
5188
+ }
5189
+ formData.append(key, requestData[key]);
5190
+ }
5191
+ request.data = formData;
5286
5192
  }
5287
- default:
5288
- throw new import_javascript10.AsgardeoAuthException("SPA-AUTH_CLIENT-ON-IV01", "Invalid hook.", "The provided hook is invalid.");
5193
+ webWorker.httpRequest(request).then((response) => {
5194
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5195
+ }).catch((error) => {
5196
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5197
+ });
5198
+ break;
5289
5199
  }
5290
- } else {
5291
- throw new import_javascript10.AsgardeoAuthException(
5292
- "SPA-AUTH_CLIENT-ON-IV02",
5293
- "Invalid callback function.",
5294
- "The provided callback function is invalid."
5295
- );
5296
- }
5297
- }
5298
- /**
5299
- * This method enables callback functions attached to the http client.
5300
- *
5301
- * @return {Promise<boolean>} - A promise that resolves with True.
5302
- *
5303
- * @example
5304
- * ```
5305
- * auth.enableHttpHandler();
5306
- * ```
5307
- *
5308
- * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#enableHttpHandler
5309
- *
5310
- * @memberof AsgardeoSPAClient
5311
- *
5312
- * @preserve
5313
- */
5314
- async enableHttpHandler() {
5315
- await this._isInitialized();
5316
- return this._client?.enableHttpHandler();
5317
- }
5318
- /**
5319
- * This method disables callback functions attached to the http client.
5320
- *
5321
- * @return {Promise<boolean>} - A promise that resolves with True.
5322
- *
5323
- * @example
5324
- * ```
5325
- * auth.disableHttpHandler();
5326
- * ```
5327
- *
5328
- * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master#disableHttpHandler
5329
- *
5330
- * @memberof AsgardeoSPAClient
5331
- *
5332
- * @preserve
5333
- */
5334
- async disableHttpHandler() {
5335
- await this._isInitialized();
5336
- return this._client?.disableHttpHandler();
5337
- }
5338
- /**
5339
- * This method updates the configuration that was passed into the constructor when instantiating this class.
5340
- *
5341
- * @param {Partial<AuthClientConfig<T>>} config - A config object to update the SDK configurations with.
5342
- *
5343
- * @example
5344
- * ```
5345
- * const config = {
5346
- * signInRedirectURL: "http://localhost:3000/sign-in",
5347
- * clientID: "client ID",
5348
- * baseUrl: "https://api.asgardeo.io"
5349
- * }
5350
- * const auth.updateConfig(config);
5351
- * ```
5352
- * @link https://github.com/asgardeo/asgardeo-auth-spa-sdk/tree/master/lib#updateConfig
5353
- *
5354
- * @memberof AsgardeoAuthClient
5355
- *
5356
- * @preserve
5357
- */
5358
- async updateConfig(config) {
5359
- await this._isInitialized();
5360
- if (this._storage === "webWorker" /* WebWorker */) {
5361
- const client = this._client;
5362
- await client.updateConfig(config);
5363
- } else {
5364
- const client = this._client;
5365
- await client.updateConfig(config);
5200
+ case HTTP_REQUEST_ALL:
5201
+ webWorker.httpRequestAll(data.data).then((response) => {
5202
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5203
+ }).catch((error) => {
5204
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5205
+ });
5206
+ break;
5207
+ case SIGN_OUT:
5208
+ try {
5209
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.signOut()));
5210
+ } catch (error) {
5211
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5212
+ }
5213
+ break;
5214
+ case REQUEST_CUSTOM_GRANT:
5215
+ webWorker.exchangeToken(data.data).then((response) => {
5216
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5217
+ }).catch((error) => {
5218
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5219
+ });
5220
+ break;
5221
+ case REVOKE_ACCESS_TOKEN:
5222
+ webWorker.revokeAccessToken().then((response) => {
5223
+ port.postMessage(MessageUtils.generateSuccessMessage(response));
5224
+ }).catch((error) => {
5225
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5226
+ });
5227
+ break;
5228
+ case GET_OIDC_SERVICE_ENDPOINTS:
5229
+ try {
5230
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getOpenIDProviderEndpoints()));
5231
+ } catch (error) {
5232
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5233
+ }
5234
+ break;
5235
+ case GET_BASIC_USER_INFO:
5236
+ try {
5237
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getUser()));
5238
+ } catch (error) {
5239
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5240
+ }
5241
+ break;
5242
+ case GET_DECODED_ID_TOKEN:
5243
+ try {
5244
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getDecodedIdToken()));
5245
+ } catch (error) {
5246
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5247
+ }
5248
+ break;
5249
+ case GET_CRYPTO_HELPER:
5250
+ try {
5251
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getCrypto()));
5252
+ } catch (error) {
5253
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5254
+ }
5255
+ break;
5256
+ case GET_ID_TOKEN:
5257
+ try {
5258
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getIdToken()));
5259
+ } catch (error) {
5260
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5261
+ }
5262
+ break;
5263
+ case ENABLE_HTTP_HANDLER:
5264
+ webWorker.enableHttpHandler();
5265
+ port.postMessage(MessageUtils.generateSuccessMessage());
5266
+ break;
5267
+ case DISABLE_HTTP_HANDLER:
5268
+ webWorker.disableHttpHandler();
5269
+ port.postMessage(MessageUtils.generateSuccessMessage());
5270
+ break;
5271
+ case IS_AUTHENTICATED:
5272
+ try {
5273
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.isSignedIn()));
5274
+ } catch (error) {
5275
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5276
+ }
5277
+ break;
5278
+ case GET_SIGN_OUT_URL:
5279
+ try {
5280
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getSignOutUrl()));
5281
+ } catch (error) {
5282
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5283
+ }
5284
+ break;
5285
+ case REFRESH_ACCESS_TOKEN:
5286
+ try {
5287
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.refreshAccessToken()));
5288
+ } catch (error) {
5289
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5290
+ }
5291
+ break;
5292
+ case START_AUTO_REFRESH_TOKEN:
5293
+ try {
5294
+ port.postMessage(MessageUtils.generateSuccessMessage(webWorker.startAutoRefreshToken()));
5295
+ } catch (error) {
5296
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5297
+ }
5298
+ break;
5299
+ case SET_SESSION_STATE:
5300
+ try {
5301
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.setSessionState(data?.data)));
5302
+ } catch (error) {
5303
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5304
+ }
5305
+ break;
5306
+ case UPDATE_CONFIG:
5307
+ try {
5308
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.reInitialize(data?.data)));
5309
+ } catch (error) {
5310
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5311
+ }
5312
+ break;
5313
+ case GET_CONFIG_DATA:
5314
+ try {
5315
+ port.postMessage(MessageUtils.generateSuccessMessage(await webWorker.getConfigData()));
5316
+ } catch (error) {
5317
+ port.postMessage(MessageUtils.generateFailureMessage(error));
5318
+ }
5319
+ break;
5320
+ default:
5321
+ port?.postMessage(
5322
+ MessageUtils.generateFailureMessage(
5323
+ new import_javascript10.AsgardeoAuthException(
5324
+ "SPA-CLIENT_WORKER-ONMSG-IV02",
5325
+ "The message type is invalid.",
5326
+ `The message type provided, ${data.type}, is invalid.`
5327
+ )
5328
+ )
5329
+ );
5366
5330
  }
5367
- return;
5368
- }
5369
- };
5370
- __publicField(_AsgardeoSPAClient, "_instances", /* @__PURE__ */ new Map());
5371
- var AsgardeoSPAClient = _AsgardeoSPAClient;
5372
-
5373
- // src/__legacy__/models/http-client.ts
5374
- var import_axios2 = require("axios");
5375
-
5376
- // src/__legacy__/models/web-worker.ts
5377
- var WebWorkerClass = class extends Worker {
5378
- constructor() {
5379
- super(...arguments);
5380
- __publicField(this, "onmessage", () => null);
5381
- }
5382
- };
5383
-
5384
- // src/constants/StyleConstants.ts
5385
- var StyleConstants = class {
5386
- constructor() {
5387
- }
5331
+ };
5332
+ const onRequestStartCallback = () => {
5333
+ ctx.postMessage({ type: REQUEST_START });
5334
+ };
5335
+ const onRequestSuccessCallback = (response) => {
5336
+ ctx.postMessage({ data: JSON.stringify(response ?? ""), type: REQUEST_SUCCESS });
5337
+ };
5338
+ const onRequestFinishCallback = () => {
5339
+ ctx.postMessage({ type: REQUEST_FINISH });
5340
+ };
5388
5341
  };
5389
- /**
5390
- * CSS class prefix for out of the box components.
5391
- */
5392
- __publicField(StyleConstants, "VENDOR_CSS_CLASS_PREFIX", "asgardeo");
5393
- var StyleConstants_default = StyleConstants;
5394
5342
 
5395
5343
  // src/utils/hasAuthParamsInUrl.ts
5396
5344
  var hasAuthParamsInUrl = (params = window.location.search) => {
@@ -5399,12 +5347,6 @@ var hasAuthParamsInUrl = (params = window.location.search) => {
5399
5347
  };
5400
5348
  var hasAuthParamsInUrl_default = hasAuthParamsInUrl;
5401
5349
 
5402
- // src/utils/withVendorCSSClassPrefix.ts
5403
- var withVendorCSSClassPrefix = (className) => {
5404
- return `${StyleConstants_default.VENDOR_CSS_CLASS_PREFIX}-${className}`;
5405
- };
5406
- var withVendorCSSClassPrefix_default = withVendorCSSClassPrefix;
5407
-
5408
5350
  // src/AsgardeoBrowserClient.ts
5409
5351
  var import_javascript11 = require("@asgardeo/javascript");
5410
5352
  var AsgardeoBrowserClient = class extends import_javascript11.AsgardeoJavaScriptClient {