@azure/msal-browser 3.19.1 → 3.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +53 -53
  2. package/dist/app/IPublicClientApplication.mjs +105 -105
  3. package/dist/app/PublicClientApplication.d.ts +293 -293
  4. package/dist/app/PublicClientApplication.mjs +364 -364
  5. package/dist/app/PublicClientNext.d.ts +276 -276
  6. package/dist/app/PublicClientNext.mjs +354 -354
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
  8. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +45 -45
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
  12. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
  13. package/dist/cache/AccountManager.d.ts +48 -48
  14. package/dist/cache/AccountManager.mjs +126 -126
  15. package/dist/cache/AsyncMemoryStorage.d.ts +50 -50
  16. package/dist/cache/AsyncMemoryStorage.mjs +131 -131
  17. package/dist/cache/BrowserCacheManager.d.ts +410 -385
  18. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  19. package/dist/cache/BrowserCacheManager.mjs +1364 -1294
  20. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  21. package/dist/cache/BrowserStorage.d.ts +11 -11
  22. package/dist/cache/BrowserStorage.mjs +32 -32
  23. package/dist/cache/DatabaseStorage.d.ts +56 -56
  24. package/dist/cache/DatabaseStorage.mjs +200 -200
  25. package/dist/cache/IAsyncStorage.d.ts +27 -27
  26. package/dist/cache/ITokenCache.d.ts +11 -11
  27. package/dist/cache/IWindowStorage.d.ts +27 -27
  28. package/dist/cache/MemoryStorage.d.ts +11 -11
  29. package/dist/cache/MemoryStorage.mjs +31 -31
  30. package/dist/cache/TokenCache.d.ts +77 -77
  31. package/dist/cache/TokenCache.mjs +195 -195
  32. package/dist/config/Configuration.d.ts +213 -208
  33. package/dist/config/Configuration.d.ts.map +1 -1
  34. package/dist/config/Configuration.mjs +128 -128
  35. package/dist/config/Configuration.mjs.map +1 -1
  36. package/dist/controllers/ControllerFactory.d.ts +5 -5
  37. package/dist/controllers/ControllerFactory.mjs +25 -25
  38. package/dist/controllers/IController.d.ts +60 -60
  39. package/dist/controllers/NestedAppAuthController.d.ts +202 -202
  40. package/dist/controllers/NestedAppAuthController.mjs +473 -473
  41. package/dist/controllers/StandardController.d.ts +405 -405
  42. package/dist/controllers/StandardController.d.ts.map +1 -1
  43. package/dist/controllers/StandardController.mjs +1334 -1316
  44. package/dist/controllers/StandardController.mjs.map +1 -1
  45. package/dist/controllers/UnknownOperatingContextController.d.ts +86 -86
  46. package/dist/controllers/UnknownOperatingContextController.mjs +256 -256
  47. package/dist/crypto/BrowserCrypto.d.ts +52 -52
  48. package/dist/crypto/BrowserCrypto.mjs +151 -151
  49. package/dist/crypto/CryptoOps.d.ts +74 -74
  50. package/dist/crypto/CryptoOps.mjs +176 -176
  51. package/dist/crypto/PkceGenerator.d.ts +8 -8
  52. package/dist/crypto/PkceGenerator.mjs +54 -54
  53. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  54. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  55. package/dist/encode/Base64Decode.d.ts +9 -9
  56. package/dist/encode/Base64Decode.mjs +36 -36
  57. package/dist/encode/Base64Encode.d.ts +19 -19
  58. package/dist/encode/Base64Encode.mjs +43 -43
  59. package/dist/error/BrowserAuthError.d.ts +256 -255
  60. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  61. package/dist/error/BrowserAuthError.mjs +265 -264
  62. package/dist/error/BrowserAuthError.mjs.map +1 -1
  63. package/dist/error/BrowserAuthErrorCodes.d.ts +47 -46
  64. package/dist/error/BrowserAuthErrorCodes.d.ts.map +1 -1
  65. package/dist/error/BrowserAuthErrorCodes.mjs +53 -52
  66. package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -1
  67. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  68. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  69. package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
  70. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  71. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  72. package/dist/error/NativeAuthError.d.ts +29 -29
  73. package/dist/error/NativeAuthError.mjs +60 -60
  74. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  75. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  76. package/dist/error/NestedAppAuthError.d.ts +14 -14
  77. package/dist/error/NestedAppAuthError.mjs +23 -23
  78. package/dist/event/EventHandler.d.ts +41 -41
  79. package/dist/event/EventHandler.mjs +125 -125
  80. package/dist/event/EventMessage.d.ts +25 -25
  81. package/dist/event/EventMessage.mjs +68 -68
  82. package/dist/event/EventType.d.ts +29 -29
  83. package/dist/event/EventType.mjs +32 -32
  84. package/dist/index.d.ts +40 -40
  85. package/dist/index.mjs +1 -1
  86. package/dist/interaction_client/BaseInteractionClient.d.ts +50 -50
  87. package/dist/interaction_client/BaseInteractionClient.mjs +106 -106
  88. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  89. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  90. package/dist/interaction_client/NativeInteractionClient.d.ts +151 -143
  91. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  92. package/dist/interaction_client/NativeInteractionClient.mjs +624 -584
  93. package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
  94. package/dist/interaction_client/PopupClient.d.ts +118 -105
  95. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  96. package/dist/interaction_client/PopupClient.mjs +460 -434
  97. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  98. package/dist/interaction_client/RedirectClient.d.ts +50 -50
  99. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  100. package/dist/interaction_client/RedirectClient.mjs +349 -317
  101. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  102. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  103. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  104. package/dist/interaction_client/SilentCacheClient.d.ts +16 -16
  105. package/dist/interaction_client/SilentCacheClient.mjs +42 -42
  106. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  107. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  108. package/dist/interaction_client/SilentIframeClient.mjs +111 -101
  109. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  110. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  111. package/dist/interaction_client/SilentRefreshClient.mjs +47 -47
  112. package/dist/interaction_client/StandardInteractionClient.d.ts +48 -48
  113. package/dist/interaction_client/StandardInteractionClient.mjs +199 -199
  114. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  115. package/dist/interaction_handler/InteractionHandler.mjs +93 -93
  116. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  117. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  118. package/dist/interaction_handler/RedirectHandler.mjs +135 -134
  119. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  120. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  121. package/dist/interaction_handler/SilentHandler.mjs +134 -134
  122. package/dist/naa/AccountInfo.d.ts +11 -11
  123. package/dist/naa/AuthBridge.d.ts +8 -8
  124. package/dist/naa/AuthResult.d.ts +6 -6
  125. package/dist/naa/BridgeAccountContext.d.ts +12 -12
  126. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  127. package/dist/naa/BridgeError.d.ts +9 -9
  128. package/dist/naa/BridgeError.mjs +7 -7
  129. package/dist/naa/BridgeProxy.d.ts +67 -67
  130. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  131. package/dist/naa/BridgeProxy.mjs +153 -148
  132. package/dist/naa/BridgeProxy.mjs.map +1 -1
  133. package/dist/naa/BridgeRequest.d.ts +7 -7
  134. package/dist/naa/BridgeRequestEnvelope.d.ts +12 -12
  135. package/dist/naa/BridgeResponseEnvelope.d.ts +13 -13
  136. package/dist/naa/BridgeStatusCode.d.ts +11 -11
  137. package/dist/naa/BridgeStatusCode.mjs +14 -14
  138. package/dist/naa/IBridgeProxy.d.ts +10 -10
  139. package/dist/naa/InitContext.d.ts +8 -8
  140. package/dist/naa/TokenRequest.d.ts +18 -18
  141. package/dist/naa/TokenResponse.d.ts +13 -13
  142. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +35 -35
  143. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +179 -179
  144. package/dist/navigation/INavigationClient.d.ts +16 -16
  145. package/dist/navigation/NavigationClient.d.ts +22 -22
  146. package/dist/navigation/NavigationClient.mjs +40 -40
  147. package/dist/navigation/NavigationOptions.d.ts +12 -12
  148. package/dist/network/FetchClient.d.ts +26 -26
  149. package/dist/network/FetchClient.mjs +99 -99
  150. package/dist/operatingcontext/BaseOperatingContext.d.ts +41 -41
  151. package/dist/operatingcontext/BaseOperatingContext.mjs +94 -94
  152. package/dist/operatingcontext/NestedAppOperatingContext.d.ts +34 -34
  153. package/dist/operatingcontext/NestedAppOperatingContext.mjs +71 -71
  154. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  155. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  156. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  157. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  158. package/dist/packageMetadata.d.ts +2 -2
  159. package/dist/packageMetadata.mjs +4 -4
  160. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  161. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  162. package/dist/request/ClearCacheRequest.d.ts +10 -10
  163. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  164. package/dist/request/EndSessionRequest.d.ts +15 -15
  165. package/dist/request/InitializeApplicationRequest.d.ts +8 -8
  166. package/dist/request/PopupRequest.d.ts +34 -34
  167. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  168. package/dist/request/RedirectRequest.d.ts +40 -35
  169. package/dist/request/RedirectRequest.d.ts.map +1 -1
  170. package/dist/request/RequestHelpers.d.ts +13 -13
  171. package/dist/request/RequestHelpers.mjs +53 -53
  172. package/dist/request/SilentRequest.d.ts +33 -33
  173. package/dist/request/SsoSilentRequest.d.ts +29 -29
  174. package/dist/response/AuthenticationResult.d.ts +4 -4
  175. package/dist/response/ResponseHandler.d.ts +7 -7
  176. package/dist/response/ResponseHandler.mjs +36 -36
  177. package/dist/telemetry/BrowserPerformanceClient.d.ts +38 -34
  178. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  179. package/dist/telemetry/BrowserPerformanceClient.mjs +163 -163
  180. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  181. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  182. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  183. package/dist/utils/BrowserConstants.d.ts +182 -180
  184. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  185. package/dist/utils/BrowserConstants.mjs +214 -212
  186. package/dist/utils/BrowserConstants.mjs.map +1 -1
  187. package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
  188. package/dist/utils/BrowserProtocolUtils.mjs +21 -21
  189. package/dist/utils/BrowserUtils.d.ts +75 -75
  190. package/dist/utils/BrowserUtils.mjs +157 -157
  191. package/lib/msal-browser.cjs +19028 -18759
  192. package/lib/msal-browser.cjs.map +1 -1
  193. package/lib/msal-browser.js +19028 -18759
  194. package/lib/msal-browser.js.map +1 -1
  195. package/lib/msal-browser.min.js +65 -65
  196. package/package.json +2 -2
  197. package/src/cache/BrowserCacheManager.ts +95 -0
  198. package/src/config/Configuration.ts +9 -1
  199. package/src/controllers/StandardController.ts +30 -12
  200. package/src/error/BrowserAuthError.ts +2 -0
  201. package/src/error/BrowserAuthErrorCodes.ts +1 -0
  202. package/src/interaction_client/NativeInteractionClient.ts +105 -54
  203. package/src/interaction_client/PopupClient.ts +202 -117
  204. package/src/interaction_client/RedirectClient.ts +62 -2
  205. package/src/interaction_client/SilentIframeClient.ts +41 -3
  206. package/src/interaction_handler/RedirectHandler.ts +1 -0
  207. package/src/naa/BridgeProxy.ts +7 -2
  208. package/src/packageMetadata.ts +1 -1
  209. package/src/request/RedirectRequest.ts +5 -0
  210. package/src/telemetry/BrowserPerformanceClient.ts +1 -1
  211. package/src/utils/BrowserConstants.ts +2 -0
