@azure/msal-browser 2.16.0 → 2.19.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 (165) hide show
  1. package/CHANGELOG.json +240 -0
  2. package/{changelog.md → CHANGELOG.md} +489 -430
  3. package/LICENSE +21 -21
  4. package/README.md +212 -206
  5. package/dist/_virtual/_tslib.js +1 -1
  6. package/dist/app/ClientApplication.d.ts +19 -140
  7. package/dist/app/ClientApplication.d.ts.map +1 -1
  8. package/dist/app/ClientApplication.js +115 -895
  9. package/dist/app/ClientApplication.js.map +1 -1
  10. package/dist/app/IPublicClientApplication.d.ts +6 -0
  11. package/dist/app/IPublicClientApplication.d.ts.map +1 -1
  12. package/dist/app/IPublicClientApplication.js +13 -1
  13. package/dist/app/IPublicClientApplication.js.map +1 -1
  14. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  15. package/dist/app/PublicClientApplication.js +35 -41
  16. package/dist/app/PublicClientApplication.js.map +1 -1
  17. package/dist/cache/AsyncMemoryStorage.d.ts +46 -0
  18. package/dist/cache/AsyncMemoryStorage.d.ts.map +1 -0
  19. package/dist/cache/AsyncMemoryStorage.js +195 -0
  20. package/dist/cache/AsyncMemoryStorage.js.map +1 -0
  21. package/dist/cache/BrowserCacheManager.d.ts +19 -2
  22. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  23. package/dist/cache/BrowserCacheManager.js +104 -15
  24. package/dist/cache/BrowserCacheManager.js.map +1 -1
  25. package/dist/cache/BrowserStorage.d.ts +1 -1
  26. package/dist/cache/BrowserStorage.d.ts.map +1 -1
  27. package/dist/cache/BrowserStorage.js +1 -1
  28. package/dist/cache/BrowserStorage.js.map +1 -1
  29. package/dist/cache/DatabaseStorage.d.ts +29 -4
  30. package/dist/cache/DatabaseStorage.d.ts.map +1 -1
  31. package/dist/cache/DatabaseStorage.js +151 -45
  32. package/dist/cache/DatabaseStorage.js.map +1 -1
  33. package/dist/cache/IAsyncMemoryStorage.d.ts +28 -0
  34. package/dist/cache/IAsyncMemoryStorage.d.ts.map +1 -0
  35. package/dist/cache/ITokenCache.d.ts +8 -0
  36. package/dist/cache/ITokenCache.d.ts.map +1 -0
  37. package/dist/cache/IWindowStorage.d.ts +3 -3
  38. package/dist/cache/IWindowStorage.d.ts.map +1 -1
  39. package/dist/cache/MemoryStorage.d.ts +3 -3
  40. package/dist/cache/MemoryStorage.d.ts.map +1 -1
  41. package/dist/cache/MemoryStorage.js +1 -1
  42. package/dist/cache/MemoryStorage.js.map +1 -1
  43. package/dist/cache/TokenCache.d.ts +48 -0
  44. package/dist/cache/TokenCache.d.ts.map +1 -0
  45. package/dist/cache/TokenCache.js +124 -0
  46. package/dist/cache/TokenCache.js.map +1 -0
  47. package/dist/config/Configuration.js +1 -1
  48. package/dist/config/Configuration.js.map +1 -1
  49. package/dist/crypto/BrowserCrypto.d.ts +3 -1
  50. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  51. package/dist/crypto/BrowserCrypto.js +3 -2
  52. package/dist/crypto/BrowserCrypto.js.map +1 -1
  53. package/dist/crypto/CryptoOps.d.ts +21 -6
  54. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  55. package/dist/crypto/CryptoOps.js +67 -15
  56. package/dist/crypto/CryptoOps.js.map +1 -1
  57. package/dist/crypto/GuidGenerator.js +1 -1
  58. package/dist/crypto/GuidGenerator.js.map +1 -1
  59. package/dist/crypto/PkceGenerator.js +1 -1
  60. package/dist/crypto/PkceGenerator.js.map +1 -1
  61. package/dist/crypto/SignedHttpRequest.d.ts +31 -0
  62. package/dist/crypto/SignedHttpRequest.d.ts.map +1 -0
  63. package/dist/crypto/SignedHttpRequest.js +70 -0
  64. package/dist/crypto/SignedHttpRequest.js.map +1 -0
  65. package/dist/encode/Base64Decode.js +1 -1
  66. package/dist/encode/Base64Decode.js.map +1 -1
  67. package/dist/encode/Base64Encode.js +1 -1
  68. package/dist/encode/Base64Encode.js.map +1 -1
  69. package/dist/error/BrowserAuthError.d.ts +28 -4
  70. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  71. package/dist/error/BrowserAuthError.js +41 -11
  72. package/dist/error/BrowserAuthError.js.map +1 -1
  73. package/dist/error/BrowserConfigurationAuthError.js +1 -1
  74. package/dist/error/BrowserConfigurationAuthError.js.map +1 -1
  75. package/dist/event/EventHandler.d.ts +13 -0
  76. package/dist/event/EventHandler.d.ts.map +1 -1
  77. package/dist/event/EventHandler.js +66 -1
  78. package/dist/event/EventHandler.js.map +1 -1
  79. package/dist/event/EventMessage.d.ts +4 -3
  80. package/dist/event/EventMessage.d.ts.map +1 -1
  81. package/dist/event/EventMessage.js +24 -5
  82. package/dist/event/EventMessage.js.map +1 -1
  83. package/dist/event/EventType.d.ts +2 -0
  84. package/dist/event/EventType.d.ts.map +1 -1
  85. package/dist/event/EventType.js +3 -1
  86. package/dist/event/EventType.js.map +1 -1
  87. package/dist/index.cjs.js +4505 -3045
  88. package/dist/index.cjs.js.map +1 -1
  89. package/dist/index.d.ts +5 -2
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +4 -2
  92. package/dist/index.js.map +1 -1
  93. package/dist/interaction_client/BaseInteractionClient.d.ts +42 -0
  94. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -0
  95. package/dist/interaction_client/BaseInteractionClient.js +131 -0
  96. package/dist/interaction_client/BaseInteractionClient.js.map +1 -0
  97. package/dist/interaction_client/PopupClient.d.ts +37 -0
  98. package/dist/interaction_client/PopupClient.d.ts.map +1 -0
  99. package/dist/interaction_client/PopupClient.js +234 -0
  100. package/dist/interaction_client/PopupClient.js.map +1 -0
  101. package/dist/interaction_client/RedirectClient.d.ts +42 -0
  102. package/dist/interaction_client/RedirectClient.d.ts.map +1 -0
  103. package/dist/interaction_client/RedirectClient.js +301 -0
  104. package/dist/interaction_client/RedirectClient.js.map +1 -0
  105. package/dist/interaction_client/SilentCacheClient.d.ts +22 -0
  106. package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -0
  107. package/dist/interaction_client/SilentCacheClient.js +85 -0
  108. package/dist/interaction_client/SilentCacheClient.js.map +1 -0
  109. package/dist/interaction_client/SilentIframeClient.d.ts +29 -0
  110. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -0
  111. package/dist/interaction_client/SilentIframeClient.js +107 -0
  112. package/dist/interaction_client/SilentIframeClient.js.map +1 -0
  113. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -0
  114. package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -0
  115. package/dist/interaction_client/SilentRefreshClient.js +76 -0
  116. package/dist/interaction_client/SilentRefreshClient.js.map +1 -0
  117. package/dist/interaction_client/StandardInteractionClient.d.ts +66 -0
  118. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -0
  119. package/dist/interaction_client/StandardInteractionClient.js +249 -0
  120. package/dist/interaction_client/StandardInteractionClient.js.map +1 -0
  121. package/dist/interaction_handler/InteractionHandler.js +1 -1
  122. package/dist/interaction_handler/InteractionHandler.js.map +1 -1
  123. package/dist/interaction_handler/PopupHandler.d.ts +2 -0
  124. package/dist/interaction_handler/PopupHandler.d.ts.map +1 -1
  125. package/dist/interaction_handler/PopupHandler.js +3 -4
  126. package/dist/interaction_handler/PopupHandler.js.map +1 -1
  127. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  128. package/dist/interaction_handler/RedirectHandler.js +6 -5
  129. package/dist/interaction_handler/RedirectHandler.js.map +1 -1
  130. package/dist/interaction_handler/SilentHandler.js +1 -1
  131. package/dist/interaction_handler/SilentHandler.js.map +1 -1
  132. package/dist/navigation/NavigationClient.js +1 -1
  133. package/dist/navigation/NavigationClient.js.map +1 -1
  134. package/dist/network/FetchClient.js +1 -1
  135. package/dist/network/FetchClient.js.map +1 -1
  136. package/dist/network/XhrClient.js +1 -1
  137. package/dist/network/XhrClient.js.map +1 -1
  138. package/dist/packageMetadata.d.ts +1 -1
  139. package/dist/packageMetadata.js +2 -2
  140. package/dist/packageMetadata.js.map +1 -1
  141. package/dist/request/EndSessionPopupRequest.d.ts +3 -0
  142. package/dist/request/EndSessionPopupRequest.d.ts.map +1 -1
  143. package/dist/request/PopupRequest.d.ts +3 -0
  144. package/dist/request/PopupRequest.d.ts.map +1 -1
  145. package/dist/request/RedirectRequest.d.ts.map +1 -1
  146. package/dist/utils/BrowserConstants.d.ts +12 -1
  147. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  148. package/dist/utils/BrowserConstants.js +16 -3
  149. package/dist/utils/BrowserConstants.js.map +1 -1
  150. package/dist/utils/BrowserProtocolUtils.js +1 -1
  151. package/dist/utils/BrowserProtocolUtils.js.map +1 -1
  152. package/dist/utils/BrowserStringUtils.js +1 -1
  153. package/dist/utils/BrowserStringUtils.js.map +1 -1
  154. package/dist/utils/BrowserUtils.js +1 -1
  155. package/dist/utils/BrowserUtils.js.map +1 -1
  156. package/dist/utils/MathUtils.js +1 -1
  157. package/dist/utils/MathUtils.js.map +1 -1
  158. package/dist/utils/PopupUtils.d.ts +26 -2
  159. package/dist/utils/PopupUtils.d.ts.map +1 -1
  160. package/dist/utils/PopupUtils.js +42 -15
  161. package/dist/utils/PopupUtils.js.map +1 -1
  162. package/lib/msal-browser.js +4505 -3045
  163. package/lib/msal-browser.js.map +1 -1
  164. package/lib/msal-browser.min.js +42 -42
  165. package/package.json +8 -2
