@azure/msal-common 9.1.1 → 10.0.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 (201) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +62 -62
  3. package/dist/_virtual/_tslib.js +1 -1
  4. package/dist/account/AuthToken.js +1 -1
  5. package/dist/account/AuthToken.js.map +1 -1
  6. package/dist/account/CcsCredential.js +1 -1
  7. package/dist/account/CcsCredential.js.map +1 -1
  8. package/dist/account/ClientInfo.js +1 -1
  9. package/dist/account/ClientInfo.js.map +1 -1
  10. package/dist/authority/Authority.d.ts +4 -2
  11. package/dist/authority/Authority.d.ts.map +1 -1
  12. package/dist/authority/Authority.js +62 -48
  13. package/dist/authority/Authority.js.map +1 -1
  14. package/dist/authority/AuthorityFactory.d.ts +3 -2
  15. package/dist/authority/AuthorityFactory.d.ts.map +1 -1
  16. package/dist/authority/AuthorityFactory.js +8 -5
  17. package/dist/authority/AuthorityFactory.js.map +1 -1
  18. package/dist/authority/AuthorityMetadata.js +1 -1
  19. package/dist/authority/AuthorityMetadata.js.map +1 -1
  20. package/dist/authority/AuthorityOptions.js +1 -1
  21. package/dist/authority/AuthorityOptions.js.map +1 -1
  22. package/dist/authority/AuthorityType.js +1 -1
  23. package/dist/authority/AuthorityType.js.map +1 -1
  24. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js +1 -1
  25. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js.map +1 -1
  26. package/dist/authority/CloudInstanceDiscoveryResponse.js +1 -1
  27. package/dist/authority/CloudInstanceDiscoveryResponse.js.map +1 -1
  28. package/dist/authority/ImdsOptions.d.ts +0 -1
  29. package/dist/authority/ImdsOptions.d.ts.map +1 -1
  30. package/dist/authority/OpenIdConfigResponse.js +1 -1
  31. package/dist/authority/OpenIdConfigResponse.js.map +1 -1
  32. package/dist/authority/ProtocolMode.js +1 -1
  33. package/dist/authority/ProtocolMode.js.map +1 -1
  34. package/dist/authority/RegionDiscovery.d.ts +5 -2
  35. package/dist/authority/RegionDiscovery.d.ts.map +1 -1
  36. package/dist/authority/RegionDiscovery.js +36 -25
  37. package/dist/authority/RegionDiscovery.js.map +1 -1
  38. package/dist/cache/CacheManager.js +1 -1
  39. package/dist/cache/CacheManager.js.map +1 -1
  40. package/dist/cache/entities/AccessTokenEntity.js +1 -1
  41. package/dist/cache/entities/AccessTokenEntity.js.map +1 -1
  42. package/dist/cache/entities/AccountEntity.js +1 -1
  43. package/dist/cache/entities/AccountEntity.js.map +1 -1
  44. package/dist/cache/entities/AppMetadataEntity.js +1 -1
  45. package/dist/cache/entities/AppMetadataEntity.js.map +1 -1
  46. package/dist/cache/entities/AuthorityMetadataEntity.js +1 -1
  47. package/dist/cache/entities/AuthorityMetadataEntity.js.map +1 -1
  48. package/dist/cache/entities/CacheRecord.js +1 -1
  49. package/dist/cache/entities/CacheRecord.js.map +1 -1
  50. package/dist/cache/entities/CredentialEntity.d.ts +6 -0
  51. package/dist/cache/entities/CredentialEntity.d.ts.map +1 -1
  52. package/dist/cache/entities/CredentialEntity.js +28 -10
  53. package/dist/cache/entities/CredentialEntity.js.map +1 -1
  54. package/dist/cache/entities/IdTokenEntity.js +1 -1
  55. package/dist/cache/entities/IdTokenEntity.js.map +1 -1
  56. package/dist/cache/entities/RefreshTokenEntity.js +1 -1
  57. package/dist/cache/entities/RefreshTokenEntity.js.map +1 -1
  58. package/dist/cache/entities/ServerTelemetryEntity.js +1 -1
  59. package/dist/cache/entities/ServerTelemetryEntity.js.map +1 -1
  60. package/dist/cache/entities/ThrottlingEntity.js +1 -1
  61. package/dist/cache/entities/ThrottlingEntity.js.map +1 -1
  62. package/dist/cache/persistence/TokenCacheContext.js +1 -1
  63. package/dist/cache/persistence/TokenCacheContext.js.map +1 -1
  64. package/dist/client/AuthorizationCodeClient.d.ts +0 -5
  65. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  66. package/dist/client/AuthorizationCodeClient.js +61 -56
  67. package/dist/client/AuthorizationCodeClient.js.map +1 -1
  68. package/dist/client/BaseClient.d.ts +6 -0
  69. package/dist/client/BaseClient.d.ts.map +1 -1
  70. package/dist/client/BaseClient.js +14 -2
  71. package/dist/client/BaseClient.js.map +1 -1
  72. package/dist/client/ClientCredentialClient.d.ts.map +1 -1
  73. package/dist/client/ClientCredentialClient.js +6 -3
  74. package/dist/client/ClientCredentialClient.js.map +1 -1
  75. package/dist/client/DeviceCodeClient.d.ts +5 -0
  76. package/dist/client/DeviceCodeClient.d.ts.map +1 -1
  77. package/dist/client/DeviceCodeClient.js +25 -7
  78. package/dist/client/DeviceCodeClient.js.map +1 -1
  79. package/dist/client/OnBehalfOfClient.d.ts.map +1 -1
  80. package/dist/client/OnBehalfOfClient.js +6 -3
  81. package/dist/client/OnBehalfOfClient.js.map +1 -1
  82. package/dist/client/RefreshTokenClient.d.ts +0 -5
  83. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  84. package/dist/client/RefreshTokenClient.js +42 -39
  85. package/dist/client/RefreshTokenClient.js.map +1 -1
  86. package/dist/client/SilentFlowClient.js +1 -1
  87. package/dist/client/SilentFlowClient.js.map +1 -1
  88. package/dist/client/UsernamePasswordClient.d.ts.map +1 -1
  89. package/dist/client/UsernamePasswordClient.js +11 -8
  90. package/dist/client/UsernamePasswordClient.js.map +1 -1
  91. package/dist/config/ClientConfiguration.d.ts +0 -1
  92. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  93. package/dist/config/ClientConfiguration.js +2 -3
  94. package/dist/config/ClientConfiguration.js.map +1 -1
  95. package/dist/crypto/ICrypto.js +1 -1
  96. package/dist/crypto/ICrypto.js.map +1 -1
  97. package/dist/crypto/JoseHeader.js +1 -1
  98. package/dist/crypto/JoseHeader.js.map +1 -1
  99. package/dist/crypto/PopTokenGenerator.d.ts +3 -1
  100. package/dist/crypto/PopTokenGenerator.d.ts.map +1 -1
  101. package/dist/crypto/PopTokenGenerator.js +23 -14
  102. package/dist/crypto/PopTokenGenerator.js.map +1 -1
  103. package/dist/error/AuthError.js +1 -1
  104. package/dist/error/AuthError.js.map +1 -1
  105. package/dist/error/ClientAuthError.js +1 -1
  106. package/dist/error/ClientAuthError.js.map +1 -1
  107. package/dist/error/ClientConfigurationError.js +1 -1
  108. package/dist/error/ClientConfigurationError.js.map +1 -1
  109. package/dist/error/InteractionRequiredAuthError.d.ts +19 -1
  110. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  111. package/dist/error/InteractionRequiredAuthError.js +8 -3
  112. package/dist/error/InteractionRequiredAuthError.js.map +1 -1
  113. package/dist/error/JoseHeaderError.js +1 -1
  114. package/dist/error/JoseHeaderError.js.map +1 -1
  115. package/dist/error/ServerError.js +1 -1
  116. package/dist/error/ServerError.js.map +1 -1
  117. package/dist/index.cjs.js +887 -556
  118. package/dist/index.cjs.js.map +1 -1
  119. package/dist/index.d.ts +2 -2
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +2 -2
  122. package/dist/logger/Logger.js +1 -1
  123. package/dist/logger/Logger.js.map +1 -1
  124. package/dist/network/INetworkModule.d.ts +0 -1
  125. package/dist/network/INetworkModule.d.ts.map +1 -1
  126. package/dist/network/INetworkModule.js +1 -1
  127. package/dist/network/INetworkModule.js.map +1 -1
  128. package/dist/network/NetworkManager.js +1 -1
  129. package/dist/network/NetworkManager.js.map +1 -1
  130. package/dist/network/ThrottlingUtils.js +1 -1
  131. package/dist/network/ThrottlingUtils.js.map +1 -1
  132. package/dist/packageMetadata.d.ts +1 -1
  133. package/dist/packageMetadata.d.ts.map +1 -1
  134. package/dist/packageMetadata.js +2 -2
  135. package/dist/packageMetadata.js.map +1 -1
  136. package/dist/request/AuthenticationHeaderParser.js +1 -1
  137. package/dist/request/AuthenticationHeaderParser.js.map +1 -1
  138. package/dist/request/BaseAuthRequest.d.ts +3 -0
  139. package/dist/request/BaseAuthRequest.d.ts.map +1 -1
  140. package/dist/request/CommonAuthorizationCodeRequest.d.ts +4 -4
  141. package/dist/request/CommonAuthorizationCodeRequest.d.ts.map +1 -1
  142. package/dist/request/CommonAuthorizationUrlRequest.d.ts +0 -1
  143. package/dist/request/CommonAuthorizationUrlRequest.d.ts.map +1 -1
  144. package/dist/request/CommonClientCredentialRequest.d.ts +1 -0
  145. package/dist/request/CommonClientCredentialRequest.d.ts.map +1 -1
  146. package/dist/request/CommonDeviceCodeRequest.d.ts +4 -1
  147. package/dist/request/CommonDeviceCodeRequest.d.ts.map +1 -1
  148. package/dist/request/CommonEndSessionRequest.d.ts +1 -0
  149. package/dist/request/CommonEndSessionRequest.d.ts.map +1 -1
  150. package/dist/request/CommonOnBehalfOfRequest.d.ts +1 -0
  151. package/dist/request/CommonOnBehalfOfRequest.d.ts.map +1 -1
  152. package/dist/request/CommonRefreshTokenRequest.d.ts +1 -2
  153. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  154. package/dist/request/CommonSilentFlowRequest.d.ts +3 -4
  155. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  156. package/dist/request/CommonUsernamePasswordRequest.d.ts +1 -0
  157. package/dist/request/CommonUsernamePasswordRequest.d.ts.map +1 -1
  158. package/dist/request/RequestParameterBuilder.d.ts +2 -2
  159. package/dist/request/RequestParameterBuilder.js +6 -6
  160. package/dist/request/RequestParameterBuilder.js.map +1 -1
  161. package/dist/request/RequestValidator.d.ts +1 -1
  162. package/dist/request/RequestValidator.d.ts.map +1 -1
  163. package/dist/request/RequestValidator.js +8 -3
  164. package/dist/request/RequestValidator.js.map +1 -1
  165. package/dist/request/ScopeSet.js +1 -1
  166. package/dist/request/ScopeSet.js.map +1 -1
  167. package/dist/response/ResponseHandler.d.ts +3 -1
  168. package/dist/response/ResponseHandler.d.ts.map +1 -1
  169. package/dist/response/ResponseHandler.js +17 -13
  170. package/dist/response/ResponseHandler.js.map +1 -1
  171. package/dist/response/ServerAuthorizationCodeResponse.d.ts +4 -0
  172. package/dist/response/ServerAuthorizationCodeResponse.d.ts.map +1 -1
  173. package/dist/response/ServerAuthorizationTokenResponse.d.ts +1 -0
  174. package/dist/response/ServerAuthorizationTokenResponse.d.ts.map +1 -1
  175. package/dist/telemetry/performance/IPerformanceClient.d.ts +16 -0
  176. package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -1
  177. package/dist/telemetry/performance/PerformanceClient.d.ts +61 -1
  178. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  179. package/dist/telemetry/performance/PerformanceClient.js +122 -3
  180. package/dist/telemetry/performance/PerformanceClient.js.map +1 -1
  181. package/dist/telemetry/performance/PerformanceEvent.d.ts +105 -4
  182. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  183. package/dist/telemetry/performance/PerformanceEvent.js +99 -3
  184. package/dist/telemetry/performance/PerformanceEvent.js.map +1 -1
  185. package/dist/telemetry/performance/StubPerformanceClient.d.ts +4 -0
  186. package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -1
  187. package/dist/telemetry/performance/StubPerformanceClient.js +13 -1
  188. package/dist/telemetry/performance/StubPerformanceClient.js.map +1 -1
  189. package/dist/telemetry/server/ServerTelemetryManager.js +1 -1
  190. package/dist/telemetry/server/ServerTelemetryManager.js.map +1 -1
  191. package/dist/url/UrlString.js +1 -1
  192. package/dist/url/UrlString.js.map +1 -1
  193. package/dist/utils/Constants.js +1 -1
  194. package/dist/utils/Constants.js.map +1 -1
  195. package/dist/utils/ProtocolUtils.js +1 -1
  196. package/dist/utils/ProtocolUtils.js.map +1 -1
  197. package/dist/utils/StringUtils.js +1 -1
  198. package/dist/utils/StringUtils.js.map +1 -1
  199. package/dist/utils/TimeUtils.js +1 -1
  200. package/dist/utils/TimeUtils.js.map +1 -1
  201. package/package.json +1 -1
