@azure/msal-common 16.1.0 → 16.3.0

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.
Files changed (275) hide show
  1. package/dist/account/AccountInfo.mjs +1 -1
  2. package/dist/account/AuthToken.mjs +1 -1
  3. package/dist/account/CcsCredential.mjs +1 -1
  4. package/dist/account/ClientInfo.mjs +1 -1
  5. package/dist/account/TokenClaims.mjs +1 -1
  6. package/dist/authority/Authority.mjs +1 -1
  7. package/dist/authority/AuthorityFactory.mjs +1 -1
  8. package/dist/authority/AuthorityMetadata.mjs +1 -1
  9. package/dist/authority/AuthorityOptions.mjs +1 -1
  10. package/dist/authority/AuthorityType.mjs +1 -1
  11. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +1 -1
  12. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +1 -1
  13. package/dist/authority/OpenIdConfigResponse.mjs +1 -1
  14. package/dist/authority/ProtocolMode.mjs +1 -1
  15. package/dist/authority/RegionDiscovery.mjs +1 -1
  16. package/dist/cache/CacheManager.mjs +1 -1
  17. package/dist/cache/entities/AccessTokenEntity.d.ts +2 -0
  18. package/dist/cache/entities/AccessTokenEntity.d.ts.map +1 -1
  19. package/dist/cache/persistence/TokenCacheContext.mjs +1 -1
  20. package/dist/cache/utils/AccountEntityUtils.mjs +1 -1
  21. package/dist/cache/utils/CacheHelpers.mjs +1 -1
  22. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  23. package/dist/client/AuthorizationCodeClient.mjs +3 -2
  24. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  25. package/dist/client/RefreshTokenClient.mjs +1 -1
  26. package/dist/client/SilentFlowClient.d.ts.map +1 -1
  27. package/dist/client/SilentFlowClient.mjs +8 -1
  28. package/dist/client/SilentFlowClient.mjs.map +1 -1
  29. package/dist/config/ClientConfiguration.d.ts +2 -0
  30. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  31. package/dist/config/ClientConfiguration.mjs +2 -1
  32. package/dist/config/ClientConfiguration.mjs.map +1 -1
  33. package/dist/constants/AADServerParamKeys.d.ts +1 -0
  34. package/dist/constants/AADServerParamKeys.d.ts.map +1 -1
  35. package/dist/constants/AADServerParamKeys.mjs +4 -3
  36. package/dist/constants/AADServerParamKeys.mjs.map +1 -1
  37. package/dist/crypto/ICrypto.mjs +1 -1
  38. package/dist/crypto/JoseHeader.mjs +1 -1
  39. package/dist/crypto/PopTokenGenerator.mjs +1 -1
  40. package/dist/error/AuthError.mjs +1 -1
  41. package/dist/error/AuthErrorCodes.mjs +1 -1
  42. package/dist/error/CacheError.mjs +1 -1
  43. package/dist/error/CacheErrorCodes.mjs +1 -1
  44. package/dist/error/ClientAuthError.mjs +1 -1
  45. package/dist/error/ClientAuthErrorCodes.d.ts +2 -0
  46. package/dist/error/ClientAuthErrorCodes.d.ts.map +1 -1
  47. package/dist/error/ClientAuthErrorCodes.mjs +5 -3
  48. package/dist/error/ClientAuthErrorCodes.mjs.map +1 -1
  49. package/dist/error/ClientConfigurationError.mjs +1 -1
  50. package/dist/error/ClientConfigurationErrorCodes.mjs +1 -1
  51. package/dist/error/InteractionRequiredAuthError.mjs +1 -1
  52. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +1 -1
  53. package/dist/error/JoseHeaderError.mjs +1 -1
  54. package/dist/error/JoseHeaderErrorCodes.mjs +1 -1
  55. package/dist/error/NetworkError.mjs +1 -1
  56. package/dist/error/PlatformBrokerError.mjs +1 -1
  57. package/dist/error/ServerError.mjs +1 -1
  58. package/dist/exports-common.d.ts +1 -1
  59. package/dist/exports-common.d.ts.map +1 -1
  60. package/dist/index-node.mjs +2 -1
  61. package/dist/index-node.mjs.map +1 -1
  62. package/dist/index.mjs +2 -1
  63. package/dist/index.mjs.map +1 -1
  64. package/dist/logger/Logger.mjs +1 -1
  65. package/dist/network/INetworkModule.mjs +1 -1
  66. package/dist/network/RequestThumbprint.mjs +1 -1
  67. package/dist/network/ThrottlingUtils.mjs +1 -1
  68. package/dist/packageMetadata.d.ts +1 -1
  69. package/dist/packageMetadata.mjs +2 -2
  70. package/dist/protocol/Authorize.d.ts.map +1 -1
  71. package/dist/protocol/Authorize.mjs +3 -2
  72. package/dist/protocol/Authorize.mjs.map +1 -1
  73. package/dist/protocol/Token.mjs +1 -1
  74. package/dist/request/AuthenticationHeaderParser.mjs +1 -1
  75. package/dist/request/BaseAuthRequest.d.ts +12 -0
  76. package/dist/request/BaseAuthRequest.d.ts.map +1 -1
  77. package/dist/request/BaseAuthRequest.mjs +38 -0
  78. package/dist/request/BaseAuthRequest.mjs.map +1 -0
  79. package/dist/request/NativeRequest.d.ts +1 -0
  80. package/dist/request/NativeRequest.d.ts.map +1 -1
  81. package/dist/request/RequestParameterBuilder.d.ts +1 -0
  82. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  83. package/dist/request/RequestParameterBuilder.mjs +8 -3
  84. package/dist/request/RequestParameterBuilder.mjs.map +1 -1
  85. package/dist/request/ScopeSet.mjs +1 -1
  86. package/dist/response/AuthenticationResult.d.ts +1 -0
  87. package/dist/response/AuthenticationResult.d.ts.map +1 -1
  88. package/dist/response/ResponseHandler.d.ts.map +1 -1
  89. package/dist/response/ResponseHandler.mjs +6 -1
  90. package/dist/response/ResponseHandler.mjs.map +1 -1
  91. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  92. package/dist/telemetry/performance/PerformanceClient.mjs +59 -12
  93. package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
  94. package/dist/telemetry/performance/PerformanceEvent.d.ts +106 -0
  95. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  96. package/dist/telemetry/performance/PerformanceEvent.mjs +11 -2
  97. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  98. package/dist/telemetry/performance/PerformanceEvents.mjs +1 -1
  99. package/dist/telemetry/performance/StubPerformanceClient.mjs +1 -1
  100. package/dist/telemetry/server/ServerTelemetryManager.mjs +1 -1
  101. package/dist/url/UrlString.mjs +1 -1
  102. package/dist/utils/ClientAssertionUtils.mjs +1 -1
  103. package/dist/utils/Constants.mjs +1 -1
  104. package/dist/utils/FunctionWrappers.d.ts.map +1 -1
  105. package/dist/utils/FunctionWrappers.mjs +3 -5
  106. package/dist/utils/FunctionWrappers.mjs.map +1 -1
  107. package/dist/utils/ProtocolUtils.mjs +1 -1
  108. package/dist/utils/StringUtils.mjs +1 -1
  109. package/dist/utils/TimeUtils.mjs +1 -1
  110. package/dist/utils/UrlUtils.mjs +1 -1
  111. package/dist-browser/account/AccountInfo.mjs +1 -1
  112. package/dist-browser/account/AuthToken.mjs +1 -1
  113. package/dist-browser/account/CcsCredential.mjs +1 -1
  114. package/dist-browser/account/ClientInfo.mjs +1 -1
  115. package/dist-browser/account/TokenClaims.mjs +1 -1
  116. package/dist-browser/authority/Authority.mjs +1 -1
  117. package/dist-browser/authority/AuthorityFactory.mjs +1 -1
  118. package/dist-browser/authority/AuthorityMetadata.mjs +1 -1
  119. package/dist-browser/authority/AuthorityOptions.mjs +1 -1
  120. package/dist-browser/authority/AuthorityType.mjs +1 -1
  121. package/dist-browser/authority/CloudInstanceDiscoveryErrorResponse.mjs +1 -1
  122. package/dist-browser/authority/CloudInstanceDiscoveryResponse.mjs +1 -1
  123. package/dist-browser/authority/OpenIdConfigResponse.mjs +1 -1
  124. package/dist-browser/authority/ProtocolMode.mjs +1 -1
  125. package/dist-browser/authority/RegionDiscovery.mjs +1 -1
  126. package/dist-browser/cache/CacheManager.mjs +1 -1
  127. package/dist-browser/cache/entities/AccessTokenEntity.d.ts +2 -0
  128. package/dist-browser/cache/entities/AccessTokenEntity.d.ts.map +1 -1
  129. package/dist-browser/cache/persistence/TokenCacheContext.mjs +1 -1
  130. package/dist-browser/cache/utils/AccountEntityUtils.mjs +1 -1
  131. package/dist-browser/cache/utils/CacheHelpers.mjs +1 -1
  132. package/dist-browser/client/AuthorizationCodeClient.d.ts.map +1 -1
  133. package/dist-browser/client/AuthorizationCodeClient.mjs +3 -2
  134. package/dist-browser/client/AuthorizationCodeClient.mjs.map +1 -1
  135. package/dist-browser/client/RefreshTokenClient.mjs +1 -1
  136. package/dist-browser/client/SilentFlowClient.d.ts.map +1 -1
  137. package/dist-browser/client/SilentFlowClient.mjs +8 -1
  138. package/dist-browser/client/SilentFlowClient.mjs.map +1 -1
  139. package/dist-browser/config/ClientConfiguration.d.ts +2 -0
  140. package/dist-browser/config/ClientConfiguration.d.ts.map +1 -1
  141. package/dist-browser/config/ClientConfiguration.mjs +2 -1
  142. package/dist-browser/config/ClientConfiguration.mjs.map +1 -1
  143. package/dist-browser/constants/AADServerParamKeys.d.ts +1 -0
  144. package/dist-browser/constants/AADServerParamKeys.d.ts.map +1 -1
  145. package/dist-browser/constants/AADServerParamKeys.mjs +4 -3
  146. package/dist-browser/constants/AADServerParamKeys.mjs.map +1 -1
  147. package/dist-browser/crypto/ICrypto.mjs +1 -1
  148. package/dist-browser/crypto/JoseHeader.mjs +1 -1
  149. package/dist-browser/crypto/PopTokenGenerator.mjs +1 -1
  150. package/dist-browser/error/AuthError.mjs +1 -1
  151. package/dist-browser/error/AuthErrorCodes.mjs +1 -1
  152. package/dist-browser/error/CacheError.mjs +1 -1
  153. package/dist-browser/error/CacheErrorCodes.mjs +1 -1
  154. package/dist-browser/error/ClientAuthError.mjs +1 -1
  155. package/dist-browser/error/ClientAuthErrorCodes.d.ts +2 -0
  156. package/dist-browser/error/ClientAuthErrorCodes.d.ts.map +1 -1
  157. package/dist-browser/error/ClientAuthErrorCodes.mjs +5 -3
  158. package/dist-browser/error/ClientAuthErrorCodes.mjs.map +1 -1
  159. package/dist-browser/error/ClientConfigurationError.mjs +1 -1
  160. package/dist-browser/error/ClientConfigurationErrorCodes.mjs +1 -1
  161. package/dist-browser/error/InteractionRequiredAuthError.mjs +1 -1
  162. package/dist-browser/error/InteractionRequiredAuthErrorCodes.mjs +1 -1
  163. package/dist-browser/error/JoseHeaderError.mjs +1 -1
  164. package/dist-browser/error/JoseHeaderErrorCodes.mjs +1 -1
  165. package/dist-browser/error/NetworkError.mjs +1 -1
  166. package/dist-browser/error/PlatformBrokerError.mjs +1 -1
  167. package/dist-browser/error/ServerError.mjs +1 -1
  168. package/dist-browser/exports-common.d.ts +1 -1
  169. package/dist-browser/exports-common.d.ts.map +1 -1
  170. package/dist-browser/index-browser.mjs +2 -1
  171. package/dist-browser/index-browser.mjs.map +1 -1
  172. package/dist-browser/index.mjs +2 -1
  173. package/dist-browser/index.mjs.map +1 -1
  174. package/dist-browser/log-strings-mapping.json +2 -2
  175. package/dist-browser/logger/Logger.mjs +1 -1
  176. package/dist-browser/network/INetworkModule.mjs +1 -1
  177. package/dist-browser/network/RequestThumbprint.mjs +1 -1
  178. package/dist-browser/network/ThrottlingUtils.mjs +1 -1
  179. package/dist-browser/packageMetadata.d.ts +1 -1
  180. package/dist-browser/packageMetadata.mjs +2 -2
  181. package/dist-browser/protocol/Authorize.d.ts.map +1 -1
  182. package/dist-browser/protocol/Authorize.mjs +3 -2
  183. package/dist-browser/protocol/Authorize.mjs.map +1 -1
  184. package/dist-browser/protocol/Token.mjs +1 -1
  185. package/dist-browser/request/AuthenticationHeaderParser.mjs +1 -1
  186. package/dist-browser/request/BaseAuthRequest.d.ts +12 -0
  187. package/dist-browser/request/BaseAuthRequest.d.ts.map +1 -1
  188. package/dist-browser/request/BaseAuthRequest.mjs +38 -0
  189. package/dist-browser/request/BaseAuthRequest.mjs.map +1 -0
  190. package/dist-browser/request/NativeRequest.d.ts +1 -0
  191. package/dist-browser/request/NativeRequest.d.ts.map +1 -1
  192. package/dist-browser/request/RequestParameterBuilder.d.ts +1 -0
  193. package/dist-browser/request/RequestParameterBuilder.d.ts.map +1 -1
  194. package/dist-browser/request/RequestParameterBuilder.mjs +8 -3
  195. package/dist-browser/request/RequestParameterBuilder.mjs.map +1 -1
  196. package/dist-browser/request/ScopeSet.mjs +1 -1
  197. package/dist-browser/response/AuthenticationResult.d.ts +1 -0
  198. package/dist-browser/response/AuthenticationResult.d.ts.map +1 -1
  199. package/dist-browser/response/ResponseHandler.d.ts.map +1 -1
  200. package/dist-browser/response/ResponseHandler.mjs +6 -1
  201. package/dist-browser/response/ResponseHandler.mjs.map +1 -1
  202. package/dist-browser/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  203. package/dist-browser/telemetry/performance/PerformanceClient.mjs +59 -12
  204. package/dist-browser/telemetry/performance/PerformanceClient.mjs.map +1 -1
  205. package/dist-browser/telemetry/performance/PerformanceEvent.d.ts +106 -0
  206. package/dist-browser/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  207. package/dist-browser/telemetry/performance/PerformanceEvent.mjs +11 -2
  208. package/dist-browser/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  209. package/dist-browser/telemetry/performance/PerformanceEvents.mjs +1 -1
  210. package/dist-browser/telemetry/performance/StubPerformanceClient.mjs +1 -1
  211. package/dist-browser/telemetry/server/ServerTelemetryManager.mjs +1 -1
  212. package/dist-browser/url/UrlString.mjs +1 -1
  213. package/dist-browser/utils/ClientAssertionUtils.mjs +1 -1
  214. package/dist-browser/utils/Constants.mjs +1 -1
  215. package/dist-browser/utils/FunctionWrappers.d.ts.map +1 -1
  216. package/dist-browser/utils/FunctionWrappers.mjs +3 -5
  217. package/dist-browser/utils/FunctionWrappers.mjs.map +1 -1
  218. package/dist-browser/utils/ProtocolUtils.mjs +1 -1
  219. package/dist-browser/utils/StringUtils.mjs +1 -1
  220. package/dist-browser/utils/TimeUtils.mjs +1 -1
  221. package/dist-browser/utils/UrlUtils.mjs +1 -1
  222. package/lib/index-browser.cjs +60 -12
  223. package/lib/index-browser.cjs.map +1 -1
  224. package/lib/{index-node-C4hhfREr.js → index-node-BUrdOQX5.js} +76 -9
  225. package/lib/index-node-BUrdOQX5.js.map +1 -0
  226. package/lib/index-node.cjs +3 -2
  227. package/lib/index-node.cjs.map +1 -1
  228. package/lib/index.cjs +3 -2
  229. package/lib/index.cjs.map +1 -1
  230. package/lib/types/cache/entities/AccessTokenEntity.d.ts +2 -0
  231. package/lib/types/cache/entities/AccessTokenEntity.d.ts.map +1 -1
  232. package/lib/types/client/AuthorizationCodeClient.d.ts.map +1 -1
  233. package/lib/types/client/SilentFlowClient.d.ts.map +1 -1
  234. package/lib/types/config/ClientConfiguration.d.ts +2 -0
  235. package/lib/types/config/ClientConfiguration.d.ts.map +1 -1
  236. package/lib/types/constants/AADServerParamKeys.d.ts +1 -0
  237. package/lib/types/constants/AADServerParamKeys.d.ts.map +1 -1
  238. package/lib/types/error/ClientAuthErrorCodes.d.ts +2 -0
  239. package/lib/types/error/ClientAuthErrorCodes.d.ts.map +1 -1
  240. package/lib/types/exports-common.d.ts +1 -1
  241. package/lib/types/exports-common.d.ts.map +1 -1
  242. package/lib/types/packageMetadata.d.ts +1 -1
  243. package/lib/types/protocol/Authorize.d.ts.map +1 -1
  244. package/lib/types/request/BaseAuthRequest.d.ts +12 -0
  245. package/lib/types/request/BaseAuthRequest.d.ts.map +1 -1
  246. package/lib/types/request/NativeRequest.d.ts +1 -0
  247. package/lib/types/request/NativeRequest.d.ts.map +1 -1
  248. package/lib/types/request/RequestParameterBuilder.d.ts +1 -0
  249. package/lib/types/request/RequestParameterBuilder.d.ts.map +1 -1
  250. package/lib/types/response/AuthenticationResult.d.ts +1 -0
  251. package/lib/types/response/AuthenticationResult.d.ts.map +1 -1
  252. package/lib/types/response/ResponseHandler.d.ts.map +1 -1
  253. package/lib/types/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  254. package/lib/types/telemetry/performance/PerformanceEvent.d.ts +106 -0
  255. package/lib/types/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  256. package/lib/types/utils/FunctionWrappers.d.ts.map +1 -1
  257. package/package.json +1 -1
  258. package/src/cache/entities/AccessTokenEntity.ts +2 -0
  259. package/src/client/AuthorizationCodeClient.ts +2 -0
  260. package/src/client/SilentFlowClient.ts +11 -0
  261. package/src/config/ClientConfiguration.ts +3 -0
  262. package/src/constants/AADServerParamKeys.ts +1 -0
  263. package/src/error/ClientAuthErrorCodes.ts +2 -0
  264. package/src/exports-common.ts +4 -1
  265. package/src/packageMetadata.ts +1 -1
  266. package/src/protocol/Authorize.ts +2 -0
  267. package/src/request/BaseAuthRequest.ts +46 -0
  268. package/src/request/NativeRequest.ts +1 -0
  269. package/src/request/RequestParameterBuilder.ts +9 -0
  270. package/src/response/AuthenticationResult.ts +1 -0
  271. package/src/response/ResponseHandler.ts +5 -0
  272. package/src/telemetry/performance/PerformanceClient.ts +62 -10
  273. package/src/telemetry/performance/PerformanceEvent.ts +129 -0
  274. package/src/utils/FunctionWrappers.ts +8 -4
  275. package/lib/index-node-C4hhfREr.js.map +0 -1