@@ -0,0 +1,20 @@
1
+ import { StandardInteractionClient } from "./StandardInteractionClient";
2
+ import { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient } from "@azure/msal-common";
3
+ export declare class SilentRefreshClient extends StandardInteractionClient {
4
+ /**
5
+ * Exchanges the refresh token for new tokens
6
+ * @param request
7
+ */
8
+ acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult>;
9
+ /**
10
+ * Currently Unsupported
11
+ */
12
+ logout(): Promise<void>;
13
+ /**
14
+ * Creates a Refresh Client with the given authority, or the default authority.
15
+ * @param serverTelemetryManager
16
+ * @param authorityUrl
17
+ */
18
+ protected createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise<RefreshTokenClient>;
19
+ }
20
+ //# sourceMappingURL=SilentRefreshClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SilentRefreshClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAa,MAAM,oBAAoB,CAAC;AAI1I,qBAAa,mBAAoB,SAAQ,yBAAyB;IAC9D;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmBnF;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB;;;;OAIG;cACa,wBAAwB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAK/I"}
@@ -0,0 +1,76 @@
1
+ /*! @azure/msal-browser v2.19.0 2021-11-02 */
2
+ 'use strict';
3
+ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
+ import { StandardInteractionClient } from './StandardInteractionClient.js';
5
+ import { AuthError, RefreshTokenClient } from '@azure/msal-common';
6
+ import { ApiId } from '../utils/BrowserConstants.js';
7
+ import { BrowserAuthError } from '../error/BrowserAuthError.js';
8
+
9
+ /*
10
+ * Copyright (c) Microsoft Corporation. All rights reserved.
11
+ * Licensed under the MIT License.
12
+ */
13
+ var SilentRefreshClient = /** @class */ (function (_super) {
14
+ __extends(SilentRefreshClient, _super);
15
+ function SilentRefreshClient() {
16
+ return _super !== null && _super.apply(this, arguments) || this;
17
+ }
18
+ /**
19
+ * Exchanges the refresh token for new tokens
20
+ * @param request
21
+ */
22
+ SilentRefreshClient.prototype.acquireToken = function (request) {
23
+ return __awaiter(this, void 0, void 0, function () {
24
+ var silentRequest, serverTelemetryManager, refreshTokenClient;
25
+ var _this = this;
26
+ return __generator(this, function (_a) {
27
+ switch (_a.label) {
28
+ case 0:
29
+ silentRequest = __assign(__assign({}, request), this.initializeBaseRequest(request));
30
+ serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);
31
+ return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority)];
32
+ case 1:
33
+ refreshTokenClient = _a.sent();
34
+ this.logger.verbose("Refresh token client created");
35
+ // Send request to renew token. Auth module will throw errors if token cannot be renewed.
36
+ return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest).catch(function (e) {
37
+ if (e instanceof AuthError) {
38
+ e.setCorrelationId(_this.correlationId);
39
+ }
40
+ serverTelemetryManager.cacheFailedRequest(e);
41
+ throw e;
42
+ })];
43
+ }
44
+ });
45
+ });
46
+ };
47
+ /**
48
+ * Currently Unsupported
49
+ */
50
+ SilentRefreshClient.prototype.logout = function () {
51
+ // Synchronous so we must reject
52
+ return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());
53
+ };
54
+ /**
55
+ * Creates a Refresh Client with the given authority, or the default authority.
56
+ * @param serverTelemetryManager
57
+ * @param authorityUrl
58
+ */
59
+ SilentRefreshClient.prototype.createRefreshTokenClient = function (serverTelemetryManager, authorityUrl) {
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var clientConfig;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl)];
65
+ case 1:
66
+ clientConfig = _a.sent();
67
+ return [2 /*return*/, new RefreshTokenClient(clientConfig)];
68
+ }
69
+ });
70
+ });
71
+ };
72
+ return SilentRefreshClient;
73
+ }(StandardInteractionClient));
74
+
75
+ export { SilentRefreshClient };
76
+ //# sourceMappingURL=SilentRefreshClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SilentRefreshClient.js","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request \n */\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...this.initializeBaseRequest(request)\n };\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority);\n this.logger.verbose(\"Refresh token client created\");\n \n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest).catch(e => {\n if (e instanceof AuthError) {\n e.setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n });\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates a Refresh Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise<RefreshTokenClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\n return new RefreshTokenClient(clientConfig);\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;IAUyC,uCAAyB;IAAlE;;KA0CC;;;;;IArCS,0CAAY,GAAlB,UAAmB,OAAgC;;;;;;;wBACzC,aAAa,yBACZ,OAAO,GACP,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CACzC,CAAC;wBACI,sBAAsB,GAAG,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBAC/E,qBAAM,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,aAAa,CAAC,SAAS,CAAC,EAAA;;wBAAzG,kBAAkB,GAAG,SAAoF;wBAC/G,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;;wBAGpD,sBAAO,kBAAkB,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,UAAA,CAAC;gCACvE,IAAI,CAAC,YAAY,SAAS,EAAE;oCACxB,CAAC,CAAC,gBAAgB,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;iCAC1C;gCACD,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gCAC7C,MAAM,CAAC,CAAC;6BACX,CAAC,EAAC;;;;KACN;;;;IAKD,oCAAM,GAAN;;QAEI,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,EAAE,CAAC,CAAC;KAChF;;;;;;IAOe,sDAAwB,GAAxC,UAAyC,sBAA8C,EAAE,YAAqB;;;;;4BAErF,qBAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,YAAY,CAAC,EAAA;;wBAAtF,YAAY,GAAG,SAAuE;wBAC5F,sBAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAC;;;;KAC/C;IACL,0BAAC;AAAD,CA1CA,CAAyC,yBAAyB;;;;"}
@@ -0,0 +1,66 @@
1
+ import { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, CommonEndSessionRequest } from "@azure/msal-common";
2
+ import { BaseInteractionClient } from "./BaseInteractionClient";
3
+ import { BrowserConfiguration } from "../config/Configuration";
4
+ import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
5
+ import { BrowserCacheManager } from "../cache/BrowserCacheManager";
6
+ import { EventHandler } from "../event/EventHandler";
7
+ import { InteractionType } from "../utils/BrowserConstants";
8
+ import { EndSessionRequest } from "../request/EndSessionRequest";
9
+ import { INavigationClient } from "../navigation/INavigationClient";
10
+ import { RedirectRequest } from "../request/RedirectRequest";
11
+ import { PopupRequest } from "../request/PopupRequest";
12
+ import { SsoSilentRequest } from "../request/SsoSilentRequest";
13
+ /**
14
+ * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
15
+ */
16
+ export declare abstract class StandardInteractionClient extends BaseInteractionClient {
17
+ protected navigationClient: INavigationClient;
18
+ constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, correlationId?: string);
19
+ /**
20
+ * Generates an auth code request tied to the url request.
21
+ * @param request
22
+ */
23
+ protected initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest>;
24
+ /**
25
+ * Initializer for the logout request.
26
+ * @param logoutRequest
27
+ */
28
+ protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest;
29
+ /**
30
+ * Creates an Authorization Code Client with the given authority, or the default authority.
31
+ * @param serverTelemetryManager
32
+ * @param authorityUrl
33
+ */
34
+ protected createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise<AuthorizationCodeClient>;
35
+ /**
36
+ * Creates a Client Configuration object with the given request authority, or the default authority.
37
+ * @param serverTelemetryManager
38
+ * @param requestAuthority
39
+ * @param requestCorrelationId
40
+ */
41
+ protected getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string): Promise<ClientConfiguration>;
42
+ /**
43
+ * @param hash
44
+ * @param interactionType
45
+ */
46
+ protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string;
47
+ /**
48
+ * Used to get a discovered version of the default authority.
49
+ * @param requestAuthority
50
+ * @param requestCorrelationId
51
+ */
52
+ protected getDiscoveredAuthority(requestAuthority?: string): Promise<Authority>;
53
+ /**
54
+ * Helper to validate app environment before making a request.
55
+ * @param request
56
+ * @param interactionType
57
+ */
58
+ protected preflightInteractiveRequest(request: RedirectRequest | PopupRequest, interactionType: InteractionType): AuthorizationUrlRequest;
59
+ /**
60
+ * Helper to initialize required request parameters for interactive APIs and ssoSilent()
61
+ * @param request
62
+ * @param interactionType
63
+ */
64
+ protected initializeAuthorizationRequest(request: RedirectRequest | PopupRequest | SsoSilentRequest, interactionType: InteractionType): AuthorizationUrlRequest;
65
+ }
66
+ //# sourceMappingURL=StandardInteractionClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,8BAA8B,EAAa,uBAAuB,EAAE,mBAAmB,EAAoB,SAAS,EAAgE,uBAAuB,EAA4C,MAAM,oBAAoB,CAAC;AACpU,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;gBAElC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,MAAM;IAK3M;;;OAGG;cACa,kCAAkC,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAiB7H;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,uBAAuB;IAqC7F;;;;OAIG;cACa,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM7I;;;;;OAKG;cACa,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiC/I;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAqBhI;;;;OAIG;cACa,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBrF;;;;OAIG;IACH,SAAS,CAAC,2BAA2B,CAAC,OAAO,EAAE,eAAe,GAAC,YAAY,EAAE,eAAe,EAAE,eAAe,GAAG,uBAAuB;IAavI;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CAAC,OAAO,EAAE,eAAe,GAAC,YAAY,GAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,GAAG,uBAAuB;CAwC9J"}
@@ -0,0 +1,249 @@
1
+ /*! @azure/msal-browser v2.19.0 2021-11-02 */
2
+ 'use strict';
3
+ import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
+ import { Constants, UrlString, AuthorizationCodeClient, AuthorityFactory, ProtocolUtils, ResponseMode, StringUtils } from '@azure/msal-common';
5
+ import { BaseInteractionClient } from './BaseInteractionClient.js';
6
+ import { BrowserConstants } from '../utils/BrowserConstants.js';
7
+ import { version } from '../packageMetadata.js';
8
+ import { BrowserAuthError } from '../error/BrowserAuthError.js';
9
+ import { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';
10
+ import { BrowserUtils } from '../utils/BrowserUtils.js';
11
+
12
+ /*
13
+ * Copyright (c) Microsoft Corporation. All rights reserved.
14
+ * Licensed under the MIT License.
15
+ */
16
+ /**
17
+ * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
18
+ */
19
+ var StandardInteractionClient = /** @class */ (function (_super) {
20
+ __extends(StandardInteractionClient, _super);
21
+ function StandardInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, correlationId) {
22
+ var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, correlationId) || this;
23
+ _this.navigationClient = navigationClient;
24
+ return _this;
25
+ }
26
+ /**
27
+ * Generates an auth code request tied to the url request.
28
+ * @param request
29
+ */
30
+ StandardInteractionClient.prototype.initializeAuthorizationCodeRequest = function (request) {
31
+ return __awaiter(this, void 0, void 0, function () {
32
+ var generatedPkceParams, authCodeRequest;
33
+ return __generator(this, function (_a) {
34
+ switch (_a.label) {
35
+ case 0:
36
+ this.logger.verbose("initializeAuthorizationRequest called", request.correlationId);
37
+ return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];
38
+ case 1:
39
+ generatedPkceParams = _a.sent();
40
+ authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: "", codeVerifier: generatedPkceParams.verifier });
41
+ request.codeChallenge = generatedPkceParams.challenge;
42
+ request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;
43
+ return [2 /*return*/, authCodeRequest];
44
+ }
45
+ });
46
+ });
47
+ };
48
+ /**
49
+ * Initializer for the logout request.
50
+ * @param logoutRequest
51
+ */
52
+ StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {
53
+ this.logger.verbose("initializeLogoutRequest called", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);
54
+ // Check if interaction is in progress. Throw error if true.
55
+ if (this.browserStorage.isInteractionInProgress()) {
56
+ throw BrowserAuthError.createInteractionInProgressError();
57
+ }
58
+ var validLogoutRequest = __assign({ correlationId: this.browserCrypto.createNewGuid() }, logoutRequest);
59
+ /*
60
+ * Only set redirect uri if logout request isn't provided or the set uri isn't null.
61
+ * Otherwise, use passed uri, config, or current page.
62
+ */
63
+ if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {
64
+ if (logoutRequest && logoutRequest.postLogoutRedirectUri) {
65
+ this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId);
66
+ validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());
67
+ }
68
+ else if (this.config.auth.postLogoutRedirectUri === null) {
69
+ this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId);
70
+ }
71
+ else if (this.config.auth.postLogoutRedirectUri) {
72
+ this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId);
73
+ validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());
74
+ }
75
+ else {
76
+ this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId);
77
+ validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());
78
+ }
79
+ }
80
+ else {
81
+ this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId);
82
+ }
83
+ return validLogoutRequest;
84
+ };
85
+ /**
86
+ * Creates an Authorization Code Client with the given authority, or the default authority.
87
+ * @param serverTelemetryManager
88
+ * @param authorityUrl
89
+ */
90
+ StandardInteractionClient.prototype.createAuthCodeClient = function (serverTelemetryManager, authorityUrl) {
91
+ return __awaiter(this, void 0, void 0, function () {
92
+ var clientConfig;
93
+ return __generator(this, function (_a) {
94
+ switch (_a.label) {
95
+ case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl)];
96
+ case 1:
97
+ clientConfig = _a.sent();
98
+ return [2 /*return*/, new AuthorizationCodeClient(clientConfig)];
99
+ }
100
+ });
101
+ });
102
+ };
103
+ /**
104
+ * Creates a Client Configuration object with the given request authority, or the default authority.
105
+ * @param serverTelemetryManager
106
+ * @param requestAuthority
107
+ * @param requestCorrelationId
108
+ */
109
+ StandardInteractionClient.prototype.getClientConfiguration = function (serverTelemetryManager, requestAuthority) {
110
+ return __awaiter(this, void 0, void 0, function () {
111
+ var discoveredAuthority;
112
+ return __generator(this, function (_a) {
113
+ switch (_a.label) {
114
+ case 0:
115
+ this.logger.verbose("getClientConfiguration called");
116
+ return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority)];
117
+ case 1:
118
+ discoveredAuthority = _a.sent();
119
+ return [2 /*return*/, {
120
+ authOptions: {
121
+ clientId: this.config.auth.clientId,
122
+ authority: discoveredAuthority,
123
+ clientCapabilities: this.config.auth.clientCapabilities
124
+ },
125
+ systemOptions: {
126
+ tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,
127
+ preventCorsPreflight: true
128
+ },
129
+ loggerOptions: {
130
+ loggerCallback: this.config.system.loggerOptions.loggerCallback,
131
+ piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,
132
+ logLevel: this.config.system.loggerOptions.logLevel,
133
+ correlationId: this.correlationId
134
+ },
135
+ cryptoInterface: this.browserCrypto,
136
+ networkInterface: this.networkClient,
137
+ storageInterface: this.browserStorage,
138
+ serverTelemetryManager: serverTelemetryManager,
139
+ libraryInfo: {
140
+ sku: BrowserConstants.MSAL_SKU,
141
+ version: version,
142
+ cpu: "",
143
+ os: ""
144
+ }
145
+ }];
146
+ }
147
+ });
148
+ });
149
+ };
150
+ /**
151
+ * @param hash
152
+ * @param interactionType
153
+ */
154
+ StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (hash, interactionType, requestCorrelationId) {
155
+ this.logger.verbose("validateAndExtractStateFromHash called", requestCorrelationId);
156
+ // Deserialize hash fragment response parameters.
157
+ var serverParams = UrlString.getDeserializedHash(hash);
158
+ if (!serverParams.state) {
159
+ throw BrowserAuthError.createHashDoesNotContainStateError();
160
+ }
161
+ var platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);
162
+ if (!platformStateObj) {
163
+ throw BrowserAuthError.createUnableToParseStateError();
164
+ }
165
+ if (platformStateObj.interactionType !== interactionType) {
166
+ throw BrowserAuthError.createStateInteractionTypeMismatchError();
167
+ }
168
+ this.logger.verbose("Returning state from hash", requestCorrelationId);
169
+ return serverParams.state;
170
+ };
171
+ /**
172
+ * Used to get a discovered version of the default authority.
173
+ * @param requestAuthority
174
+ * @param requestCorrelationId
175
+ */
176
+ StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) {
177
+ return __awaiter(this, void 0, void 0, function () {
178
+ var authorityOptions;
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0:
182
+ this.logger.verbose("getDiscoveredAuthority called");
183
+ authorityOptions = {
184
+ protocolMode: this.config.auth.protocolMode,
185
+ knownAuthorities: this.config.auth.knownAuthorities,
186
+ cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
187
+ authorityMetadata: this.config.auth.authorityMetadata
188
+ };
189
+ if (!requestAuthority) return [3 /*break*/, 2];
190
+ this.logger.verbose("Creating discovered authority with request authority");
191
+ return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)];
192
+ case 1: return [2 /*return*/, _a.sent()];
193
+ case 2:
194
+ this.logger.verbose("Creating discovered authority with configured authority");
195
+ return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions)];
196
+ case 3: return [2 /*return*/, _a.sent()];
197
+ }
198
+ });
199
+ });
200
+ };
201
+ /**
202
+ * Helper to validate app environment before making a request.
203
+ * @param request
204
+ * @param interactionType
205
+ */
206
+ StandardInteractionClient.prototype.preflightInteractiveRequest = function (request, interactionType) {
207
+ this.logger.verbose("preflightInteractiveRequest called, validating app environment", request === null || request === void 0 ? void 0 : request.correlationId);
208
+ // block the reload if it occurred inside a hidden iframe
209
+ BrowserUtils.blockReloadInHiddenIframes();
210
+ // Check if interaction is in progress. Throw error if true.
211
+ if (this.browserStorage.isInteractionInProgress(false)) {
212
+ throw BrowserAuthError.createInteractionInProgressError();
213
+ }
214
+ return this.initializeAuthorizationRequest(request, interactionType);
215
+ };
216
+ /**
217
+ * Helper to initialize required request parameters for interactive APIs and ssoSilent()
218
+ * @param request
219
+ * @param interactionType
220
+ */
221
+ StandardInteractionClient.prototype.initializeAuthorizationRequest = function (request, interactionType) {
222
+ this.logger.verbose("initializeAuthorizationRequest called");
223
+ var redirectUri = this.getRedirectUri(request.redirectUri);
224
+ var browserState = {
225
+ interactionType: interactionType
226
+ };
227
+ var state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || "", browserState);
228
+ var validatedRequest = __assign(__assign({}, this.initializeBaseRequest(request)), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT });
229
+ var account = request.account || this.browserStorage.getActiveAccount();
230
+ if (account) {
231
+ this.logger.verbose("Setting validated request account");
232
+ this.logger.verbosePii("Setting validated request account: " + account);
233
+ validatedRequest.account = account;
234
+ }
235
+ // Check for ADAL/MSAL v1 SSO
236
+ if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {
237
+ var legacyLoginHint = this.browserStorage.getLegacyLoginHint();
238
+ if (legacyLoginHint) {
239
+ validatedRequest.loginHint = legacyLoginHint;
240
+ }
241
+ }
242
+ this.browserStorage.updateCacheEntries(validatedRequest.state, validatedRequest.nonce, validatedRequest.authority, validatedRequest.loginHint || "", validatedRequest.account || null);
243
+ return validatedRequest;
244
+ };
245
+ return StandardInteractionClient;
246
+ }(BaseInteractionClient));
247
+
248
+ export { StandardInteractionClient };
249
+ //# sourceMappingURL=StandardInteractionClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StandardInteractionClient.js","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n protected navigationClient: INavigationClient;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, correlationId);\n this.navigationClient = navigationClient;\n }\n \n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: \"\",\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n // Check if interaction is in progress. Throw error if true.\n if (this.browserStorage.isInteractionInProgress()) {\n throw BrowserAuthError.createInteractionInProgressError();\n }\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\");\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: \"\",\n os: \"\"\n }\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\");\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata\n };\n\n if (requestAuthority) {\n this.logger.verbose(\"Creating discovered authority with request authority\");\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n\n this.logger.verbose(\"Creating discovered authority with configured authority\");\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n\n /**\n * Helper to validate app environment before making a request.\n * @param request\n * @param interactionType\n */\n protected preflightInteractiveRequest(request: RedirectRequest|PopupRequest, interactionType: InteractionType): AuthorizationUrlRequest {\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\", request?.correlationId);\n // block the reload if it occurred inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n \n // Check if interaction is in progress. Throw error if true.\n if (this.browserStorage.isInteractionInProgress(false)) {\n throw BrowserAuthError.createInteractionInProgressError();\n }\n \n return this.initializeAuthorizationRequest(request, interactionType);\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): AuthorizationUrlRequest {\n this.logger.verbose(\"initializeAuthorizationRequest called\");\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state) || \"\",\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\");\n this.logger.verbosePii(`Setting validated request account: ${account}`);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n this.browserStorage.updateCacheEntries(validatedRequest.state, validatedRequest.nonce, validatedRequest.authority, validatedRequest.loginHint || \"\", validatedRequest.account || null);\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;AAsBA;;;;IAGwD,6CAAqB;IAGzE,mCAAY,MAA4B,EAAE,WAAgC,EAAE,aAAsB,EAAE,MAAc,EAAE,YAA0B,EAAE,gBAAmC,EAAE,aAAsB;QAA3M,YACI,kBAAM,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,SAEjF;QADG,KAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;KAC5C;;;;;IAMe,sEAAkC,GAAlD,UAAmD,OAAgC;;;;;;wBAC/E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;wBACxD,qBAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAA;;wBAAlE,mBAAmB,GAAG,SAA4C;wBAElE,eAAe,yBACd,OAAO,KACV,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,IAAI,EAAE,EAAE,EACR,YAAY,EAAE,mBAAmB,CAAC,QAAQ,GAC7C,CAAC;wBAEF,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC,SAAS,CAAC;wBACtD,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,0BAA0B,CAAC;wBAEnE,sBAAO,eAAe,EAAC;;;;KAC1B;;;;;IAMS,2DAAuB,GAAjC,UAAkC,aAAiC;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,CAAC,CAAC;;QAGpF,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAE;YAC/C,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;SAC7D;QAED,IAAM,kBAAkB,cACpB,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAC9C,aAAa,CACnB,CAAC;;;;;QAMF,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,qBAAqB,KAAK,IAAI,EAAE;YAChE,IAAI,aAAa,IAAI,aAAa,CAAC,qBAAqB,EAAE;gBACtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,4DAA4D,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACpH,kBAAkB,CAAC,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,qBAAqB,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;aAC1I;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE;gBACxD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sGAAsG,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;aACjK;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iDAAiD,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACzG,kBAAkB,CAAC,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;aAC7I;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,+CAA+C,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACvG,kBAAkB,CAAC,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;aACnI;SACJ;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,4EAA4E,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;SACvI;QAED,OAAO,kBAAkB,CAAC;KAC7B;;;;;;IAOe,wDAAoB,GAApC,UAAqC,sBAA8C,EAAE,YAAqB;;;;;4BAEjF,qBAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,YAAY,CAAC,EAAA;;wBAAtF,YAAY,GAAG,SAAuE;wBAC5F,sBAAO,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAC;;;;KACpD;;;;;;;IAQe,0DAAsB,GAAtC,UAAuC,sBAA8C,EAAE,gBAAyB;;;;;;wBAC5G,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;wBACzB,qBAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAA;;wBAAzE,mBAAmB,GAAG,SAAmD;wBAE/E,sBAAO;gCACH,WAAW,EAAE;oCACT,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;oCACnC,SAAS,EAAE,mBAAmB;oCAC9B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB;iCAC1D;gCACD,aAAa,EAAE;oCACX,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB;oCACvE,oBAAoB,EAAE,IAAI;iCAC7B;gCACD,aAAa,EAAE;oCACX,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc;oCAC/D,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB;oCACrE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ;oCACnD,aAAa,EAAE,IAAI,CAAC,aAAa;iCACpC;gCACD,eAAe,EAAE,IAAI,CAAC,aAAa;gCACnC,gBAAgB,EAAE,IAAI,CAAC,aAAa;gCACpC,gBAAgB,EAAE,IAAI,CAAC,cAAc;gCACrC,sBAAsB,EAAE,sBAAsB;gCAC9C,WAAW,EAAE;oCACT,GAAG,EAAE,gBAAgB,CAAC,QAAQ;oCAC9B,OAAO,EAAE,OAAO;oCAChB,GAAG,EAAE,EAAE;oCACP,EAAE,EAAE,EAAE;iCACT;6BACJ,EAAC;;;;KACL;;;;;IAMS,mEAA+B,GAAzC,UAA0C,IAAY,EAAE,eAAgC,EAAE,oBAA6B;QACnH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wCAAwC,EAAE,oBAAoB,CAAC,CAAC;;QAEpF,IAAM,YAAY,GAAoC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YACrB,MAAM,gBAAgB,CAAC,kCAAkC,EAAE,CAAC;SAC/D;QAED,IAAM,gBAAgB,GAAG,oBAAoB,CAAC,0BAA0B,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjH,IAAI,CAAC,gBAAgB,EAAE;YACnB,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;SAC1D;QAED,IAAI,gBAAgB,CAAC,eAAe,KAAK,eAAe,EAAE;YACtD,MAAM,gBAAgB,CAAC,uCAAuC,EAAE,CAAC;SACpE;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAC;QACvE,OAAO,YAAY,CAAC,KAAK,CAAC;KAC7B;;;;;;IAOe,0DAAsB,GAAtC,UAAuC,gBAAyB;;;;;;wBAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;wBAC/C,gBAAgB,GAAqB;4BACvC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY;4BAC3C,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB;4BACnD,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB;4BAC/D,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB;yBACxD,CAAC;6BAEE,gBAAgB,EAAhB,wBAAgB;wBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;wBACrE,qBAAM,gBAAgB,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAA;4BAAjJ,sBAAO,SAA0I,EAAC;;wBAGtJ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;wBACxE,qBAAM,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAA;4BAA3J,sBAAO,SAAoJ,EAAC;;;;KAC/J;;;;;;IAOS,+DAA2B,GAArC,UAAsC,OAAqC,EAAE,eAAgC;QACzG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gEAAgE,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,CAAC;;QAE9G,YAAY,CAAC,0BAA0B,EAAE,CAAC;;QAG1C,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;YACpD,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;SAC7D;QAED,OAAO,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KACxE;;;;;;IAOS,kEAA8B,GAAxC,UAAyC,OAAsD,EAAE,eAAgC;QAC7H,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC7D,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAM,YAAY,GAAuB;YACrC,eAAe,EAAE,eAAe;SACnC,CAAC;QAEF,IAAM,KAAK,GAAG,aAAa,CAAC,eAAe,CACvC,IAAI,CAAC,aAAa,EAClB,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAChC,YAAY,CACf,CAAC;QAEF,IAAM,gBAAgB,yBACf,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KACtC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAC1D,YAAY,EAAE,YAAY,CAAC,QAAQ,GACtC,CAAC;QAEF,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;QAC1E,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,wCAAsC,OAAS,CAAC,CAAC;YACxE,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;SACtC;;QAGD,IAAI,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;YAC7D,IAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACjE,IAAI,eAAe,EAAE;gBACjB,gBAAgB,CAAC,SAAS,GAAG,eAAe,CAAC;aAChD;SACJ;QAED,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS,IAAI,EAAE,EAAE,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAEvL,OAAO,gBAAgB,CAAC;KAC3B;IACL,gCAAC;AAAD,CAvOA,CAAwD,qBAAqB;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.16.0 2021-07-22 */
1
+ /*! @azure/msal-browser v2.19.0 2021-11-02 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, ClientAuthError, AuthorityFactory } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionHandler.js","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\n\r\nexport type InteractionParams = {};\r\n\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nexport abstract class InteractionHandler {\r\n\r\n protected authModule: AuthorizationCodeClient;\r\n protected browserStorage: BrowserCacheManager;\r\n protected authCodeRequest: CommonAuthorizationCodeRequest;\r\n protected browserRequestLogger: Logger;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.browserRequestLogger = browserRequestLogger;\r\n }\r\n\r\n /**\r\n * Function to enable user interaction.\r\n * @param requestUrl\r\n */\r\n abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise<HTMLIFrameElement> | Promise<void>;\r\n\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\r\n this.browserRequestLogger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n\r\n // Handle code response.\r\n const stateKey = this.browserStorage.generateStateKey(state);\r\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n\r\n // Get cached items\r\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n\r\n // Check for new cloud instance\r\n if (authCodeResponse.cloud_instance_host_name) {\r\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\r\n }\r\n\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n } else {\r\n const cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname \r\n * @param authority \r\n * @param networkModule \r\n */\r\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\r\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\r\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n }\r\n\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n protected checkCcsCredentials(): CcsCredential | null {\r\n // Look up ccs credential in temp cache\r\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred) as CcsCredential;\r\n } catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InteractionHandler.js","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger } from \"@azure/msal-common\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport abstract class InteractionHandler {\n\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected browserRequestLogger: Logger;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.browserRequestLogger = browserRequestLogger;\n }\n\n /**\n * Function to enable user interaction.\n * @param requestUrl\n */\n abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise<HTMLIFrameElement> | Promise<void>;\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.browserRequestLogger.verbose(\"InteractionHandler.handleCodeResponse called\");\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Updates authority based on cloudInstanceHostname\n * @param cloudInstanceHostname \n * @param authority \n * @param networkModule \n */\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n this.authModule.updateAuthority(cloudInstanceAuthority);\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\"Cache credential could not be parsed\");\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n }\n }\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { CommonAuthorizationCodeRequest, AuthorizationCodeClient, Logger } from "@azure/msal-common";
2
2
  import { InteractionHandler, InteractionParams } from "./InteractionHandler";