@@ -22,5 +22,21 @@ export interface IPerformanceClient {
22
22
  startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement;
23
23
  startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement;
24
24
  generateId(): string;
25
+ calculateQueuedTime(preQueueTime: number, currentTime: number): number;
26
+ addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number): void;
27
+ setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;
25
28
  }
29
+ /**
30
+ * Queue measurement type
31
+ */
32
+ export declare type QueueMeasurement = {
33
+ /**
34
+ * Name of performance event
35
+ */
36
+ eventName: PerformanceEvents;
37
+ /**
38
+ * Time spent in JS queue
39
+ */
40
+ queueTime: number;
41
+ };
26
42
  //# sourceMappingURL=IPerformanceClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,oBAAY,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,oBAAY,0BAA0B,GAAG;IACrC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,gBAAgB,GAAG,IAAI,CAAA;IAC9E,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,uBAAuB,CAAA;CACvC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAAC;IACrG,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChF,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAClG,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACjG,UAAU,IAAI,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"IPerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/IPerformanceClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,oBAAY,2BAA2B,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;AAE/E,oBAAY,0BAA0B,GAAG;IACrC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,gBAAgB,GAAG,IAAI,CAAA;IAC9E,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,uBAAuB,CAAA;CACvC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IAC/B,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAAC;IACrG,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACjE,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChF,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sBAAsB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAAC;IACtE,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAClG,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,uBAAuB,CAAC;IACjG,UAAU,IAAI,MAAM,CAAC;IACrB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACvE,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpG,eAAe,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/E;AAED;;GAEG;AACH,oBAAY,gBAAgB,GAAG;IAC3B;;OAEG;IACH,SAAS,EAAE,iBAAiB,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ApplicationTelemetry } from "../../config/ClientConfiguration";
2
2
  import { Logger } from "../../logger/Logger";
