@cosmotech/core 3.0.0-dev.0 → 3.0.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/index.esm.js CHANGED
@@ -7172,7 +7172,12 @@ var includesStringExports = includesString.exports;
7172
7172
  var before_at = before_slash.substring(0, at_position);
7173
7173
  var valid_auth_regex = /^[a-zA-Z0-9\-_.%:]*$/;
7174
7174
  var is_valid_auth = valid_auth_regex.test(before_at);
7175
- if (is_valid_auth) {
7175
+
7176
+ // Check if this contains URL-encoded content that could be malicious
7177
+ // For example: javascript:%61%6c%65%72%74%28%31%29@example.com
7178
+ // The encoded part decodes to: alert(1)
7179
+ var has_encoded_content = /%[0-9a-fA-F]{2}/.test(before_at);
7180
+ if (is_valid_auth && !has_encoded_content) {
7176
7181
  // This looks like authentication (e.g., user:password@host), not a protocol
7177
7182
  if (options.require_protocol) {
7178
7183
  return false;
@@ -7181,6 +7186,7 @@ var includesStringExports = includesString.exports;
7181
7186
  // Don't consume the colon; let the auth parsing handle it later
7182
7187
  } else {
7183
7188
  // This looks like a malicious protocol (e.g., javascript:alert();@host)
7189
+ // or URL-encoded protocol handler (e.g., javascript:%61%6c%65%72%74%28%31%29@host)
7184
7190
  url = cleanUpProtocol(potential_protocol);
7185
7191
  if (url === false) {
7186
7192
  return false;
@@ -8427,11 +8433,18 @@ var isHexColor = {exports: {}};
8427
8433
  });
8428
8434
  exports$1.default = isHexColor;
8429
8435
  var _assertString = _interopRequireDefault(assertStringExports);
8436
+ var _merge = _interopRequireDefault(mergeExports);
8430
8437
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8431
8438
  var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;
8432
- function isHexColor(str) {
8439
+ var hexcolor_with_prefix = /^#([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;
8440
+ var default_is_hexcolor_options = {
8441
+ require_hashtag: false
8442
+ };
8443
+ function isHexColor(str, options) {
8433
8444
  (0, _assertString.default)(str);
8434
- return hexcolor.test(str);
8445
+ options = (0, _merge.default)(options, default_is_hexcolor_options);
8446
+ var hexcolor_regex = options.require_hashtag ? hexcolor_with_prefix : hexcolor;
8447
+ return hexcolor_regex.test(str);
8435
8448
  }
8436
8449
  module.exports = exports$1.default;
8437
8450
  module.exports.default = exports$1.default;
@@ -8589,7 +8602,7 @@ var ibanRegexThroughCountryCode = {
8589
8602
  IE: /^(IE[0-9]{2})[A-Z]{4}\d{14}$/,
8590
8603
  IL: /^(IL[0-9]{2})\d{19}$/,
8591
8604
  IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,
8592
- IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/,
8605
+ IR: /^(IR[0-9]{2})\d{22}$/,
8593
8606
  IS: /^(IS[0-9]{2})\d{22}$/,
8594
8607
  IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
8595
8608
  JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/,
@@ -13356,7 +13369,7 @@ function isVAT(str, countryCode) {
13356
13369
  var _isVAT = _interopRequireDefault(isVAT$1);
13357
13370
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13358
13371
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13359
- var version = '13.15.23';
13372
+ var version = '13.15.26';
13360
13373
  var validator = {
13361
13374
  version: version,
13362
13375
  toDate: _toDate.default,
@@ -42487,7 +42500,7 @@ var AuthDev = {
42487
42500
  acquireTokensByRequest
42488
42501
  };
42489
42502
 
42490
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42503
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42491
42504
  /*
42492
42505
  * Copyright (c) Microsoft Corporation. All rights reserved.
42493
42506
  * Licensed under the MIT License.
@@ -42761,7 +42774,7 @@ const JsonWebTokenTypes = {
42761
42774
  // Token renewal offset default in seconds
42762
42775
  const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
42763
42776
 
42764
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42777
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42765
42778
  /*
42766
42779
  * Copyright (c) Microsoft Corporation. All rights reserved.
42767
42780
  * Licensed under the MIT License.
@@ -42772,7 +42785,7 @@ const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
42772
42785
  const unexpectedError = "unexpected_error";
42773
42786
  const postRequestFailed$1 = "post_request_failed";
42774
42787
 
42775
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42788
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42776
42789
 
42777
42790
  /*
42778
42791
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -42807,7 +42820,7 @@ function createAuthError(code, additionalMessage) {
42807
42820
  : AuthErrorMessages[code]);
42808
42821
  }
42809
42822
 
42810
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42823
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42811
42824
  /*
42812
42825
  * Copyright (c) Microsoft Corporation. All rights reserved.
42813
42826
  * Licensed under the MIT License.
@@ -42858,7 +42871,7 @@ const methodNotImplemented = "method_not_implemented";
42858
42871
  const nestedAppAuthBridgeDisabled = "nested_app_auth_bridge_disabled";
42859
42872
  const platformBrokerError = "platform_broker_error";
42860
42873
 
42861
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42874
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42862
42875
 
42863
42876
  /*
42864
42877
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -42933,7 +42946,7 @@ function createClientAuthError(errorCode, additionalMessage) {
42933
42946
  return new ClientAuthError(errorCode, additionalMessage);
42934
42947
  }
42935
42948
 
42936
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42949
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42937
42950
 
42938
42951
  /*
42939
42952
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -42972,7 +42985,7 @@ const DEFAULT_CRYPTO_IMPLEMENTATION = {
42972
42985
  },
42973
42986
  };
42974
42987
 
42975
- /*! @azure/msal-common v15.13.3 2025-12-04 */
42988
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
42976
42989
 
42977
42990
  /*
42978
42991
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43163,12 +43176,12 @@ class Logger {
43163
43176
  }
43164
43177
  }
43165
43178
 
43166
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43179
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43167
43180
  /* eslint-disable header/header */
43168
43181
  const name$2 = "@azure/msal-common";
43169
- const version$1 = "15.13.3";
43182
+ const version$1 = "15.14.2";
43170
43183
 
43171
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43184
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43172
43185
  /*
43173
43186
  * Copyright (c) Microsoft Corporation. All rights reserved.
43174
43187
  * Licensed under the MIT License.
@@ -43177,7 +43190,7 @@ const AzureCloudInstance = {
43177
43190
  // AzureCloudInstance is not specified.
43178
43191
  None: "none"};
43179
43192
 
43180
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43193
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43181
43194
  /*
43182
43195
  * Copyright (c) Microsoft Corporation. All rights reserved.
43183
43196
  * Licensed under the MIT License.
@@ -43207,7 +43220,7 @@ const invalidRequestMethodForEAR = "invalid_request_method_for_EAR";
43207
43220
  const invalidAuthorizePostBodyParameters = "invalid_authorize_post_body_parameters";
43208
43221
  const invalidPlatformBrokerConfiguration = "invalid_platform_broker_configuration";
43209
43222
 
43210
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43223
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43211
43224
 
43212
43225
  /*
43213
43226
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43253,7 +43266,7 @@ function createClientConfigurationError(errorCode) {
43253
43266
  return new ClientConfigurationError(errorCode);
43254
43267
  }
43255
43268
 
43256
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43269
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43257
43270
  /*
43258
43271
  * Copyright (c) Microsoft Corporation. All rights reserved.
43259
43272
  * Licensed under the MIT License.
@@ -43350,7 +43363,7 @@ class StringUtils {
43350
43363
  }
43351
43364
  }
43352
43365
 
43353
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43366
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43354
43367
 
43355
43368
  /*
43356
43369
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43545,7 +43558,7 @@ class ScopeSet {
43545
43558
  }
43546
43559
  }
43547
43560
 
43548
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43561
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43549
43562
 
43550
43563
  /*
43551
43564
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43585,7 +43598,7 @@ function buildClientInfoFromHomeAccountId(homeAccountId) {
43585
43598
  };
43586
43599
  }
43587
43600
 
43588
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43601
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43589
43602
  /*
43590
43603
  * Copyright (c) Microsoft Corporation. All rights reserved.
43591
43604
  * Licensed under the MIT License.
@@ -43667,7 +43680,7 @@ function updateAccountTenantProfileData(baseAccountInfo, tenantProfile, idTokenC
43667
43680
  return updatedAccountInfo;
43668
43681
  }
43669
43682
 
43670
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43683
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43671
43684
  /*
43672
43685
  * Copyright (c) Microsoft Corporation. All rights reserved.
43673
43686
  * Licensed under the MIT License.
@@ -43682,7 +43695,7 @@ const AuthorityType = {
43682
43695
  Ciam: 3,
43683
43696
  };
43684
43697
 
43685
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43698
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43686
43699
  /*
43687
43700
  * Copyright (c) Microsoft Corporation. All rights reserved.
43688
43701
  * Licensed under the MIT License.
@@ -43704,7 +43717,7 @@ function getTenantIdFromIdTokenClaims(idTokenClaims) {
43704
43717
  return null;
43705
43718
  }
43706
43719
 
43707
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43720
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43708
43721
  /*
43709
43722
  * Copyright (c) Microsoft Corporation. All rights reserved.
43710
43723
  * Licensed under the MIT License.
@@ -43728,7 +43741,7 @@ const ProtocolMode = {
43728
43741
  EAR: "EAR",
43729
43742
  };
43730
43743
 
43731
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43744
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43732
43745
 
43733
43746
  /*
43734
43747
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -43762,6 +43775,13 @@ class AccountEntity {
43762
43775
  * Returns the AccountInfo interface for this account.
43763
43776
  */
43764
43777
  static getAccountInfo(accountEntity) {
43778
+ const tenantProfiles = accountEntity.tenantProfiles || [];
43779
+ // Ensure at least the home tenant profile exists
43780
+ if (tenantProfiles.length === 0 &&
43781
+ accountEntity.realm &&
43782
+ accountEntity.localAccountId) {
43783
+ tenantProfiles.push(buildTenantProfile(accountEntity.homeAccountId, accountEntity.localAccountId, accountEntity.realm));
43784
+ }
43765
43785
  return {
43766
43786
  homeAccountId: accountEntity.homeAccountId,
43767
43787
  environment: accountEntity.environment,
@@ -43773,7 +43793,7 @@ class AccountEntity {
43773
43793
  nativeAccountId: accountEntity.nativeAccountId,
43774
43794
  authorityType: accountEntity.authorityType,
43775
43795
  // Deserialize tenant profiles array into a Map
43776
- tenantProfiles: new Map((accountEntity.tenantProfiles || []).map((tenantProfile) => {
43796
+ tenantProfiles: new Map(tenantProfiles.map((tenantProfile) => {
43777
43797
  return [tenantProfile.tenantId, tenantProfile];
43778
43798
  })),
43779
43799
  dataBoundary: accountEntity.dataBoundary,
@@ -43874,7 +43894,14 @@ class AccountEntity {
43874
43894
  account.cloudGraphHostName = cloudGraphHostName;
43875
43895
  account.msGraphHost = msGraphHost;
43876
43896
  // Serialize tenant profiles map into an array
43877
- account.tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);
43897
+ const tenantProfiles = Array.from(accountInfo.tenantProfiles?.values() || []);
43898
+ // Ensure at least the home tenant profile exists
43899
+ if (tenantProfiles.length === 0 &&
43900
+ accountInfo.tenantId &&
43901
+ accountInfo.localAccountId) {
43902
+ tenantProfiles.push(buildTenantProfile(accountInfo.homeAccountId, accountInfo.localAccountId, accountInfo.tenantId, accountInfo.idTokenClaims));
43903
+ }
43904
+ account.tenantProfiles = tenantProfiles;
43878
43905
  account.dataBoundary = accountInfo.dataBoundary;
43879
43906
  return account;
43880
43907
  }
@@ -43949,7 +43976,7 @@ class AccountEntity {
43949
43976
  }
43950
43977
  }
43951
43978
 
43952
- /*! @azure/msal-common v15.13.3 2025-12-04 */
43979
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
43953
43980
 
43954
43981
  /*
43955
43982
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44030,7 +44057,7 @@ function checkMaxAge(authTime, maxAge) {
44030
44057
  }
44031
44058
  }
44032
44059
 
44033
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44060
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44034
44061
 
44035
44062
  /*
44036
44063
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44146,7 +44173,7 @@ function normalizeUrlForComparison(url) {
44146
44173
  }
44147
44174
  }
44148
44175
 
44149
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44176
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44150
44177
 
44151
44178
  /*
44152
44179
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44310,7 +44337,7 @@ class UrlString {
44310
44337
  }
44311
44338
  }
44312
44339
 
44313
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44340
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44314
44341
 
44315
44342
  /*
44316
44343
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44339,6 +44366,27 @@ const rawMetdataJSON = {
44339
44366
  authorization_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize",
44340
44367
  end_session_endpoint: "https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout",
44341
44368
  },
44369
+ "login.sovcloud-identity.fr": {
44370
+ token_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/token",
44371
+ jwks_uri: "https://login.sovcloud-identity.fr/{tenantid}/discovery/v2.0/keys",
44372
+ issuer: "https://login.sovcloud-identity.fr/{tenantid}/v2.0",
44373
+ authorization_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/authorize",
44374
+ end_session_endpoint: "https://login.sovcloud-identity.fr/{tenantid}/oauth2/v2.0/logout",
44375
+ },
44376
+ "login.sovcloud-identity.de": {
44377
+ token_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/token",
44378
+ jwks_uri: "https://login.sovcloud-identity.de/{tenantid}/discovery/v2.0/keys",
44379
+ issuer: "https://login.sovcloud-identity.de/{tenantid}/v2.0",
44380
+ authorization_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/authorize",
44381
+ end_session_endpoint: "https://login.sovcloud-identity.de/{tenantid}/oauth2/v2.0/logout",
44382
+ },
44383
+ "login.sovcloud-identity.sg": {
44384
+ token_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/token",
44385
+ jwks_uri: "https://login.sovcloud-identity.sg/common/discovery/v2.0/keys",
44386
+ issuer: "https://login.sovcloud-identity.sg/{tenantid}/v2.0",
44387
+ authorization_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/authorize",
44388
+ end_session_endpoint: "https://login.sovcloud-identity.sg/common/oauth2/v2.0/logout",
44389
+ },
44342
44390
  },
44343
44391
  instanceDiscoveryMetadata: {
44344
44392
  metadata: [
@@ -44378,6 +44426,21 @@ const rawMetdataJSON = {
44378
44426
  preferred_cache: "login-us.microsoftonline.com",
44379
44427
  aliases: ["login-us.microsoftonline.com"],
44380
44428
  },
44429
+ {
44430
+ preferred_network: "login.sovcloud-identity.fr",
44431
+ preferred_cache: "login.sovcloud-identity.fr",
44432
+ aliases: ["login.sovcloud-identity.fr"],
44433
+ },
44434
+ {
44435
+ preferred_network: "login.sovcloud-identity.de",
44436
+ preferred_cache: "login.sovcloud-identity.de",
44437
+ aliases: ["login.sovcloud-identity.de"],
44438
+ },
44439
+ {
44440
+ preferred_network: "login.sovcloud-identity.sg",
44441
+ preferred_cache: "login.sovcloud-identity.sg",
44442
+ aliases: ["login.sovcloud-identity.sg"],
44443
+ },
44381
44444
  ],
44382
44445
  },
44383
44446
  };
@@ -44449,7 +44512,7 @@ function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {
44449
44512
  return null;
44450
44513
  }
44451
44514
 
44452
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44515
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44453
44516
  /*
44454
44517
  * Copyright (c) Microsoft Corporation. All rights reserved.
44455
44518
  * Licensed under the MIT License.
@@ -44457,7 +44520,7 @@ function getCloudDiscoveryMetadataFromNetworkResponse(response, authorityHost) {
44457
44520
  const cacheQuotaExceeded = "cache_quota_exceeded";
44458
44521
  const cacheErrorUnknown = "cache_error_unknown";
44459
44522
 
44460
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44523
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44461
44524
 
44462
44525
  /*
44463
44526
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44502,7 +44565,7 @@ function createCacheError(e) {
44502
44565
  }
44503
44566
  }
44504
44567
 
44505
- /*! @azure/msal-common v15.13.3 2025-12-04 */
44568
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
44506
44569
 
44507
44570
  /*
44508
44571
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -44672,15 +44735,16 @@ class CacheManager {
44672
44735
  * @param cacheRecord {CacheRecord}
44673
44736
  * @param correlationId {?string} correlation id
44674
44737
  * @param kmsi - Keep Me Signed In
44738
+ * @param apiId - API identifier for telemetry tracking
44675
44739
  * @param storeInCache {?StoreInCache}
44676
44740
  */
44677
- async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {
44741
+ async saveCacheRecord(cacheRecord, correlationId, kmsi, apiId, storeInCache) {
44678
44742
  if (!cacheRecord) {
44679
44743
  throw createClientAuthError(invalidCacheRecord);
44680
44744
  }
44681
44745
  try {
44682
44746
  if (!!cacheRecord.account) {
44683
- await this.setAccount(cacheRecord.account, correlationId, kmsi);
44747
+ await this.setAccount(cacheRecord.account, correlationId, kmsi, apiId);
44684
44748
  }
44685
44749
  if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {
44686
44750
  await this.setIdTokenCredential(cacheRecord.idToken, correlationId, kmsi);
@@ -45611,7 +45675,7 @@ class DefaultStorageClass extends CacheManager {
45611
45675
  }
45612
45676
  }
45613
45677
 
45614
- /*! @azure/msal-common v15.13.3 2025-12-04 */
45678
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
45615
45679
  /*
45616
45680
  * Copyright (c) Microsoft Corporation. All rights reserved.
45617
45681
  * Licensed under the MIT License.
@@ -45868,6 +45932,11 @@ const PerformanceEvents = {
45868
45932
  Decrypt: "decrypt",
45869
45933
  GenerateEarKey: "generateEarKey",
45870
45934
  DecryptEarResponse: "decryptEarResponse",
45935
+ LoadExternalTokens: "LoadExternalTokens",
45936
+ LoadAccount: "loadAccount",
45937
+ LoadIdToken: "loadIdToken",
45938
+ LoadAccessToken: "loadAccessToken",
45939
+ LoadRefreshToken: "loadRefreshToken",
45871
45940
  };
45872
45941
  /**
45873
45942
  * State of the performance event.
@@ -45878,7 +45947,7 @@ const PerformanceEvents = {
45878
45947
  const PerformanceEventStatus = {
45879
45948
  InProgress: 1};
45880
45949
 
45881
- /*! @azure/msal-common v15.13.3 2025-12-04 */
45950
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
45882
45951
 
45883
45952
  /*
45884
45953
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -45957,7 +46026,7 @@ class StubPerformanceClient {
45957
46026
  }
45958
46027
  }
45959
46028
 
45960
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46029
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
45961
46030
 
45962
46031
  /*
45963
46032
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -46057,7 +46126,7 @@ function isOidcProtocolMode(config) {
46057
46126
  return (config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC);
46058
46127
  }
46059
46128
 
46060
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46129
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46061
46130
  /*
46062
46131
  * Copyright (c) Microsoft Corporation. All rights reserved.
46063
46132
  * Licensed under the MIT License.
@@ -46067,7 +46136,7 @@ const CcsCredentialType = {
46067
46136
  UPN: "UPN",
46068
46137
  };
46069
46138
 
46070
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46139
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46071
46140
  /*
46072
46141
  * Copyright (c) Microsoft Corporation. All rights reserved.
46073
46142
  * Licensed under the MIT License.
@@ -46117,7 +46186,7 @@ const INSTANCE_AWARE = "instance_aware";
46117
46186
  const EAR_JWK = "ear_jwk";
46118
46187
  const EAR_JWE_CRYPTO = "ear_jwe_crypto";
46119
46188
 
46120
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46189
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46121
46190
 
46122
46191
  /*
46123
46192
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -46497,7 +46566,7 @@ function addPostBodyParameters(parameters, bodyParameters) {
46497
46566
  });
46498
46567
  }
46499
46568
 
46500
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46569
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46501
46570
  /*
46502
46571
  * Copyright (c) Microsoft Corporation. All rights reserved.
46503
46572
  * Licensed under the MIT License.
@@ -46509,7 +46578,7 @@ function isOpenIdConfigResponse(response) {
46509
46578
  response.hasOwnProperty("jwks_uri"));
46510
46579
  }
46511
46580
 
46512
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46581
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46513
46582
  /*
46514
46583
  * Copyright (c) Microsoft Corporation. All rights reserved.
46515
46584
  * Licensed under the MIT License.
@@ -46519,7 +46588,7 @@ function isCloudInstanceDiscoveryResponse(response) {
46519
46588
  response.hasOwnProperty("metadata"));
46520
46589
  }
46521
46590
 
46522
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46591
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46523
46592
  /*
46524
46593
  * Copyright (c) Microsoft Corporation. All rights reserved.
46525
46594
  * Licensed under the MIT License.
@@ -46529,7 +46598,7 @@ function isCloudInstanceDiscoveryErrorResponse(response) {
46529
46598
  response.hasOwnProperty("error_description"));
46530
46599
  }
46531
46600
 
46532
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46601
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46533
46602
  /*
46534
46603
  * Copyright (c) Microsoft Corporation. All rights reserved.
46535
46604
  * Licensed under the MIT License.
@@ -46625,7 +46694,7 @@ const invokeAsync = (callback, eventName, logger, telemetryClient, correlationId
46625
46694
  };
46626
46695
  };
46627
46696
 
46628
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46697
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46629
46698
 
46630
46699
  /*
46631
46700
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -46731,7 +46800,7 @@ RegionDiscovery.IMDS_OPTIONS = {
46731
46800
  },
46732
46801
  };
46733
46802
 
46734
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46803
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46735
46804
  /*
46736
46805
  * Copyright (c) Microsoft Corporation. All rights reserved.
46737
46806
  * Licensed under the MIT License.
@@ -46796,7 +46865,7 @@ function wasClockTurnedBack(cachedAt) {
46796
46865
  return cachedAtSec > nowSeconds();
46797
46866
  }
46798
46867
 
46799
- /*! @azure/msal-common v15.13.3 2025-12-04 */
46868
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
46800
46869
 
46801
46870
  /*
46802
46871
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -47058,7 +47127,7 @@ function isAuthorityMetadataExpired(metadata) {
47058
47127
  return metadata.expiresAt <= nowSeconds();
47059
47128
  }
47060
47129
 
47061
- /*! @azure/msal-common v15.13.3 2025-12-04 */
47130
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
47062
47131
 
47063
47132
  /*
47064
47133
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -47897,7 +47966,7 @@ function buildStaticAuthorityOptions(authOptions) {
47897
47966
  };
47898
47967
  }
47899
47968
 
47900
- /*! @azure/msal-common v15.13.3 2025-12-04 */
47969
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
47901
47970
 
47902
47971
  /*
47903
47972
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -47928,7 +47997,7 @@ async function createDiscoveredInstance(authorityUri, networkClient, cacheManage
47928
47997
  }
47929
47998
  }
47930
47999
 
47931
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48000
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
47932
48001
 
47933
48002
  /*
47934
48003
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -47947,7 +48016,7 @@ class ServerError extends AuthError {
47947
48016
  }
47948
48017
  }
47949
48018
 
47950
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48019
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
47951
48020
  /*
47952
48021
  * Copyright (c) Microsoft Corporation. All rights reserved.
47953
48022
  * Licensed under the MIT License.
@@ -47968,7 +48037,7 @@ function getRequestThumbprint(clientId, request, homeAccountId) {
47968
48037
  };
47969
48038
  }
47970
48039
 
47971
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48040
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
47972
48041
 
47973
48042
  /*
47974
48043
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48055,7 +48124,7 @@ class ThrottlingUtils {
48055
48124
  }
48056
48125
  }
48057
48126
 
48058
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48127
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48059
48128
 
48060
48129
  /*
48061
48130
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48086,7 +48155,7 @@ function createNetworkError(error, httpStatus, responseHeaders, additionalError)
48086
48155
  return new NetworkError(error, httpStatus, responseHeaders);
48087
48156
  }
48088
48157
 
48089
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48158
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48090
48159
 
48091
48160
  /*
48092
48161
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48234,7 +48303,7 @@ class BaseClient {
48234
48303
  }
48235
48304
  }
48236
48305
 
48237
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48306
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48238
48307
  /*
48239
48308
  * Copyright (c) Microsoft Corporation. All rights reserved.
48240
48309
  * Licensed under the MIT License.
@@ -48250,7 +48319,7 @@ const consentRequired = "consent_required";
48250
48319
  const loginRequired = "login_required";
48251
48320
  const badToken = "bad_token";
48252
48321
 
48253
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48322
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48254
48323
 
48255
48324
  /*
48256
48325
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48322,7 +48391,7 @@ function createInteractionRequiredAuthError(errorCode) {
48322
48391
  return new InteractionRequiredAuthError(errorCode, InteractionRequiredAuthErrorMessages[errorCode]);
48323
48392
  }
48324
48393
 
48325
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48394
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48326
48395
 
48327
48396
  /*
48328
48397
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48394,7 +48463,7 @@ class ProtocolUtils {
48394
48463
  }
48395
48464
  }
48396
48465
 
48397
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48466
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48398
48467
 
48399
48468
  /*
48400
48469
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48476,7 +48545,7 @@ class PopTokenGenerator {
48476
48545
  }
48477
48546
  }
48478
48547
 
48479
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48548
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48480
48549
  /*
48481
48550
  * Copyright (c) Microsoft Corporation. All rights reserved.
48482
48551
  * Licensed under the MIT License.
@@ -48503,7 +48572,7 @@ class PopTokenGenerator {
48503
48572
  }
48504
48573
  }
48505
48574
 
48506
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48575
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48507
48576
 
48508
48577
  /*
48509
48578
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48567,7 +48636,7 @@ class ResponseHandler {
48567
48636
  * @param serverTokenResponse
48568
48637
  * @param authority
48569
48638
  */
48570
- async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {
48639
+ async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, apiId, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {
48571
48640
  this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);
48572
48641
  // create an idToken object (not entity)
48573
48642
  let idTokenClaims;
@@ -48615,14 +48684,19 @@ class ResponseHandler {
48615
48684
  if (handlingRefreshTokenResponse &&
48616
48685
  !forceCacheRefreshTokenResponse &&
48617
48686
  cacheRecord.account) {
48618
- const key = this.cacheStorage.generateAccountKey(AccountEntity.getAccountInfo(cacheRecord.account));
48619
- const account = this.cacheStorage.getAccount(key, request.correlationId);
48620
- if (!account) {
48687
+ const cachedAccounts = this.cacheStorage.getAllAccounts({
48688
+ homeAccountId: cacheRecord.account.homeAccountId,
48689
+ environment: cacheRecord.account.environment,
48690
+ }, request.correlationId);
48691
+ if (cachedAccounts.length < 1) {
48621
48692
  this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache");
48693
+ this.performanceClient?.addFields({
48694
+ acntLoggedOut: true,
48695
+ }, request.correlationId);
48622
48696
  return await ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenClaims, requestStateObj, undefined, serverRequestId);
48623
48697
  }
48624
48698
  }
48625
- await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), request.storeInCache);
48699
+ await this.cacheStorage.saveCacheRecord(cacheRecord, request.correlationId, isKmsi(idTokenClaims || {}), apiId, request.storeInCache);
48626
48700
  }
48627
48701
  finally {
48628
48702
  if (this.persistencePlugin &&
@@ -48692,6 +48766,9 @@ class ResponseHandler {
48692
48766
  ? parseInt(serverTokenResponse.refresh_token_expires_in, 10)
48693
48767
  : serverTokenResponse.refresh_token_expires_in;
48694
48768
  rtExpiresOn = reqTimestamp + rtExpiresIn;
48769
+ this.performanceClient?.addFields({
48770
+ ntwkRtExpiresOnSeconds: rtExpiresOn,
48771
+ }, request.correlationId);
48695
48772
  }
48696
48773
  cachedRefreshToken = createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token, this.clientId, serverTokenResponse.foci, userAssertionHash, rtExpiresOn);
48697
48774
  }
@@ -48834,7 +48911,7 @@ function buildAccountToCache(cacheStorage, authority, homeAccountId, base64Decod
48834
48911
  return baseAccount;
48835
48912
  }
48836
48913
 
48837
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48914
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48838
48915
  /*
48839
48916
  * Copyright (c) Microsoft Corporation. All rights reserved.
48840
48917
  * Licensed under the MIT License.
@@ -48852,7 +48929,7 @@ async function getClientAssertion(clientAssertion, clientId, tokenEndpoint) {
48852
48929
  }
48853
48930
  }
48854
48931
 
48855
- /*! @azure/msal-common v15.13.3 2025-12-04 */
48932
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
48856
48933
 
48857
48934
  /*
48858
48935
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -48874,8 +48951,9 @@ class AuthorizationCodeClient extends BaseClient {
48874
48951
  * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the
48875
48952
  * authorization_code_grant
48876
48953
  * @param request
48954
+ * @param apiId - API identifier for telemetry tracking
48877
48955
  */
48878
- async acquireToken(request, authCodePayload) {
48956
+ async acquireToken(request, apiId, authCodePayload) {
48879
48957
  this.performanceClient?.addQueueMeasurement(PerformanceEvents.AuthClientAcquireToken, request.correlationId);
48880
48958
  if (!request.code) {
48881
48959
  throw createClientAuthError(requestCannotBeMade);
@@ -48887,7 +48965,7 @@ class AuthorizationCodeClient extends BaseClient {
48887
48965
  const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin, this.performanceClient);
48888
48966
  // Validate response. This function throws a server error if an error is returned by the server.
48889
48967
  responseHandler.validateTokenResponse(response.body);
48890
- return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, authCodePayload, undefined, undefined, undefined, requestId);
48968
+ return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, authCodePayload, undefined, undefined, undefined, requestId);
48891
48969
  }
48892
48970
  /**
48893
48971
  * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.
@@ -49087,7 +49165,7 @@ class AuthorizationCodeClient extends BaseClient {
49087
49165
  }
49088
49166
  }
49089
49167
 
49090
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49168
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49091
49169
 
49092
49170
  /*
49093
49171
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49102,7 +49180,7 @@ class RefreshTokenClient extends BaseClient {
49102
49180
  constructor(configuration, performanceClient) {
49103
49181
  super(configuration, performanceClient);
49104
49182
  }
49105
- async acquireToken(request) {
49183
+ async acquireToken(request, apiId) {
49106
49184
  this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireToken, request.correlationId);
49107
49185
  const reqTimestamp = nowSeconds();
49108
49186
  const response = await invokeAsync(this.executeTokenRequest.bind(this), PerformanceEvents.RefreshTokenClientExecuteTokenRequest, this.logger, this.performanceClient, request.correlationId)(request, this.authority);
@@ -49110,13 +49188,13 @@ class RefreshTokenClient extends BaseClient {
49110
49188
  const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];
49111
49189
  const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);
49112
49190
  responseHandler.validateTokenResponse(response.body);
49113
- return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, undefined, undefined, true, request.forceCache, requestId);
49191
+ return invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, this.logger, this.performanceClient, request.correlationId)(response.body, this.authority, reqTimestamp, request, apiId, undefined, undefined, true, request.forceCache, requestId);
49114
49192
  }
49115
49193
  /**
49116
49194
  * Gets cached refresh token and attaches to request, then calls acquireToken API
49117
49195
  * @param request
49118
49196
  */
49119
- async acquireTokenByRefreshToken(request) {
49197
+ async acquireTokenByRefreshToken(request, apiId) {
49120
49198
  // Cannot renew token if no request object is given.
49121
49199
  if (!request) {
49122
49200
  throw createClientConfigurationError(tokenRequestEmpty);
@@ -49131,7 +49209,7 @@ class RefreshTokenClient extends BaseClient {
49131
49209
  // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest
49132
49210
  if (isFOCI) {
49133
49211
  try {
49134
- return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true);
49212
+ return await invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, true, apiId);
49135
49213
  }
49136
49214
  catch (e) {
49137
49215
  const noFamilyRTInCache = e instanceof InteractionRequiredAuthError &&
@@ -49142,7 +49220,7 @@ class RefreshTokenClient extends BaseClient {
49142
49220
  e.subError === Errors.CLIENT_MISMATCH_ERROR;
49143
49221
  // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)
49144
49222
  if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {
49145
- return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);
49223
+ return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId);
49146
49224
  // throw in all other cases
49147
49225
  }
49148
49226
  else {
@@ -49151,26 +49229,30 @@ class RefreshTokenClient extends BaseClient {
49151
49229
  }
49152
49230
  }
49153
49231
  // fall back to application refresh token acquisition
49154
- return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false);
49232
+ return invokeAsync(this.acquireTokenWithCachedRefreshToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, this.logger, this.performanceClient, request.correlationId)(request, false, apiId);
49155
49233
  }
49156
49234
  /**
49157
49235
  * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached
49158
49236
  * @param request
49159
49237
  */
49160
- async acquireTokenWithCachedRefreshToken(request, foci) {
49238
+ async acquireTokenWithCachedRefreshToken(request, foci, apiId) {
49161
49239
  this.performanceClient?.addQueueMeasurement(PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken, request.correlationId);
49162
49240
  // fetches family RT or application RT based on FOCI value
49163
49241
  const refreshToken = invoke(this.cacheManager.getRefreshToken.bind(this.cacheManager), PerformanceEvents.CacheManagerGetRefreshToken, this.logger, this.performanceClient, request.correlationId)(request.account, foci, request.correlationId, undefined, this.performanceClient);
49164
49242
  if (!refreshToken) {
49165
49243
  throw createInteractionRequiredAuthError(noTokensFound);
49166
49244
  }
49167
- if (refreshToken.expiresOn &&
49168
- isTokenExpired(refreshToken.expiresOn, request.refreshTokenExpirationOffsetSeconds ||
49169
- DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS)) {
49170
- this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);
49171
- throw createInteractionRequiredAuthError(refreshTokenExpired);
49245
+ if (refreshToken.expiresOn) {
49246
+ const offset = request.refreshTokenExpirationOffsetSeconds ||
49247
+ DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS;
49248
+ this.performanceClient?.addFields({
49249
+ cacheRtExpiresOnSeconds: Number(refreshToken.expiresOn),
49250
+ rtOffsetSeconds: offset,
49251
+ }, request.correlationId);
49252
+ if (isTokenExpired(refreshToken.expiresOn, offset)) {
49253
+ throw createInteractionRequiredAuthError(refreshTokenExpired);
49254
+ }
49172
49255
  }
49173
- // attach cached RT size to the current measurement
49174
49256
  const refreshTokenRequest = {
49175
49257
  ...request,
49176
49258
  refreshToken: refreshToken.secret,
@@ -49181,11 +49263,10 @@ class RefreshTokenClient extends BaseClient {
49181
49263
  },
49182
49264
  };
49183
49265
  try {
49184
- return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest);
49266
+ return await invokeAsync(this.acquireToken.bind(this), PerformanceEvents.RefreshTokenClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(refreshTokenRequest, apiId);
49185
49267
  }
49186
49268
  catch (e) {
49187
49269
  if (e instanceof InteractionRequiredAuthError) {
49188
- this.performanceClient?.addFields({ rtExpiresOnMs: Number(refreshToken.expiresOn) }, request.correlationId);
49189
49270
  if (e.subError === badToken) {
49190
49271
  // Remove bad refresh token from cache
49191
49272
  this.logger.verbose("acquireTokenWithRefreshToken: bad refresh token, removing from cache");
@@ -49296,7 +49377,7 @@ class RefreshTokenClient extends BaseClient {
49296
49377
  }
49297
49378
  }
49298
49379
 
49299
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49380
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49300
49381
 
49301
49382
  /*
49302
49383
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49394,7 +49475,7 @@ class SilentFlowClient extends BaseClient {
49394
49475
  }
49395
49476
  }
49396
49477
 
49397
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49478
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49398
49479
 
49399
49480
  /*
49400
49481
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49409,7 +49490,7 @@ const StubbedNetworkModule = {
49409
49490
  },
49410
49491
  };
49411
49492
 
49412
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49493
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49413
49494
 
49414
49495
  /*
49415
49496
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49633,7 +49714,7 @@ function extractLoginHint(account) {
49633
49714
  return account.loginHint || account.idTokenClaims?.login_hint || null;
49634
49715
  }
49635
49716
 
49636
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49717
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49637
49718
 
49638
49719
  /*
49639
49720
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49896,7 +49977,7 @@ class ServerTelemetryManager {
49896
49977
  }
49897
49978
  }
49898
49979
 
49899
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49980
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49900
49981
  /*
49901
49982
  * Copyright (c) Microsoft Corporation. All rights reserved.
49902
49983
  * Licensed under the MIT License.
@@ -49904,7 +49985,7 @@ class ServerTelemetryManager {
49904
49985
  const missingKidError = "missing_kid_error";
49905
49986
  const missingAlgError = "missing_alg_error";
49906
49987
 
49907
- /*! @azure/msal-common v15.13.3 2025-12-04 */
49988
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49908
49989
 
49909
49990
  /*
49910
49991
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49929,7 +50010,7 @@ function createJoseHeaderError(code) {
49929
50010
  return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);
49930
50011
  }
49931
50012
 
49932
- /*! @azure/msal-common v15.13.3 2025-12-04 */
50013
+ /*! @azure/msal-common v15.14.2 2026-02-10 */
49933
50014
 
49934
50015
  /*
49935
50016
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -49969,7 +50050,7 @@ class JoseHeader {
49969
50050
  }
49970
50051
  }
49971
50052
 
49972
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50053
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
49973
50054
  /*
49974
50055
  * Copyright (c) Microsoft Corporation. All rights reserved.
49975
50056
  * Licensed under the MIT License.
@@ -50026,7 +50107,7 @@ const failedToParseHeaders = "failed_to_parse_headers";
50026
50107
  const failedToDecryptEarResponse = "failed_to_decrypt_ear_response";
50027
50108
  const timedOut = "timed_out";
50028
50109
 
50029
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50110
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50030
50111
 
50031
50112
  /*
50032
50113
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50103,7 +50184,7 @@ function createBrowserAuthError(errorCode, subError) {
50103
50184
  return new BrowserAuthError(errorCode, subError);
50104
50185
  }
50105
50186
 
50106
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50187
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50107
50188
 
50108
50189
  /*
50109
50190
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50190,9 +50271,9 @@ const InMemoryCacheKeys = {
50190
50271
  };
50191
50272
  /**
50192
50273
  * API Codes for Telemetry purposes.
50193
- * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs
50194
50274
  * 0-99 Silent Flow
50195
50275
  * 800-899 Auth Code Flow
50276
+ * 900-999 Miscellaneous
50196
50277
  */
50197
50278
  const ApiId = {
50198
50279
  acquireTokenRedirect: 861,
@@ -50204,6 +50285,30 @@ const ApiId = {
50204
50285
  acquireTokenSilent_silentFlow: 61,
50205
50286
  logout: 961,
50206
50287
  logoutPopup: 962,
50288
+ hydrateCache: 963,
50289
+ loadExternalTokens: 964,
50290
+ };
50291
+ /**
50292
+ * API Names for Telemetry purposes.
50293
+ */
50294
+ const ApiName = {
50295
+ 861: "acquireTokenRedirect",
50296
+ 862: "acquireTokenPopup",
50297
+ 863: "ssoSilent",
50298
+ 864: "acquireTokenSilent_authCode",
50299
+ 865: "handleRedirectPromise",
50300
+ 866: "acquireTokenByCode",
50301
+ 61: "acquireTokenSilent_silentFlow",
50302
+ 961: "logout",
50303
+ 962: "logoutPopup",
50304
+ 963: "hydrateCache",
50305
+ 964: "loadExternalTokens",
50306
+ };
50307
+ const apiIdToName = (id) => {
50308
+ if (typeof id === "number" && id in ApiName) {
50309
+ return ApiName[id];
50310
+ }
50311
+ return "unknown";
50207
50312
  };
50208
50313
  /*
50209
50314
  * Interaction type of the API - used for state and telemetry
@@ -50268,7 +50373,7 @@ const iFrameRenewalPolicies = [
50268
50373
  CacheLookupPolicy.RefreshTokenAndNetwork,
50269
50374
  ];
50270
50375
 
50271
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50376
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50272
50377
  /*
50273
50378
  * Copyright (c) Microsoft Corporation. All rights reserved.
50274
50379
  * Licensed under the MIT License.
@@ -50313,7 +50418,7 @@ function base64EncArr(aBytes) {
50313
50418
  return btoa(binString);
50314
50419
  }
50315
50420
 
50316
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50421
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50317
50422
 
50318
50423
  /*
50319
50424
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50352,7 +50457,7 @@ function base64DecToArr(base64String) {
50352
50457
  return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0);
50353
50458
  }
50354
50459
 
50355
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50460
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50356
50461
 
50357
50462
  /*
50358
50463
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50651,7 +50756,7 @@ async function hashString(plainText) {
50651
50756
  return urlEncodeArr(hashBytes);
50652
50757
  }
50653
50758
 
50654
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50759
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50655
50760
  /*
50656
50761
  * Copyright (c) Microsoft Corporation. All rights reserved.
50657
50762
  * Licensed under the MIT License.
@@ -50660,7 +50765,7 @@ const storageNotSupported = "storage_not_supported";
50660
50765
  const stubbedPublicClientApplicationCalled = "stubbed_public_client_application_called";
50661
50766
  const inMemRedirectUnavailable = "in_mem_redirect_unavailable";
50662
50767
 
50663
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50768
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50664
50769
 
50665
50770
  /*
50666
50771
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50700,7 +50805,7 @@ function createBrowserConfigurationAuthError(errorCode) {
50700
50805
  return new BrowserConfigurationAuthError(errorCode, BrowserConfigurationAuthErrorMessages[errorCode]);
50701
50806
  }
50702
50807
 
50703
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50808
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50704
50809
 
50705
50810
  /*
50706
50811
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50862,7 +50967,7 @@ function createGuid() {
50862
50967
  return createNewGuid();
50863
50968
  }
50864
50969
 
50865
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
50970
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50866
50971
 
50867
50972
  /*
50868
50973
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -50905,7 +51010,7 @@ class NavigationClient {
50905
51010
  }
50906
51011
  }
50907
51012
 
50908
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51013
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
50909
51014
 
50910
51015
  /*
50911
51016
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51026,7 +51131,7 @@ function getHeaderDict(headers) {
51026
51131
  }
51027
51132
  }
51028
51133
 
51029
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51134
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51030
51135
 
51031
51136
  /*
51032
51137
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51161,12 +51266,12 @@ function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system
51161
51266
  return overlayedConfig;
51162
51267
  }
51163
51268
 
51164
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51269
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51165
51270
  /* eslint-disable header/header */
51166
51271
  const name$1 = "@azure/msal-browser";
51167
- const version = "4.27.0";
51272
+ const version = "4.28.2";
51168
51273
 
51169
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51274
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51170
51275
  /*
51171
51276
  * Copyright (c) Microsoft Corporation. All rights reserved.
51172
51277
  * Licensed under the MIT License.
@@ -51194,7 +51299,7 @@ function getTokenKeysCacheKey(clientId, schema = CREDENTIAL_SCHEMA_VERSION) {
51194
51299
  return `${PREFIX}.${schema}.${TOKEN_KEYS}.${clientId}`;
51195
51300
  }
51196
51301
 
51197
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51302
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51198
51303
 
51199
51304
  /*
51200
51305
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51291,7 +51396,7 @@ class BaseOperatingContext {
51291
51396
  }
51292
51397
  }
51293
51398
 
51294
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51399
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51295
51400
 
51296
51401
  /*
51297
51402
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51337,7 +51442,7 @@ StandardOperatingContext.MODULE_NAME = "";
51337
51442
  */
51338
51443
  StandardOperatingContext.ID = "StandardOperatingContext";
51339
51444
 
51340
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51445
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51341
51446
 
51342
51447
  /*
51343
51448
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51540,7 +51645,7 @@ class DatabaseStorage {
51540
51645
  }
51541
51646
  }
51542
51647
 
51543
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51648
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51544
51649
  /*
51545
51650
  * Copyright (c) Microsoft Corporation. All rights reserved.
51546
51651
  * Licensed under the MIT License.
@@ -51586,7 +51691,7 @@ class MemoryStorage {
51586
51691
  }
51587
51692
  }
51588
51693
 
51589
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51694
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51590
51695
 
51591
51696
  /*
51592
51697
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51720,7 +51825,7 @@ class AsyncMemoryStorage {
51720
51825
  }
51721
51826
  }
51722
51827
 
51723
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
51828
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51724
51829
 
51725
51830
  /*
51726
51831
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51901,7 +52006,7 @@ function getSortedObjectString(obj) {
51901
52006
  return JSON.stringify(obj, Object.keys(obj).sort());
51902
52007
  }
51903
52008
 
51904
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52009
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51905
52010
 
51906
52011
  /*
51907
52012
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -51979,7 +52084,7 @@ function getCookieExpirationTime(cookieLifeDays) {
51979
52084
  return expr.toUTCString();
51980
52085
  }
51981
52086
 
51982
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52087
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
51983
52088
 
51984
52089
  /*
51985
52090
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -52021,7 +52126,7 @@ function getTokenKeys(clientId, storage, schemaVersion) {
52021
52126
  };
52022
52127
  }
52023
52128
 
52024
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52129
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52025
52130
  /*
52026
52131
  * Copyright (c) Microsoft Corporation. All rights reserved.
52027
52132
  * Licensed under the MIT License.
@@ -52032,7 +52137,7 @@ function isEncrypted(data) {
52032
52137
  data.hasOwnProperty("data"));
52033
52138
  }
52034
52139
 
52035
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52140
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52036
52141
 
52037
52142
  /*
52038
52143
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -52322,7 +52427,7 @@ class LocalStorage {
52322
52427
  }
52323
52428
  }
52324
52429
 
52325
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52430
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52326
52431
 
52327
52432
  /*
52328
52433
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -52364,7 +52469,7 @@ class SessionStorage {
52364
52469
  }
52365
52470
  }
52366
52471
 
52367
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52472
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52368
52473
  /*
52369
52474
  * Copyright (c) Microsoft Corporation. All rights reserved.
52370
52475
  * Licensed under the MIT License.
@@ -52399,7 +52504,7 @@ const EventType = {
52399
52504
  BROKER_CONNECTION_ESTABLISHED: "msal:brokerConnectionEstablished",
52400
52505
  };
52401
52506
 
52402
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52507
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52403
52508
  /*
52404
52509
  * Copyright (c) Microsoft Corporation. All rights reserved.
52405
52510
  * Licensed under the MIT License.
@@ -52416,7 +52521,7 @@ function removeElementFromArray(array, element) {
52416
52521
  }
52417
52522
  }
52418
52523
 
52419
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
52524
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
52420
52525
 
52421
52526
  /*
52422
52527
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -52973,17 +53078,21 @@ class BrowserCacheManager extends CacheManager {
52973
53078
  if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {
52974
53079
  return null;
52975
53080
  }
53081
+ this.performanceClient.addFields({
53082
+ accountCachedBy: apiIdToName(parsedAccount.cachedByApiId),
53083
+ }, correlationId);
52976
53084
  return CacheManager.toObject(new AccountEntity(), parsedAccount);
52977
53085
  }
52978
53086
  /**
52979
53087
  * set account entity in the platform cache
52980
53088
  * @param account
52981
53089
  */
52982
- async setAccount(account, correlationId, kmsi) {
53090
+ async setAccount(account, correlationId, kmsi, apiId) {
52983
53091
  this.logger.trace("BrowserCacheManager.setAccount called");
52984
53092
  const key = this.generateAccountKey(AccountEntity.getAccountInfo(account));
52985
53093
  const timestamp = Date.now().toString();
52986
53094
  account.lastUpdatedAt = timestamp;
53095
+ account.cachedByApiId = apiId;
52987
53096
  await this.setUserData(key, JSON.stringify(account), correlationId, timestamp, kmsi);
52988
53097
  const wasAdded = this.addAccountKeyToMap(key, correlationId);
52989
53098
  this.performanceClient.addFields({ kmsi: kmsi }, correlationId);
@@ -53738,7 +53847,7 @@ class BrowserCacheManager extends CacheManager {
53738
53847
  * @param request
53739
53848
  */
53740
53849
  async hydrateCache(result, request) {
53741
- const idTokenEntity = createIdTokenEntity(result.account?.homeAccountId, result.account?.environment, result.idToken, this.clientId, result.tenantId);
53850
+ const idTokenEntity = createIdTokenEntity(result.account.homeAccountId, result.account.environment, result.idToken, this.clientId, result.tenantId);
53742
53851
  let claimsHash;
53743
53852
  if (request.claims) {
53744
53853
  claimsHash = await this.cryptoImpl.hashString(request.claims);
@@ -53750,7 +53859,7 @@ class BrowserCacheManager extends CacheManager {
53750
53859
  *
53751
53860
  * The next MSAL VFuture should map these both to same value if possible
53752
53861
  */
53753
- const accessTokenEntity = createAccessTokenEntity(result.account?.homeAccountId, result.account.environment, result.accessToken, this.clientId, result.tenantId, result.scopes.join(" "),
53862
+ const accessTokenEntity = createAccessTokenEntity(result.account.homeAccountId, result.account.environment, result.accessToken, this.clientId, result.tenantId, result.scopes.join(" "),
53754
53863
  // Access token expiresOn stored in seconds, converting from AuthenticationResult expiresOn stored as Date
53755
53864
  result.expiresOn
53756
53865
  ? toSecondsFromDate(result.expiresOn)
@@ -53763,7 +53872,7 @@ class BrowserCacheManager extends CacheManager {
53763
53872
  idToken: idTokenEntity,
53764
53873
  accessToken: accessTokenEntity,
53765
53874
  };
53766
- return this.saveCacheRecord(cacheRecord, result.correlationId, isKmsi(extractTokenClaims(result.idToken, base64Decode)));
53875
+ return this.saveCacheRecord(cacheRecord, result.correlationId, isKmsi(extractTokenClaims(result.idToken, base64Decode)), ApiId.hydrateCache);
53767
53876
  }
53768
53877
  /**
53769
53878
  * saves a cache record
@@ -53771,9 +53880,9 @@ class BrowserCacheManager extends CacheManager {
53771
53880
  * @param storeInCache {?StoreInCache}
53772
53881
  * @param correlationId {?string} correlation id
53773
53882
  */
53774
- async saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache) {
53883
+ async saveCacheRecord(cacheRecord, correlationId, kmsi, apiId, storeInCache) {
53775
53884
  try {
53776
- await super.saveCacheRecord(cacheRecord, correlationId, kmsi, storeInCache);
53885
+ await super.saveCacheRecord(cacheRecord, correlationId, kmsi, apiId, storeInCache);
53777
53886
  }
53778
53887
  catch (e) {
53779
53888
  if (e instanceof CacheError &&
@@ -53827,7 +53936,7 @@ const DEFAULT_BROWSER_CACHE_MANAGER = (clientId, logger, performanceClient, even
53827
53936
  return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger, performanceClient, eventHandler);
53828
53937
  };
53829
53938
 
53830
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
53939
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
53831
53940
  /*
53832
53941
  * Copyright (c) Microsoft Corporation. All rights reserved.
53833
53942
  * Licensed under the MIT License.
@@ -53952,7 +54061,7 @@ function getActiveAccount(browserStorage, correlationId) {
53952
54061
  return browserStorage.getActiveAccount(correlationId);
53953
54062
  }
53954
54063
 
53955
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54064
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
53956
54065
 
53957
54066
  /*
53958
54067
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54058,7 +54167,7 @@ class EventHandler {
54058
54167
  }
54059
54168
  }
54060
54169
 
54061
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54170
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54062
54171
 
54063
54172
  /*
54064
54173
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54174,7 +54283,7 @@ class BaseInteractionClient {
54174
54283
  }
54175
54284
  }
54176
54285
 
54177
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54286
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54178
54287
 
54179
54288
  /*
54180
54289
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54259,7 +54368,7 @@ function validateRequestMethod(interactionRequest, protocolMode) {
54259
54368
  return httpMethod;
54260
54369
  }
54261
54370
 
54262
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54371
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54263
54372
 
54264
54373
  /*
54265
54374
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54463,7 +54572,7 @@ class StandardInteractionClient extends BaseInteractionClient {
54463
54572
  }
54464
54573
  }
54465
54574
 
54466
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54575
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54467
54576
 
54468
54577
  /*
54469
54578
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54487,7 +54596,7 @@ function extractBrowserRequestState(browserCrypto, state) {
54487
54596
  }
54488
54597
  }
54489
54598
 
54490
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54599
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54491
54600
 
54492
54601
  /*
54493
54602
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54526,7 +54635,7 @@ function validateInteractionType(response, browserCrypto, interactionType) {
54526
54635
  }
54527
54636
  }
54528
54637
 
54529
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54638
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54530
54639
 
54531
54640
  /*
54532
54641
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54547,7 +54656,7 @@ class InteractionHandler {
54547
54656
  * Function to handle response parameters from hash.
54548
54657
  * @param locationHash
54549
54658
  */
54550
- async handleCodeResponse(response, request) {
54659
+ async handleCodeResponse(response, request, apiId) {
54551
54660
  this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponse, request.correlationId);
54552
54661
  let authCodeResponse;
54553
54662
  try {
@@ -54563,7 +54672,7 @@ class InteractionHandler {
54563
54672
  throw e;
54564
54673
  }
54565
54674
  }
54566
- return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request);
54675
+ return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request, apiId);
54567
54676
  }
54568
54677
  /**
54569
54678
  * Process auth code response from AAD
@@ -54573,7 +54682,7 @@ class InteractionHandler {
54573
54682
  * @param networkModule
54574
54683
  * @returns
54575
54684
  */
54576
- async handleCodeResponseFromServer(authCodeResponse, request, validateNonce = true) {
54685
+ async handleCodeResponseFromServer(authCodeResponse, request, apiId, validateNonce = true) {
54577
54686
  this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, request.correlationId);
54578
54687
  this.logger.trace("InteractionHandler.handleCodeResponseFromServer called");
54579
54688
  // Assign code to request
@@ -54599,7 +54708,7 @@ class InteractionHandler {
54599
54708
  }
54600
54709
  }
54601
54710
  // Acquire token with retrieved code.
54602
- const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, authCodeResponse));
54711
+ const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, apiId, authCodeResponse));
54603
54712
  return tokenResponse;
54604
54713
  }
54605
54714
  /**
@@ -54622,7 +54731,7 @@ class InteractionHandler {
54622
54731
  }
54623
54732
  }
54624
54733
 
54625
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54734
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54626
54735
  /*
54627
54736
  * Copyright (c) Microsoft Corporation. All rights reserved.
54628
54737
  * Licensed under the MIT License.
@@ -54631,7 +54740,7 @@ const contentError = "ContentError";
54631
54740
  const pageException = "PageException";
54632
54741
  const userSwitch = "user_switch";
54633
54742
 
54634
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54743
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54635
54744
  /*
54636
54745
  * Copyright (c) Microsoft Corporation. All rights reserved.
54637
54746
  * Licensed under the MIT License.
@@ -54644,7 +54753,7 @@ const DISABLED = "DISABLED";
54644
54753
  const ACCOUNT_UNAVAILABLE = "ACCOUNT_UNAVAILABLE";
54645
54754
  const UX_NOT_ALLOWED = "UX_NOT_ALLOWED";
54646
54755
 
54647
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54756
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54648
54757
 
54649
54758
  /*
54650
54759
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54709,7 +54818,7 @@ function createNativeAuthError(code, description, ext) {
54709
54818
  return new NativeAuthError(code, NativeAuthErrorMessages[code] || description, ext);
54710
54819
  }
54711
54820
 
54712
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54821
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54713
54822
 
54714
54823
  /*
54715
54824
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -54759,7 +54868,7 @@ class SilentCacheClient extends StandardInteractionClient {
54759
54868
  }
54760
54869
  }
54761
54870
 
54762
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
54871
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
54763
54872
 
54764
54873
  /*
54765
54874
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -55155,7 +55264,7 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
55155
55264
  */
55156
55265
  async cacheAccount(accountEntity, correlationId, kmsi) {
55157
55266
  // Store the account info and hence `nativeAccountId` in browser cache
55158
- await this.browserStorage.setAccount(accountEntity, this.correlationId, kmsi);
55267
+ await this.browserStorage.setAccount(accountEntity, this.correlationId, kmsi, this.apiId);
55159
55268
  // Remove any existing cached tokens for this account in browser storage
55160
55269
  this.browserStorage.removeAccountContext(AccountEntity.getAccountInfo(accountEntity), correlationId);
55161
55270
  }
@@ -55184,7 +55293,7 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
55184
55293
  idToken: cachedIdToken,
55185
55294
  accessToken: cachedAccessToken,
55186
55295
  };
55187
- return this.nativeStorageManager.saveCacheRecord(nativeCacheRecord, this.correlationId, isKmsi(idTokenClaims), request.storeInCache);
55296
+ return this.nativeStorageManager.saveCacheRecord(nativeCacheRecord, this.correlationId, isKmsi(idTokenClaims), this.apiId, request.storeInCache);
55188
55297
  }
55189
55298
  getExpiresInValue(tokenType, expiresIn) {
55190
55299
  return tokenType === AuthenticationScheme.POP
@@ -55386,7 +55495,7 @@ class PlatformAuthInteractionClient extends BaseInteractionClient {
55386
55495
  }
55387
55496
  }
55388
55497
 
55389
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
55498
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
55390
55499
 
55391
55500
  /*
55392
55501
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -55471,6 +55580,8 @@ async function getEARForm(frame, config, authority, request, logger, performance
55471
55580
  addCodeChallengeParams(parameters, request.codeChallenge, Constants.S256_CODE_CHALLENGE_METHOD);
55472
55581
  const queryParams = new Map();
55473
55582
  addExtraQueryParameters(queryParams, request.extraQueryParameters || {});
55583
+ // Add correlationId to query params so gateway can propagate it to IDPs
55584
+ addCorrelationId(queryParams, request.correlationId);
55474
55585
  const url = getAuthorizeUrl(authority, queryParams, config.auth.encodeExtraQueryParams, request.extraQueryParameters);
55475
55586
  return createForm(frame, url, parameters);
55476
55587
  }
@@ -55484,6 +55595,8 @@ async function getCodeForm(frame, config, authority, request, logger, performanc
55484
55595
  addPostBodyParameters(parameters, request.authorizePostBodyParameters || {});
55485
55596
  const queryParams = new Map();
55486
55597
  addExtraQueryParameters(queryParams, request.extraQueryParameters || {});
55598
+ // Add correlationId to query params so gateway can propagate it to IDPs
55599
+ addCorrelationId(queryParams, request.correlationId);
55487
55600
  const url = getAuthorizeUrl(authority, queryParams, config.auth.encodeExtraQueryParams, request.extraQueryParameters);
55488
55601
  return createForm(frame, url, parameters);
55489
55602
  }
@@ -55561,7 +55674,7 @@ async function handleResponseCode(request, response, codeVerifier, apiId, config
55561
55674
  // Create popup interaction handler.
55562
55675
  const interactionHandler = new InteractionHandler(authClient, browserStorage, authCodeRequest, logger, performanceClient);
55563
55676
  // Handle response from hash string.
55564
- const result = await invokeAsync(interactionHandler.handleCodeResponse.bind(interactionHandler), PerformanceEvents.HandleCodeResponse, logger, performanceClient, request.correlationId)(response, request);
55677
+ const result = await invokeAsync(interactionHandler.handleCodeResponse.bind(interactionHandler), PerformanceEvents.HandleCodeResponse, logger, performanceClient, request.correlationId)(response, request, apiId);
55565
55678
  return result;
55566
55679
  }
55567
55680
  /**
@@ -55608,10 +55721,10 @@ async function handleResponseEAR(request, response, apiId, config, authority, br
55608
55721
  cloud_instance_name: decryptedData.cloud_instance_name,
55609
55722
  msgraph_host: decryptedData.msgraph_host,
55610
55723
  };
55611
- return (await invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, logger, performanceClient, request.correlationId)(decryptedData, authority, nowSeconds(), request, additionalData, undefined, undefined, undefined, undefined));
55724
+ return (await invokeAsync(responseHandler.handleServerTokenResponse.bind(responseHandler), PerformanceEvents.HandleServerTokenResponse, logger, performanceClient, request.correlationId)(decryptedData, authority, nowSeconds(), request, apiId, additionalData, undefined, undefined, undefined, undefined));
55612
55725
  }
55613
55726
 
55614
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
55727
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
55615
55728
 
55616
55729
  /*
55617
55730
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -55668,7 +55781,7 @@ async function generateCodeChallengeFromVerifier(pkceCodeVerifier, performanceCl
55668
55781
  }
55669
55782
  }
55670
55783
 
55671
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
55784
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
55672
55785
 
55673
55786
  /*
55674
55787
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -55933,7 +56046,7 @@ class PlatformAuthExtensionHandler {
55933
56046
  }
55934
56047
  }
55935
56048
 
55936
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
56049
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
55937
56050
 
55938
56051
  /*
55939
56052
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -56070,7 +56183,7 @@ class PlatformAuthDOMHandler {
56070
56183
  }
56071
56184
  }
56072
56185
 
56073
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
56186
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
56074
56187
  async function getPlatformAuthProvider(logger, performanceClient, correlationId, nativeBrokerHandshakeTimeout, enablePlatformBrokerDOMSupport) {
56075
56188
  logger.trace("getPlatformAuthProvider called", correlationId);
56076
56189
  logger.trace("Has client allowed platform auth via DOM API: " +
@@ -56135,7 +56248,7 @@ function isPlatformAuthAllowed(config, logger, platformAuthProvider, authenticat
56135
56248
  return true;
56136
56249
  }
56137
56250
 
56138
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
56251
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
56139
56252
 
56140
56253
  /*
56141
56254
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -56632,7 +56745,7 @@ class PopupClient extends StandardInteractionClient {
56632
56745
  }
56633
56746
  }
56634
56747
 
56635
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
56748
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
56636
56749
 
56637
56750
  /*
56638
56751
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57072,7 +57185,7 @@ class RedirectClient extends StandardInteractionClient {
57072
57185
  }
57073
57186
  }
57074
57187
 
57075
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57188
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57076
57189
 
57077
57190
  /*
57078
57191
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57228,7 +57341,7 @@ function removeHiddenIframe(iframe) {
57228
57341
  }
57229
57342
  }
57230
57343
 
57231
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57344
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57232
57345
 
57233
57346
  /*
57234
57347
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57389,7 +57502,7 @@ class SilentIframeClient extends StandardInteractionClient {
57389
57502
  }
57390
57503
  }
57391
57504
 
57392
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57505
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57393
57506
 
57394
57507
  /*
57395
57508
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57419,7 +57532,7 @@ class SilentRefreshClient extends StandardInteractionClient {
57419
57532
  account: silentRequest.account,
57420
57533
  });
57421
57534
  // Send request to renew token. Auth module will throw errors if token cannot be renewed.
57422
- return invokeAsync(refreshTokenClient.acquireTokenByRefreshToken.bind(refreshTokenClient), PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, this.logger, this.performanceClient, request.correlationId)(silentRequest).catch((e) => {
57535
+ return invokeAsync(refreshTokenClient.acquireTokenByRefreshToken.bind(refreshTokenClient), PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, this.logger, this.performanceClient, request.correlationId)(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch((e) => {
57423
57536
  e.setCorrelationId(this.correlationId);
57424
57537
  serverTelemetryManager.cacheFailedRequest(e);
57425
57538
  throw e;
@@ -57455,7 +57568,7 @@ class SilentRefreshClient extends StandardInteractionClient {
57455
57568
  }
57456
57569
  }
57457
57570
 
57458
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57571
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57459
57572
 
57460
57573
  /*
57461
57574
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57465,12 +57578,13 @@ class SilentRefreshClient extends StandardInteractionClient {
57465
57578
  * Token cache manager
57466
57579
  */
57467
57580
  class TokenCache {
57468
- constructor(configuration, storage, logger, cryptoObj) {
57581
+ constructor(configuration, storage, logger, cryptoObj, performanceClient) {
57469
57582
  this.isBrowserEnvironment = typeof window !== "undefined";
57470
57583
  this.config = configuration;
57471
57584
  this.storage = storage;
57472
57585
  this.logger = logger;
57473
57586
  this.cryptoObj = cryptoObj;
57587
+ this.performanceClient = performanceClient;
57474
57588
  }
57475
57589
  // Move getAllAccounts here and cache utility APIs
57476
57590
  /**
@@ -57485,30 +57599,37 @@ class TokenCache {
57485
57599
  throw createBrowserAuthError(nonBrowserEnvironment);
57486
57600
  }
57487
57601
  const correlationId = request.correlationId || createNewGuid();
57488
- const idTokenClaims = response.id_token
57489
- ? extractTokenClaims(response.id_token, base64Decode)
57490
- : undefined;
57491
- const kmsi = isKmsi(idTokenClaims || {});
57492
- const authorityOptions = {
57493
- protocolMode: this.config.auth.protocolMode,
57494
- knownAuthorities: this.config.auth.knownAuthorities,
57495
- cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
57496
- authorityMetadata: this.config.auth.authorityMetadata,
57497
- skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
57498
- };
57499
- const authority = request.authority
57500
- ? new Authority(Authority.generateAuthority(request.authority, request.azureCloudOptions), this.config.system.networkClient, this.storage, authorityOptions, this.logger, request.correlationId || createNewGuid())
57501
- : undefined;
57502
- const cacheRecordAccount = await this.loadAccount(request, options.clientInfo || response.client_info || "", correlationId, idTokenClaims, authority);
57503
- const idToken = await this.loadIdToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, correlationId, kmsi);
57504
- const accessToken = await this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, options, correlationId, kmsi);
57505
- const refreshToken = await this.loadRefreshToken(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, correlationId, kmsi);
57506
- return this.generateAuthenticationResult(request, {
57507
- account: cacheRecordAccount,
57508
- idToken,
57509
- accessToken,
57510
- refreshToken,
57511
- }, idTokenClaims, authority);
57602
+ const rootMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.LoadExternalTokens, correlationId);
57603
+ try {
57604
+ const idTokenClaims = response.id_token
57605
+ ? extractTokenClaims(response.id_token, base64Decode)
57606
+ : undefined;
57607
+ const kmsi = isKmsi(idTokenClaims || {});
57608
+ const authorityOptions = {
57609
+ protocolMode: this.config.auth.protocolMode,
57610
+ knownAuthorities: this.config.auth.knownAuthorities,
57611
+ cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
57612
+ authorityMetadata: this.config.auth.authorityMetadata,
57613
+ skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
57614
+ };
57615
+ const authorityString = request.authority || this.config.auth.authority;
57616
+ const authority = await createDiscoveredInstance(Authority.generateAuthority(authorityString, request.azureCloudOptions), this.config.system.networkClient, this.storage, authorityOptions, this.logger, correlationId, this.performanceClient);
57617
+ const cacheRecordAccount = await invokeAsync(this.loadAccount.bind(this), PerformanceEvents.LoadAccount, this.logger, this.performanceClient, correlationId)(request, options.clientInfo || response.client_info || "", correlationId, authority, idTokenClaims);
57618
+ const idToken = await invokeAsync(this.loadIdToken.bind(this), PerformanceEvents.LoadIdToken, this.logger, this.performanceClient, correlationId)(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, correlationId, kmsi);
57619
+ const accessToken = await invokeAsync(this.loadAccessToken.bind(this), PerformanceEvents.LoadAccessToken, this.logger, this.performanceClient, correlationId)(request, response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, cacheRecordAccount.realm, options, correlationId, kmsi);
57620
+ const refreshToken = await invokeAsync(this.loadRefreshToken.bind(this), PerformanceEvents.LoadRefreshToken, this.logger, this.performanceClient, correlationId)(response, cacheRecordAccount.homeAccountId, cacheRecordAccount.environment, correlationId, kmsi);
57621
+ rootMeasurement.end({ success: true }, undefined, AccountEntity.getAccountInfo(cacheRecordAccount));
57622
+ return this.generateAuthenticationResult(request, {
57623
+ account: cacheRecordAccount,
57624
+ idToken,
57625
+ accessToken,
57626
+ refreshToken,
57627
+ }, authority, idTokenClaims);
57628
+ }
57629
+ catch (error) {
57630
+ rootMeasurement.end({ success: false }, error);
57631
+ throw error;
57632
+ }
57512
57633
  }
57513
57634
  /**
57514
57635
  * Helper function to load account to msal-browser cache
@@ -57519,23 +57640,23 @@ class TokenCache {
57519
57640
  * @param requestHomeAccountId
57520
57641
  * @returns `AccountEntity`
57521
57642
  */
57522
- async loadAccount(request, clientInfo, correlationId, idTokenClaims, authority) {
57643
+ async loadAccount(request, clientInfo, correlationId, authority, idTokenClaims) {
57523
57644
  this.logger.verbose("TokenCache - loading account");
57524
57645
  if (request.account) {
57525
57646
  const accountEntity = AccountEntity.createFromAccountInfo(request.account);
57526
- await this.storage.setAccount(accountEntity, correlationId, isKmsi(idTokenClaims || {}));
57647
+ await this.storage.setAccount(accountEntity, correlationId, isKmsi(idTokenClaims || {}), ApiId.loadExternalTokens);
57527
57648
  return accountEntity;
57528
57649
  }
57529
- else if (!authority || (!clientInfo && !idTokenClaims)) {
57530
- this.logger.error("TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead.");
57650
+ else if (!clientInfo && !idTokenClaims) {
57651
+ this.logger.error("TokenCache - if an account is not provided on the request, clientInfo or idToken must be provided instead.");
57531
57652
  throw createBrowserAuthError(unableToLoadToken);
57532
57653
  }
57533
57654
  const homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);
57534
57655
  const claimsTenantId = idTokenClaims?.tid;
57535
- const cachedAccount = buildAccountToCache(this.storage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, authority.hostnameAndPort, claimsTenantId, undefined, // authCodePayload
57656
+ const cachedAccount = buildAccountToCache(this.storage, authority, homeAccountId, base64Decode, correlationId, idTokenClaims, clientInfo, authority.getPreferredCache(), claimsTenantId, undefined, // authCodePayload
57536
57657
  undefined, // nativeAccountId
57537
57658
  this.logger);
57538
- await this.storage.setAccount(cachedAccount, correlationId, isKmsi(idTokenClaims || {}));
57659
+ await this.storage.setAccount(cachedAccount, correlationId, isKmsi(idTokenClaims || {}), ApiId.loadExternalTokens);
57539
57660
  return cachedAccount;
57540
57661
  }
57541
57662
  /**
@@ -57604,9 +57725,15 @@ class TokenCache {
57604
57725
  this.logger.verbose("TokenCache - no refresh token found in response");
57605
57726
  return null;
57606
57727
  }
57728
+ const expiresOn = response.refresh_token_expires_in
57729
+ ? response.refresh_token_expires_in + nowSeconds()
57730
+ : undefined;
57731
+ this.performanceClient.addFields({
57732
+ extRtExpiresOnSeconds: expiresOn,
57733
+ }, correlationId);
57607
57734
  this.logger.verbose("TokenCache - loading refresh token");
57608
57735
  const refreshTokenEntity = createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId, response.foci, undefined, // userAssertionHash
57609
- response.refresh_token_expires_in);
57736
+ expiresOn);
57610
57737
  await this.storage.setRefreshTokenCredential(refreshTokenEntity, correlationId, kmsi);
57611
57738
  return refreshTokenEntity;
57612
57739
  }
@@ -57618,7 +57745,7 @@ class TokenCache {
57618
57745
  * @param authority
57619
57746
  * @returns `AuthenticationResult`
57620
57747
  */
57621
- generateAuthenticationResult(request, cacheRecord, idTokenClaims, authority) {
57748
+ generateAuthenticationResult(request, cacheRecord, authority, idTokenClaims) {
57622
57749
  let accessToken = "";
57623
57750
  let responseScopes = [];
57624
57751
  let expiresOn = null;
@@ -57655,7 +57782,7 @@ class TokenCache {
57655
57782
  }
57656
57783
  }
57657
57784
 
57658
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57785
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57659
57786
 
57660
57787
  /*
57661
57788
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57668,7 +57795,7 @@ class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {
57668
57795
  }
57669
57796
  }
57670
57797
 
57671
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57798
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57672
57799
 
57673
57800
  /*
57674
57801
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57715,7 +57842,7 @@ class SilentAuthCodeClient extends StandardInteractionClient {
57715
57842
  msgraph_host: request.msGraphHost,
57716
57843
  cloud_graph_host_name: request.cloudGraphHostName,
57717
57844
  cloud_instance_host_name: request.cloudInstanceHostName,
57718
- }, silentRequest, false);
57845
+ }, silentRequest, this.apiId, false);
57719
57846
  }
57720
57847
  catch (e) {
57721
57848
  if (e instanceof AuthError) {
@@ -57734,7 +57861,7 @@ class SilentAuthCodeClient extends StandardInteractionClient {
57734
57861
  }
57735
57862
  }
57736
57863
 
57737
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57864
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57738
57865
  /*
57739
57866
  * Copyright (c) Microsoft Corporation. All rights reserved.
57740
57867
  * Licensed under the MIT License.
@@ -57754,7 +57881,7 @@ function collectInstanceStats(currentClientId, performanceEvent, logger) {
57754
57881
  });
57755
57882
  }
57756
57883
 
57757
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
57884
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
57758
57885
 
57759
57886
  /*
57760
57887
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -57831,7 +57958,7 @@ class StandardController {
57831
57958
  };
57832
57959
  this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger, this.performanceClient, this.eventHandler);
57833
57960
  // Initialize the token cache
57834
- this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);
57961
+ this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto, this.performanceClient);
57835
57962
  this.activeSilentTokenRequests = new Map();
57836
57963
  // Register listener functions
57837
57964
  this.trackPageVisibility = this.trackPageVisibility.bind(this);
@@ -58661,7 +58788,7 @@ class StandardController {
58661
58788
  this.logger.verbose("hydrateCache called");
58662
58789
  // Account gets saved to browser storage regardless of native or not
58663
58790
  const accountEntity = AccountEntity.createFromAccountInfo(result.account, result.cloudGraphHostName, result.msGraphHost);
58664
- await this.browserStorage.setAccount(accountEntity, result.correlationId, isKmsi(result.idTokenClaims));
58791
+ await this.browserStorage.setAccount(accountEntity, result.correlationId, isKmsi(result.idTokenClaims), ApiId.hydrateCache);
58665
58792
  if (result.fromNativeBroker) {
58666
58793
  this.logger.verbose("Response was from native broker, storing in-memory");
58667
58794
  // Tokens from native broker are stored in-memory
@@ -59207,7 +59334,7 @@ function checkIfRefreshTokenErrorCanBeResolvedSilently(refreshTokenError, cacheL
59207
59334
  return isSilentlyResolvable && tryIframeRenewal;
59208
59335
  }
59209
59336
 
59210
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
59337
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
59211
59338
 
59212
59339
  /*
59213
59340
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -59219,7 +59346,7 @@ async function createV3Controller(config, request) {
59219
59346
  return StandardController.createController(standard, request);
59220
59347
  }
59221
59348
 
59222
- /*! @azure/msal-browser v4.27.0 2025-12-04 */
59349
+ /*! @azure/msal-browser v4.28.2 2026-02-10 */
59223
59350
 
59224
59351
  /*
59225
59352
  * Copyright (c) Microsoft Corporation. All rights reserved.