@azure/msal-browser 3.5.0 → 3.5.1-beta.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.d.ts +51 -51
- package/dist/app/IPublicClientApplication.mjs +102 -102
- package/dist/app/PublicClientApplication.d.ts +268 -268
- package/dist/app/PublicClientApplication.mjs +333 -333
- package/dist/app/PublicClientNext.d.ts +273 -273
- package/dist/app/PublicClientNext.mjs +351 -351
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
- package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -44
- package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
- package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
- package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
- package/dist/cache/AsyncMemoryStorage.mjs +132 -132
- package/dist/cache/BrowserCacheManager.d.ts +383 -383
- package/dist/cache/BrowserCacheManager.mjs +1262 -1262
- package/dist/cache/BrowserStorage.d.ts +11 -11
- package/dist/cache/BrowserStorage.mjs +32 -32
- package/dist/cache/CryptoKeyStore.d.ts +18 -18
- package/dist/cache/CryptoKeyStore.mjs +40 -40
- package/dist/cache/DatabaseStorage.d.ts +56 -56
- package/dist/cache/DatabaseStorage.mjs +190 -190
- package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
- package/dist/cache/ITokenCache.d.ts +11 -11
- package/dist/cache/IWindowStorage.d.ts +27 -27
- package/dist/cache/MemoryStorage.d.ts +11 -11
- package/dist/cache/MemoryStorage.mjs +31 -31
- package/dist/cache/TokenCache.d.ts +77 -77
- package/dist/cache/TokenCache.mjs +224 -224
- package/dist/config/Configuration.d.ts +206 -206
- package/dist/config/Configuration.mjs +128 -128
- package/dist/controllers/ControllerFactory.d.ts +4 -4
- package/dist/controllers/ControllerFactory.mjs +29 -29
- package/dist/controllers/IController.d.ts +61 -61
- package/dist/controllers/NestedAppAuthController.d.ts +95 -95
- package/dist/controllers/NestedAppAuthController.d.ts.map +1 -1
- package/dist/controllers/NestedAppAuthController.mjs +335 -333
- package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
- package/dist/controllers/StandardController.d.ts +407 -407
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.mjs +1293 -1291
- package/dist/controllers/StandardController.mjs.map +1 -1
- package/dist/controllers/UnknownOperatingContextController.d.ts +87 -87
- package/dist/controllers/UnknownOperatingContextController.mjs +264 -264
- package/dist/crypto/BrowserCrypto.d.ts +44 -44
- package/dist/crypto/BrowserCrypto.mjs +93 -93
- package/dist/crypto/CryptoOps.d.ts +63 -63
- package/dist/crypto/CryptoOps.mjs +145 -145
- package/dist/crypto/PkceGenerator.d.ts +8 -8
- package/dist/crypto/PkceGenerator.mjs +54 -54
- package/dist/crypto/SignedHttpRequest.d.ts +30 -30
- package/dist/crypto/SignedHttpRequest.mjs +39 -39
- package/dist/encode/Base64Decode.d.ts +9 -9
- package/dist/encode/Base64Decode.mjs +36 -36
- package/dist/encode/Base64Encode.d.ts +19 -19
- package/dist/encode/Base64Encode.mjs +43 -43
- package/dist/error/BrowserAuthError.d.ts +250 -250
- package/dist/error/BrowserAuthError.mjs +258 -258
- package/dist/error/BrowserAuthErrorCodes.d.ts +45 -45
- package/dist/error/BrowserAuthErrorCodes.mjs +49 -49
- package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
- package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
- package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
- package/dist/error/NativeAuthError.d.ts +29 -29
- package/dist/error/NativeAuthError.mjs +60 -60
- package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
- package/dist/error/NativeAuthErrorCodes.mjs +6 -6
- package/dist/error/NestedAppAuthError.d.ts +14 -14
- package/dist/error/NestedAppAuthError.mjs +23 -23
- package/dist/event/EventHandler.d.ts +41 -41
- package/dist/event/EventHandler.mjs +119 -119
- package/dist/event/EventMessage.d.ts +25 -25
- package/dist/event/EventMessage.mjs +68 -68
- package/dist/event/EventType.d.ts +28 -28
- package/dist/event/EventType.mjs +31 -31
- package/dist/index.d.ts +39 -39
- package/dist/index.mjs +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +54 -54
- package/dist/interaction_client/BaseInteractionClient.mjs +152 -152
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts +140 -140
- package/dist/interaction_client/NativeInteractionClient.mjs +548 -548
- package/dist/interaction_client/PopupClient.d.ts +105 -105
- package/dist/interaction_client/PopupClient.mjs +432 -432
- package/dist/interaction_client/RedirectClient.d.ts +49 -49
- package/dist/interaction_client/RedirectClient.mjs +311 -311
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
- package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
- package/dist/interaction_client/SilentCacheClient.d.ts +24 -24
- package/dist/interaction_client/SilentCacheClient.mjs +61 -61
- package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
- package/dist/interaction_client/SilentIframeClient.mjs +96 -96
- package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
- package/dist/interaction_client/SilentRefreshClient.mjs +43 -43
- package/dist/interaction_client/StandardInteractionClient.d.ts +54 -54
- package/dist/interaction_client/StandardInteractionClient.mjs +222 -222
- package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
- package/dist/interaction_handler/InteractionHandler.mjs +93 -93
- package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
- package/dist/interaction_handler/RedirectHandler.mjs +134 -134
- package/dist/interaction_handler/SilentHandler.d.ts +13 -13
- package/dist/interaction_handler/SilentHandler.mjs +133 -133
- package/dist/naa/AccountInfo.d.ts +11 -12
- package/dist/naa/AccountInfo.d.ts.map +1 -1
- package/dist/naa/AccountRequests.d.ts +9 -9
- package/dist/naa/AuthBridge.d.ts +5 -5
- package/dist/naa/BridgeCapabilities.d.ts +3 -3
- package/dist/naa/BridgeError.d.ts +9 -9
- package/dist/naa/BridgeError.d.ts.map +1 -1
- package/dist/naa/BridgeError.mjs +7 -7
- package/dist/naa/BridgeError.mjs.map +1 -1
- package/dist/naa/BridgeProxy.d.ts +72 -71
- package/dist/naa/BridgeProxy.d.ts.map +1 -1
- package/dist/naa/BridgeProxy.mjs +152 -149
- package/dist/naa/BridgeProxy.mjs.map +1 -1
- package/dist/naa/BridgeRequest.d.ts +6 -6
- package/dist/naa/BridgeRequestEnvelope.d.ts +13 -13
- package/dist/naa/BridgeResponseEnvelope.d.ts +10 -10
- package/dist/naa/BridgeStatusCode.d.ts +10 -10
- package/dist/naa/BridgeStatusCode.mjs +15 -15
- package/dist/naa/IBridgeProxy.d.ts +12 -10
- package/dist/naa/IBridgeProxy.d.ts.map +1 -1
- package/dist/naa/InitializeBridgeResponse.d.ts +6 -6
- package/dist/naa/InitializeBridgeResponse.d.ts.map +1 -1
- package/dist/naa/TokenRequest.d.ts +19 -21
- package/dist/naa/TokenRequest.d.ts.map +1 -1
- package/dist/naa/TokenResponse.d.ts +15 -16
- package/dist/naa/TokenResponse.d.ts.map +1 -1
- package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +23 -25
- package/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +1 -1
- package/dist/naa/mapping/NestedAppAuthAdapter.mjs +142 -170
- package/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +1 -1
- package/dist/navigation/INavigationClient.d.ts +16 -16
- package/dist/navigation/NavigationClient.d.ts +22 -22
- package/dist/navigation/NavigationClient.mjs +40 -40
- package/dist/navigation/NavigationOptions.d.ts +12 -12
- package/dist/network/FetchClient.d.ts +26 -26
- package/dist/network/FetchClient.mjs +99 -99
- package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
- package/dist/operatingcontext/BaseOperatingContext.mjs +44 -44
- package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +32 -32
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs +85 -82
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
- package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.mjs +3 -3
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
- package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
- package/dist/request/ClearCacheRequest.d.ts +10 -10
- package/dist/request/EndSessionPopupRequest.d.ts +18 -18
- package/dist/request/EndSessionRequest.d.ts +15 -15
- package/dist/request/PopupRequest.d.ts +34 -34
- package/dist/request/PopupWindowAttributes.d.ts +15 -15
- package/dist/request/RedirectRequest.d.ts +35 -35
- package/dist/request/SilentRequest.d.ts +32 -32
- package/dist/request/SsoSilentRequest.d.ts +29 -29
- package/dist/response/AuthenticationResult.d.ts +4 -4
- package/dist/response/ResponseHandler.d.ts +7 -7
- package/dist/response/ResponseHandler.mjs +36 -36
- package/dist/telemetry/BrowserPerformanceClient.d.ts +36 -36
- package/dist/telemetry/BrowserPerformanceClient.mjs +125 -125
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
- package/dist/utils/BrowserConstants.d.ts +176 -176
- package/dist/utils/BrowserConstants.mjs +204 -204
- package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
- package/dist/utils/BrowserProtocolUtils.mjs +21 -21
- package/dist/utils/BrowserUtils.d.ts +56 -56
- package/dist/utils/BrowserUtils.mjs +125 -125
- package/lib/msal-browser.cjs +17920 -17926
- package/lib/msal-browser.cjs.map +1 -1
- package/lib/msal-browser.js +17920 -17926
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +59 -59
- package/package.json +102 -102
- package/src/controllers/NestedAppAuthController.ts +8 -3
- package/src/controllers/StandardController.ts +3 -1
- package/src/naa/AccountInfo.ts +3 -4
- package/src/naa/BridgeError.ts +4 -4
- package/src/naa/BridgeProxy.ts +6 -2
- package/src/naa/IBridgeProxy.ts +2 -0
- package/src/naa/InitializeBridgeResponse.ts +1 -1
- package/src/naa/TokenRequest.ts +0 -2
- package/src/naa/TokenResponse.ts +1 -2
- package/src/naa/mapping/NestedAppAuthAdapter.ts +72 -80
- package/src/operatingcontext/TeamsAppOperatingContext.ts +4 -1
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.5.0 2023-11-
|
|
1
|
+
/*! @azure/msal-browser v3.5.1-beta.0 2023-11-14 */
|
|
2
2
|
'use strict';
|
|
3
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';
|
|
7
7
|
|
|
8
|
-
/*
|
|
9
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
-
* Licensed under the MIT License.
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Creates a hidden iframe to given URL using user-requested scopes as an id.
|
|
14
|
-
* @param urlNavigate
|
|
15
|
-
* @param userRequestScopes
|
|
16
|
-
*/
|
|
17
|
-
async function initiateAuthRequest(requestUrl, performanceClient, logger, correlationId, navigateFrameWait) {
|
|
18
|
-
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, correlationId);
|
|
19
|
-
if (!requestUrl) {
|
|
20
|
-
// Throw error if request URL is empty.
|
|
21
|
-
logger.info("Navigate url is empty");
|
|
22
|
-
throw createBrowserAuthError(emptyNavigateUri);
|
|
23
|
-
}
|
|
24
|
-
if (navigateFrameWait) {
|
|
25
|
-
return await invokeAsync(loadFrame, PerformanceEvents.SilentHandlerLoadFrame, logger, performanceClient, correlationId)(requestUrl, navigateFrameWait, performanceClient, correlationId);
|
|
26
|
-
}
|
|
27
|
-
return invoke(loadFrameSync, PerformanceEvents.SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.
|
|
31
|
-
* @param iframe
|
|
32
|
-
* @param timeout
|
|
33
|
-
*/
|
|
34
|
-
async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) {
|
|
35
|
-
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId);
|
|
36
|
-
return new Promise((resolve, reject) => {
|
|
37
|
-
if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {
|
|
38
|
-
logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);
|
|
39
|
-
}
|
|
40
|
-
/*
|
|
41
|
-
* Polling for iframes can be purely timing based,
|
|
42
|
-
* since we don't need to account for interaction.
|
|
43
|
-
*/
|
|
44
|
-
const timeoutId = window.setTimeout(() => {
|
|
45
|
-
window.clearInterval(intervalId);
|
|
46
|
-
reject(createBrowserAuthError(monitorWindowTimeout));
|
|
47
|
-
}, timeout);
|
|
48
|
-
const intervalId = window.setInterval(() => {
|
|
49
|
-
let href = "";
|
|
50
|
-
const contentWindow = iframe.contentWindow;
|
|
51
|
-
try {
|
|
52
|
-
/*
|
|
53
|
-
* Will throw if cross origin,
|
|
54
|
-
* which should be caught and ignored
|
|
55
|
-
* since we need the interval to keep running while on STS UI.
|
|
56
|
-
*/
|
|
57
|
-
href = contentWindow ? contentWindow.location.href : "";
|
|
58
|
-
}
|
|
59
|
-
catch (e) { }
|
|
60
|
-
if (!href || href === "about:blank") {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
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
|
-
}
|
|
72
|
-
window.clearTimeout(timeoutId);
|
|
73
|
-
window.clearInterval(intervalId);
|
|
74
|
-
resolve(responseString);
|
|
75
|
-
}, pollIntervalMilliseconds);
|
|
76
|
-
}).finally(() => {
|
|
77
|
-
invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* @hidden
|
|
82
|
-
* Loads iframe with authorization endpoint URL
|
|
83
|
-
* @ignore
|
|
84
|
-
* @deprecated
|
|
85
|
-
*/
|
|
86
|
-
function loadFrame(urlNavigate, navigateFrameWait, performanceClient, correlationId) {
|
|
87
|
-
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, correlationId);
|
|
88
|
-
/*
|
|
89
|
-
* This trick overcomes iframe navigation in IE
|
|
90
|
-
* IE does not load the page consistently in iframe
|
|
91
|
-
*/
|
|
92
|
-
return new Promise((resolve, reject) => {
|
|
93
|
-
const frameHandle = createHiddenIframe();
|
|
94
|
-
window.setTimeout(() => {
|
|
95
|
-
if (!frameHandle) {
|
|
96
|
-
reject("Unable to load iframe");
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
frameHandle.src = urlNavigate;
|
|
100
|
-
resolve(frameHandle);
|
|
101
|
-
}, navigateFrameWait);
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* @hidden
|
|
106
|
-
* Loads the iframe synchronously when the navigateTimeFrame is set to `0`
|
|
107
|
-
* @param urlNavigate
|
|
108
|
-
* @param frameName
|
|
109
|
-
* @param logger
|
|
110
|
-
*/
|
|
111
|
-
function loadFrameSync(urlNavigate) {
|
|
112
|
-
const frameHandle = createHiddenIframe();
|
|
113
|
-
frameHandle.src = urlNavigate;
|
|
114
|
-
return frameHandle;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @hidden
|
|
118
|
-
* Creates a new hidden iframe or gets an existing one for silent token renewal.
|
|
119
|
-
* @ignore
|
|
120
|
-
*/
|
|
121
|
-
function createHiddenIframe() {
|
|
122
|
-
const authFrame = document.createElement("iframe");
|
|
123
|
-
authFrame.style.visibility = "hidden";
|
|
124
|
-
authFrame.style.position = "absolute";
|
|
125
|
-
authFrame.style.width = authFrame.style.height = "0";
|
|
126
|
-
authFrame.style.border = "0";
|
|
127
|
-
authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms");
|
|
128
|
-
document.getElementsByTagName("body")[0].appendChild(authFrame);
|
|
129
|
-
return authFrame;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @hidden
|
|
133
|
-
* Removes a hidden iframe from the page.
|
|
134
|
-
* @ignore
|
|
135
|
-
*/
|
|
136
|
-
function removeHiddenIframe(iframe) {
|
|
137
|
-
if (document.body === iframe.parentNode) {
|
|
138
|
-
document.body.removeChild(iframe);
|
|
139
|
-
}
|
|
8
|
+
/*
|
|
9
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
10
|
+
* Licensed under the MIT License.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Creates a hidden iframe to given URL using user-requested scopes as an id.
|
|
14
|
+
* @param urlNavigate
|
|
15
|
+
* @param userRequestScopes
|
|
16
|
+
*/
|
|
17
|
+
async function initiateAuthRequest(requestUrl, performanceClient, logger, correlationId, navigateFrameWait) {
|
|
18
|
+
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerInitiateAuthRequest, correlationId);
|
|
19
|
+
if (!requestUrl) {
|
|
20
|
+
// Throw error if request URL is empty.
|
|
21
|
+
logger.info("Navigate url is empty");
|
|
22
|
+
throw createBrowserAuthError(emptyNavigateUri);
|
|
23
|
+
}
|
|
24
|
+
if (navigateFrameWait) {
|
|
25
|
+
return await invokeAsync(loadFrame, PerformanceEvents.SilentHandlerLoadFrame, logger, performanceClient, correlationId)(requestUrl, navigateFrameWait, performanceClient, correlationId);
|
|
26
|
+
}
|
|
27
|
+
return invoke(loadFrameSync, PerformanceEvents.SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.
|
|
31
|
+
* @param iframe
|
|
32
|
+
* @param timeout
|
|
33
|
+
*/
|
|
34
|
+
async function monitorIframeForHash(iframe, timeout, pollIntervalMilliseconds, performanceClient, logger, correlationId, responseType) {
|
|
35
|
+
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerMonitorIframeForHash, correlationId);
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {
|
|
38
|
+
logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);
|
|
39
|
+
}
|
|
40
|
+
/*
|
|
41
|
+
* Polling for iframes can be purely timing based,
|
|
42
|
+
* since we don't need to account for interaction.
|
|
43
|
+
*/
|
|
44
|
+
const timeoutId = window.setTimeout(() => {
|
|
45
|
+
window.clearInterval(intervalId);
|
|
46
|
+
reject(createBrowserAuthError(monitorWindowTimeout));
|
|
47
|
+
}, timeout);
|
|
48
|
+
const intervalId = window.setInterval(() => {
|
|
49
|
+
let href = "";
|
|
50
|
+
const contentWindow = iframe.contentWindow;
|
|
51
|
+
try {
|
|
52
|
+
/*
|
|
53
|
+
* Will throw if cross origin,
|
|
54
|
+
* which should be caught and ignored
|
|
55
|
+
* since we need the interval to keep running while on STS UI.
|
|
56
|
+
*/
|
|
57
|
+
href = contentWindow ? contentWindow.location.href : "";
|
|
58
|
+
}
|
|
59
|
+
catch (e) { }
|
|
60
|
+
if (!href || href === "about:blank") {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
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
|
+
}
|
|
72
|
+
window.clearTimeout(timeoutId);
|
|
73
|
+
window.clearInterval(intervalId);
|
|
74
|
+
resolve(responseString);
|
|
75
|
+
}, pollIntervalMilliseconds);
|
|
76
|
+
}).finally(() => {
|
|
77
|
+
invoke(removeHiddenIframe, PerformanceEvents.RemoveHiddenIframe, logger, performanceClient, correlationId)(iframe);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @hidden
|
|
82
|
+
* Loads iframe with authorization endpoint URL
|
|
83
|
+
* @ignore
|
|
84
|
+
* @deprecated
|
|
85
|
+
*/
|
|
86
|
+
function loadFrame(urlNavigate, navigateFrameWait, performanceClient, correlationId) {
|
|
87
|
+
performanceClient.addQueueMeasurement(PerformanceEvents.SilentHandlerLoadFrame, correlationId);
|
|
88
|
+
/*
|
|
89
|
+
* This trick overcomes iframe navigation in IE
|
|
90
|
+
* IE does not load the page consistently in iframe
|
|
91
|
+
*/
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
const frameHandle = createHiddenIframe();
|
|
94
|
+
window.setTimeout(() => {
|
|
95
|
+
if (!frameHandle) {
|
|
96
|
+
reject("Unable to load iframe");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
frameHandle.src = urlNavigate;
|
|
100
|
+
resolve(frameHandle);
|
|
101
|
+
}, navigateFrameWait);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @hidden
|
|
106
|
+
* Loads the iframe synchronously when the navigateTimeFrame is set to `0`
|
|
107
|
+
* @param urlNavigate
|
|
108
|
+
* @param frameName
|
|
109
|
+
* @param logger
|
|
110
|
+
*/
|
|
111
|
+
function loadFrameSync(urlNavigate) {
|
|
112
|
+
const frameHandle = createHiddenIframe();
|
|
113
|
+
frameHandle.src = urlNavigate;
|
|
114
|
+
return frameHandle;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @hidden
|
|
118
|
+
* Creates a new hidden iframe or gets an existing one for silent token renewal.
|
|
119
|
+
* @ignore
|
|
120
|
+
*/
|
|
121
|
+
function createHiddenIframe() {
|
|
122
|
+
const authFrame = document.createElement("iframe");
|
|
123
|
+
authFrame.style.visibility = "hidden";
|
|
124
|
+
authFrame.style.position = "absolute";
|
|
125
|
+
authFrame.style.width = authFrame.style.height = "0";
|
|
126
|
+
authFrame.style.border = "0";
|
|
127
|
+
authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms");
|
|
128
|
+
document.getElementsByTagName("body")[0].appendChild(authFrame);
|
|
129
|
+
return authFrame;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @hidden
|
|
133
|
+
* Removes a hidden iframe from the page.
|
|
134
|
+
* @ignore
|
|
135
|
+
*/
|
|
136
|
+
function removeHiddenIframe(iframe) {
|
|
137
|
+
if (document.body === iframe.parentNode) {
|
|
138
|
+
document.body.removeChild(iframe);
|
|
139
|
+
}
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
export { initiateAuthRequest, monitorIframeForHash };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
export type AccountInfo = {
|
|
2
|
-
homeAccountId
|
|
3
|
-
environment: string;
|
|
4
|
-
tenantId
|
|
5
|
-
username: string;
|
|
6
|
-
localAccountId
|
|
7
|
-
name?: string;
|
|
8
|
-
idToken?: string;
|
|
9
|
-
platformBrokerId?: string;
|
|
10
|
-
idTokenClaims?: object;
|
|
11
|
-
|
|
12
|
-
};
|
|
1
|
+
export type AccountInfo = {
|
|
2
|
+
homeAccountId?: string;
|
|
3
|
+
environment: string;
|
|
4
|
+
tenantId?: string;
|
|
5
|
+
username: string;
|
|
6
|
+
localAccountId?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
idToken?: string;
|
|
9
|
+
platformBrokerId?: string;
|
|
10
|
+
idTokenClaims?: object;
|
|
11
|
+
};
|
|
13
12
|
//# sourceMappingURL=AccountInfo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../src/naa/AccountInfo.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AccountInfo.d.ts","sourceRoot":"","sources":["../../src/naa/AccountInfo.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,WAAW,GAAG;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export type AccountByHomeIdRequest = {
|
|
2
|
-
homeAccountId: string;
|
|
3
|
-
};
|
|
4
|
-
export type AccountByLocalIdRequest = {
|
|
5
|
-
localAccountId: string;
|
|
6
|
-
};
|
|
7
|
-
export type AccountByUsernameRequest = {
|
|
8
|
-
username: string;
|
|
9
|
-
};
|
|
1
|
+
export type AccountByHomeIdRequest = {
|
|
2
|
+
homeAccountId: string;
|
|
3
|
+
};
|
|
4
|
+
export type AccountByLocalIdRequest = {
|
|
5
|
+
localAccountId: string;
|
|
6
|
+
};
|
|
7
|
+
export type AccountByUsernameRequest = {
|
|
8
|
+
username: string;
|
|
9
|
+
};
|
|
10
10
|
//# sourceMappingURL=AccountRequests.d.ts.map
|
package/dist/naa/AuthBridge.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export interface AuthBridge {
|
|
2
|
-
addEventListener: (eventName: string, callback: (response: string) => void) => void;
|
|
3
|
-
postMessage: (message: string) => void;
|
|
4
|
-
removeEventListener: (eventName: string, callback: (response: string) => void) => void;
|
|
5
|
-
}
|
|
1
|
+
export interface AuthBridge {
|
|
2
|
+
addEventListener: (eventName: string, callback: (response: string) => void) => void;
|
|
3
|
+
postMessage: (message: string) => void;
|
|
4
|
+
removeEventListener: (eventName: string, callback: (response: string) => void) => void;
|
|
5
|
+
}
|
|
6
6
|
//# sourceMappingURL=AuthBridge.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface BridgeCapabilities {
|
|
2
|
-
queryAccount: boolean;
|
|
3
|
-
}
|
|
1
|
+
export interface BridgeCapabilities {
|
|
2
|
+
queryAccount: boolean;
|
|
3
|
+
}
|
|
4
4
|
//# sourceMappingURL=BridgeCapabilities.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { BridgeStatusCode } from "./BridgeStatusCode";
|
|
2
|
-
export type BridgeError = {
|
|
3
|
-
status: BridgeStatusCode;
|
|
4
|
-
code
|
|
5
|
-
subError
|
|
6
|
-
description
|
|
7
|
-
properties
|
|
8
|
-
};
|
|
9
|
-
export declare function isBridgeError(error: unknown): error is BridgeError;
|
|
1
|
+
import { BridgeStatusCode } from "./BridgeStatusCode";
|
|
2
|
+
export type BridgeError = {
|
|
3
|
+
status: BridgeStatusCode;
|
|
4
|
+
code?: string;
|
|
5
|
+
subError?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
properties?: object;
|
|
8
|
+
};
|
|
9
|
+
export declare function isBridgeError(error: unknown): error is BridgeError;
|
|
10
10
|
//# sourceMappingURL=BridgeError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeError.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BridgeError.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeError.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE"}
|
package/dist/naa/BridgeError.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.5.0 2023-11-
|
|
1
|
+
/*! @azure/msal-browser v3.5.1-beta.0 2023-11-14 */
|
|
2
2
|
'use strict';
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
-
* Licensed under the MIT License.
|
|
6
|
-
*/
|
|
7
|
-
function isBridgeError(error) {
|
|
8
|
-
return error.status !== undefined;
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
+
* Licensed under the MIT License.
|
|
6
|
+
*/
|
|
7
|
+
function isBridgeError(error) {
|
|
8
|
+
return error.status !== undefined;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export { isBridgeError };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeError.mjs","sources":["../../src/naa/BridgeError.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;AAEA;;;AAGY,
|
|
1
|
+
{"version":3,"file":"BridgeError.mjs","sources":["../../src/naa/BridgeError.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;AAEA;;;AAGY,SAAG,aAAO,CAAA,KAAA,EAAA;IAClB,OAAW,KAAC,CAAE,MAAA,KAAO,SAAA,CAAA;;;;;"}
|
|
@@ -1,72 +1,73 @@
|
|
|
1
|
-
import { AccountInfo } from "./AccountInfo";
|
|
2
|
-
import { AccountByHomeIdRequest, AccountByLocalIdRequest, AccountByUsernameRequest } from "./AccountRequests";
|
|
3
|
-
import { AuthBridge } from "./AuthBridge";
|
|
4
|
-
import { BridgeCapabilities } from "./BridgeCapabilities";
|
|
5
|
-
import { IBridgeProxy } from "./IBridgeProxy";
|
|
6
|
-
import { InitializeBridgeResponse } from "./InitializeBridgeResponse";
|
|
7
|
-
import { TokenRequest } from "./TokenRequest";
|
|
8
|
-
import { TokenResponse } from "./TokenResponse";
|
|
9
|
-
declare global {
|
|
10
|
-
interface Window {
|
|
11
|
-
nestedAppAuthBridge: AuthBridge;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* BridgeProxy
|
|
16
|
-
* Provides a proxy for accessing a bridge to a host app and/or
|
|
17
|
-
* platform broker
|
|
18
|
-
*/
|
|
19
|
-
export declare class BridgeProxy implements IBridgeProxy {
|
|
20
|
-
static bridgeRequests: any[];
|
|
21
|
-
static crypto: Crypto;
|
|
22
|
-
sdkName: string;
|
|
23
|
-
sdkVersion: string;
|
|
24
|
-
capabilities
|
|
25
|
-
/**
|
|
26
|
-
* initializeNestedAppAuthBridge - Initializes the bridge to the host app
|
|
27
|
-
* @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error
|
|
28
|
-
* @remarks This method will be called by the create factory method
|
|
29
|
-
* @remarks If the bridge is not available, this method will throw an error
|
|
30
|
-
*/
|
|
31
|
-
protected static initializeNestedAppAuthBridge(): Promise<InitializeBridgeResponse>;
|
|
32
|
-
static getRandomId(): string;
|
|
33
|
-
/**
|
|
34
|
-
* getTokenInteractive - Attempts to get a token interactively from the bridge
|
|
35
|
-
* @param request A token request
|
|
36
|
-
* @returns a promise that resolves to a token response or rejects with a BridgeError
|
|
37
|
-
*/
|
|
38
|
-
getTokenInteractive(request: TokenRequest): Promise<TokenResponse>;
|
|
39
|
-
/**
|
|
40
|
-
* getTokenSilent Attempts to get a token silently from the bridge
|
|
41
|
-
* @param request A token request
|
|
42
|
-
* @returns a promise that resolves to a token response or rejects with a BridgeError
|
|
43
|
-
*/
|
|
44
|
-
getTokenSilent(request: TokenRequest): Promise<TokenResponse>;
|
|
45
|
-
/**
|
|
46
|
-
* getAccountInfo - Gets account information from the bridge
|
|
47
|
-
*
|
|
48
|
-
* @param request A request for account information
|
|
49
|
-
*/
|
|
50
|
-
getAccountInfo(request: AccountByHomeIdRequest | AccountByLocalIdRequest | AccountByUsernameRequest): Promise<AccountInfo>;
|
|
51
|
-
getActiveAccount(): Promise<AccountInfo>;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*
|
|
55
|
-
* @
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
*
|
|
61
|
-
* @param
|
|
62
|
-
* @param
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
import { AccountInfo } from "./AccountInfo";
|
|
2
|
+
import { AccountByHomeIdRequest, AccountByLocalIdRequest, AccountByUsernameRequest } from "./AccountRequests";
|
|
3
|
+
import { AuthBridge } from "./AuthBridge";
|
|
4
|
+
import { BridgeCapabilities } from "./BridgeCapabilities";
|
|
5
|
+
import { IBridgeProxy } from "./IBridgeProxy";
|
|
6
|
+
import { InitializeBridgeResponse } from "./InitializeBridgeResponse";
|
|
7
|
+
import { TokenRequest } from "./TokenRequest";
|
|
8
|
+
import { TokenResponse } from "./TokenResponse";
|
|
9
|
+
declare global {
|
|
10
|
+
interface Window {
|
|
11
|
+
nestedAppAuthBridge: AuthBridge;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* BridgeProxy
|
|
16
|
+
* Provides a proxy for accessing a bridge to a host app and/or
|
|
17
|
+
* platform broker
|
|
18
|
+
*/
|
|
19
|
+
export declare class BridgeProxy implements IBridgeProxy {
|
|
20
|
+
static bridgeRequests: any[];
|
|
21
|
+
static crypto: Crypto;
|
|
22
|
+
sdkName: string;
|
|
23
|
+
sdkVersion: string;
|
|
24
|
+
capabilities?: BridgeCapabilities;
|
|
25
|
+
/**
|
|
26
|
+
* initializeNestedAppAuthBridge - Initializes the bridge to the host app
|
|
27
|
+
* @returns a promise that resolves to an InitializeBridgeResponse or rejects with an Error
|
|
28
|
+
* @remarks This method will be called by the create factory method
|
|
29
|
+
* @remarks If the bridge is not available, this method will throw an error
|
|
30
|
+
*/
|
|
31
|
+
protected static initializeNestedAppAuthBridge(): Promise<InitializeBridgeResponse>;
|
|
32
|
+
static getRandomId(): string;
|
|
33
|
+
/**
|
|
34
|
+
* getTokenInteractive - Attempts to get a token interactively from the bridge
|
|
35
|
+
* @param request A token request
|
|
36
|
+
* @returns a promise that resolves to a token response or rejects with a BridgeError
|
|
37
|
+
*/
|
|
38
|
+
getTokenInteractive(request: TokenRequest): Promise<TokenResponse>;
|
|
39
|
+
/**
|
|
40
|
+
* getTokenSilent Attempts to get a token silently from the bridge
|
|
41
|
+
* @param request A token request
|
|
42
|
+
* @returns a promise that resolves to a token response or rejects with a BridgeError
|
|
43
|
+
*/
|
|
44
|
+
getTokenSilent(request: TokenRequest): Promise<TokenResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* getAccountInfo - Gets account information from the bridge
|
|
47
|
+
*
|
|
48
|
+
* @param request A request for account information
|
|
49
|
+
*/
|
|
50
|
+
getAccountInfo(request: AccountByHomeIdRequest | AccountByLocalIdRequest | AccountByUsernameRequest): Promise<AccountInfo>;
|
|
51
|
+
getActiveAccount(): Promise<AccountInfo>;
|
|
52
|
+
getHostCapabilities(): BridgeCapabilities | null;
|
|
53
|
+
/**
|
|
54
|
+
* A method used to send a request to the bridge
|
|
55
|
+
* @param request A token request
|
|
56
|
+
* @returns a promise that resolves to a response of provided type or rejects with a BridgeError
|
|
57
|
+
*/
|
|
58
|
+
private sendRequest;
|
|
59
|
+
/**
|
|
60
|
+
* Private constructor for BridgeProxy
|
|
61
|
+
* @param sdkName The name of the SDK being used to make requests on behalf of the app
|
|
62
|
+
* @param sdkVersion The version of the SDK being used to make requests on behalf of the app
|
|
63
|
+
* @param capabilities The capabilities of the bridge / SDK / platform broker
|
|
64
|
+
*/
|
|
65
|
+
private constructor();
|
|
66
|
+
/**
|
|
67
|
+
* Factory method for creating an implementation of IBridgeProxy
|
|
68
|
+
* @returns A promise that resolves to a BridgeProxy implementation
|
|
69
|
+
*/
|
|
70
|
+
static create(): Promise<IBridgeProxy>;
|
|
71
|
+
}
|
|
72
|
+
export default BridgeProxy;
|
|
72
73
|
//# sourceMappingURL=BridgeProxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeProxy.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,EAAE,UAAU,CAAC;KACnC;CACJ;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,YAAY;IAE5C,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAM;IAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"BridgeProxy.d.ts","sourceRoot":"","sources":["../../src/naa/BridgeProxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,mBAAmB,EAAE,UAAU,CAAC;KACnC;CACJ;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,YAAY;IAE5C,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAM;IAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAElC;;;;;OAKG;qBACoB,6BAA6B,IAAI,OAAO,CAAC,wBAAwB,CAAC;WAgE3E,WAAW,IAAI,MAAM;IAInC;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzE;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpE;;;;OAIG;IACI,cAAc,CACjB,OAAO,EACD,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GAC/B,OAAO,CAAC,WAAW,CAAC;IAkBhB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAIxC,mBAAmB,IAAI,kBAAkB,GAAG,IAAI;IAIvD;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA8BnB;;;;;OAKG;IACH,OAAO;IAUP;;;OAGG;WACiB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAQtD;AAED,eAAe,WAAW,CAAC"}
|