3
- import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction } from "./IPerformanceClient";
3
+ import { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from "./IPerformanceClient";
4
4
  import { IPerformanceMeasurement } from "./IPerformanceMeasurement";
5
5
  import { Counters, PerformanceEvent, PerformanceEvents, StaticFields } from "./PerformanceEvent";
6
6
  export declare abstract class PerformanceClient implements IPerformanceClient {
@@ -34,6 +34,20 @@ export declare abstract class PerformanceClient implements IPerformanceClient {
34
34
  * @type {Map<string, IPerformanceMeasurement>}
35
35
  */
36
36
  protected measurementsById: Map<string, IPerformanceMeasurement>;
37
+ /**
38
+ * Map of pre-queue times by correlation Id
39
+ *
40
+ * @protected
41
+ * @type {Map<string, Map<string, number>>}
42
+ */
43
+ protected preQueueTimeByCorrelationId: Map<string, Map<string, number>>;
44
+ /**
45
+ * Map of queue measurements by correlation Id
46
+ *
47
+ * @protected
48
+ * @type {Map<string, Array<QueueMeasurement>>}
49
+ */
50
+ protected queueMeasurements: Map<string, Array<QueueMeasurement>>;
37
51
  /**
38
52
  * Creates an instance of PerformanceClient,
39
53
  * an abstract class containing core performance telemetry logic.
@@ -71,6 +85,46 @@ export declare abstract class PerformanceClient implements IPerformanceClient {
71
85
  * @returns {IPerformanceMeasurement}
72
86
  */
73
87
  startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement;
88
+ /**
89
+ * Sets pre-queue time by correlation Id
90
+ *
91
+ * @abstract
92
+ * @param {PerformanceEvents} eventName
93
+ * @param {string} correlationId
94
+ * @returns
95
+ */
96
+ abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;
97
+ /**
98
+ * Get integral fields.
99
+ * Override to change the set.
100
+ */
101
+ getIntFields(): ReadonlySet<string>;
102
+ /**
103
+ * Gets map of pre-queue times by correlation Id
104
+ *
105
+ * @param {PerformanceEvents} eventName
106
+ * @param {string} correlationId
107
+ * @returns {number}
108
+ */
109
+ getPreQueueTime(eventName: PerformanceEvents, correlationId: string): number | void;
110
+ /**
111
+ * Calculates the difference between current time and time when function was queued.
112
+ * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.
113
+ *
114
+ * @param {number} preQueueTime
115
+ * @param {number} currentTime
116
+ * @returns {number}
117
+ */
118
+ calculateQueuedTime(preQueueTime: number, currentTime: number): number;
119
+ /**
120
+ * Adds queue measurement time to QueueMeasurements array for given correlation ID.
121
+ *
122
+ * @param {PerformanceEvents} name
123
+ * @param {?string} correlationId
124
+ * @param {?number} time
125
+ * @returns
126
+ */
127
+ addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number): void;
74
128
  /**
75
129
  * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.
76
130
  *
@@ -157,5 +211,11 @@ export declare abstract class PerformanceClient implements IPerformanceClient {
157
211
  * @param {?string} [correlationId]
158
212
  */
159
213
  emitEvents(events: PerformanceEvent[], correlationId: string): void;
214
+ /**
215
+ * Enforce truncation of integral fields in performance event.
216
+ * @param {PerformanceEvent} event performance event to update.
217
+ * @param {Set<string>} intFields integral fields.
218
+ */
219
+ private truncateIntegralFields;
160
220
  }
161
221
  //# sourceMappingURL=PerformanceClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PerformanceClient.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- /*! @azure/msal-common v9.1.1 2023-01-19 */
1
+ /*! @azure/msal-common v10.0.0 2023-02-06 */
2
2
  'use strict';
3
3
  import { __assign } from '../../_virtual/_tslib.js';
4
- import { PerformanceEventStatus } from './PerformanceEvent.js';
4
+ import { IntFields, PerformanceEventStatus } from './PerformanceEvent.js';
5
5
 
6
6
  /*
7
7
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -30,6 +30,8 @@ var PerformanceClient = /** @class */ (function () {
30
30
  this.eventsByCorrelationId = new Map();
31
31
  this.staticFieldsByCorrelationId = new Map();
32
32
  this.measurementsById = new Map();
33
+ this.queueMeasurements = new Map();
34
+ this.preQueueTimeByCorrelationId = new Map();
33
35
  this.countersByCorrelationId = new Map();
34
36
  }
35
37
  /**
@@ -56,6 +58,90 @@ var PerformanceClient = /** @class */ (function () {
56
58
  PerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {
57
59
  return {};
58
60
  };
61
+ /**
62
+ * Get integral fields.
63
+ * Override to change the set.
64
+ */
65
+ PerformanceClient.prototype.getIntFields = function () {
66
+ return IntFields;
67
+ };
68
+ /**
69
+ * Gets map of pre-queue times by correlation Id
70
+ *
71
+ * @param {PerformanceEvents} eventName
72
+ * @param {string} correlationId
73
+ * @returns {number}
74
+ */
75
+ PerformanceClient.prototype.getPreQueueTime = function (eventName, correlationId) {
76
+ var preQueueTimesByEvents = this.preQueueTimeByCorrelationId.get(correlationId);
77
+ if (!preQueueTimesByEvents) {
78
+ this.logger.trace("PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: " + correlationId + ", unable to add queue measurement");
79
+ return;
80
+ }
81
+ else if (!preQueueTimesByEvents.get(eventName)) {
82
+ this.logger.trace("PerformanceClient.getPreQueueTime: no pre-queue time found for " + eventName + ", unable to add queue measurement");
83
+ return;
84
+ }
85
+ return preQueueTimesByEvents.get(eventName);
86
+ };
87
+ /**
88
+ * Calculates the difference between current time and time when function was queued.
89
+ * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.
90
+ *
91
+ * @param {number} preQueueTime
92
+ * @param {number} currentTime
93
+ * @returns {number}
94
+ */
95
+ PerformanceClient.prototype.calculateQueuedTime = function (preQueueTime, currentTime) {
96
+ if (preQueueTime < 1) {
97
+ this.logger.trace("PerformanceClient: preQueueTime should be a positive integer and not " + preQueueTime);
98
+ return 0;
99
+ }
100
+ if (currentTime < 1) {
101
+ this.logger.trace("PerformanceClient: currentTime should be a positive integer and not " + currentTime);
102
+ return 0;
103
+ }
104
+ if (currentTime < preQueueTime) {
105
+ this.logger.trace("PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved");
106
+ return 0;
107
+ }
108
+ return currentTime - preQueueTime;
109
+ };
110
+ /**
111
+ * Adds queue measurement time to QueueMeasurements array for given correlation ID.
112
+ *
113
+ * @param {PerformanceEvents} name
114
+ * @param {?string} correlationId
115
+ * @param {?number} time
116
+ * @returns
117
+ */
118
+ PerformanceClient.prototype.addQueueMeasurement = function (eventName, correlationId, queueTime) {
119
+ if (!correlationId) {
120
+ this.logger.trace("PerformanceClient.addQueueMeasurement: correlationId not provided for " + eventName + ", cannot add queue measurement");
121
+ return;
122
+ }
123
+ if (queueTime === 0) {
124
+ // Possible for there to be no queue time after calculation
125
+ this.logger.trace("PerformanceClient.addQueueMeasurement: queue time provided for " + eventName + " is " + queueTime);
126
+ }
127
+ else if (!queueTime) {
128
+ this.logger.trace("PerformanceClient.addQueueMeasurement: no queue time provided for " + eventName);
129
+ return;
130
+ }
131
+ var queueMeasurement = { eventName: eventName, queueTime: queueTime };
132
+ // Adds to existing correlation Id if present in queueMeasurements
133
+ var existingMeasurements = this.queueMeasurements.get(correlationId);
134
+ if (existingMeasurements) {
135
+ existingMeasurements.push(queueMeasurement);
136
+ this.queueMeasurements.set(correlationId, existingMeasurements);
137
+ }
138
+ else {
139
+ // Sets new correlation Id if not present in queueMeasurements
140
+ this.logger.trace("PerformanceClient.addQueueMeasurement: adding correlationId " + correlationId + " to queue measurements");
141
+ var measurementArray = [queueMeasurement];
142
+ this.queueMeasurements.set(correlationId, measurementArray);
143
+ }
144
+ };
59
145
  /**
60
146
  * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.
61
147
  *
@@ -235,6 +321,20 @@ var PerformanceClient = /** @class */ (function () {
235
321
  PerformanceClient.prototype.flushMeasurements = function (measureName, correlationId) {
236
322
  var _this = this;
237
323
  this.logger.trace("PerformanceClient: Performance measurements flushed for " + measureName, correlationId);
324
+ /**
325
+ * Adds all queue time and count measurements for given correlation ID
326
+ * then deletes queue times for given correlation ID from queueMeasurements map.
327
+ */
328
+ var queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);
329
+ if (!queueMeasurementForCorrelationId) {
330
+ this.logger.trace("PerformanceClient: no queue measurements found for for correlationId: " + correlationId);
331
+ }
332
+ var totalQueueTime = 0;
333
+ var totalQueueCount = 0;
334
+ queueMeasurementForCorrelationId === null || queueMeasurementForCorrelationId === void 0 ? void 0 : queueMeasurementForCorrelationId.forEach(function (measurement) {
335
+ totalQueueTime += measurement.queueTime;
336
+ totalQueueCount++;
337
+ });
238
338
  var eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);
239
339
  var staticFields = this.staticFieldsByCorrelationId.get(correlationId);
240
340
  var counters = this.countersByCorrelationId.get(correlationId);
@@ -246,9 +346,11 @@ var PerformanceClient = /** @class */ (function () {
246
346
  * IE only supports Map.forEach.
247
347
  */
248
348
  var completedEvents_1 = [];
349
+ var incompleteSubsCount_1 = 0;
249
350
  eventsForCorrelationId.forEach(function (event) {
250
351
  if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {
251
352
  _this.logger.trace("PerformanceClient: Incomplete submeasurement " + event.name + " found for " + measureName, correlationId);
353
+ incompleteSubsCount_1++;
252
354
  var completedEvent = _this.endMeasurement(event);
253
355
  if (completedEvent) {
254
356
  completedEvents_1.push(completedEvent);
@@ -290,7 +392,8 @@ var PerformanceClient = /** @class */ (function () {
290
392
  }
291
393
  return previous;
292
394
  }, topLevelEvent);
293
- var finalEvent = __assign(__assign(__assign({}, eventToEmit), staticFields), counters);
395
+ var finalEvent = __assign(__assign(__assign(__assign({}, eventToEmit), staticFields), counters), { queuedTimeMs: totalQueueTime, queuedCount: totalQueueCount, incompleteSubsCount: incompleteSubsCount_1 });
396
+ this.truncateIntegralFields(finalEvent, this.getIntFields());
294
397
  this.emitEvents([finalEvent], eventToEmit.correlationId);
295
398
  }
296
399
  else {
@@ -321,6 +424,10 @@ var PerformanceClient = /** @class */ (function () {
321
424
  this.staticFieldsByCorrelationId.delete(correlationId);
322
425
  this.logger.trace("PerformanceClient: Counters discarded", correlationId);
323
426
  this.countersByCorrelationId.delete(correlationId);
427
+ this.logger.trace("PerformanceClient: QueueMeasurements discarded", correlationId);
428
+ this.queueMeasurements.delete(correlationId);
429
+ this.logger.trace("PerformanceClient: Pre-queue times discarded", correlationId);
430
+ this.preQueueTimeByCorrelationId.delete(correlationId);
324
431
  };
325
432
  /**
326
433
  * Registers a callback function to receive performance events.
@@ -364,6 +471,18 @@ var PerformanceClient = /** @class */ (function () {
364
471
  callback.apply(null, [events]);
365
472
  });
366
473
  };
474
+ /**
475
+ * Enforce truncation of integral fields in performance event.
476
+ * @param {PerformanceEvent} event performance event to update.
477
+ * @param {Set<string>} intFields integral fields.
478
+ */
479
+ PerformanceClient.prototype.truncateIntegralFields = function (event, intFields) {
480
+ intFields.forEach(function (key) {
481
+ if (key in event && typeof event[key] === "number") {
482
+ event[key] = Math.floor(event[key]);
483
+ }
484
+ });
485
+ };
367
486
  return PerformanceClient;
368
487
  }());
369
488
 
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceClient.js","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\r\nimport { Logger } from \"../../logger/Logger\";\r\nimport { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction } from \"./IPerformanceClient\";\r\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\r\nimport { Counters, PerformanceEvent, PerformanceEvents, PerformanceEventStatus, StaticFields } from \"./PerformanceEvent\";\r\n\r\nexport abstract class PerformanceClient implements IPerformanceClient {\r\n protected authority: string;\r\n protected libraryName: string;\r\n protected libraryVersion: string;\r\n protected applicationTelemetry: ApplicationTelemetry;\r\n protected clientId: string;\r\n protected logger: Logger;\r\n protected callbacks: Map<string, PerformanceCallbackFunction>;\r\n\r\n /**\r\n * Multiple events with the same correlation id.\r\n * Double keyed by correlation id and event id.\r\n * @protected\r\n * @type {Map<string, Map<string, PerformanceEvent>>}\r\n */\r\n protected eventsByCorrelationId: Map<string, Map<string, PerformanceEvent>>;\r\n\r\n /**\r\n * Fields to be emitted which are scoped to the top level request and whose value will not change in submeasurements\r\n * For example: App name, version, etc.\r\n */\r\n protected staticFieldsByCorrelationId: Map<string, StaticFields>;\r\n\r\n /**\r\n * Counters to be emitted which are scoped to the top level request and whose value may change in sub-measurements\r\n */\r\n protected countersByCorrelationId: Map<string, Counters>;\r\n\r\n /**\r\n * Underlying performance measurements for each operation\r\n *\r\n * @protected\r\n * @type {Map<string, IPerformanceMeasurement>}\r\n */\r\n protected measurementsById: Map<string, IPerformanceMeasurement>;\r\n\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.staticFieldsByCorrelationId = new Map();\r\n this.measurementsById = new Map();\r\n this.countersByCorrelationId = new Map();\r\n }\r\n\r\n /**\r\n * Generates and returns a unique id, typically a guid.\r\n *\r\n * @abstract\r\n * @returns {string}\r\n */\r\n abstract generateId(): string;\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this function can be changed to abstract at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\r\n * Note: this incorrectly-named function will be removed at the next major version bump.\r\n *\r\n * @param {string} measureName\r\n * @param {string} correlationId\r\n * @returns {IPerformanceMeasurement}\r\n */\r\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\r\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\r\n return {} as IPerformanceMeasurement;\r\n }\r\n\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\r\n // Generate a placeholder correlation if the request does not provide one\r\n const eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\r\n }\r\n\r\n // Duplicate code to address spelling error will be removed at the next major version bump.\r\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\r\n let validMeasurement: IPerformanceMeasurement;\r\n const performanceMeasuremeant = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n if (performanceMeasuremeant.startMeasurement) {\r\n performanceMeasuremeant.startMeasurement();\r\n validMeasurement = performanceMeasuremeant;\r\n } else {\r\n const performanceMeasurement = this.startPerformanceMeasurement(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n validMeasurement = performanceMeasurement;\r\n }\r\n\r\n const inProgressEvent: PerformanceEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId,\r\n };\r\n\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n\r\n const staticFields: StaticFields = {\r\n appName: this.applicationTelemetry?.appName,\r\n appVersion: this.applicationTelemetry?.appVersion,\r\n };\r\n this.addStaticFields(staticFields, eventCorrelationId);\r\n this.cacheMeasurement(inProgressEvent, validMeasurement);\r\n\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\r\n const completedEvent = this.endMeasurement({\r\n // Initial set of event properties\r\n ...inProgressEvent,\r\n // Properties set when event ends\r\n ...event\r\n });\r\n\r\n if (completedEvent) {\r\n // Cache event so that submeasurements can be added downstream\r\n this.cacheEventByCorrelationId(completedEvent);\r\n }\r\n return completedEvent;\r\n },\r\n flushMeasurement: () => {\r\n return this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\r\n },\r\n discardMeasurement: () => {\r\n return this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n addStaticFields: (fields: StaticFields) => {\r\n return this.addStaticFields(fields, inProgressEvent.correlationId);\r\n },\r\n increment: (counters: Counters) => {\r\n return this.increment(counters, inProgressEvent.correlationId);\r\n },\r\n measurement: validMeasurement,\r\n event: inProgressEvent\r\n };\r\n\r\n }\r\n\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n endMeasurement(event: PerformanceEvent): PerformanceEvent | null {\r\n const performanceMeasurement = this.measurementsById.get(event.eventId);\r\n if (performanceMeasurement) {\r\n // Immediately delete so that the same event isnt ended twice\r\n this.measurementsById.delete(event.eventId);\r\n performanceMeasurement.endMeasurement();\r\n const durationMs = performanceMeasurement.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (durationMs !== null) {\r\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\r\n const completedEvent: PerformanceEvent = {\r\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\r\n durationMs: Math.round(durationMs),\r\n ...event,\r\n status: PerformanceEventStatus.Completed,\r\n };\r\n\r\n return completedEvent;\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\r\n }\r\n } else {\r\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Saves extra information to be emitted when the measurements are flushed\r\n * @param fields\r\n * @param correlationId\r\n */\r\n addStaticFields(fields: StaticFields, correlationId: string) : void{\r\n const existingStaticFields = this.staticFieldsByCorrelationId.get(correlationId);\r\n if (existingStaticFields) {\r\n this.logger.trace(\"PerformanceClient: Updating static fields\");\r\n this.staticFieldsByCorrelationId.set(correlationId, {...existingStaticFields, ...fields});\r\n } else {\r\n this.logger.trace(\"PerformanceClient: Adding static fields\");\r\n this.staticFieldsByCorrelationId.set(correlationId, fields);\r\n }\r\n }\r\n\r\n /**\r\n * Increment counters to be emitted when the measurements are flushed\r\n * @param counters {Counters}\r\n * @param correlationId {string} correlation identifier\r\n */\r\n increment(counters: Counters, correlationId: string): void {\r\n const existing: Counters | undefined = this.countersByCorrelationId.get(correlationId);\r\n if (!existing) {\r\n this.logger.trace(\"PerformanceClient: Setting counters\");\r\n this.countersByCorrelationId.set(correlationId, { ...counters });\r\n return;\r\n }\r\n\r\n this.logger.trace(\"PerformanceClient: Updating counters\");\r\n for (const counter in counters) {\r\n if (!existing.hasOwnProperty(counter)) {\r\n existing[counter] = 0;\r\n }\r\n existing[counter] += counters[counter];\r\n }\r\n }\r\n\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n private cacheEventByCorrelationId(event: PerformanceEvent) {\r\n const existingEvents = this.eventsByCorrelationId.get(event.correlationId);\r\n if (existingEvents) {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\r\n existingEvents.set(event.eventId, event);\r\n } else {\r\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\r\n }\r\n }\r\n\r\n /**\r\n * Cache measurements by their id.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n */\r\n private cacheMeasurement(event: PerformanceEvent, measurement: IPerformanceMeasurement) {\r\n this.measurementsById.set(event.eventId, measurement);\r\n }\r\n\r\n /**\r\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {string} correlationId\r\n */\r\n flushMeasurements(measureName: PerformanceEvents, correlationId: string): void {\r\n this.logger.trace(`PerformanceClient: Performance measurements flushed for ${measureName}`, correlationId);\r\n const eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\r\n const staticFields = this.staticFieldsByCorrelationId.get(correlationId);\r\n const counters = this.countersByCorrelationId.get(correlationId);\r\n\r\n if (eventsForCorrelationId) {\r\n this.discardCache(correlationId);\r\n\r\n /*\r\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\r\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\r\n * IE only supports Map.forEach.\r\n */\r\n const completedEvents: PerformanceEvent[] = [];\r\n eventsForCorrelationId.forEach(event => {\r\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\r\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${event.name} found for ${measureName}`, correlationId);\r\n\r\n const completedEvent = this.endMeasurement(event);\r\n if (completedEvent) {\r\n completedEvents.push(completedEvent);\r\n }\r\n }\r\n\r\n completedEvents.push(event);\r\n });\r\n\r\n // Sort events by start time (earliest first)\r\n const sortedCompletedEvents = completedEvents.sort((eventA, eventB) => eventA.startTimeMs - eventB.startTimeMs);\r\n\r\n // Take completed top level event and add completed submeasurements durations as properties\r\n const topLevelEvents = sortedCompletedEvents.filter(event => event.name === measureName && event.status === PerformanceEventStatus.Completed);\r\n if (topLevelEvents.length > 0) {\r\n /*\r\n * Only take the first top-level event if there are multiple events with the same correlation id.\r\n * This greatly simplifies logic for submeasurements.\r\n */\r\n if (topLevelEvents.length > 1) {\r\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\r\n }\r\n const topLevelEvent = topLevelEvents[0];\r\n this.logger.verbose(`PerformanceClient: Measurement found for ${measureName}`, correlationId);\r\n\r\n // Build event object with top level and sub measurements\r\n const eventToEmit = sortedCompletedEvents.reduce((previous, current) => {\r\n if (current.name !== measureName) {\r\n this.logger.trace(`PerformanceClient: Complete submeasurement found for ${current.name}`, correlationId);\r\n // TODO: Emit additional properties for each subMeasurement\r\n const subMeasurementName = `${current.name}DurationMs`;\r\n /*\r\n * Some code paths, such as resolving an authority, can occur multiple times.\r\n * Only take the first measurement, since the second could be read from the cache,\r\n * or due to the same correlation id being used for two distinct requests.\r\n */\r\n if (!previous[subMeasurementName]) {\r\n previous[subMeasurementName] = current.durationMs;\r\n } else {\r\n this.logger.verbose(`PerformanceClient: Submeasurement for ${measureName} already exists for ${current.name}, ignoring`, correlationId);\r\n }\r\n }\r\n\r\n return previous;\r\n }, topLevelEvent);\r\n\r\n const finalEvent: PerformanceEvent = {\r\n ...eventToEmit,\r\n ...staticFields,\r\n ...counters\r\n };\r\n\r\n this.emitEvents([finalEvent], eventToEmit.correlationId);\r\n } else {\r\n this.logger.verbose(`PerformanceClient: No completed top-level measurements found for ${measureName}`, correlationId);\r\n }\r\n } else {\r\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\r\n }\r\n }\r\n\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n discardMeasurements(correlationId: string): void {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Removes cache for a given correlation id.\r\n *\r\n * @param {string} correlation identifier\r\n */\r\n private discardCache(correlationId: string): void {\r\n this.discardMeasurements(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: Static fields discarded\", correlationId);\r\n this.staticFieldsByCorrelationId.delete(correlationId);\r\n\r\n this.logger.trace(\"PerformanceClient: Counters discarded\", correlationId);\r\n this.countersByCorrelationId.delete(correlationId);\r\n }\r\n\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\r\n const callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\r\n\r\n return callbackId;\r\n }\r\n\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n removePerformanceCallback(callbackId: string): boolean {\r\n const result = this.callbacks.delete(callbackId);\r\n\r\n if (result) {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\r\n } else {\r\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n\r\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\r\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PerformanceClient.js","sources":["../../../src/telemetry/performance/PerformanceClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\nimport { Logger } from \"../../logger/Logger\";\nimport { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction, QueueMeasurement } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport {\n Counters,\n PerformanceEvent,\n IntFields,\n PerformanceEvents,\n PerformanceEventStatus,\n StaticFields\n} from \"./PerformanceEvent\";\n\nexport abstract class PerformanceClient implements IPerformanceClient {\n protected authority: string;\n protected libraryName: string;\n protected libraryVersion: string;\n protected applicationTelemetry: ApplicationTelemetry;\n protected clientId: string;\n protected logger: Logger;\n protected callbacks: Map<string, PerformanceCallbackFunction>;\n\n /**\n * Multiple events with the same correlation id.\n * Double keyed by correlation id and event id.\n * @protected\n * @type {Map<string, Map<string, PerformanceEvent>>}\n */\n protected eventsByCorrelationId: Map<string, Map<string, PerformanceEvent>>;\n\n /**\n * Fields to be emitted which are scoped to the top level request and whose value will not change in submeasurements\n * For example: App name, version, etc.\n */\n protected staticFieldsByCorrelationId: Map<string, StaticFields>;\n\n /**\n * Counters to be emitted which are scoped to the top level request and whose value may change in sub-measurements\n */\n protected countersByCorrelationId: Map<string, Counters>;\n\n /**\n * Underlying performance measurements for each operation\n *\n * @protected\n * @type {Map<string, IPerformanceMeasurement>}\n */\n protected measurementsById: Map<string, IPerformanceMeasurement>;\n\n /**\n * Map of pre-queue times by correlation Id\n *\n * @protected\n * @type {Map<string, Map<string, number>>}\n */\n protected preQueueTimeByCorrelationId: Map<string, Map<string, number>>;\n\n /**\n * Map of queue measurements by correlation Id\n *\n * @protected\n * @type {Map<string, Array<QueueMeasurement>>}\n */\n protected queueMeasurements: Map<string, Array<QueueMeasurement>>;\n\n /**\n * Creates an instance of PerformanceClient,\n * an abstract class containing core performance telemetry logic.\n *\n * @constructor\n * @param {string} clientId Client ID of the application\n * @param {string} authority Authority used by the application\n * @param {Logger} logger Logger used by the application\n * @param {string} libraryName Name of the library\n * @param {string} libraryVersion Version of the library\n */\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n this.authority = authority;\n this.libraryName = libraryName;\n this.libraryVersion = libraryVersion;\n this.applicationTelemetry = applicationTelemetry;\n this.clientId = clientId;\n this.logger = logger;\n this.callbacks = new Map();\n this.eventsByCorrelationId = new Map();\n this.staticFieldsByCorrelationId = new Map();\n this.measurementsById = new Map();\n this.queueMeasurements = new Map();\n this.preQueueTimeByCorrelationId = new Map();\n this.countersByCorrelationId = new Map();\n }\n\n /**\n * Generates and returns a unique id, typically a guid.\n *\n * @abstract\n * @returns {string}\n */\n abstract generateId(): string;\n\n /**\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n * Note: this function can be changed to abstract at the next major version bump.\n *\n * @param {string} measureName\n * @param {string} correlationId\n * @returns {IPerformanceMeasurement}\n */\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n startPerformanceMeasurement(measureName: string, correlationId: string): IPerformanceMeasurement {\n return {} as IPerformanceMeasurement;\n }\n\n /**\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n * Note: this incorrectly-named function will be removed at the next major version bump.\n *\n * @param {string} measureName\n * @param {string} correlationId\n * @returns {IPerformanceMeasurement}\n */\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\n return {} as IPerformanceMeasurement;\n }\n\n /**\n * Sets pre-queue time by correlation Id\n *\n * @abstract\n * @param {PerformanceEvents} eventName\n * @param {string} correlationId\n * @returns\n */\n abstract setPreQueueTime(eventName: PerformanceEvents, correlationId?: string): void;\n\n /**\n * Get integral fields.\n * Override to change the set.\n */\n getIntFields(): ReadonlySet<string> {\n return IntFields;\n }\n\n /**\n * Gets map of pre-queue times by correlation Id\n *\n * @param {PerformanceEvents} eventName\n * @param {string} correlationId\n * @returns {number}\n */\n getPreQueueTime(eventName: PerformanceEvents, correlationId: string): number | void {\n const preQueueTimesByEvents = this.preQueueTimeByCorrelationId.get(correlationId);\n\n if (!preQueueTimesByEvents) {\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue times found for correlationId: ${correlationId}, unable to add queue measurement`);\n return;\n } else if (!preQueueTimesByEvents.get(eventName)) {\n this.logger.trace(`PerformanceClient.getPreQueueTime: no pre-queue time found for ${eventName}, unable to add queue measurement`);\n return;\n }\n\n return preQueueTimesByEvents.get(eventName);\n }\n\n /**\n * Calculates the difference between current time and time when function was queued.\n * Note: It is possible to have 0 as the queue time if the current time and the queued time was the same.\n *\n * @param {number} preQueueTime\n * @param {number} currentTime\n * @returns {number}\n */\n calculateQueuedTime(preQueueTime: number, currentTime: number): number {\n if (preQueueTime < 1) {\n this.logger.trace(`PerformanceClient: preQueueTime should be a positive integer and not ${preQueueTime}`);\n return 0;\n }\n\n if (currentTime < 1) {\n this.logger.trace(`PerformanceClient: currentTime should be a positive integer and not ${currentTime}`);\n return 0;\n }\n\n if (currentTime < preQueueTime) {\n this.logger.trace(\"PerformanceClient: currentTime is less than preQueueTime, check how time is being retrieved\");\n return 0;\n }\n\n return currentTime-preQueueTime;\n }\n\n /**\n * Adds queue measurement time to QueueMeasurements array for given correlation ID.\n *\n * @param {PerformanceEvents} name\n * @param {?string} correlationId\n * @param {?number} time\n * @returns\n */\n addQueueMeasurement(eventName: PerformanceEvents, correlationId?: string, queueTime?: number): void {\n if (!correlationId) {\n this.logger.trace(`PerformanceClient.addQueueMeasurement: correlationId not provided for ${eventName}, cannot add queue measurement`);\n return;\n }\n\n if (queueTime === 0) {\n // Possible for there to be no queue time after calculation\n this.logger.trace(`PerformanceClient.addQueueMeasurement: queue time provided for ${eventName} is ${queueTime}`);\n } else if (!queueTime) {\n this.logger.trace(`PerformanceClient.addQueueMeasurement: no queue time provided for ${eventName}`);\n return;\n }\n\n const queueMeasurement = {eventName, queueTime} as QueueMeasurement;\n\n // Adds to existing correlation Id if present in queueMeasurements\n const existingMeasurements = this.queueMeasurements.get(correlationId);\n if (existingMeasurements) {\n existingMeasurements.push(queueMeasurement);\n this.queueMeasurements.set(correlationId, existingMeasurements);\n } else {\n // Sets new correlation Id if not present in queueMeasurements\n this.logger.trace(`PerformanceClient.addQueueMeasurement: adding correlationId ${correlationId} to queue measurements`);\n const measurementArray = [queueMeasurement];\n this.queueMeasurements.set(correlationId, measurementArray);\n }\n }\n\n /**\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n *\n * @param {PerformanceEvents} measureName\n * @param {?string} [correlationId]\n * @returns {InProgressPerformanceEvent}\n */\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n // Generate a placeholder correlation if the request does not provide one\n const eventCorrelationId = correlationId || this.generateId();\n if (!correlationId) {\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\n }\n\n // Duplicate code to address spelling error will be removed at the next major version bump.\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\n let validMeasurement: IPerformanceMeasurement;\n const performanceMeasuremeant = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\n if (performanceMeasuremeant.startMeasurement) {\n performanceMeasuremeant.startMeasurement();\n validMeasurement = performanceMeasuremeant;\n } else {\n const performanceMeasurement = this.startPerformanceMeasurement(measureName, eventCorrelationId);\n performanceMeasurement.startMeasurement();\n validMeasurement = performanceMeasurement;\n }\n\n const inProgressEvent: PerformanceEvent = {\n eventId: this.generateId(),\n status: PerformanceEventStatus.InProgress,\n authority: this.authority,\n libraryName: this.libraryName,\n libraryVersion: this.libraryVersion,\n clientId: this.clientId,\n name: measureName,\n startTimeMs: Date.now(),\n correlationId: eventCorrelationId,\n };\n\n // Store in progress events so they can be discarded if not ended properly\n this.cacheEventByCorrelationId(inProgressEvent);\n\n const staticFields: StaticFields = {\n appName: this.applicationTelemetry?.appName,\n appVersion: this.applicationTelemetry?.appVersion,\n };\n this.addStaticFields(staticFields, eventCorrelationId);\n this.cacheMeasurement(inProgressEvent, validMeasurement);\n\n // Return the event and functions the caller can use to properly end/flush the measurement\n return {\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\n const completedEvent = this.endMeasurement({\n // Initial set of event properties\n ...inProgressEvent,\n // Properties set when event ends\n ...event\n });\n\n if (completedEvent) {\n // Cache event so that submeasurements can be added downstream\n this.cacheEventByCorrelationId(completedEvent);\n }\n return completedEvent;\n },\n flushMeasurement: () => {\n return this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\n },\n discardMeasurement: () => {\n return this.discardMeasurements(inProgressEvent.correlationId);\n },\n addStaticFields: (fields: StaticFields) => {\n return this.addStaticFields(fields, inProgressEvent.correlationId);\n },\n increment: (counters: Counters) => {\n return this.increment(counters, inProgressEvent.correlationId);\n },\n measurement: validMeasurement,\n event: inProgressEvent\n };\n\n }\n\n /**\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\n * as consumers should instead use the function returned by startMeasurement.\n *\n * @param {PerformanceEvent} event\n * @returns {(PerformanceEvent | null)}\n */\n endMeasurement(event: PerformanceEvent): PerformanceEvent | null {\n const performanceMeasurement = this.measurementsById.get(event.eventId);\n if (performanceMeasurement) {\n // Immediately delete so that the same event isnt ended twice\n this.measurementsById.delete(event.eventId);\n performanceMeasurement.endMeasurement();\n const durationMs = performanceMeasurement.flushMeasurement();\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\n if (durationMs !== null) {\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\n const completedEvent: PerformanceEvent = {\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\n durationMs: Math.round(durationMs),\n ...event,\n status: PerformanceEventStatus.Completed,\n };\n\n return completedEvent;\n } else {\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\n }\n } else {\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\n }\n\n return null;\n }\n\n /**\n * Saves extra information to be emitted when the measurements are flushed\n * @param fields\n * @param correlationId\n */\n addStaticFields(fields: StaticFields, correlationId: string) : void{\n const existingStaticFields = this.staticFieldsByCorrelationId.get(correlationId);\n if (existingStaticFields) {\n this.logger.trace(\"PerformanceClient: Updating static fields\");\n this.staticFieldsByCorrelationId.set(correlationId, {...existingStaticFields, ...fields});\n } else {\n this.logger.trace(\"PerformanceClient: Adding static fields\");\n this.staticFieldsByCorrelationId.set(correlationId, fields);\n }\n }\n\n /**\n * Increment counters to be emitted when the measurements are flushed\n * @param counters {Counters}\n * @param correlationId {string} correlation identifier\n */\n increment(counters: Counters, correlationId: string): void {\n const existing: Counters | undefined = this.countersByCorrelationId.get(correlationId);\n if (!existing) {\n this.logger.trace(\"PerformanceClient: Setting counters\");\n this.countersByCorrelationId.set(correlationId, { ...counters });\n return;\n }\n\n this.logger.trace(\"PerformanceClient: Updating counters\");\n for (const counter in counters) {\n if (!existing.hasOwnProperty(counter)) {\n existing[counter] = 0;\n }\n existing[counter] += counters[counter];\n }\n }\n\n /**\n * Upserts event into event cache.\n * First key is the correlation id, second key is the event id.\n * Allows for events to be grouped by correlation id,\n * and to easily allow for properties on them to be updated.\n *\n * @private\n * @param {PerformanceEvent} event\n */\n private cacheEventByCorrelationId(event: PerformanceEvent) {\n const existingEvents = this.eventsByCorrelationId.get(event.correlationId);\n if (existingEvents) {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\n existingEvents.set(event.eventId, event);\n } else {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\n }\n }\n\n /**\n * Cache measurements by their id.\n *\n * @private\n * @param {PerformanceEvent} event\n * @param {IPerformanceMeasurement} measurement\n */\n private cacheMeasurement(event: PerformanceEvent, measurement: IPerformanceMeasurement) {\n this.measurementsById.set(event.eventId, measurement);\n }\n\n /**\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\n *\n * @param {PerformanceEvents} measureName\n * @param {string} correlationId\n */\n flushMeasurements(measureName: PerformanceEvents, correlationId: string): void {\n this.logger.trace(`PerformanceClient: Performance measurements flushed for ${measureName}`, correlationId);\n\n /**\n * Adds all queue time and count measurements for given correlation ID\n * then deletes queue times for given correlation ID from queueMeasurements map.\n */\n\n const queueMeasurementForCorrelationId = this.queueMeasurements.get(correlationId);\n if (!queueMeasurementForCorrelationId) {\n this.logger.trace(`PerformanceClient: no queue measurements found for for correlationId: ${correlationId}`);\n }\n\n let totalQueueTime = 0;\n let totalQueueCount = 0;\n queueMeasurementForCorrelationId?.forEach((measurement) => {\n totalQueueTime += measurement.queueTime;\n totalQueueCount++;\n });\n\n const eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\n const staticFields = this.staticFieldsByCorrelationId.get(correlationId);\n const counters = this.countersByCorrelationId.get(correlationId);\n\n if (eventsForCorrelationId) {\n this.discardCache(correlationId);\n\n /*\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\n * IE only supports Map.forEach.\n */\n const completedEvents: PerformanceEvent[] = [];\n let incompleteSubsCount: number = 0;\n\n eventsForCorrelationId.forEach(event => {\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${event.name} found for ${measureName}`, correlationId);\n incompleteSubsCount++;\n\n const completedEvent = this.endMeasurement(event);\n if (completedEvent) {\n completedEvents.push(completedEvent);\n }\n }\n\n completedEvents.push(event);\n });\n\n // Sort events by start time (earliest first)\n const sortedCompletedEvents = completedEvents.sort((eventA, eventB) => eventA.startTimeMs - eventB.startTimeMs);\n\n // Take completed top level event and add completed submeasurements durations as properties\n const topLevelEvents = sortedCompletedEvents.filter(event => event.name === measureName && event.status === PerformanceEventStatus.Completed);\n if (topLevelEvents.length > 0) {\n /*\n * Only take the first top-level event if there are multiple events with the same correlation id.\n * This greatly simplifies logic for submeasurements.\n */\n if (topLevelEvents.length > 1) {\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\n }\n const topLevelEvent = topLevelEvents[0];\n this.logger.verbose(`PerformanceClient: Measurement found for ${measureName}`, correlationId);\n\n // Build event object with top level and sub measurements\n const eventToEmit = sortedCompletedEvents.reduce((previous, current) => {\n if (current.name !== measureName) {\n this.logger.trace(`PerformanceClient: Complete submeasurement found for ${current.name}`, correlationId);\n // TODO: Emit additional properties for each subMeasurement\n const subMeasurementName = `${current.name}DurationMs`;\n /*\n * Some code paths, such as resolving an authority, can occur multiple times.\n * Only take the first measurement, since the second could be read from the cache,\n * or due to the same correlation id being used for two distinct requests.\n */\n if (!previous[subMeasurementName]) {\n previous[subMeasurementName] = current.durationMs;\n } else {\n this.logger.verbose(`PerformanceClient: Submeasurement for ${measureName} already exists for ${current.name}, ignoring`, correlationId);\n }\n }\n\n return previous;\n }, topLevelEvent);\n\n const finalEvent: PerformanceEvent = {\n ...eventToEmit,\n ...staticFields,\n ...counters,\n queuedTimeMs: totalQueueTime,\n queuedCount: totalQueueCount,\n incompleteSubsCount\n };\n this.truncateIntegralFields(finalEvent, this.getIntFields());\n\n this.emitEvents([finalEvent], eventToEmit.correlationId);\n } else {\n this.logger.verbose(`PerformanceClient: No completed top-level measurements found for ${measureName}`, correlationId);\n }\n } else {\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\n }\n }\n\n /**\n * Removes measurements for a given correlation id.\n *\n * @param {string} correlationId\n */\n discardMeasurements(correlationId: string): void {\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\n this.eventsByCorrelationId.delete(correlationId);\n }\n\n /**\n * Removes cache for a given correlation id.\n *\n * @param {string} correlation identifier\n */\n private discardCache(correlationId: string): void {\n this.discardMeasurements(correlationId);\n\n this.logger.trace(\"PerformanceClient: Static fields discarded\", correlationId);\n this.staticFieldsByCorrelationId.delete(correlationId);\n\n this.logger.trace(\"PerformanceClient: Counters discarded\", correlationId);\n this.countersByCorrelationId.delete(correlationId);\n\n this.logger.trace(\"PerformanceClient: QueueMeasurements discarded\", correlationId);\n this.queueMeasurements.delete(correlationId);\n\n this.logger.trace(\"PerformanceClient: Pre-queue times discarded\", correlationId);\n this.preQueueTimeByCorrelationId.delete(correlationId);\n }\n\n /**\n * Registers a callback function to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n const callbackId = this.generateId();\n this.callbacks.set(callbackId, callback);\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\n\n return callbackId;\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n const result = this.callbacks.delete(callbackId);\n\n if (result) {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\n } else {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\n }\n\n return result;\n }\n\n /**\n * Emits events to all registered callbacks.\n *\n * @param {PerformanceEvent[]} events\n * @param {?string} [correlationId]\n */\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\n\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\n callback.apply(null, [events]);\n });\n }\n\n /**\n * Enforce truncation of integral fields in performance event.\n * @param {PerformanceEvent} event performance event to update.\n * @param {Set<string>} intFields integral fields.\n */\n private truncateIntegralFields(event: PerformanceEvent, intFields: ReadonlySet<string>): void {\n intFields.forEach((key) => {\n if (key in event && typeof event[key] === \"number\") {\n event[key] = Math.floor(event[key]);\n }\n });\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;AAeH,IAAA,iBAAA,kBAAA,YAAA;AAoDI;;;;;;;;;;AAUG;IACH,SAAY,iBAAA,CAAA,QAAgB,EAAE,SAAiB,EAAE,MAAc,EAAE,WAAmB,EAAE,cAAsB,EAAE,oBAA0C,EAAA;AACpJ,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;KAC5C;AAUD;;;;;;;AAOG;;AAEH,IAAA,iBAAA,CAAA,SAAA,CAAA,2BAA2B,GAA3B,UAA4B,WAAmB,EAAE,aAAqB,EAAA;AAClE,QAAA,OAAO,EAA6B,CAAC;KACxC,CAAA;AAED;;;;;;;AAOG;;AAEH,IAAA,iBAAA,CAAA,SAAA,CAAA,4BAA4B,GAA5B,UAA6B,WAAmB,EAAE,aAAqB,EAAA;AACnE,QAAA,OAAO,EAA6B,CAAC;KACxC,CAAA;AAYD;;;AAGG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;AACI,QAAA,OAAO,SAAS,CAAC;KACpB,CAAA;AAED;;;;;;AAMG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,SAA4B,EAAE,aAAqB,EAAA;QAC/D,IAAM,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElF,IAAI,CAAC,qBAAqB,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iFAAkF,GAAA,aAAa,GAAmC,mCAAA,CAAC,CAAC;YACtJ,OAAO;AACV,SAAA;AAAM,aAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAkE,GAAA,SAAS,GAAmC,mCAAA,CAAC,CAAC;YAClI,OAAO;AACV,SAAA;AAED,QAAA,OAAO,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAC/C,CAAA;AAED;;;;;;;AAOG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,YAAoB,EAAE,WAAmB,EAAA;QACzD,IAAI,YAAY,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAwE,GAAA,YAAc,CAAC,CAAC;AAC1G,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAuE,GAAA,WAAa,CAAC,CAAC;AACxG,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,IAAI,WAAW,GAAG,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;AACjH,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,OAAO,WAAW,GAAC,YAAY,CAAC;KACnC,CAAA;AAED;;;;;;;AAOG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,UAAoB,SAA4B,EAAE,aAAsB,EAAE,SAAkB,EAAA;QACxF,IAAI,CAAC,aAAa,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wEAAyE,GAAA,SAAS,GAAgC,gCAAA,CAAC,CAAC;YACtI,OAAO;AACV,SAAA;QAED,IAAI,SAAS,KAAK,CAAC,EAAE;;YAEjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAkE,SAAS,GAAA,MAAA,GAAO,SAAW,CAAC,CAAC;AACpH,SAAA;aAAM,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAqE,GAAA,SAAW,CAAC,CAAC;YACpG,OAAO;AACV,SAAA;QAED,IAAM,gBAAgB,GAAG,EAAC,SAAS,WAAA,EAAE,SAAS,EAAA,SAAA,EAAqB,CAAC;;QAGpE,IAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACvE,QAAA,IAAI,oBAAoB,EAAE;AACtB,YAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA+D,GAAA,aAAa,GAAwB,wBAAA,CAAC,CAAC;AACxH,YAAA,IAAM,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC/D,SAAA;KACJ,CAAA;AAED;;;;;;AAMG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAhB,UAAiB,WAA8B,EAAE,aAAsB,EAAA;QAAvE,IA0EC,KAAA,GAAA,IAAA,CAAA;;;QAxEG,IAAM,kBAAkB,GAAG,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAqD,GAAA,WAAW,GAAc,cAAA,EAAE,kBAAkB,CAAC,CAAC;AACxH,SAAA;;QAGD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA0D,WAAa,EAAE,kBAAkB,CAAC,CAAC;AAC/G,QAAA,IAAI,gBAAyC,CAAC;QAC9C,IAAM,uBAAuB,GAAG,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACnG,IAAI,uBAAuB,CAAC,gBAAgB,EAAE;YAC1C,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;YAC3C,gBAAgB,GAAG,uBAAuB,CAAC;AAC9C,SAAA;AAAM,aAAA;YACH,IAAM,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACjG,sBAAsB,CAAC,gBAAgB,EAAE,CAAC;YAC1C,gBAAgB,GAAG,sBAAsB,CAAC;AAC7C,SAAA;AAED,QAAA,IAAM,eAAe,GAAqB;AACtC,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,MAAM,EAAE,sBAAsB,CAAC,UAAU;YACzC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;AACvB,YAAA,aAAa,EAAE,kBAAkB;SACpC,CAAC;;AAGF,QAAA,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;AAEhD,QAAA,IAAM,YAAY,GAAiB;AAC/B,YAAA,OAAO,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,OAAO;AAC3C,YAAA,UAAU,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,0CAAE,UAAU;SACpD,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;;QAGzD,OAAO;YACH,cAAc,EAAE,UAAC,KAAiC,EAAA;gBAC9C,IAAM,cAAc,GAAG,KAAI,CAAC,cAAc,uBAEnC,eAAe,CAAA,EAEf,KAAK,CAAA,CACV,CAAC;AAEH,gBAAA,IAAI,cAAc,EAAE;;AAEhB,oBAAA,KAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;AAClD,iBAAA;AACD,gBAAA,OAAO,cAAc,CAAC;aACzB;AACD,YAAA,gBAAgB,EAAE,YAAA;AACd,gBAAA,OAAO,KAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;aACtF;AACD,YAAA,kBAAkB,EAAE,YAAA;gBAChB,OAAO,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;aAClE;YACD,eAAe,EAAE,UAAC,MAAoB,EAAA;gBAClC,OAAO,KAAI,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;aACtE;YACD,SAAS,EAAE,UAAC,QAAkB,EAAA;gBAC1B,OAAO,KAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;aAClE;AACD,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,KAAK,EAAE,eAAe;SACzB,CAAC;KAEL,CAAA;AAED;;;;;;AAMG;IACH,iBAAc,CAAA,SAAA,CAAA,cAAA,GAAd,UAAe,KAAuB,EAAA;AAClC,QAAA,IAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACxE,QAAA,IAAI,sBAAsB,EAAE;;YAExB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,sBAAsB,CAAC,cAAc,EAAE,CAAC;AACxC,YAAA,IAAM,UAAU,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,CAAC;;YAE7D,IAAI,UAAU,KAAK,IAAI,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAAwD,KAAK,CAAC,IAAI,GAAA,IAAA,GAAK,UAAU,GAAK,KAAA,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/H,gBAAA,IAAM,cAAc,GAAA,QAAA,CAAA,QAAA,CAAA;;AAEhB,oBAAA,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAA,EAC/B,KAAK,CAAA,EAAA,EACR,MAAM,EAAE,sBAAsB,CAAC,SAAS,GAC3C,CAAC;AAEF,gBAAA,OAAO,cAAc,CAAC;AACzB,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AAClG,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAAgD,GAAA,KAAK,CAAC,OAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;AAED;;;;AAIG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,MAAoB,EAAE,aAAqB,EAAA;QACvD,IAAM,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACjF,QAAA,IAAI,oBAAoB,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,aAAa,EAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,oBAAoB,CAAA,EAAK,MAAM,CAAA,CAAE,CAAC;AAC7F,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/D,SAAA;KACJ,CAAA;AAED;;;;AAIG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,QAAkB,EAAE,aAAqB,EAAA;QAC/C,IAAM,QAAQ,GAAyB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,EAAA,QAAA,CAAA,EAAA,EAAO,QAAQ,CAAA,CAAG,CAAC;YACjE,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,QAAA,KAAK,IAAM,OAAO,IAAI,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AACnC,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzB,aAAA;YACD,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;KACJ,CAAA;AAED;;;;;;;;AAQG;IACK,iBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAjC,UAAkC,KAAuB,EAAA;AACrD,QAAA,IAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3E,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAkD,GAAA,KAAK,CAAC,IAAI,mBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YACrH,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAkD,GAAA,KAAK,CAAC,IAAI,aAAU,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/G,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F,SAAA;KACJ,CAAA;AAED;;;;;;AAMG;AACK,IAAA,iBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,UAAyB,KAAuB,EAAE,WAAoC,EAAA;QAClF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACzD,CAAA;AAED;;;;;AAKG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,WAA8B,EAAE,aAAqB,EAAA;QAAvE,IAuGC,KAAA,GAAA,IAAA,CAAA;QAtGG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA2D,WAAa,EAAE,aAAa,CAAC,CAAC;AAE3G;;;AAGG;QAEH,IAAM,gCAAgC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,gCAAgC,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wEAAyE,GAAA,aAAe,CAAC,CAAC;AAC/G,SAAA;QAED,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,gCAAgC,KAAA,IAAA,IAAhC,gCAAgC,KAAhC,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,gCAAgC,CAAE,OAAO,CAAC,UAAC,WAAW,EAAA;AAClD,YAAA,cAAc,IAAI,WAAW,CAAC,SAAS,CAAC;AACxC,YAAA,eAAe,EAAE,CAAC;AACtB,SAAC,CAAE,CAAA;QAEH,IAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7E,IAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACzE,IAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEjE,QAAA,IAAI,sBAAsB,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAEjC;;;;AAIG;YACH,IAAM,iBAAe,GAAuB,EAAE,CAAC;YAC/C,IAAI,qBAAmB,GAAW,CAAC,CAAC;AAEpC,YAAA,sBAAsB,CAAC,OAAO,CAAC,UAAA,KAAK,EAAA;AAChC,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,CAAC,SAAS,EAAE;AACjF,oBAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAAgD,GAAA,KAAK,CAAC,IAAI,GAAc,aAAA,GAAA,WAAa,EAAE,aAAa,CAAC,CAAC;AACxH,oBAAA,qBAAmB,EAAE,CAAC;oBAEtB,IAAM,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAClD,oBAAA,IAAI,cAAc,EAAE;AAChB,wBAAA,iBAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,qBAAA;AACJ,iBAAA;AAED,gBAAA,iBAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;;YAGH,IAAM,qBAAqB,GAAG,iBAAe,CAAC,IAAI,CAAC,UAAC,MAAM,EAAE,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA,EAAA,CAAC,CAAC;;YAGhH,IAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,UAAA,KAAK,EAAA,EAAI,OAAA,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,CAAC,SAAS,CAAA,EAAA,CAAC,CAAC;AAC9I,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B;;;AAGG;AACH,gBAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0FAA0F,EAAE,aAAa,CAAC,CAAC;AAClI,iBAAA;AACD,gBAAA,IAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8CAA4C,WAAa,EAAE,aAAa,CAAC,CAAC;;gBAG9F,IAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,OAAO,EAAA;AAC/D,oBAAA,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9B,wBAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAA,GAAwD,OAAO,CAAC,IAAM,EAAE,aAAa,CAAC,CAAC;;AAEzG,wBAAA,IAAM,kBAAkB,GAAM,OAAO,CAAC,IAAI,eAAY,CAAC;AACvD;;;;AAIG;AACH,wBAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC/B,4BAAA,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;AACrD,yBAAA;AAAM,6BAAA;AACH,4BAAA,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wCAAyC,GAAA,WAAW,GAAuB,sBAAA,GAAA,OAAO,CAAC,IAAI,GAAA,YAAY,EAAE,aAAa,CAAC,CAAC;AAC3I,yBAAA;AACJ,qBAAA;AAED,oBAAA,OAAO,QAAQ,CAAC;iBACnB,EAAE,aAAa,CAAC,CAAC;AAElB,gBAAA,IAAM,UAAU,GACT,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,WAAW,GACX,YAAY,CAAA,EACZ,QAAQ,CACX,EAAA,EAAA,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAE,eAAe,EAC5B,mBAAmB,EAAA,qBAAA,GACtB,CAAC;gBACF,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBAE7D,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sEAAoE,WAAa,EAAE,aAAa,CAAC,CAAC;AACzH,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA0C,EAAE,aAAa,CAAC,CAAC;AAClF,SAAA;KACJ,CAAA;AAED;;;;AAIG;IACH,iBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,aAAqB,EAAA;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE,aAAa,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACpD,CAAA;AAED;;;;AAIG;IACK,iBAAY,CAAA,SAAA,CAAA,YAAA,GAApB,UAAqB,aAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,aAAa,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,aAAa,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,aAAa,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,aAAa,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC1D,CAAA;AAED;;;;;AAKG;IACH,iBAAsB,CAAA,SAAA,CAAA,sBAAA,GAAtB,UAAuB,QAAqC,EAAA;AACxD,QAAA,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8DAA+D,GAAA,UAAY,CAAC,CAAC;AAEjG,QAAA,OAAO,UAAU,CAAC;KACrB,CAAA;AAED;;;;;AAKG;IACH,iBAAyB,CAAA,SAAA,CAAA,yBAAA,GAAzB,UAA0B,UAAkB,EAAA;QACxC,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEjD,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA2C,GAAA,UAAU,GAAW,WAAA,CAAC,CAAC;AACzF,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0CAA2C,GAAA,UAAU,GAAe,eAAA,CAAC,CAAC;AAC7F,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB,CAAA;AAED;;;;;AAKG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,MAA0B,EAAE,aAAqB,EAAA;QAA5D,IAOC,KAAA,GAAA,IAAA,CAAA;QANG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gDAAgD,EAAE,aAAa,CAAC,CAAC;QAErF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,QAAqC,EAAE,UAAkB,EAAA;YAC7E,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAiD,UAAY,EAAE,aAAa,CAAC,CAAC;YAChG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACN,CAAA;AAED;;;;AAIG;AACK,IAAA,iBAAA,CAAA,SAAA,CAAA,sBAAsB,GAA9B,UAA+B,KAAuB,EAAE,SAA8B,EAAA;AAClF,QAAA,SAAS,CAAC,OAAO,CAAC,UAAC,GAAG,EAAA;YAClB,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChD,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,aAAA;AACL,SAAC,CAAC,CAAC;KACN,CAAA;IACL,OAAC,iBAAA,CAAA;AAAD,CAAC,EAAA;;;;"}
@@ -103,6 +103,91 @@ export declare enum PerformanceEvents {
103
103
  * Time taken for acquiring cached refresh token
104
104
  */
105
105
  RefreshTokenClientAcquireTokenWithCachedRefreshToken = "refreshTokenClientAcquireTokenWithCachedRefreshToken",
106
+ /**
107
+ * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).
108
+ */
109
+ RefreshTokenClientAcquireTokenByRefreshToken = "refreshTokenClientAcquireTokenByRefreshToken",
110
+ /**
111
+ * Helper function to create token request body in RefreshTokenClient (msal-common).
112
+ */
113
+ RefreshTokenClientCreateTokenRequestBody = "refreshTokenClientCreateTokenRequestBody",
114
+ /**
115
+ * acquireTokenFromCache (msal-browser).
116
+ * Internal API for acquiring token from cache
117
+ */
118
+ AcquireTokenFromCache = "acquireTokenFromCache",
119
+ /**
120
+ * acquireTokenBySilentIframe (msal-browser).
121
+ * Internal API for acquiring token by silent Iframe
122
+ */
123
+ AcquireTokenBySilentIframe = "acquireTokenBySilentIframe",
124
+ /**
125
+ * Internal API for initializing base request in BaseInteractionClient (msal-browser)
126
+ */
127
+ InitializeBaseRequest = "initializeBaseRequest",
128
+ /**
129
+ * Internal API for initializing silent request in SilentCacheClient (msal-browser)
130
+ */
131
+ InitializeSilentRequest = "initializeSilentRequest",
132
+ /**
133
+ * Helper function in SilentIframeClient class (msal-browser).
134
+ */
135
+ SilentIframeClientTokenHelper = "silentIframeClientTokenHelper",
136
+ /**
137
+ * SilentHandler
138
+ */
139
+ SilentHandlerInitiateAuthRequest = "silentHandlerInitiateAuthRequest",
140
+ SilentHandlerMonitorIframeForHash = "silentHandlerMonitorIframeForHash",
141
+ SilentHandlerLoadFrame = "silentHandlerLoadFrame",
142
+ /**
143
+ * Helper functions in StandardInteractionClient class (msal-browser)
144
+ */
145
+ StandardInteractionClientCreateAuthCodeClient = "standardInteractionClientCreateAuthCodeClient",
146
+ StandardInteractionClientGetClientConfiguration = "standardInteractionClientGetClientConfiguration",
147
+ StandardInteractionClientInitializeAuthorizationRequest = "standardInteractionClientInitializeAuthorizationRequest",
148
+ StandardInteractionClientInitializeAuthorizationCodeRequest = "standardInteractionClientInitializeAuthorizationCodeRequest",
149
+ /**
150
+ * getAuthCodeUrl API (msal-browser and msal-node).
151
+ */
152
+ GetAuthCodeUrl = "getAuthCodeUrl",
153
+ /**
154
+ * Functions from InteractionHandler (msal-browser)
155
+ */
156
+ HandleCodeResponseFromServer = "handleCodeResponseFromServer",
157
+ HandleCodeResponseFromHash = "handleCodeResponseFromHash",
158
+ UpdateTokenEndpointAuthority = "updateTokenEndpointAuthority",
159
+ /**
160
+ * APIs in Authorization Code Client (msal-common)
161
+ */
162
+ AuthClientAcquireToken = "authClientAcquireToken",
163
+ AuthClientExecuteTokenRequest = "authClientExecuteTokenRequest",
164
+ AuthClientCreateTokenRequestBody = "authClientCreateTokenRequestBody",
165
+ AuthClientCreateQueryString = "authClientCreateQueryString",
166
+ /**
167
+ * Generate functions in PopTokenGenerator (msal-common)
168
+ */
169
+ PopTokenGenerateCnf = "popTokenGenerateCnf",
170
+ PopTokenGenerateKid = "popTokenGenerateKid",
171
+ /**
172
+ * handleServerTokenResponse API in ResponseHandler (msal-common)
173
+ */
174
+ HandleServerTokenResponse = "handleServerTokenResponse",
175
+ /**
176
+ * Authority functions
177
+ */
178
+ AuthorityFactoryCreateDiscoveredInstance = "authorityFactoryCreateDiscoveredInstance",
179
+ AuthorityResolveEndpointsAsync = "authorityResolveEndpointsAsync",
180
+ AuthorityGetCloudDiscoveryMetadataFromNetwork = "authorityGetCloudDiscoveryMetadataFromNetwork",
181
+ AuthorityUpdateCloudDiscoveryMetadata = "authorityUpdateCloudDiscoveryMetadata",
182
+ AuthorityGetEndpointMetadataFromNetwork = "authorityGetEndpointMetadataFromNetwork",
183
+ AuthorityUpdateEndpointMetadata = "authorityUpdateEndpointMetadata",
184
+ AuthorityUpdateMetadataWithRegionalInformation = "authorityUpdateMetadataWithRegionalInformation",
185
+ /**
186
+ * Region Discovery functions
187
+ */
188
+ RegionDiscoveryDetectRegion = "regionDiscoveryDetectRegion",
189
+ RegionDiscoveryGetRegionFromIMDS = "regionDiscoveryGetRegionFromIMDS",
190
+ RegionDiscoveryGetCurrentVersion = "regionDiscoveryGetCurrentVersion",
106
191
  AcquireTokenByCodeAsync = "acquireTokenByCodeAsync",
107
192
  GetEndpointMetadataFromNetwork = "getEndpointMetadataFromNetwork",
108
193
  GetCloudDiscoveryMetadataFromNetworkMeasurement = "getCloudDiscoveryMetadataFromNetworkMeasurement",
@@ -183,16 +268,13 @@ export declare type StaticFields = {
183
268
  matsHttpEventCount?: number;
184
269
  httpVerToken?: string;
185
270
  httpVerAuthority?: string;
186
- brokerInteractionTimeoutMs?: number;
187
- brokerMessageTimeoutMs?: number;
188
- brokerHandshakeTimeoutMs?: number;
189
- brokerIframeTimeoutMs?: number;
190
271
  };
191
272
  /**
192
273
  * Fields whose value may change throughout a request
193
274
  */
194
275
  export declare type Counters = {
195
276
  visibilityChangeCount?: number;
277
+ incompleteSubsCount?: number;
196
278
  };
197
279
  /**
198
280
  * Performance measurement taken by the library, including metadata about the request and application.
@@ -312,5 +394,24 @@ export declare type PerformanceEvent = StaticFields & Counters & {
312
394
  * @type {?string}
313
395
  */
314
396
  requestId?: string;
397
+ /**
398
+ * Cache lookup policy
399
+ *
400
+ * @type {?number}
401
+ */
402
+ cacheLookupPolicy?: number | undefined;
403
+ /**
404
+ * Amount of time spent in the JS queue in milliseconds.
405
+ *
406
+ * @type {?number}
407
+ */
408
+ queuedTimeMs?: number;
409
+ /**
410
+ * Amount of times queued in the JS event queue.
411
+ *
412
+ * @type {?number}
413
+ */
414
+ queuedCount?: number;
315
415
  };
416
+ export declare const IntFields: ReadonlySet<string>;
316
417
  //# sourceMappingURL=PerformanceEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PerformanceEvent.d.ts","sourceRoot":"","sources":["../../../src/telemetry/performance/PerformanceEvent.ts"],"names":[],"mappings":"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"}