@azure/msal-browser 3.3.0 → 3.5.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.
- package/dist/app/IPublicClientApplication.mjs +1 -1
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.mjs +3 -4
- package/dist/app/PublicClientApplication.mjs.map +1 -1
- package/dist/app/PublicClientNext.d.ts.map +1 -1
- package/dist/app/PublicClientNext.mjs +4 -6
- package/dist/app/PublicClientNext.mjs.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs +1 -1
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
- package/dist/cache/AsyncMemoryStorage.mjs +1 -1
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.mjs +26 -26
- package/dist/cache/BrowserCacheManager.mjs.map +1 -1
- package/dist/cache/BrowserStorage.mjs +1 -1
- package/dist/cache/CryptoKeyStore.mjs +1 -1
- package/dist/cache/DatabaseStorage.mjs +1 -1
- package/dist/cache/MemoryStorage.mjs +1 -1
- package/dist/cache/TokenCache.d.ts.map +1 -1
- package/dist/cache/TokenCache.mjs +5 -5
- package/dist/cache/TokenCache.mjs.map +1 -1
- package/dist/config/Configuration.mjs +1 -1
- package/dist/controllers/ControllerFactory.d.ts +2 -8
- package/dist/controllers/ControllerFactory.d.ts.map +1 -1
- package/dist/controllers/ControllerFactory.mjs +21 -38
- package/dist/controllers/ControllerFactory.mjs.map +1 -1
- package/dist/controllers/IController.d.ts +1 -2
- package/dist/controllers/IController.d.ts.map +1 -1
- package/dist/controllers/NestedAppAuthController.mjs +1 -1
- package/dist/controllers/StandardController.d.ts +4 -4
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.mjs +50 -51
- package/dist/controllers/StandardController.mjs.map +1 -1
- package/dist/controllers/UnknownOperatingContextController.mjs +1 -1
- package/dist/crypto/BrowserCrypto.mjs +1 -1
- package/dist/crypto/CryptoOps.d.ts +2 -2
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.mjs +4 -3
- package/dist/crypto/CryptoOps.mjs.map +1 -1
- package/dist/crypto/PkceGenerator.mjs +1 -1
- package/dist/crypto/SignedHttpRequest.mjs +1 -1
- package/dist/encode/Base64Decode.mjs +1 -1
- package/dist/encode/Base64Encode.mjs +1 -1
- package/dist/error/BrowserAuthError.mjs +1 -1
- package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
- package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
- package/dist/error/NativeAuthError.mjs +1 -1
- package/dist/error/NativeAuthErrorCodes.mjs +1 -1
- package/dist/error/NestedAppAuthError.mjs +1 -1
- package/dist/event/EventHandler.mjs +1 -1
- package/dist/event/EventMessage.mjs +1 -1
- package/dist/event/EventType.mjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/interaction_client/BaseInteractionClient.d.ts +0 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.mjs +2 -3
- package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.mjs +4 -4
- package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
- package/dist/interaction_client/PopupClient.d.ts +1 -12
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.mjs +28 -111
- package/dist/interaction_client/PopupClient.mjs.map +1 -1
- package/dist/interaction_client/RedirectClient.d.ts +3 -3
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.mjs +59 -50
- package/dist/interaction_client/RedirectClient.mjs.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.mjs +3 -5
- package/dist/interaction_client/SilentAuthCodeClient.mjs.map +1 -1
- package/dist/interaction_client/SilentCacheClient.mjs +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentIframeClient.mjs +9 -23
- package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.mjs +2 -12
- package/dist/interaction_client/SilentRefreshClient.mjs.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts +1 -6
- package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.mjs +2 -24
- package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts +6 -13
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.mjs +30 -61
- package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts +14 -7
- package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
- package/dist/interaction_handler/RedirectHandler.mjs +30 -15
- package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
- package/dist/interaction_handler/SilentHandler.d.ts +2 -2
- package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
- package/dist/interaction_handler/SilentHandler.mjs +13 -7
- package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
- package/dist/naa/BridgeError.mjs +1 -1
- package/dist/naa/BridgeProxy.mjs +1 -1
- package/dist/naa/BridgeStatusCode.mjs +1 -1
- package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
- package/dist/navigation/NavigationClient.mjs +1 -1
- package/dist/network/FetchClient.mjs +1 -1
- package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
- package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs +1 -1
- package/dist/operatingcontext/UnknownOperatingContext.mjs +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.mjs +2 -2
- package/dist/response/ResponseHandler.d.ts +8 -0
- package/dist/response/ResponseHandler.d.ts.map +1 -0
- package/dist/response/ResponseHandler.mjs +46 -0
- package/dist/response/ResponseHandler.mjs.map +1 -0
- package/dist/telemetry/BrowserPerformanceClient.mjs +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
- package/dist/utils/BrowserConstants.mjs +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts +7 -14
- package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
- package/dist/utils/BrowserProtocolUtils.mjs +17 -30
- package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
- package/dist/utils/BrowserUtils.mjs +1 -1
- package/lib/msal-browser.cjs +18434 -61
- package/lib/msal-browser.cjs.map +1 -1
- package/lib/msal-browser.js +3037 -3733
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +68 -66
- package/package.json +2 -2
- package/src/app/PublicClientApplication.ts +4 -3
- package/src/app/PublicClientNext.ts +7 -5
- package/src/cache/BrowserCacheManager.ts +29 -50
- package/src/cache/TokenCache.ts +5 -4
- package/src/controllers/ControllerFactory.ts +30 -49
- package/src/controllers/IController.ts +0 -6
- package/src/controllers/StandardController.ts +70 -85
- package/src/crypto/CryptoOps.ts +5 -3
- package/src/index.ts +1 -0
- package/src/interaction_client/BaseInteractionClient.ts +1 -2
- package/src/interaction_client/NativeInteractionClient.ts +4 -3
- package/src/interaction_client/PopupClient.ts +72 -196
- package/src/interaction_client/RedirectClient.ts +111 -100
- package/src/interaction_client/SilentAuthCodeClient.ts +1 -12
- package/src/interaction_client/SilentIframeClient.ts +17 -44
- package/src/interaction_client/SilentRefreshClient.ts +5 -19
- package/src/interaction_client/StandardInteractionClient.ts +2 -48
- package/src/interaction_handler/InteractionHandler.ts +39 -112
- package/src/interaction_handler/RedirectHandler.ts +52 -30
- package/src/interaction_handler/SilentHandler.ts +12 -5
- package/src/packageMetadata.ts +1 -1
- package/src/response/ResponseHandler.ts +73 -0
- package/src/utils/BrowserProtocolUtils.ts +17 -36
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
2
|
'use strict';
|
|
3
|
-
import { PerformanceEvents,
|
|
3
|
+
import { PerformanceEvents, ServerError, invokeAsync, CcsCredentialType } from '@azure/msal-common';
|
|
4
4
|
import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
|
|
5
|
-
import {
|
|
6
|
-
import { hashEmptyError, userCancelled } from '../error/BrowserAuthErrorCodes.mjs';
|
|
5
|
+
import { userCancelled } from '../error/BrowserAuthErrorCodes.mjs';
|
|
7
6
|
|
|
8
7
|
/*
|
|
9
8
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -24,21 +23,11 @@ class InteractionHandler {
|
|
|
24
23
|
* Function to handle response parameters from hash.
|
|
25
24
|
* @param locationHash
|
|
26
25
|
*/
|
|
27
|
-
async
|
|
28
|
-
this.performanceClient.addQueueMeasurement(PerformanceEvents.
|
|
29
|
-
// Check that location hash isn't empty.
|
|
30
|
-
if (!locationHash) {
|
|
31
|
-
throw createBrowserAuthError(hashEmptyError);
|
|
32
|
-
}
|
|
33
|
-
// Handle code response.
|
|
34
|
-
const stateKey = this.browserStorage.generateStateKey(state);
|
|
35
|
-
const requestState = this.browserStorage.getTemporaryCache(stateKey);
|
|
36
|
-
if (!requestState) {
|
|
37
|
-
throw createClientAuthError(ClientAuthErrorCodes.stateNotFound, "Cached State");
|
|
38
|
-
}
|
|
26
|
+
async handleCodeResponse(response, request) {
|
|
27
|
+
this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponse, request.correlationId);
|
|
39
28
|
let authCodeResponse;
|
|
40
29
|
try {
|
|
41
|
-
authCodeResponse = this.authModule.handleFragmentResponse(
|
|
30
|
+
authCodeResponse = this.authModule.handleFragmentResponse(response, request.state);
|
|
42
31
|
}
|
|
43
32
|
catch (e) {
|
|
44
33
|
if (e instanceof ServerError &&
|
|
@@ -50,7 +39,7 @@ class InteractionHandler {
|
|
|
50
39
|
throw e;
|
|
51
40
|
}
|
|
52
41
|
}
|
|
53
|
-
return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient,
|
|
42
|
+
return invokeAsync(this.handleCodeResponseFromServer.bind(this), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, request.correlationId)(authCodeResponse, request);
|
|
54
43
|
}
|
|
55
44
|
/**
|
|
56
45
|
* Process auth code response from AAD
|
|
@@ -60,70 +49,50 @@ class InteractionHandler {
|
|
|
60
49
|
* @param networkModule
|
|
61
50
|
* @returns
|
|
62
51
|
*/
|
|
63
|
-
async handleCodeResponseFromServer(authCodeResponse,
|
|
64
|
-
this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer,
|
|
52
|
+
async handleCodeResponseFromServer(authCodeResponse, request, validateNonce = true) {
|
|
53
|
+
this.performanceClient.addQueueMeasurement(PerformanceEvents.HandleCodeResponseFromServer, request.correlationId);
|
|
65
54
|
this.logger.trace("InteractionHandler.handleCodeResponseFromServer called");
|
|
66
|
-
// Handle code response.
|
|
67
|
-
const stateKey = this.browserStorage.generateStateKey(state);
|
|
68
|
-
const requestState = this.browserStorage.getTemporaryCache(stateKey);
|
|
69
|
-
if (!requestState) {
|
|
70
|
-
throw createClientAuthError(ClientAuthErrorCodes.stateNotFound, "Cached State");
|
|
71
|
-
}
|
|
72
|
-
// Get cached items
|
|
73
|
-
const nonceKey = this.browserStorage.generateNonceKey(requestState);
|
|
74
|
-
const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);
|
|
75
55
|
// Assign code to request
|
|
76
56
|
this.authCodeRequest.code = authCodeResponse.code;
|
|
77
57
|
// Check for new cloud instance
|
|
78
58
|
if (authCodeResponse.cloud_instance_host_name) {
|
|
79
|
-
await invokeAsync(this.
|
|
59
|
+
await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, request.correlationId)(authCodeResponse.cloud_instance_host_name, request.correlationId);
|
|
80
60
|
}
|
|
81
61
|
// Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)
|
|
82
62
|
if (validateNonce) {
|
|
83
|
-
|
|
63
|
+
// TODO: Assigning "response nonce" to "request nonce" is confusing. Refactor the function doing validation to accept request nonce directly
|
|
64
|
+
authCodeResponse.nonce = request.nonce || undefined;
|
|
84
65
|
}
|
|
85
|
-
authCodeResponse.state =
|
|
66
|
+
authCodeResponse.state = request.state;
|
|
86
67
|
// Add CCS parameters if available
|
|
87
68
|
if (authCodeResponse.client_info) {
|
|
88
69
|
this.authCodeRequest.clientInfo = authCodeResponse.client_info;
|
|
89
70
|
}
|
|
90
71
|
else {
|
|
91
|
-
const
|
|
92
|
-
if (
|
|
93
|
-
this.authCodeRequest.ccsCredential =
|
|
72
|
+
const ccsCred = this.createCcsCredentials(request);
|
|
73
|
+
if (ccsCred) {
|
|
74
|
+
this.authCodeRequest.ccsCredential = ccsCred;
|
|
94
75
|
}
|
|
95
76
|
}
|
|
96
77
|
// Acquire token with retrieved code.
|
|
97
|
-
const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient,
|
|
98
|
-
this.browserStorage.cleanRequestByState(state);
|
|
78
|
+
const tokenResponse = (await invokeAsync(this.authModule.acquireToken.bind(this.authModule), PerformanceEvents.AuthClientAcquireToken, this.logger, this.performanceClient, request.correlationId)(this.authCodeRequest, authCodeResponse));
|
|
99
79
|
return tokenResponse;
|
|
100
80
|
}
|
|
101
81
|
/**
|
|
102
|
-
*
|
|
103
|
-
* @param cloudInstanceHostname
|
|
104
|
-
* @param authority
|
|
105
|
-
* @param networkModule
|
|
82
|
+
* Build ccs creds if available
|
|
106
83
|
*/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (cachedCcsCred) {
|
|
120
|
-
try {
|
|
121
|
-
return JSON.parse(cachedCcsCred);
|
|
122
|
-
}
|
|
123
|
-
catch (e) {
|
|
124
|
-
this.authModule.logger.error("Cache credential could not be parsed");
|
|
125
|
-
this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);
|
|
126
|
-
}
|
|
84
|
+
createCcsCredentials(request) {
|
|
85
|
+
if (request.account) {
|
|
86
|
+
return {
|
|
87
|
+
credential: request.account.homeAccountId,
|
|
88
|
+
type: CcsCredentialType.HOME_ACCOUNT_ID,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else if (request.loginHint) {
|
|
92
|
+
return {
|
|
93
|
+
credential: request.loginHint,
|
|
94
|
+
type: CcsCredentialType.UPN,
|
|
95
|
+
};
|
|
127
96
|
}
|
|
128
97
|
return null;
|
|
129
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionHandler.mjs","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.
|
|
1
|
+
{"version":3,"file":"InteractionHandler.mjs","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":[null],"names":["BrowserAuthErrorCodes.userCancelled"],"mappings":";;;;;;AAKA;AAcA;AAKA;AACA;AAIG;AACH;AACI;AACA,MAAS,kBAAiB,CAAA;AAC1B,IAAA,WAAU,CAAA,cAAiB,EAAA,WAAA,EAAA,eAAA,EAA+B,MAAA,EAAA,iBAAA,EAAA;AAC1D,QAAA,IAAA,CAAS,UAAS,GAAA,cAAO,CAAA;AACzB,QAAA,IAAA,CAAS,cAAC,GAAA,WAAmB,CAAA;AAGzB,QAAA,IAAA,CAAA,eAAA,kBAAuC,CAAA;AAa3C,QAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;;;AAGG;AACG;AAsCN;;;;;;;AAOG,SAAA;AACG,QAAA,OAAA,CAAA,EAAA;AAwDN,YAAA,IAAA,CAAA,YAAA,WAAA;;AAEG;4CAEU,CAAuBA,aACpB,CAAA,CAAA;AAenB,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { AuthorizationCodeClient, CommonAuthorizationCodeRequest,
|
|
1
|
+
import { AuthorizationCodeClient, CommonAuthorizationCodeRequest, Logger, IPerformanceClient, CcsCredential, ServerAuthorizationCodeResponse } from "@azure/msal-common";
|
|
2
2
|
import { BrowserCacheManager } from "../cache/BrowserCacheManager";
|
|
3
|
-
import { InteractionHandler, InteractionParams } from "./InteractionHandler";
|
|
4
3
|
import { INavigationClient } from "../navigation/INavigationClient";
|
|
5
4
|
import { AuthenticationResult } from "../response/AuthenticationResult";
|
|
6
|
-
export type RedirectParams =
|
|
5
|
+
export type RedirectParams = {
|
|
7
6
|
navigationClient: INavigationClient;
|
|
8
7
|
redirectTimeout: number;
|
|
9
8
|
redirectStartPage: string;
|
|
10
9
|
onRedirectNavigate?: (url: string) => void | boolean;
|
|
11
10
|
};
|
|
12
|
-
export declare class RedirectHandler
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
export declare class RedirectHandler {
|
|
12
|
+
authModule: AuthorizationCodeClient;
|
|
13
|
+
browserStorage: BrowserCacheManager;
|
|
14
|
+
authCodeRequest: CommonAuthorizationCodeRequest;
|
|
15
|
+
logger: Logger;
|
|
16
|
+
performanceClient: IPerformanceClient;
|
|
17
|
+
constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient);
|
|
15
18
|
/**
|
|
16
19
|
* Redirects window to given URL.
|
|
17
20
|
* @param urlNavigate
|
|
@@ -21,6 +24,10 @@ export declare class RedirectHandler extends InteractionHandler {
|
|
|
21
24
|
* Handle authorization code response in the window.
|
|
22
25
|
* @param hash
|
|
23
26
|
*/
|
|
24
|
-
|
|
27
|
+
handleCodeResponse(response: ServerAuthorizationCodeResponse, state: string): Promise<AuthenticationResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Looks up ccs creds in the cache
|
|
30
|
+
*/
|
|
31
|
+
protected checkCcsCredentials(): CcsCredential | null;
|
|
25
32
|
}
|
|
26
33
|
//# sourceMappingURL=RedirectHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,
|
|
1
|
+
{"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,EAEN,kBAAkB,EAGlB,aAAa,EAGb,+BAA+B,EAClC,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG;IACzB,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CACxD,CAAC;AAEF,qBAAa,eAAe;IACxB,UAAU,EAAE,uBAAuB,CAAC;IACpC,cAAc,EAAE,mBAAmB,CAAC;IACpC,eAAe,EAAE,8BAA8B,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,kBAAkB,CAAC;gBAGlC,cAAc,EAAE,uBAAuB,EACvC,WAAW,EAAE,mBAAmB,EAChC,eAAe,EAAE,8BAA8B,EAC/C,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,kBAAkB;IASzC;;;OAGG;IACG,mBAAmB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC;IA6EhB;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,+BAA+B,EACzC,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IAgFhC;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAoBxD"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
2
|
'use strict';
|
|
3
|
-
import { createClientAuthError, ClientAuthErrorCodes, ServerError } from '@azure/msal-common';
|
|
3
|
+
import { createClientAuthError, ClientAuthErrorCodes, ServerError, invokeAsync, PerformanceEvents } from '@azure/msal-common';
|
|
4
4
|
import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
|
|
5
5
|
import { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.mjs';
|
|
6
|
-
import {
|
|
7
|
-
import { emptyNavigateUri, hashEmptyError, userCancelled } from '../error/BrowserAuthErrorCodes.mjs';
|
|
6
|
+
import { emptyNavigateUri, userCancelled } from '../error/BrowserAuthErrorCodes.mjs';
|
|
8
7
|
|
|
9
8
|
/*
|
|
10
9
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
11
10
|
* Licensed under the MIT License.
|
|
12
11
|
*/
|
|
13
|
-
class RedirectHandler
|
|
14
|
-
constructor(authCodeModule, storageImpl, authCodeRequest, logger,
|
|
15
|
-
|
|
16
|
-
this.
|
|
12
|
+
class RedirectHandler {
|
|
13
|
+
constructor(authCodeModule, storageImpl, authCodeRequest, logger, performanceClient) {
|
|
14
|
+
this.authModule = authCodeModule;
|
|
15
|
+
this.browserStorage = storageImpl;
|
|
16
|
+
this.authCodeRequest = authCodeRequest;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
this.performanceClient = performanceClient;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Redirects window to given URL.
|
|
@@ -69,12 +71,8 @@ class RedirectHandler extends InteractionHandler {
|
|
|
69
71
|
* Handle authorization code response in the window.
|
|
70
72
|
* @param hash
|
|
71
73
|
*/
|
|
72
|
-
async
|
|
74
|
+
async handleCodeResponse(response, state) {
|
|
73
75
|
this.logger.verbose("RedirectHandler.handleCodeResponse called");
|
|
74
|
-
// Check that location hash isn't empty.
|
|
75
|
-
if (!locationHash) {
|
|
76
|
-
throw createBrowserAuthError(hashEmptyError);
|
|
77
|
-
}
|
|
78
76
|
// Interaction is completed - remove interaction status.
|
|
79
77
|
this.browserStorage.setInteractionInProgress(false);
|
|
80
78
|
// Handle code response.
|
|
@@ -85,7 +83,7 @@ class RedirectHandler extends InteractionHandler {
|
|
|
85
83
|
}
|
|
86
84
|
let authCodeResponse;
|
|
87
85
|
try {
|
|
88
|
-
authCodeResponse = this.authModule.handleFragmentResponse(
|
|
86
|
+
authCodeResponse = this.authModule.handleFragmentResponse(response, requestState);
|
|
89
87
|
}
|
|
90
88
|
catch (e) {
|
|
91
89
|
if (e instanceof ServerError &&
|
|
@@ -104,7 +102,7 @@ class RedirectHandler extends InteractionHandler {
|
|
|
104
102
|
this.authCodeRequest.code = authCodeResponse.code;
|
|
105
103
|
// Check for new cloud instance
|
|
106
104
|
if (authCodeResponse.cloud_instance_host_name) {
|
|
107
|
-
await this.
|
|
105
|
+
await invokeAsync(this.authModule.updateAuthority.bind(this.authModule), PerformanceEvents.UpdateTokenEndpointAuthority, this.logger, this.performanceClient, this.authCodeRequest.correlationId)(authCodeResponse.cloud_instance_host_name, this.authCodeRequest.correlationId);
|
|
108
106
|
}
|
|
109
107
|
authCodeResponse.nonce = cachedNonce || undefined;
|
|
110
108
|
authCodeResponse.state = requestState;
|
|
@@ -123,6 +121,23 @@ class RedirectHandler extends InteractionHandler {
|
|
|
123
121
|
this.browserStorage.cleanRequestByState(state);
|
|
124
122
|
return tokenResponse;
|
|
125
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Looks up ccs creds in the cache
|
|
126
|
+
*/
|
|
127
|
+
checkCcsCredentials() {
|
|
128
|
+
// Look up ccs credential in temp cache
|
|
129
|
+
const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);
|
|
130
|
+
if (cachedCcsCred) {
|
|
131
|
+
try {
|
|
132
|
+
return JSON.parse(cachedCcsCred);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
this.authModule.logger.error("Cache credential could not be parsed");
|
|
136
|
+
this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
126
141
|
}
|
|
127
142
|
|
|
128
143
|
export { RedirectHandler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedirectHandler.mjs","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RedirectHandler.mjs","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAKA;AAkBA;AACA;AAEA;AAKqB,MAAA,gBAAQ;IACzB,WAAkB,CAAA,cAAO,aAAa,EAAA,eAAe,EAAA,MAAA,EAAA,iBAAA,EAAA;QACvD,IAAA,CAAA,UAAA,GAAA,cAAA,CAAA;AAEF,QAAA,IAAA,CAAA,cAA4B,GAAA,WAAA,CAAA;QACd,IAAA,CAAA,iCAA0B,CAAA;QACtB,IAAA,CAAA,MAAA;QACC,IAAA,CAAA,sCAAgC;KACzC;;AAIF;AAaJ;;;AAGG,QAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,4CAAA,CAAA,CAAA;AACG;AAgFN,QAAA,IAAA,UAAA,EAAA;;;AAGG,gBAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,gFAAA,CAAA,CAAA;AACG,gBAAA,IAAA,CAAA,cACQ,CAAA,iBAAA,CAAA,kBACH,CAAA,UACR,EAAA,MAAQ,CAAA,iBAAA,EAAqB,IAAA,CAAA,CAAA;AAgFhC,aAAA;;AAEG,YAAA,IAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,kBAAA,CAAA,cAAA,EAAA,IAAA,CAAA,eAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AACH,YAAA,IAAU,CAAA,cAAA,CAAA,gBAAuB,CAAA,IAAgB,CAAI,eAAA,CAAA,CAAA;AAoBxD,YAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,kDAAA,EAAA,UAAA,CAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Logger, IPerformanceClient } from "@azure/msal-common";
|
|
1
|
+
import { Logger, IPerformanceClient, ServerResponseType } from "@azure/msal-common";
|
|
2
2
|
/**
|
|
3
3
|
* Creates a hidden iframe to given URL using user-requested scopes as an id.
|
|
4
4
|
* @param urlNavigate
|
|
@@ -10,5 +10,5 @@ export declare function initiateAuthRequest(requestUrl: string, performanceClien
|
|
|
10
10
|
* @param iframe
|
|
11
11
|
* @param timeout
|
|
12
12
|
*/
|
|
13
|
-
export declare function monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number, pollIntervalMilliseconds: number, performanceClient: IPerformanceClient, logger: Logger, correlationId: string): Promise<string>;
|
|
13
|
+
export declare function monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number, pollIntervalMilliseconds: number, performanceClient: IPerformanceClient, logger: Logger, correlationId: string, responseType: ServerResponseType): Promise<string>;
|
|
14
14
|
//# sourceMappingURL=SilentHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,MAAM,EACN,kBAAkB,
|
|
1
|
+
{"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,MAAM,EACN,kBAAkB,EAIlB,kBAAkB,EACrB,MAAM,oBAAoB,CAAC;AAO5B;;;;GAIG;AACH,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,EACf,wBAAwB,EAAE,MAAM,EAChC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC,CA+DjB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
2
|
'use strict';
|
|
3
|
-
import { PerformanceEvents, invokeAsync, invoke } from '@azure/msal-common';
|
|
3
|
+
import { PerformanceEvents, invokeAsync, invoke, ServerResponseType } from '@azure/msal-common';
|
|
4
4
|
import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
|
|
5
5
|
import { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.mjs';
|
|
6
6
|
import { emptyNavigateUri, monitorWindowTimeout } from '../error/BrowserAuthErrorCodes.mjs';
|
|
@@ -31,7 +31,7 @@ async function initiateAuthRequest(requestUrl, performanceClient, logger, correl
|
|
|
31
31
|
* @param iframe
|
|
32
32
|
* @param timeout
|
|
33
33
|
*/
|
|
34
|
-
async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId) {
|
|
34
|
+
async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) {
|
|
35
35
|
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId);
|
|
36
36
|
return new Promise((resolve, reject) => {
|
|
37
37
|
if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {
|
|
@@ -60,12 +60,18 @@ async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, p
|
|
|
60
60
|
if (!href || href === "about:blank") {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
let responseString = "";
|
|
64
|
+
if (contentWindow) {
|
|
65
|
+
if (responseType === ServerResponseType.QUERY) {
|
|
66
|
+
responseString = contentWindow.location.search;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
responseString = contentWindow.location.hash;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
66
72
|
window.clearTimeout(timeoutId);
|
|
67
73
|
window.clearInterval(intervalId);
|
|
68
|
-
resolve(
|
|
74
|
+
resolve(responseString);
|
|
69
75
|
}, pollIntervalMilliseconds);
|
|
70
76
|
}).finally(() => {
|
|
71
77
|
invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentHandler.mjs","sources":["../../src/interaction_handler/SilentHandler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAKA;
|
|
1
|
+
{"version":3,"file":"SilentHandler.mjs","sources":["../../src/interaction_handler/SilentHandler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAKA;AAcA;;;AAwCA;;;;AAIG;AACH,eAAA,mBAA0C,CAAA,UAChC,mBACN,EAAA,MAAO,EAAE,aACe,EAAA,iBAAA,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/naa/BridgeError.mjs
CHANGED
package/dist/naa/BridgeProxy.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { TimeUtils, AuthToken, AuthError, InteractionRequiredAuthError, ServerError, ClientAuthError, ClientAuthErrorCodes } from '@azure/msal-common';
|
|
4
4
|
import { isBridgeError } from '../BridgeError.mjs';
|
package/dist/packageMetadata.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
2
|
'use strict';
|
|
3
3
|
/* eslint-disable header/header */
|
|
4
4
|
const name = "@azure/msal-browser";
|
|
5
|
-
const version = "3.
|
|
5
|
+
const version = "3.5.0";
|
|
6
6
|
|
|
7
7
|
export { name, version };
|
|
8
8
|
//# sourceMappingURL=packageMetadata.mjs.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ICrypto, Logger, ServerAuthorizationCodeResponse } from "@azure/msal-common";
|
|
2
|
+
import { InteractionType } from "../utils/BrowserConstants";
|
|
3
|
+
export declare function deserializeResponse(responseString: string, responseLocation: string, logger: Logger): ServerAuthorizationCodeResponse;
|
|
4
|
+
/**
|
|
5
|
+
* Returns the interaction type that the response object belongs to
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateInteractionType(response: ServerAuthorizationCodeResponse, browserCrypto: ICrypto, interactionType: InteractionType): void;
|
|
8
|
+
//# sourceMappingURL=ResponseHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseHandler.d.ts","sourceRoot":"","sources":["../../src/response/ResponseHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,MAAM,EACN,+BAA+B,EAElC,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,wBAAgB,mBAAmB,CAC/B,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,GACf,+BAA+B,CAuBjC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,+BAA+B,EACzC,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,eAAe,GACjC,IAAI,CAkBN"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*! @azure/msal-browser v3.5.0 2023-11-07 */
|
|
2
|
+
'use strict';
|
|
3
|
+
import { UrlUtils } from '@azure/msal-common';
|
|
4
|
+
import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
|
|
5
|
+
import { extractBrowserRequestState } from '../utils/BrowserProtocolUtils.mjs';
|
|
6
|
+
import { hashEmptyError, hashDoesNotContainKnownProperties, noStateInHash, unableToParseState, stateInteractionTypeMismatch } from '../error/BrowserAuthErrorCodes.mjs';
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
* Licensed under the MIT License.
|
|
11
|
+
*/
|
|
12
|
+
function deserializeResponse(responseString, responseLocation, logger) {
|
|
13
|
+
// Deserialize hash fragment response parameters.
|
|
14
|
+
const serverParams = UrlUtils.getDeserializedResponse(responseString);
|
|
15
|
+
if (!serverParams) {
|
|
16
|
+
if (!UrlUtils.stripLeadingHashOrQuery(responseString)) {
|
|
17
|
+
// Hash or Query string is empty
|
|
18
|
+
logger.error(`The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.`);
|
|
19
|
+
throw createBrowserAuthError(hashEmptyError);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
logger.error(`A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.`);
|
|
23
|
+
logger.errorPii(`The ${responseLocation} detected is: ${responseString}`);
|
|
24
|
+
throw createBrowserAuthError(hashDoesNotContainKnownProperties);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return serverParams;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Returns the interaction type that the response object belongs to
|
|
31
|
+
*/
|
|
32
|
+
function validateInteractionType(response, browserCrypto, interactionType) {
|
|
33
|
+
if (!response.state) {
|
|
34
|
+
throw createBrowserAuthError(noStateInHash);
|
|
35
|
+
}
|
|
36
|
+
const platformStateObj = extractBrowserRequestState(browserCrypto, response.state);
|
|
37
|
+
if (!platformStateObj) {
|
|
38
|
+
throw createBrowserAuthError(unableToParseState);
|
|
39
|
+
}
|
|
40
|
+
if (platformStateObj.interactionType !== interactionType) {
|
|
41
|
+
throw createBrowserAuthError(stateInteractionTypeMismatch);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { deserializeResponse, validateInteractionType };
|
|
46
|
+
//# sourceMappingURL=ResponseHandler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponseHandler.mjs","sources":["../../src/response/ResponseHandler.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAKA;AAWA;AAEA;AA6BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { InteractionType } from "./BrowserConstants";
|
|
2
|
-
import { ICrypto
|
|
2
|
+
import { ICrypto } from "@azure/msal-common";
|
|
3
3
|
export type BrowserStateObject = {
|
|
4
4
|
interactionType: InteractionType;
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null;
|
|
13
|
-
/**
|
|
14
|
-
* Parses properties of server response from url hash
|
|
15
|
-
* @param locationHash Hash from url
|
|
16
|
-
*/
|
|
17
|
-
static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse;
|
|
18
|
-
}
|
|
6
|
+
/**
|
|
7
|
+
* Extracts the BrowserStateObject from the state string.
|
|
8
|
+
* @param browserCrypto
|
|
9
|
+
* @param state
|
|
10
|
+
*/
|
|
11
|
+
export declare function extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null;
|
|
19
12
|
//# sourceMappingURL=BrowserProtocolUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserProtocolUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BrowserProtocolUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACH,OAAO,
|
|
1
|
+
{"version":3,"file":"BrowserProtocolUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BrowserProtocolUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACH,OAAO,EAKV,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG;IAC7B,eAAe,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACtC,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,GACd,kBAAkB,GAAG,IAAI,CAY3B"}
|