@@ -1,76 +1,76 @@
1
- import { invoke, invokeAsync } from "@azure/msal-common";
2
- import { BrowserConfiguration } from "../config/Configuration";
3
- /**
4
- * Clears hash from window url.
5
- */
6
- export declare function clearHash(contentWindow: Window): void;
7
- /**
8
- * Replaces current hash with hash from provided url
9
- */
10
- export declare function replaceHash(url: string): void;
11
- /**
12
- * Returns boolean of whether the current window is in an iframe or not.
13
- */
14
- export declare function isInIframe(): boolean;
15
- /**
16
- * Returns boolean of whether or not the current window is a popup opened by msal
17
- */
18
- export declare function isInPopup(): boolean;
19
- /**
20
- * Returns current window URL as redirect uri
21
- */
22
- export declare function getCurrentUri(): string;
23
- /**
24
- * Gets the homepage url for the current window location.
25
- */
26
- export declare function getHomepage(): string;
27
- /**
28
- * Throws error if we have completed an auth and are
29
- * attempting another auth request inside an iframe.
30
- */
31
- export declare function blockReloadInHiddenIframes(): void;
32
- /**
33
- * Block redirect operations in iframes unless explicitly allowed
34
- * @param interactionType Interaction type for the request
35
- * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe
36
- */
37
- export declare function blockRedirectInIframe(allowRedirectInIframe: boolean): void;
38
- /**
39
- * Block redirectUri loaded in popup from calling AcquireToken APIs
40
- */
41
- export declare function blockAcquireTokenInPopups(): void;
42
- /**
43
- * Throws error if token requests are made in non-browser environment
44
- * @param isBrowserEnvironment Flag indicating if environment is a browser.
45
- */
46
- export declare function blockNonBrowserEnvironment(): void;
47
- /**
48
- * Throws error if initialize hasn't been called
49
- * @param initialized
50
- */
51
- export declare function blockAPICallsBeforeInitialize(initialized: boolean): void;
52
- /**
53
- * Helper to validate app environment before making an auth request
54
- * @param initialized
55
- */
56
- export declare function preflightCheck(initialized: boolean): void;
57
- /**
58
- * Helper to validate app enviornment before making redirect request
59
- * @param initialized
60
- * @param config
61
- */
62
- export declare function redirectPreflightCheck(initialized: boolean, config: BrowserConfiguration): void;
63
- /**
64
- * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request
65
- * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com
66
- * @returns
67
- */
68
- export declare function preconnect(authority: string): void;
69
- /**
70
- * Wrapper function that creates a UUID v7 from the current timestamp.
71
- * @returns {string}
72
- */
73
- export declare function createGuid(): string;
74
- export { invoke };
75
- export { invokeAsync };
1
+ import { invoke, invokeAsync } from "@azure/msal-common";
2
+ import { BrowserConfiguration } from "../config/Configuration";
3
+ /**
4
+ * Clears hash from window url.
5
+ */
6
+ export declare function clearHash(contentWindow: Window): void;
7
+ /**
8
+ * Replaces current hash with hash from provided url
9
+ */
10
+ export declare function replaceHash(url: string): void;
11
+ /**
12
+ * Returns boolean of whether the current window is in an iframe or not.
13
+ */
14
+ export declare function isInIframe(): boolean;
15
+ /**
16
+ * Returns boolean of whether or not the current window is a popup opened by msal
17
+ */
18
+ export declare function isInPopup(): boolean;
19
+ /**
20
+ * Returns current window URL as redirect uri
21
+ */
22
+ export declare function getCurrentUri(): string;
23
+ /**
24
+ * Gets the homepage url for the current window location.
25
+ */
26
+ export declare function getHomepage(): string;
27
+ /**
28
+ * Throws error if we have completed an auth and are
29
+ * attempting another auth request inside an iframe.
30
+ */
31
+ export declare function blockReloadInHiddenIframes(): void;
32
+ /**
33
+ * Block redirect operations in iframes unless explicitly allowed
34
+ * @param interactionType Interaction type for the request
35
+ * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe
36
+ */
37
+ export declare function blockRedirectInIframe(allowRedirectInIframe: boolean): void;
38
+ /**
39
+ * Block redirectUri loaded in popup from calling AcquireToken APIs
40
+ */
41
+ export declare function blockAcquireTokenInPopups(): void;
42
+ /**
43
+ * Throws error if token requests are made in non-browser environment
44
+ * @param isBrowserEnvironment Flag indicating if environment is a browser.
45
+ */
46
+ export declare function blockNonBrowserEnvironment(): void;
47
+ /**
48
+ * Throws error if initialize hasn't been called
49
+ * @param initialized
50
+ */
51
+ export declare function blockAPICallsBeforeInitialize(initialized: boolean): void;
52
+ /**
53
+ * Helper to validate app environment before making an auth request
54
+ * @param initialized
55
+ */
56
+ export declare function preflightCheck(initialized: boolean): void;
57
+ /**
58
+ * Helper to validate app enviornment before making redirect request
59
+ * @param initialized
60
+ * @param config
61
+ */
62
+ export declare function redirectPreflightCheck(initialized: boolean, config: BrowserConfiguration): void;
63
+ /**
64
+ * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request
65
+ * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com
66
+ * @returns
67
+ */
68
+ export declare function preconnect(authority: string): void;
69
+ /**
70
+ * Wrapper function that creates a UUID v7 from the current timestamp.
71
+ * @returns {string}
72
+ */
73
+ export declare function createGuid(): string;
74
+ export { invoke };
75
+ export { invokeAsync };
76
76
  //# sourceMappingURL=BrowserUtils.d.ts.map
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v3.19.1 2024-07-16 */
1
+ /*! @azure/msal-browser v3.21.0 2024-08-13 */
2
2
  'use strict';