3
3
  import { BrowserCacheManager } from "../cache/BrowserCacheManager";
4
+ import { PopupWindowAttributes } from "../utils/PopupUtils";
4
5
  export declare type PopupParams = InteractionParams & {
5
6
  popup?: Window | null;
6
7
  popupName: string;
8
+ popupWindowAttributes: PopupWindowAttributes;
7
9
  };
8
10
  /**
9
11
  * This class implements the interaction handler base class for browsers. It is written specifically for handling
@@ -1 +1 @@
1
- {"version":3,"file":"PopupHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/PopupHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,8BAA8B,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,oBAAY,WAAW,GAAG,iBAAiB,GAAG;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC;AAEF;;;GAGG;AACH,qBAAa,YAAa,SAAQ,kBAAkB;IAChD,OAAO,CAAC,UAAU,CAAa;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM;IAOpK;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM;IAepE;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkB5D"}
1
+ {"version":3,"file":"PopupHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/PopupHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,8BAA8B,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7H,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAGxE,oBAAY,WAAW,GAAG,iBAAiB,GAAG;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,qBAAqB,CAAA;CAC/C,CAAC;AAEF;;;GAGG;AACH,qBAAa,YAAa,SAAQ,kBAAkB;IAChD,OAAO,CAAC,UAAU,CAAa;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM;IAOpK;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM;IAepE;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkB5D"}
@@ -1,10 +1,9 @@
1
- /*! @azure/msal-browser v2.16.0 2021-07-22 */
1
+ /*! @azure/msal-browser v2.19.0 2021-11-02 */
2
2
  'use strict';
