@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +213 -213
- package/dist/app/IPublicClientApplication.d.ts +45 -45
- package/dist/app/IPublicClientApplication.js +96 -96
- package/dist/app/PublicClientApplication.d.ts +244 -244
- package/dist/app/PublicClientApplication.js +307 -307
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
- package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
- package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
- package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
- package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
- package/dist/cache/AsyncMemoryStorage.js +132 -132
- package/dist/cache/BrowserCacheManager.d.ts +377 -377
- package/dist/cache/BrowserCacheManager.js +1276 -1276
- package/dist/cache/BrowserStorage.d.ts +11 -11
- package/dist/cache/BrowserStorage.js +35 -35
- package/dist/cache/CryptoKeyStore.d.ts +17 -17
- package/dist/cache/CryptoKeyStore.js +41 -41
- package/dist/cache/DatabaseStorage.d.ts +56 -56
- package/dist/cache/DatabaseStorage.js +190 -190
- package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
- package/dist/cache/ITokenCache.d.ts +10 -10
- package/dist/cache/IWindowStorage.d.ts +27 -27
- package/dist/cache/MemoryStorage.d.ts +11 -11
- package/dist/cache/MemoryStorage.js +31 -31
- package/dist/cache/TokenCache.d.ts +76 -76
- package/dist/cache/TokenCache.js +225 -225
- package/dist/config/Configuration.d.ts +203 -203
- package/dist/config/Configuration.js +101 -101
- package/dist/controllers/ControllerFactory.d.ts +9 -9
- package/dist/controllers/ControllerFactory.js +37 -37
- package/dist/controllers/IController.d.ts +66 -66
- package/dist/controllers/StandardController.d.ts +413 -413
- package/dist/controllers/StandardController.js +1272 -1272
- package/dist/crypto/BrowserCrypto.d.ts +61 -61
- package/dist/crypto/BrowserCrypto.js +131 -131
- package/dist/crypto/CryptoOps.d.ts +73 -73
- package/dist/crypto/CryptoOps.js +150 -150
- package/dist/crypto/GuidGenerator.d.ts +12 -12
- package/dist/crypto/GuidGenerator.js +96 -96
- package/dist/crypto/ISubtleCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.js +24 -24
- package/dist/crypto/MsBrowserCrypto.d.ts +9 -9
- package/dist/crypto/MsBrowserCrypto.js +79 -79
- package/dist/crypto/MsrBrowserCrypto.d.ts +17 -17
- package/dist/crypto/MsrBrowserCrypto.js +28 -28
- package/dist/crypto/PkceGenerator.d.ts +24 -24
- package/dist/crypto/PkceGenerator.js +58 -58
- package/dist/crypto/SignedHttpRequest.d.ts +30 -30
- package/dist/crypto/SignedHttpRequest.js +39 -39
- package/dist/encode/Base64Decode.d.ts +22 -22
- package/dist/encode/Base64Decode.js +73 -73
- package/dist/encode/Base64Encode.d.ts +31 -31
- package/dist/encode/Base64Encode.js +79 -79
- package/dist/error/BrowserAuthError.d.ts +382 -382
- package/dist/error/BrowserAuthError.js +483 -483
- package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
- package/dist/error/BrowserConfigurationAuthError.js +96 -96
- package/dist/error/NativeAuthError.d.ts +56 -56
- package/dist/error/NativeAuthError.js +88 -88
- package/dist/event/EventHandler.d.ts +41 -41
- package/dist/event/EventHandler.js +119 -119
- package/dist/event/EventMessage.d.ts +25 -25
- package/dist/event/EventMessage.js +67 -67
- package/dist/event/EventType.d.ts +26 -26
- package/dist/event/EventType.js +31 -31
- package/dist/index.d.ts +35 -35
- package/dist/index.js +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +52 -52
- package/dist/interaction_client/BaseInteractionClient.js +138 -138
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
- package/dist/interaction_client/NativeInteractionClient.js +516 -516
- package/dist/interaction_client/PopupClient.d.ts +111 -111
- package/dist/interaction_client/PopupClient.js +476 -476
- package/dist/interaction_client/RedirectClient.d.ts +48 -48
- package/dist/interaction_client/RedirectClient.js +290 -290
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
- package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
- package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
- package/dist/interaction_client/SilentCacheClient.js +67 -67
- package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
- package/dist/interaction_client/SilentIframeClient.js +127 -127
- package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
- package/dist/interaction_client/SilentRefreshClient.js +62 -62
- package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
- package/dist/interaction_client/StandardInteractionClient.js +259 -259
- package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
- package/dist/interaction_handler/InteractionHandler.js +127 -127
- package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
- package/dist/interaction_handler/RedirectHandler.js +118 -118
- package/dist/interaction_handler/SilentHandler.d.ts +47 -47
- package/dist/interaction_handler/SilentHandler.js +162 -162
- package/dist/internals.d.ts +23 -23
- package/dist/internals.js +4 -4
- package/dist/navigation/INavigationClient.d.ts +16 -16
- package/dist/navigation/NavigationClient.d.ts +22 -22
- package/dist/navigation/NavigationClient.js +40 -40
- package/dist/navigation/NavigationOptions.d.ts +12 -12
- package/dist/network/FetchClient.d.ts +26 -26
- package/dist/network/FetchClient.js +99 -99
- package/dist/network/XhrClient.d.ts +40 -40
- package/dist/network/XhrClient.js +117 -117
- package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
- package/dist/operatingcontext/BaseOperatingContext.js +44 -44
- package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/StandardOperatingContext.js +43 -43
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.js +4 -4
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
- package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
- package/dist/request/EndSessionPopupRequest.d.ts +18 -18
- package/dist/request/EndSessionRequest.d.ts +15 -15
- package/dist/request/PopupRequest.d.ts +32 -32
- package/dist/request/PopupWindowAttributes.d.ts +15 -15
- package/dist/request/RedirectRequest.d.ts +33 -33
- package/dist/request/SilentRequest.d.ts +30 -30
- package/dist/request/SsoSilentRequest.d.ts +26 -26
- package/dist/telemetry/BrowserPerformanceClient.d.ts +38 -38
- package/dist/telemetry/BrowserPerformanceClient.js +124 -124
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
- package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
- package/dist/utils/BrowserConstants.d.ts +166 -166
- package/dist/utils/BrowserConstants.js +214 -214
- package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
- package/dist/utils/BrowserProtocolUtils.js +34 -34
- package/dist/utils/BrowserStringUtils.d.ts +26 -26
- package/dist/utils/BrowserStringUtils.js +149 -149
- package/dist/utils/BrowserUtils.d.ts +65 -65
- package/dist/utils/BrowserUtils.js +138 -138
- package/dist/utils/MathUtils.d.ts +11 -11
- package/dist/utils/MathUtils.js +21 -21
- package/lib/msal-browser.cjs.js +18383 -0
- package/lib/msal-browser.cjs.js.map +1 -0
- package/lib/msal-browser.js +18389 -0
- package/lib/msal-browser.js.map +1 -0
- package/lib/msal-browser.min.js +74 -0
- package/package.json +97 -95
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-alpha.
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-alpha.2 2023-05-17 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { PerformanceClient } from '@azure/msal-common';
|
|
4
4
|
import { BrowserCrypto } from '../crypto/BrowserCrypto.js';
|
|
5
5
|
import { GuidGenerator } from '../crypto/GuidGenerator.js';
|
|
6
6
|
import { BrowserPerformanceMeasurement } from './BrowserPerformanceMeasurement.js';
|
|
7
7
|
|
|
8
|
-
/*
|
|
9
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
-
* Licensed under the MIT License.
|
|
11
|
-
*/
|
|
12
|
-
class BrowserPerformanceClient extends PerformanceClient {
|
|
13
|
-
constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, cryptoOptions) {
|
|
14
|
-
super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);
|
|
15
|
-
this.browserCrypto = new BrowserCrypto(this.logger, cryptoOptions);
|
|
16
|
-
this.guidGenerator = new GuidGenerator(this.browserCrypto);
|
|
17
|
-
}
|
|
18
|
-
startPerformanceMeasurement(measureName, correlationId) {
|
|
19
|
-
return new BrowserPerformanceMeasurement(measureName, correlationId);
|
|
20
|
-
}
|
|
21
|
-
generateId() {
|
|
22
|
-
return this.guidGenerator.generateGuid();
|
|
23
|
-
}
|
|
24
|
-
getPageVisibility() {
|
|
25
|
-
return document.visibilityState?.toString() || null;
|
|
26
|
-
}
|
|
27
|
-
deleteIncompleteSubMeasurements(inProgressEvent) {
|
|
28
|
-
const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId);
|
|
29
|
-
const isRootEvent = rootEvent && rootEvent.eventId === inProgressEvent.event.eventId;
|
|
30
|
-
const incompleteMeasurements = [];
|
|
31
|
-
if (isRootEvent && rootEvent?.incompleteSubMeasurements) {
|
|
32
|
-
rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => {
|
|
33
|
-
incompleteMeasurements.push({ ...subMeasurement });
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
// Clean up remaining marks for incomplete sub-measurements
|
|
37
|
-
if (incompleteMeasurements.length > 0) {
|
|
38
|
-
BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
supportsBrowserPerformanceNow() {
|
|
42
|
-
return (typeof window !== "undefined" &&
|
|
43
|
-
typeof window.performance !== "undefined" &&
|
|
44
|
-
typeof window.performance.now === "function");
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.
|
|
48
|
-
* Also captures browser page visibilityState.
|
|
49
|
-
*
|
|
50
|
-
* @param {PerformanceEvents} measureName
|
|
51
|
-
* @param {?string} [correlationId]
|
|
52
|
-
* @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}
|
|
53
|
-
*/
|
|
54
|
-
startMeasurement(measureName, correlationId) {
|
|
55
|
-
// Capture page visibilityState and then invoke start/end measurement
|
|
56
|
-
const startPageVisibility = this.getPageVisibility();
|
|
57
|
-
const inProgressEvent = super.startMeasurement(measureName, correlationId);
|
|
58
|
-
return {
|
|
59
|
-
...inProgressEvent,
|
|
60
|
-
endMeasurement: (event) => {
|
|
61
|
-
const res = inProgressEvent.endMeasurement({
|
|
62
|
-
startPageVisibility,
|
|
63
|
-
endPageVisibility: this.getPageVisibility(),
|
|
64
|
-
...event,
|
|
65
|
-
});
|
|
66
|
-
this.deleteIncompleteSubMeasurements(inProgressEvent);
|
|
67
|
-
return res;
|
|
68
|
-
},
|
|
69
|
-
discardMeasurement: () => {
|
|
70
|
-
inProgressEvent.discardMeasurement();
|
|
71
|
-
this.deleteIncompleteSubMeasurements(inProgressEvent);
|
|
72
|
-
inProgressEvent.measurement.flushMeasurement();
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Adds pre-queue time to preQueueTimeByCorrelationId map.
|
|
78
|
-
* @param {PerformanceEvents} eventName
|
|
79
|
-
* @param {?string} correlationId
|
|
80
|
-
* @returns
|
|
81
|
-
*/
|
|
82
|
-
setPreQueueTime(eventName, correlationId) {
|
|
83
|
-
if (!this.supportsBrowserPerformanceNow()) {
|
|
84
|
-
this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`);
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
if (!correlationId) {
|
|
88
|
-
this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`);
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);
|
|
92
|
-
/**
|
|
93
|
-
* Manually complete queue measurement if there is an incomplete pre-queue event.
|
|
94
|
-
* Incomplete pre-queue events are instrumentation bugs that should be fixed.
|
|
95
|
-
*/
|
|
96
|
-
if (preQueueEvent) {
|
|
97
|
-
this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId);
|
|
98
|
-
this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true);
|
|
99
|
-
}
|
|
100
|
-
this.preQueueTimeByCorrelationId.set(correlationId, {
|
|
101
|
-
name: eventName,
|
|
102
|
-
time: window.performance.now(),
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Calculates and adds queue time measurement for given performance event.
|
|
107
|
-
*
|
|
108
|
-
* @param {PerformanceEvents} eventName
|
|
109
|
-
* @param {?string} correlationId
|
|
110
|
-
* @param {?number} queueTime
|
|
111
|
-
* @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements
|
|
112
|
-
* @returns
|
|
113
|
-
*/
|
|
114
|
-
addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {
|
|
115
|
-
if (!this.supportsBrowserPerformanceNow()) {
|
|
116
|
-
this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (!correlationId) {
|
|
120
|
-
this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
const preQueueTime = super.getPreQueueTime(eventName, correlationId);
|
|
124
|
-
if (!preQueueTime) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const currentTime = window.performance.now();
|
|
128
|
-
const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime);
|
|
129
|
-
return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted);
|
|
130
|
-
}
|
|
8
|
+
/*
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
* Licensed under the MIT License.
|
|
11
|
+
*/
|
|
12
|
+
class BrowserPerformanceClient extends PerformanceClient {
|
|
13
|
+
constructor(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry, cryptoOptions) {
|
|
14
|
+
super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);
|
|
15
|
+
this.browserCrypto = new BrowserCrypto(this.logger, cryptoOptions);
|
|
16
|
+
this.guidGenerator = new GuidGenerator(this.browserCrypto);
|
|
17
|
+
}
|
|
18
|
+
startPerformanceMeasurement(measureName, correlationId) {
|
|
19
|
+
return new BrowserPerformanceMeasurement(measureName, correlationId);
|
|
20
|
+
}
|
|
21
|
+
generateId() {
|
|
22
|
+
return this.guidGenerator.generateGuid();
|
|
23
|
+
}
|
|
24
|
+
getPageVisibility() {
|
|
25
|
+
return document.visibilityState?.toString() || null;
|
|
26
|
+
}
|
|
27
|
+
deleteIncompleteSubMeasurements(inProgressEvent) {
|
|
28
|
+
const rootEvent = this.eventsByCorrelationId.get(inProgressEvent.event.correlationId);
|
|
29
|
+
const isRootEvent = rootEvent && rootEvent.eventId === inProgressEvent.event.eventId;
|
|
30
|
+
const incompleteMeasurements = [];
|
|
31
|
+
if (isRootEvent && rootEvent?.incompleteSubMeasurements) {
|
|
32
|
+
rootEvent.incompleteSubMeasurements.forEach((subMeasurement) => {
|
|
33
|
+
incompleteMeasurements.push({ ...subMeasurement });
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Clean up remaining marks for incomplete sub-measurements
|
|
37
|
+
if (incompleteMeasurements.length > 0) {
|
|
38
|
+
BrowserPerformanceMeasurement.flushMeasurements(inProgressEvent.event.correlationId, incompleteMeasurements);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
supportsBrowserPerformanceNow() {
|
|
42
|
+
return (typeof window !== "undefined" &&
|
|
43
|
+
typeof window.performance !== "undefined" &&
|
|
44
|
+
typeof window.performance.now === "function");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.
|
|
48
|
+
* Also captures browser page visibilityState.
|
|
49
|
+
*
|
|
50
|
+
* @param {PerformanceEvents} measureName
|
|
51
|
+
* @param {?string} [correlationId]
|
|
52
|
+
* @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}
|
|
53
|
+
*/
|
|
54
|
+
startMeasurement(measureName, correlationId) {
|
|
55
|
+
// Capture page visibilityState and then invoke start/end measurement
|
|
56
|
+
const startPageVisibility = this.getPageVisibility();
|
|
57
|
+
const inProgressEvent = super.startMeasurement(measureName, correlationId);
|
|
58
|
+
return {
|
|
59
|
+
...inProgressEvent,
|
|
60
|
+
endMeasurement: (event) => {
|
|
61
|
+
const res = inProgressEvent.endMeasurement({
|
|
62
|
+
startPageVisibility,
|
|
63
|
+
endPageVisibility: this.getPageVisibility(),
|
|
64
|
+
...event,
|
|
65
|
+
});
|
|
66
|
+
this.deleteIncompleteSubMeasurements(inProgressEvent);
|
|
67
|
+
return res;
|
|
68
|
+
},
|
|
69
|
+
discardMeasurement: () => {
|
|
70
|
+
inProgressEvent.discardMeasurement();
|
|
71
|
+
this.deleteIncompleteSubMeasurements(inProgressEvent);
|
|
72
|
+
inProgressEvent.measurement.flushMeasurement();
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Adds pre-queue time to preQueueTimeByCorrelationId map.
|
|
78
|
+
* @param {PerformanceEvents} eventName
|
|
79
|
+
* @param {?string} correlationId
|
|
80
|
+
* @returns
|
|
81
|
+
*/
|
|
82
|
+
setPreQueueTime(eventName, correlationId) {
|
|
83
|
+
if (!this.supportsBrowserPerformanceNow()) {
|
|
84
|
+
this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to set telemetry queue time for ${eventName}`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (!correlationId) {
|
|
88
|
+
this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to set telemetry queue time`);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const preQueueEvent = this.preQueueTimeByCorrelationId.get(correlationId);
|
|
92
|
+
/**
|
|
93
|
+
* Manually complete queue measurement if there is an incomplete pre-queue event.
|
|
94
|
+
* Incomplete pre-queue events are instrumentation bugs that should be fixed.
|
|
95
|
+
*/
|
|
96
|
+
if (preQueueEvent) {
|
|
97
|
+
this.logger.trace(`BrowserPerformanceClient: Incomplete pre-queue ${preQueueEvent.name} found`, correlationId);
|
|
98
|
+
this.addQueueMeasurement(preQueueEvent.name, correlationId, undefined, true);
|
|
99
|
+
}
|
|
100
|
+
this.preQueueTimeByCorrelationId.set(correlationId, {
|
|
101
|
+
name: eventName,
|
|
102
|
+
time: window.performance.now(),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Calculates and adds queue time measurement for given performance event.
|
|
107
|
+
*
|
|
108
|
+
* @param {PerformanceEvents} eventName
|
|
109
|
+
* @param {?string} correlationId
|
|
110
|
+
* @param {?number} queueTime
|
|
111
|
+
* @param {?boolean} manuallyCompleted - indicator for manually completed queue measurements
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
addQueueMeasurement(eventName, correlationId, queueTime, manuallyCompleted) {
|
|
115
|
+
if (!this.supportsBrowserPerformanceNow()) {
|
|
116
|
+
this.logger.trace(`BrowserPerformanceClient: window performance API not available, unable to add queue measurement for ${eventName}`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (!correlationId) {
|
|
120
|
+
this.logger.trace(`BrowserPerformanceClient: correlationId for ${eventName} not provided, unable to add queue measurement`);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const preQueueTime = super.getPreQueueTime(eventName, correlationId);
|
|
124
|
+
if (!preQueueTime) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const currentTime = window.performance.now();
|
|
128
|
+
const resQueueTime = queueTime || super.calculateQueuedTime(preQueueTime, currentTime);
|
|
129
|
+
return super.addQueueMeasurement(eventName, correlationId, resQueueTime, manuallyCompleted);
|
|
130
|
+
}
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
export { BrowserPerformanceClient };
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { IPerformanceMeasurement, SubMeasurement } from "@azure/msal-common";
|
|
2
|
-
export declare class BrowserPerformanceMeasurement implements IPerformanceMeasurement {
|
|
3
|
-
private readonly measureName;
|
|
4
|
-
private readonly correlationId;
|
|
5
|
-
private readonly startMark;
|
|
6
|
-
private readonly endMark;
|
|
7
|
-
constructor(name: string, correlationId: string);
|
|
8
|
-
private static makeMeasureName;
|
|
9
|
-
private static makeStartMark;
|
|
10
|
-
private static makeEndMark;
|
|
11
|
-
static supportsBrowserPerformance(): boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Flush browser marks and measurements.
|
|
14
|
-
* @param {string} correlationId
|
|
15
|
-
* @param {SubMeasurement} measurements
|
|
16
|
-
*/
|
|
17
|
-
static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void;
|
|
18
|
-
startMeasurement(): void;
|
|
19
|
-
endMeasurement(): void;
|
|
20
|
-
flushMeasurement(): number | null;
|
|
21
|
-
}
|
|
1
|
+
import { IPerformanceMeasurement, SubMeasurement } from "@azure/msal-common";
|
|
2
|
+
export declare class BrowserPerformanceMeasurement implements IPerformanceMeasurement {
|
|
3
|
+
private readonly measureName;
|
|
4
|
+
private readonly correlationId;
|
|
5
|
+
private readonly startMark;
|
|
6
|
+
private readonly endMark;
|
|
7
|
+
constructor(name: string, correlationId: string);
|
|
8
|
+
private static makeMeasureName;
|
|
9
|
+
private static makeStartMark;
|
|
10
|
+
private static makeEndMark;
|
|
11
|
+
static supportsBrowserPerformance(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Flush browser marks and measurements.
|
|
14
|
+
* @param {string} correlationId
|
|
15
|
+
* @param {SubMeasurement} measurements
|
|
16
|
+
*/
|
|
17
|
+
static flushMeasurements(correlationId: string, measurements: SubMeasurement[]): void;
|
|
18
|
+
startMeasurement(): void;
|
|
19
|
+
endMeasurement(): void;
|
|
20
|
+
flushMeasurement(): number | null;
|
|
21
|
+
}
|
|
22
22
|
//# sourceMappingURL=BrowserPerformanceMeasurement.d.ts.map
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-alpha.
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-alpha.2 2023-05-17 */
|
|
2
2
|
'use strict';
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
-
* Licensed under the MIT License.
|
|
6
|
-
*/
|
|
7
|
-
class BrowserPerformanceMeasurement {
|
|
8
|
-
constructor(name, correlationId) {
|
|
9
|
-
this.correlationId = correlationId;
|
|
10
|
-
this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId);
|
|
11
|
-
this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId);
|
|
12
|
-
this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId);
|
|
13
|
-
}
|
|
14
|
-
static makeMeasureName(name, correlationId) {
|
|
15
|
-
return `msal.measure.${name}.${correlationId}`;
|
|
16
|
-
}
|
|
17
|
-
static makeStartMark(name, correlationId) {
|
|
18
|
-
return `msal.start.${name}.${correlationId}`;
|
|
19
|
-
}
|
|
20
|
-
static makeEndMark(name, correlationId) {
|
|
21
|
-
return `msal.end.${name}.${correlationId}`;
|
|
22
|
-
}
|
|
23
|
-
static supportsBrowserPerformance() {
|
|
24
|
-
return (typeof window !== "undefined" &&
|
|
25
|
-
typeof window.performance !== "undefined" &&
|
|
26
|
-
typeof window.performance.mark === "function" &&
|
|
27
|
-
typeof window.performance.measure === "function" &&
|
|
28
|
-
typeof window.performance.clearMarks === "function" &&
|
|
29
|
-
typeof window.performance.clearMeasures === "function" &&
|
|
30
|
-
typeof window.performance.getEntriesByName === "function");
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Flush browser marks and measurements.
|
|
34
|
-
* @param {string} correlationId
|
|
35
|
-
* @param {SubMeasurement} measurements
|
|
36
|
-
*/
|
|
37
|
-
static flushMeasurements(correlationId, measurements) {
|
|
38
|
-
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
39
|
-
try {
|
|
40
|
-
measurements.forEach((measurement) => {
|
|
41
|
-
const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId);
|
|
42
|
-
const entriesForMeasurement = window.performance.getEntriesByName(measureName, "measure");
|
|
43
|
-
if (entriesForMeasurement.length > 0) {
|
|
44
|
-
window.performance.clearMeasures(measureName);
|
|
45
|
-
window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId));
|
|
46
|
-
window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId));
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
// Silently catch and return null
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
startMeasurement() {
|
|
56
|
-
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
57
|
-
try {
|
|
58
|
-
window.performance.mark(this.startMark);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
// Silently catch
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
endMeasurement() {
|
|
66
|
-
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
67
|
-
try {
|
|
68
|
-
window.performance.mark(this.endMark);
|
|
69
|
-
window.performance.measure(this.measureName, this.startMark, this.endMark);
|
|
70
|
-
}
|
|
71
|
-
catch (e) {
|
|
72
|
-
// Silently catch
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
flushMeasurement() {
|
|
77
|
-
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
78
|
-
try {
|
|
79
|
-
const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, "measure");
|
|
80
|
-
if (entriesForMeasurement.length > 0) {
|
|
81
|
-
const durationMs = entriesForMeasurement[0].duration;
|
|
82
|
-
window.performance.clearMeasures(this.measureName);
|
|
83
|
-
window.performance.clearMarks(this.startMark);
|
|
84
|
-
window.performance.clearMarks(this.endMark);
|
|
85
|
-
return durationMs;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
// Silently catch and return null
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
+
* Licensed under the MIT License.
|
|
6
|
+
*/
|
|
7
|
+
class BrowserPerformanceMeasurement {
|
|
8
|
+
constructor(name, correlationId) {
|
|
9
|
+
this.correlationId = correlationId;
|
|
10
|
+
this.measureName = BrowserPerformanceMeasurement.makeMeasureName(name, correlationId);
|
|
11
|
+
this.startMark = BrowserPerformanceMeasurement.makeStartMark(name, correlationId);
|
|
12
|
+
this.endMark = BrowserPerformanceMeasurement.makeEndMark(name, correlationId);
|
|
13
|
+
}
|
|
14
|
+
static makeMeasureName(name, correlationId) {
|
|
15
|
+
return `msal.measure.${name}.${correlationId}`;
|
|
16
|
+
}
|
|
17
|
+
static makeStartMark(name, correlationId) {
|
|
18
|
+
return `msal.start.${name}.${correlationId}`;
|
|
19
|
+
}
|
|
20
|
+
static makeEndMark(name, correlationId) {
|
|
21
|
+
return `msal.end.${name}.${correlationId}`;
|
|
22
|
+
}
|
|
23
|
+
static supportsBrowserPerformance() {
|
|
24
|
+
return (typeof window !== "undefined" &&
|
|
25
|
+
typeof window.performance !== "undefined" &&
|
|
26
|
+
typeof window.performance.mark === "function" &&
|
|
27
|
+
typeof window.performance.measure === "function" &&
|
|
28
|
+
typeof window.performance.clearMarks === "function" &&
|
|
29
|
+
typeof window.performance.clearMeasures === "function" &&
|
|
30
|
+
typeof window.performance.getEntriesByName === "function");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Flush browser marks and measurements.
|
|
34
|
+
* @param {string} correlationId
|
|
35
|
+
* @param {SubMeasurement} measurements
|
|
36
|
+
*/
|
|
37
|
+
static flushMeasurements(correlationId, measurements) {
|
|
38
|
+
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
39
|
+
try {
|
|
40
|
+
measurements.forEach((measurement) => {
|
|
41
|
+
const measureName = BrowserPerformanceMeasurement.makeMeasureName(measurement.name, correlationId);
|
|
42
|
+
const entriesForMeasurement = window.performance.getEntriesByName(measureName, "measure");
|
|
43
|
+
if (entriesForMeasurement.length > 0) {
|
|
44
|
+
window.performance.clearMeasures(measureName);
|
|
45
|
+
window.performance.clearMarks(BrowserPerformanceMeasurement.makeStartMark(measureName, correlationId));
|
|
46
|
+
window.performance.clearMarks(BrowserPerformanceMeasurement.makeEndMark(measureName, correlationId));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
// Silently catch and return null
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
startMeasurement() {
|
|
56
|
+
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
57
|
+
try {
|
|
58
|
+
window.performance.mark(this.startMark);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
// Silently catch
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
endMeasurement() {
|
|
66
|
+
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
67
|
+
try {
|
|
68
|
+
window.performance.mark(this.endMark);
|
|
69
|
+
window.performance.measure(this.measureName, this.startMark, this.endMark);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
// Silently catch
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
flushMeasurement() {
|
|
77
|
+
if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {
|
|
78
|
+
try {
|
|
79
|
+
const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, "measure");
|
|
80
|
+
if (entriesForMeasurement.length > 0) {
|
|
81
|
+
const durationMs = entriesForMeasurement[0].duration;
|
|
82
|
+
window.performance.clearMeasures(this.measureName);
|
|
83
|
+
window.performance.clearMarks(this.startMark);
|
|
84
|
+
window.performance.clearMarks(this.endMark);
|
|
85
|
+
return durationMs;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
// Silently catch and return null
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export { BrowserPerformanceMeasurement };
|