@@ -450,6 +450,11 @@ export class ResponseHandler {
450
450
  userAssertionHash,
451
451
  serverTokenResponse.key_id
452
452
  );
453
+ // Set resource (to be used for MCP scenarios)
454
+ const resource = request.resource || null;
455
+ if (resource) {
456
+ cachedAccessToken.resource = resource;
457
+ }
453
458
  }
454
459
 
455
460
  // refreshToken
@@ -11,6 +11,7 @@ import {
11
11
  PerformanceCallbackFunction,
12
12
  } from "./IPerformanceClient.js";
13
13
  import {
14
+ EXT_FIELD_PREFIX,
14
15
  IntFields,
15
16
  PerformanceEvent,
16
17
  PerformanceEventContext,
@@ -453,9 +454,15 @@ export abstract class PerformanceClient implements IPerformanceClient {
453
454
  addError(error, this.logger, rootEvent);
454
455
  }
455
456
 
456
- // Add sub-measurement attribute to root event.
457
+ // Add sub-measurement attribute to root event's ext field.
457
458
  if (!isRoot) {
458
- rootEvent[event.name + "DurationMs"] = Math.floor(event.durationMs);
459
+ rootEvent.ext = {
460
+ ...rootEvent.ext,
461
+ ...event.ext,
462
+ };
463
+ rootEvent.ext[event.name + "DurationMs"] = Math.floor(
464
+ event.durationMs
465
+ );
459
466
  return { ...rootEvent };
460
467
  }
461
468
 
@@ -521,10 +528,36 @@ export abstract class PerformanceClient implements IPerformanceClient {
521
528
  ): void {
522
529
  const event = this.eventsByCorrelationId.get(correlationId);
523
530
  if (event) {
524
- this.eventsByCorrelationId.set(correlationId, {
531
+ const staticFields: { [key: string]: {} | undefined } = {};
532
+ const dynamicFields: Record<string, string | number> = {};
533
+
534
+ for (const key in fields) {
535
+ if (key.startsWith(EXT_FIELD_PREFIX)) {
536
+ const dynamicKey = key.slice(EXT_FIELD_PREFIX.length);
537
+ const value = fields[key];
538
+ if (
539
+ typeof value === "string" ||
540
+ typeof value === "number"
541
+ ) {
542
+ dynamicFields[dynamicKey] = value;
543
+ }
544
+ } else {
545
+ staticFields[key] = fields[key];
546
+ }
547
+ }
548
+
549
+ const updatedEvent: PerformanceEvent = {
525
550
  ...event,
526
- ...fields,
527
- });
551
+ ...staticFields,
552
+ };
553
+ if (Object.keys(dynamicFields).length) {
554
+ updatedEvent.ext = {
555
+ ...updatedEvent.ext,
556
+ ...dynamicFields,
557
+ };
558
+ }
559
+
560
+ this.eventsByCorrelationId.set(correlationId, updatedEvent);
528
561
  } else {
529
562
  this.logger.trace(
530
563
  "PerformanceClient: Event not found for",
@@ -545,12 +578,29 @@ export abstract class PerformanceClient implements IPerformanceClient {
545
578
  const event = this.eventsByCorrelationId.get(correlationId);
546
579
  if (event) {
547
580
  for (const counter in fields) {
548
- if (!event.hasOwnProperty(counter)) {
549
- event[counter] = 0;
550
- } else if (isNaN(Number(event[counter]))) {
551
- return;
581
+ if (counter.startsWith(EXT_FIELD_PREFIX)) {
582
+ event.ext = event.ext || {};
583
+ // Route to ext sub-object
584
+ const dynamicKey = counter.slice(EXT_FIELD_PREFIX.length);
585
+ const currentValue = event.ext[dynamicKey];
586
+ if (currentValue === undefined) {
587
+ event.ext[dynamicKey] = 0;
588
+ } else if (isNaN(Number(currentValue))) {
589
+ return;
590
+ }
591
+ event.ext[dynamicKey] =
592
+ (Number(event.ext[dynamicKey]) || 0) +
593
+ (fields[counter] ?? 0);
594
+ } else {
595
+ /* eslint-disable custom-msal/no-dynamic-telemetry-fields -- internal dispatching of static fields by name */
596
+ if (!event.hasOwnProperty(counter)) {
597
+ event[counter] = 0;
598
+ } else if (isNaN(Number(event[counter]))) {
599
+ return;
600
+ }
601
+ event[counter] += fields[counter];
602
+ /* eslint-enable custom-msal/no-dynamic-telemetry-fields */
552
603
  }
553
- event[counter] += fields[counter];
554
604
  }
555
605
  } else {
556
606
  this.logger.trace(
@@ -674,9 +724,11 @@ export abstract class PerformanceClient implements IPerformanceClient {
674
724
  */
675
725
  private truncateIntegralFields(event: PerformanceEvent): void {
676
726
  this.intFields.forEach((key) => {
727
+ /* eslint-disable custom-msal/no-dynamic-telemetry-fields -- internal truncation of known integer fields */
677
728
  if (key in event && typeof event[key] === "number") {
678
729
  event[key] = Math.floor(event[key]);
679
730
  }
731
+ /* eslint-enable custom-msal/no-dynamic-telemetry-fields */
680
732
  });
681
733
  }
682
734
 
@@ -191,10 +191,23 @@ export type PerformanceEvent = {
191
191
  visibilityChangeCount?: number;
192
192
  incompleteSubsCount?: number;
193
193
 
194
+ /**
195
+ * Network connection info from the Network Information API (Chromium only).
196
+ * Read from: https://developer.mozilla.org/docs/Web/API/NetworkInformation
197
+ */
198
+ networkEffectiveType?: string;
199
+ networkRtt?: number;
200
+
194
201
  /**
195
202
  * CorrelationId of the in progress iframe request that was awaited
196
203
  */
197
204
  awaitIframeCorrelationId?: string;
205
+ /**
206
+ * Monitor_window_timeout debugging telemetry
207
+ */
208
+ redirectBridgeTimeoutMs?: number;
209
+ isRedirectUriCrossOrigin?: boolean;
210
+ redirectBridgeMessageVersion?: number;
198
211
 
199
212
  /**
200
213
  * Size of the id token
@@ -321,6 +334,8 @@ export type PerformanceEvent = {
321
334
  extRtExpiresOnSeconds?: number;
322
335
  rtOffsetSeconds?: number;
323
336
 
337
+ sidFromClaim?: boolean;
338
+ // Backward-compatible alias for sidFromClaim
324
339
  sidFromClaims?: boolean;
325
340
  sidFromRequest?: boolean;
326
341
  loginHintFromRequest?: boolean;
@@ -344,6 +359,34 @@ export type PerformanceEvent = {
344
359
  // Hashed logs in the format [millis1,hash1;millis2,hash2;...]
345
360
  logs?: string;
346
361
 
362
+ // Whether the application is configured for MCP flows
363
+ isMcp?: boolean;
364
+
365
+ /**
366
+ * Source of cloud discovery metadata (config, cache, network, hardcoded_values)
367
+ */
368
+ cloudDiscoverySource?: string;
369
+
370
+ /**
371
+ * Source of authority endpoint metadata (config, cache, network, hardcoded_values)
372
+ */
373
+ authorityEndpointSource?: string;
374
+
375
+ /**
376
+ * Number of accounts removed during cache cleanup
377
+ */
378
+ accountsRemoved?: number;
379
+
380
+ /**
381
+ * Number of access tokens removed during cache cleanup
382
+ */
383
+ accessTokensRemoved?: number;
384
+
385
+ /**
386
+ * Number of failures when removing token binding keys
387
+ */
388
+ removeTokenBindingKeyFailure?: number;
389
+
347
390
  /**
348
391
  * Reason for silent refresh fallback to iframe
349
392
  * Format: errorCode or errorCode|subError
@@ -351,6 +394,82 @@ export type PerformanceEvent = {
351
394
  * @type {?string}
352
395
  */
353
396
  silentRefreshReason?: string;
397
+
398
+ /**
399
+ * Whether this request was deduped with another in-flight request
400
+ */
401
+ deduped?: boolean;
402
+
403
+ /**
404
+ * Whether the user has "Keep Me Signed In" enabled
405
+ */
406
+ kmsi?: boolean;
407
+
408
+ /**
409
+ * Whether this event was executed in the background
410
+ */
411
+ isBackground?: boolean;
412
+
413
+ /**
414
+ * Cache migration telemetry — pre-migration counts
415
+ */
416
+ preMigrateAcntCount?: number;
417
+ preMigrateATCount?: number;
418
+ preMigrateITCount?: number;
419
+ preMigrateRTCount?: number;
420
+
421
+ /**
422
+ * Cache migration telemetry — post-migration counts
423
+ */
424
+ postMigrateAcntCount?: number;
425
+ postMigrateATCount?: number;
426
+ postMigrateITCount?: number;
427
+ postMigrateRTCount?: number;
428
+
429
+ /**
430
+ * Cache migration telemetry — old schema counts
431
+ */
432
+ oldAcntCount?: number;
433
+ oldATCount?: number;
434
+ oldITCount?: number;
435
+ oldRTCount?: number;
436
+
437
+ /**
438
+ * Cache migration telemetry — skipped and migrated counts
439
+ */
440
+ skipATMigrateCount?: number;
441
+ skipITMigrateCount?: number;
442
+ skipRTMigrateCount?: number;
443
+ migratedATCount?: number;
444
+ migratedITCount?: number;
445
+ migratedRTCount?: number;
446
+
447
+ /**
448
+ * Cache telemetry — expired, invalid, and removed counts
449
+ */
450
+ expiredCacheRemovedCount?: number;
451
+ expiredAcntRemovedCount?: number;
452
+ invalidCacheCount?: number;
453
+
454
+ /**
455
+ * Encrypted cache telemetry
456
+ */
457
+ unencryptedCacheCount?: number;
458
+ encryptedCacheCount?: number;
459
+ encryptedCacheExpiredCount?: number;
460
+ encryptedCacheCorruptionCount?: number;
461
+
462
+ /**
463
+ * Container for dynamically-named telemetry fields.
464
+ * Fields whose names are constructed at runtime (e.g., "[eventName]CallCount")
465
+ * should be stored here instead of being set as top-level properties.
466
+ * Use the "ext." prefix when calling addFields/incrementFields to automatically
467
+ * route fields to this sub-object.
468
+ *
469
+ * @remarks
470
+ * This property is typed as `Record<string, string | number>`.
471
+ */
472
+ ext?: Record<string, string | number>;
354
473
  };
355
474
 
356
475
  export type PerformanceEventContext = {
@@ -365,6 +484,13 @@ export type PerformanceEventStackedContext = PerformanceEventContext & {
365
484
  childErr?: string;
366
485
  };
367
486
 
487
+ /**
488
+ * Prefix used to mark telemetry field names as dynamic.
489
+ * Fields with this prefix in addFields/incrementFields calls will be routed
490
+ * to the PerformanceEvent.ext sub-object.
491
+ */
492
+ export const EXT_FIELD_PREFIX = "ext.";
493
+
368
494
  export const IntFields: ReadonlySet<string> = new Set([
369
495
  "accessTokenSize",
370
496
  "durationMs",
@@ -389,4 +515,7 @@ export const IntFields: ReadonlySet<string> = new Set([
389
515
  "currRefreshCount",
390
516
  "expiredCacheRemovedCount",
391
517
  "upgradedCacheCount",
518
+ "networkRtt",
519
+ "redirectBridgeTimeoutMs",
520
+ "redirectBridgeMessageVersion",
392
521
  ]);
@@ -33,8 +33,10 @@ export const invoke = <T extends Array<any>, U>(
33
33
  );
34
34
  if (correlationId) {
35
35
  // Track number of times this API is called in a single request
36
- const eventCount = eventName + "CallCount";
37
- telemetryClient.incrementFields({ [eventCount]: 1 }, correlationId);
36
+ telemetryClient.incrementFields(
37
+ { [`ext.${eventName}CallCount`]: 1 },
38
+ correlationId
39
+ );
38
40
  }
39
41
  try {
40
42
  const result = callback(...args);
@@ -89,8 +91,10 @@ export const invokeAsync = <T extends Array<any>, U>(
89
91
  );
90
92
  if (correlationId) {
91
93
  // Track number of times this API is called in a single request
92
- const eventCount = eventName + "CallCount";
93
- telemetryClient.incrementFields({ [eventCount]: 1 }, correlationId);
94
+ telemetryClient.incrementFields(
95
+ { [`ext.${eventName}CallCount`]: 1 },
96
+ correlationId
97
+ );
94
98
  }
95
99
  return callback(...args)
96
100
  .then((response) => {