3
3
  import { __extends } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, UrlString } from '@azure/msal-common';
5
5
  import { InteractionHandler } from './InteractionHandler.js';
6
6
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
7
- import { TemporaryCacheKeys, BrowserConstants } from '../utils/BrowserConstants.js';
8
7
  import { PopupUtils } from '../utils/PopupUtils.js';
9
8
  import { BrowserUtils } from '../utils/BrowserUtils.js';
10
9
 
@@ -32,10 +31,10 @@ var PopupHandler = /** @class */ (function (_super) {
32
31
  // Check that request url is not empty.
33
32
  if (!StringUtils.isEmpty(requestUrl)) {
34
33
  // Set interaction status in the library.
35
- this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);
34
+ this.browserStorage.setInteractionInProgress(true);
36
35
  this.browserRequestLogger.infoPii("Navigate to: " + requestUrl);
37
36
  // Open the popup window to requestUrl.
38
- return this.popupUtils.openPopup(requestUrl, params.popupName, params.popup);
37
+ return this.popupUtils.openPopup(requestUrl, params);
39
38
  }
40
39
  else {
41
40
  // Throw error if request URL is empty.
@@ -1 +1 @@
1
- {"version":3,"file":"PopupHandler.js","sources":["../../src/interaction_handler/PopupHandler.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Logger } from \"@azure/msal-common\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserConstants, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { PopupUtils } from \"../utils/PopupUtils\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\n\r\nexport type PopupParams = InteractionParams & {\r\n popup?: Window|null;\r\n popupName: string\r\n};\r\n\r\n/**\r\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\r\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\r\n */\r\nexport class PopupHandler extends InteractionHandler {\r\n private popupUtils: PopupUtils;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\r\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\r\n\r\n // Properly sets this reference for the unload event.\r\n this.popupUtils = new PopupUtils(storageImpl, browserRequestLogger);\r\n }\r\n\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.INTERACTION_STATUS_KEY, BrowserConstants.INTERACTION_IN_PROGRESS_VALUE, true);\r\n this.browserRequestLogger.infoPii(`Navigate to: ${requestUrl}`);\r\n // Open the popup window to requestUrl.\r\n return this.popupUtils.openPopup(requestUrl, params.popupName, params.popup);\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - milliseconds until timeout\r\n */\r\n monitorPopupForHash(popupWindow: Window): Promise<string> {\r\n return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(() => {\r\n const contentHash = popupWindow.location.hash;\r\n BrowserUtils.clearHash(popupWindow);\r\n this.popupUtils.cleanPopup(popupWindow);\r\n\r\n if (!contentHash) {\r\n throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\r\n }\r\n\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n return contentHash;\r\n } else {\r\n throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\r\n }\r\n }\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;AAAA;;;;AAkBA;;;;;IAIkC,gCAAkB;IAGhD,sBAAY,cAAuC,EAAE,WAAgC,EAAE,eAA+C,EAAE,oBAA4B;QAApK,YACI,kBAAM,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,CAAC,SAI5E;;QADG,KAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;;KACvE;;;;;IAMD,0CAAmB,GAAnB,UAAoB,UAAkB,EAAE,MAAmB;;QAEvD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;YAElC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;YACvI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,kBAAgB,UAAY,CAAC,CAAC;;YAEhE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SAChF;aAAM;;YAEH,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzD,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;SAC1D;KACJ;;;;;;IAOD,0CAAmB,GAAnB,UAAoB,WAAmB;QAAvC,iBAiBC;QAhBG,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9C,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpC,KAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAExC,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1E;YAED,IAAI,SAAS,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE;gBACpD,OAAO,WAAW,CAAC;aACtB;iBAAM;gBACH,MAAM,gBAAgB,CAAC,4CAA4C,EAAE,CAAC;aACzE;SACJ,CACA,CAAC;KACL;IACL,mBAAC;AAAD,CApDA,CAAkC,kBAAkB;;;;"}
1
+ {"version":3,"file":"PopupHandler.js","sources":["../../src/interaction_handler/PopupHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { PopupWindowAttributes, PopupUtils } from \"../utils/PopupUtils\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\n\nexport type PopupParams = InteractionParams & {\n popup?: Window|null;\n popupName: string;\n popupWindowAttributes: PopupWindowAttributes\n};\n\n/**\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\n */\nexport class PopupHandler extends InteractionHandler {\n private popupUtils: PopupUtils;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n\n // Properly sets this reference for the unload event.\n this.popupUtils = new PopupUtils(storageImpl, browserRequestLogger);\n }\n\n /**\n * Opens a popup window with given request Url.\n * @param requestUrl\n */\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\n // Check that request url is not empty.\n if (!StringUtils.isEmpty(requestUrl)) {\n // Set interaction status in the library.\n this.browserStorage.setInteractionInProgress(true);\n this.browserRequestLogger.infoPii(`Navigate to: ${requestUrl}`);\n // Open the popup window to requestUrl.\n return this.popupUtils.openPopup(requestUrl, params);\n } else {\n // Throw error if request URL is empty.\n this.browserRequestLogger.error(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\n * @param popupWindow - window that is being monitored\n * @param timeout - milliseconds until timeout\n */\n monitorPopupForHash(popupWindow: Window): Promise<string> {\n return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(() => {\n const contentHash = popupWindow.location.hash;\n BrowserUtils.clearHash(popupWindow);\n this.popupUtils.cleanPopup(popupWindow);\n\n if (!contentHash) {\n throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\n }\n\n if (UrlString.hashContainsKnownProperties(contentHash)) {\n return contentHash;\n } else {\n throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\n }\n }\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;AAkBA;;;;;IAIkC,gCAAkB;IAGhD,sBAAY,cAAuC,EAAE,WAAgC,EAAE,eAA+C,EAAE,oBAA4B;QAApK,YACI,kBAAM,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,CAAC,SAI5E;;QADG,KAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;;KACvE;;;;;IAMD,0CAAmB,GAAnB,UAAoB,UAAkB,EAAE,MAAmB;;QAEvD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;YAElC,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,kBAAgB,UAAY,CAAC,CAAC;;YAEhE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;SACxD;aAAM;;YAEH,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACzD,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;SAC1D;KACJ;;;;;;IAOD,0CAAmB,GAAnB,UAAoB,WAAmB;QAAvC,iBAiBC;QAhBG,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;YAC/D,IAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9C,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpC,KAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAExC,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1E;YAED,IAAI,SAAS,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE;gBACpD,OAAO,WAAW,CAAC;aACtB;iBAAM;gBACH,MAAM,gBAAgB,CAAC,4CAA4C,EAAE,CAAC;aACzE;SACJ,CACA,CAAC;KACL;IACL,mBAAC;AAAD,CApDA,CAAkC,kBAAkB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAe,8BAA8B,EAAE,OAAO,EAAE,oBAAoB,EAAmB,SAAS,EAAE,cAAc,EAAmB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG9M,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,oBAAY,cAAc,GAAG,iBAAiB,GAAG;IAC7C,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,eAAgB,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,aAAa,CAAU;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IAK5L;;;OAGG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CpF;;;OAGG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuDvK"}
1
+ {"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAe,8BAA8B,EAAE,OAAO,EAAE,oBAAoB,EAAmB,SAAS,EAAE,cAAc,EAAmB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG9M,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,oBAAY,cAAc,GAAG,iBAAiB,GAAG;IAC7C,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,eAAgB,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,aAAa,CAAU;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IAK5L;;;OAGG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDpF;;;OAGG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuDvK"}