3
3
  import { UrlString } from '@azure/msal-common';
4
4
  export { invoke, invokeAsync } from '@azure/msal-common';
@@ -9,162 +9,162 @@ import { createBrowserConfigurationAuthError } from '../error/BrowserConfigurati
9
9
  import { blockIframeReload, redirectInIframe, blockNestedPopups, nonBrowserEnvironment, uninitializedPublicClientApplication } from '../error/BrowserAuthErrorCodes.mjs';
10
10
  import { inMemRedirectUnavailable } from '../error/BrowserConfigurationAuthErrorCodes.mjs';
11
11
 
12
- /*
13
- * Copyright (c) Microsoft Corporation. All rights reserved.
14
- * Licensed under the MIT License.
15
- */
16
- /**
17
- * Clears hash from window url.
18
- */
19
- function clearHash(contentWindow) {
20
- // Office.js sets history.replaceState to null
21
- contentWindow.location.hash = "";
22
- if (typeof contentWindow.history.replaceState === "function") {
23
- // Full removes "#" from url
24
- contentWindow.history.replaceState(null, "", `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);
25
- }
26
- }
27
- /**
28
- * Replaces current hash with hash from provided url
29
- */
30
- function replaceHash(url) {
31
- const urlParts = url.split("#");
32
- urlParts.shift(); // Remove part before the hash
33
- window.location.hash = urlParts.length > 0 ? urlParts.join("#") : "";
34
- }
35
- /**
36
- * Returns boolean of whether the current window is in an iframe or not.
37
- */
38
- function isInIframe() {
39
- return window.parent !== window;
40
- }
41
- /**
42
- * Returns boolean of whether or not the current window is a popup opened by msal
43
- */
44
- function isInPopup() {
45
- return (typeof window !== "undefined" &&
46
- !!window.opener &&
47
- window.opener !== window &&
48
- typeof window.name === "string" &&
49
- window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0);
50
- }
51
- // #endregion
52
- /**
53
- * Returns current window URL as redirect uri
54
- */
55
- function getCurrentUri() {
56
- return window.location.href.split("?")[0].split("#")[0];
57
- }
58
- /**
59
- * Gets the homepage url for the current window location.
60
- */
61
- function getHomepage() {
62
- const currentUrl = new UrlString(window.location.href);
63
- const urlComponents = currentUrl.getUrlComponents();
64
- return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;
65
- }
66
- /**
67
- * Throws error if we have completed an auth and are
68
- * attempting another auth request inside an iframe.
69
- */
70
- function blockReloadInHiddenIframes() {
71
- const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);
72
- // return an error if called from the hidden iframe created by the msal js silent calls
73
- if (isResponseHash && isInIframe()) {
74
- throw createBrowserAuthError(blockIframeReload);
75
- }
76
- }
77
- /**
78
- * Block redirect operations in iframes unless explicitly allowed
79
- * @param interactionType Interaction type for the request
80
- * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe
81
- */
82
- function blockRedirectInIframe(allowRedirectInIframe) {
83
- if (isInIframe() && !allowRedirectInIframe) {
84
- // If we are not in top frame, we shouldn't redirect. This is also handled by the service.
85
- throw createBrowserAuthError(redirectInIframe);
86
- }
87
- }
88
- /**
89
- * Block redirectUri loaded in popup from calling AcquireToken APIs
90
- */
91
- function blockAcquireTokenInPopups() {
92
- // Popups opened by msal popup APIs are given a name that starts with "msal."
93
- if (isInPopup()) {
94
- throw createBrowserAuthError(blockNestedPopups);
95
- }
96
- }
97
- /**
98
- * Throws error if token requests are made in non-browser environment
99
- * @param isBrowserEnvironment Flag indicating if environment is a browser.
100
- */
101
- function blockNonBrowserEnvironment() {
102
- if (typeof window === "undefined") {
103
- throw createBrowserAuthError(nonBrowserEnvironment);
104
- }
105
- }
106
- /**
107
- * Throws error if initialize hasn't been called
108
- * @param initialized
109
- */
110
- function blockAPICallsBeforeInitialize(initialized) {
111
- if (!initialized) {
112
- throw createBrowserAuthError(uninitializedPublicClientApplication);
113
- }
114
- }
115
- /**
116
- * Helper to validate app environment before making an auth request
117
- * @param initialized
118
- */
119
- function preflightCheck(initialized) {
120
- // Block request if not in browser environment
121
- blockNonBrowserEnvironment();
122
- // Block auth requests inside a hidden iframe
123
- blockReloadInHiddenIframes();
124
- // Block redirectUri opened in a popup from calling MSAL APIs
125
- blockAcquireTokenInPopups();
126
- // Block token acquisition before initialize has been called
127
- blockAPICallsBeforeInitialize(initialized);
128
- }
129
- /**
130
- * Helper to validate app enviornment before making redirect request
131
- * @param initialized
132
- * @param config
133
- */
134
- function redirectPreflightCheck(initialized, config) {
135
- preflightCheck(initialized);
136
- blockRedirectInIframe(config.system.allowRedirectInIframe);
137
- // Block redirects if memory storage is enabled but storeAuthStateInCookie is not
138
- if (config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&
139
- !config.cache.storeAuthStateInCookie) {
140
- throw createBrowserConfigurationAuthError(inMemRedirectUnavailable);
141
- }
142
- }
143
- /**
144
- * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request
145
- * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com
146
- * @returns
147
- */
148
- function preconnect(authority) {
149
- const link = document.createElement("link");
150
- link.rel = "preconnect";
151
- link.href = new URL(authority).origin;
152
- link.crossOrigin = "anonymous";
153
- document.head.appendChild(link);
154
- // The browser will close connection if not used within a few seconds, remove element from the header after 10s
155
- window.setTimeout(() => {
156
- try {
157
- document.head.removeChild(link);
158
- }
159
- catch { }
160
- }, 10000); // 10s Timeout
161
- }
162
- /**
163
- * Wrapper function that creates a UUID v7 from the current timestamp.
164
- * @returns {string}
165
- */
166
- function createGuid() {
167
- return createNewGuid();
12
+ /*
13
+ * Copyright (c) Microsoft Corporation. All rights reserved.
14
+ * Licensed under the MIT License.
15
+ */
16
+ /**
17
+ * Clears hash from window url.
18
+ */
19
+ function clearHash(contentWindow) {
20
+ // Office.js sets history.replaceState to null
21
+ contentWindow.location.hash = "";
22
+ if (typeof contentWindow.history.replaceState === "function") {
23
+ // Full removes "#" from url
24
+ contentWindow.history.replaceState(null, "", `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);
25
+ }
26
+ }
27
+ /**
28
+ * Replaces current hash with hash from provided url
29
+ */
30
+ function replaceHash(url) {
31
+ const urlParts = url.split("#");
32
+ urlParts.shift(); // Remove part before the hash
33
+ window.location.hash = urlParts.length > 0 ? urlParts.join("#") : "";
34
+ }
35
+ /**
36
+ * Returns boolean of whether the current window is in an iframe or not.
37
+ */
38
+ function isInIframe() {
39
+ return window.parent !== window;
40
+ }
41
+ /**
42
+ * Returns boolean of whether or not the current window is a popup opened by msal
43
+ */
44
+ function isInPopup() {
45
+ return (typeof window !== "undefined" &&
46
+ !!window.opener &&
47
+ window.opener !== window &&
48
+ typeof window.name === "string" &&
49
+ window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0);
50
+ }
51
+ // #endregion
52
+ /**
53
+ * Returns current window URL as redirect uri
54
+ */
55
+ function getCurrentUri() {
56
+ return window.location.href.split("?")[0].split("#")[0];
57
+ }
58
+ /**
59
+ * Gets the homepage url for the current window location.
60
+ */
61
+ function getHomepage() {
62
+ const currentUrl = new UrlString(window.location.href);
63
+ const urlComponents = currentUrl.getUrlComponents();
64
+ return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;
65
+ }
66
+ /**
67
+ * Throws error if we have completed an auth and are
68
+ * attempting another auth request inside an iframe.
69
+ */
70
+ function blockReloadInHiddenIframes() {
71
+ const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);
72
+ // return an error if called from the hidden iframe created by the msal js silent calls
73
+ if (isResponseHash && isInIframe()) {
74
+ throw createBrowserAuthError(blockIframeReload);
75
+ }
76
+ }
77
+ /**
78
+ * Block redirect operations in iframes unless explicitly allowed
79
+ * @param interactionType Interaction type for the request
80
+ * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe
81
+ */
82
+ function blockRedirectInIframe(allowRedirectInIframe) {
83
+ if (isInIframe() && !allowRedirectInIframe) {
84
+ // If we are not in top frame, we shouldn't redirect. This is also handled by the service.
85
+ throw createBrowserAuthError(redirectInIframe);
86
+ }
87
+ }
88
+ /**
89
+ * Block redirectUri loaded in popup from calling AcquireToken APIs
90
+ */
91
+ function blockAcquireTokenInPopups() {
92
+ // Popups opened by msal popup APIs are given a name that starts with "msal."
93
+ if (isInPopup()) {
94
+ throw createBrowserAuthError(blockNestedPopups);
95
+ }
96
+ }
97
+ /**
98
+ * Throws error if token requests are made in non-browser environment
99
+ * @param isBrowserEnvironment Flag indicating if environment is a browser.
100
+ */
101
+ function blockNonBrowserEnvironment() {
102
+ if (typeof window === "undefined") {
103
+ throw createBrowserAuthError(nonBrowserEnvironment);
104
+ }
105
+ }
106
+ /**
107
+ * Throws error if initialize hasn't been called
108
+ * @param initialized
109
+ */
110
+ function blockAPICallsBeforeInitialize(initialized) {
111
+ if (!initialized) {
112
+ throw createBrowserAuthError(uninitializedPublicClientApplication);
113
+ }
114
+ }
115
+ /**
116
+ * Helper to validate app environment before making an auth request
117
+ * @param initialized
118
+ */
119
+ function preflightCheck(initialized) {
120
+ // Block request if not in browser environment
121
+ blockNonBrowserEnvironment();
122
+ // Block auth requests inside a hidden iframe
123
+ blockReloadInHiddenIframes();
124
+ // Block redirectUri opened in a popup from calling MSAL APIs
125
+ blockAcquireTokenInPopups();
126
+ // Block token acquisition before initialize has been called
127
+ blockAPICallsBeforeInitialize(initialized);
128
+ }
129
+ /**
130
+ * Helper to validate app enviornment before making redirect request
131
+ * @param initialized
132
+ * @param config
133
+ */
134
+ function redirectPreflightCheck(initialized, config) {
135
+ preflightCheck(initialized);
136
+ blockRedirectInIframe(config.system.allowRedirectInIframe);
137
+ // Block redirects if memory storage is enabled but storeAuthStateInCookie is not
138
+ if (config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&
139
+ !config.cache.storeAuthStateInCookie) {
140
+ throw createBrowserConfigurationAuthError(inMemRedirectUnavailable);
141
+ }
142
+ }
143
+ /**
144
+ * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request
145
+ * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com
146
+ * @returns
147
+ */
148
+ function preconnect(authority) {
149
+ const link = document.createElement("link");
150
+ link.rel = "preconnect";
151
+ link.href = new URL(authority).origin;
152
+ link.crossOrigin = "anonymous";
153
+ document.head.appendChild(link);
154
+ // The browser will close connection if not used within a few seconds, remove element from the header after 10s
155
+ window.setTimeout(() => {
156
+ try {
157
+ document.head.removeChild(link);
158
+ }
159
+ catch { }
160
+ }, 10000); // 10s Timeout
161
+ }
162
+ /**
163
+ * Wrapper function that creates a UUID v7 from the current timestamp.
164
+ * @returns {string}
165
+ */
166
+ function createGuid() {
167
+ return createNewGuid();
168
168
  }
169
169
 
170
170
  export { blockAPICallsBeforeInitialize, blockAcquireTokenInPopups, blockNonBrowserEnvironment, blockRedirectInIframe, blockReloadInHiddenIframes, clearHash, createGuid, getCurrentUri, getHomepage, isInIframe, isInPopup, preconnect, preflightCheck, redirectPreflightCheck, replaceHash };