@azure/msal-browser 2.19.0 → 2.19.1

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 (100) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +212 -212
  3. package/dist/_virtual/_tslib.js +1 -1
  4. package/dist/app/ClientApplication.js +1 -1
  5. package/dist/app/ClientApplication.js.map +1 -1
  6. package/dist/app/IPublicClientApplication.js +1 -1
  7. package/dist/app/IPublicClientApplication.js.map +1 -1
  8. package/dist/app/PublicClientApplication.js +1 -1
  9. package/dist/app/PublicClientApplication.js.map +1 -1
  10. package/dist/cache/AsyncMemoryStorage.js +1 -1
  11. package/dist/cache/AsyncMemoryStorage.js.map +1 -1
  12. package/dist/cache/BrowserCacheManager.d.ts +5 -1
  13. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  14. package/dist/cache/BrowserCacheManager.js +20 -1
  15. package/dist/cache/BrowserCacheManager.js.map +1 -1
  16. package/dist/cache/BrowserStorage.js +1 -1
  17. package/dist/cache/BrowserStorage.js.map +1 -1
  18. package/dist/cache/DatabaseStorage.js +1 -1
  19. package/dist/cache/DatabaseStorage.js.map +1 -1
  20. package/dist/cache/MemoryStorage.js +1 -1
  21. package/dist/cache/MemoryStorage.js.map +1 -1
  22. package/dist/cache/TokenCache.js +1 -1
  23. package/dist/cache/TokenCache.js.map +1 -1
  24. package/dist/config/Configuration.js +1 -1
  25. package/dist/config/Configuration.js.map +1 -1
  26. package/dist/crypto/BrowserCrypto.js +1 -1
  27. package/dist/crypto/BrowserCrypto.js.map +1 -1
  28. package/dist/crypto/CryptoOps.js +1 -1
  29. package/dist/crypto/CryptoOps.js.map +1 -1
  30. package/dist/crypto/GuidGenerator.js +1 -1
  31. package/dist/crypto/GuidGenerator.js.map +1 -1
  32. package/dist/crypto/PkceGenerator.js +1 -1
  33. package/dist/crypto/PkceGenerator.js.map +1 -1
  34. package/dist/crypto/SignedHttpRequest.js +1 -1
  35. package/dist/crypto/SignedHttpRequest.js.map +1 -1
  36. package/dist/encode/Base64Decode.js +1 -1
  37. package/dist/encode/Base64Decode.js.map +1 -1
  38. package/dist/encode/Base64Encode.js +1 -1
  39. package/dist/encode/Base64Encode.js.map +1 -1
  40. package/dist/error/BrowserAuthError.js +1 -1
  41. package/dist/error/BrowserAuthError.js.map +1 -1
  42. package/dist/error/BrowserConfigurationAuthError.js +1 -1
  43. package/dist/error/BrowserConfigurationAuthError.js.map +1 -1
  44. package/dist/event/EventHandler.js +1 -1
  45. package/dist/event/EventHandler.js.map +1 -1
  46. package/dist/event/EventMessage.js +1 -1
  47. package/dist/event/EventMessage.js.map +1 -1
  48. package/dist/event/EventType.js +1 -1
  49. package/dist/event/EventType.js.map +1 -1
  50. package/dist/index.cjs.js +2003 -1959
  51. package/dist/index.cjs.js.map +1 -1
  52. package/dist/index.js +1 -1
  53. package/dist/interaction_client/BaseInteractionClient.js +1 -1
  54. package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
  55. package/dist/interaction_client/PopupClient.js +1 -1
  56. package/dist/interaction_client/PopupClient.js.map +1 -1
  57. package/dist/interaction_client/RedirectClient.js +1 -1
  58. package/dist/interaction_client/RedirectClient.js.map +1 -1
  59. package/dist/interaction_client/SilentCacheClient.js +1 -1
  60. package/dist/interaction_client/SilentCacheClient.js.map +1 -1
  61. package/dist/interaction_client/SilentIframeClient.js +1 -1
  62. package/dist/interaction_client/SilentIframeClient.js.map +1 -1
  63. package/dist/interaction_client/SilentRefreshClient.js +1 -1
  64. package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
  65. package/dist/interaction_client/StandardInteractionClient.js +1 -1
  66. package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
  67. package/dist/interaction_handler/InteractionHandler.js +1 -1
  68. package/dist/interaction_handler/InteractionHandler.js.map +1 -1
  69. package/dist/interaction_handler/PopupHandler.js +1 -1
  70. package/dist/interaction_handler/PopupHandler.js.map +1 -1
  71. package/dist/interaction_handler/RedirectHandler.js +1 -1
  72. package/dist/interaction_handler/RedirectHandler.js.map +1 -1
  73. package/dist/interaction_handler/SilentHandler.js +1 -1
  74. package/dist/interaction_handler/SilentHandler.js.map +1 -1
  75. package/dist/navigation/NavigationClient.js +1 -1
  76. package/dist/navigation/NavigationClient.js.map +1 -1
  77. package/dist/network/FetchClient.js +1 -1
  78. package/dist/network/FetchClient.js.map +1 -1
  79. package/dist/network/XhrClient.js +1 -1
  80. package/dist/network/XhrClient.js.map +1 -1
  81. package/dist/packageMetadata.js +1 -1
  82. package/dist/packageMetadata.js.map +1 -1
  83. package/dist/utils/BrowserConstants.js +1 -1
  84. package/dist/utils/BrowserConstants.js.map +1 -1
  85. package/dist/utils/BrowserProtocolUtils.js +1 -1
  86. package/dist/utils/BrowserProtocolUtils.js.map +1 -1
  87. package/dist/utils/BrowserStringUtils.js +1 -1
  88. package/dist/utils/BrowserStringUtils.js.map +1 -1
  89. package/dist/utils/BrowserUtils.js +1 -1
  90. package/dist/utils/BrowserUtils.js.map +1 -1
  91. package/dist/utils/MathUtils.js +1 -1
  92. package/dist/utils/MathUtils.js.map +1 -1
  93. package/dist/utils/PopupUtils.js +1 -1
  94. package/dist/utils/PopupUtils.js.map +1 -1
  95. package/lib/msal-browser.js +2003 -1959
  96. package/lib/msal-browser.js.map +1 -1
  97. package/lib/msal-browser.min.js +22 -22
  98. package/package.json +95 -95
  99. package/CHANGELOG.json +0 -1613
  100. package/CHANGELOG.md +0 -510
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, ThrottlingUtils, ClientAuthError } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectHandler.js","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError, Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n private browserCrypto: ICrypto;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, browserCrypto: ICrypto) {\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n this.browserCrypto = browserCrypto;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (!StringUtils.isEmpty(requestUrl)) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n }\n\n // Set interaction status in the library.\n this.browserStorage.setInteractionInProgress(true);\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n this.browserRequestLogger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false\n };\n \n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n } else {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n return;\n }\n } else {\n // Navigate window to request URL\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.browserRequestLogger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise<AuthenticationResult> {\n this.browserRequestLogger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\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 // Remove throttle if it exists\n if (clientId) {\n ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest);\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;IAoBqC,mCAAkB;IAInD,yBAAY,cAAuC,EAAE,WAAgC,EAAE,eAA+C,EAAE,oBAA4B,EAAE,aAAsB;QAA5L,YACI,kBAAM,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,CAAC,SAE5E;QADG,KAAI,CAAC,aAAa,GAAG,aAAa,CAAC;;KACtC;;;;;IAMK,6CAAmB,GAAzB,UAA0B,UAAkB,EAAE,MAAsB;;;;;;wBAChE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;6BAE5E,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAhC,wBAAgC;;wBAEhC,IAAI,MAAM,CAAC,iBAAiB,EAAE;4BAC1B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,gFAAgF,CAAC,CAAC;4BACpH,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;yBACxG;;wBAGD,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;wBACnD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;wBACnH,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;wBAC/E,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,uDAAqD,UAAY,CAAC,CAAC;wBAC/F,iBAAiB,GAAsB;4BACzC,KAAK,EAAE,KAAK,CAAC,oBAAoB;4BACjC,OAAO,EAAE,MAAM,CAAC,eAAe;4BAC/B,SAAS,EAAE,KAAK;yBACnB,CAAC;8BAGE,OAAO,MAAM,CAAC,kBAAkB,KAAK,UAAU,CAAA,EAA/C,wBAA+C;wBAC/C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC;wBACzG,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;8BAGnD,QAAQ,KAAK,KAAK,CAAA,EAAlB,wBAAkB;wBAClB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,0FAA0F,CAAC,CAAC;wBAC9H,qBAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;wBAC9E,sBAAO;;wBAEP,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,6FAA6F,CAAC,CAAC;wBACjI,sBAAO;;;;wBAIX,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC;wBAC5G,qBAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;wBAC9E,sBAAO;;;;wBAIX,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;wBAC7F,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;;;;;KAE9D;;;;;IAMK,4CAAkB,GAAxB,UAAyB,YAAoB,EAAE,KAAa,EAAE,SAAoB,EAAE,aAA6B,EAAE,QAAiB;;;;;;wBAChI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;;wBAG/E,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BACnC,MAAM,gBAAgB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;yBAC7D;;wBAGD,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;wBAG9C,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;wBACvD,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;wBACrE,IAAI,CAAC,YAAY,EAAE;4BACf,MAAM,eAAe,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;yBAClE;wBACK,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;wBAGtF,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;wBAC9D,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;;wBAGpE,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;6BAG9C,gBAAgB,CAAC,wBAAwB,EAAzC,wBAAyC;wBACzC,qBAAM,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,SAAS,EAAE,aAAa,CAAC,EAAA;;wBAA5G,SAA4G,CAAC;;;wBAGjH,gBAAgB,CAAC,KAAK,GAAG,WAAW,IAAI,SAAS,CAAC;wBAClD,gBAAgB,CAAC,KAAK,GAAG,YAAY,CAAC;;wBAGtC,IAAI,gBAAgB,CAAC,WAAW,EAAE;4BAC9B,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC;yBAClE;6BAAM;4BACG,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BACjD,IAAI,aAAa,EAAE;gCACf,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,aAAa,CAAC;6BACtD;yBACJ;;wBAGD,IAAI,QAAQ,EAAE;4BACV,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;yBACvF;wBAGqB,qBAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAA;;wBAA1F,aAAa,GAAG,SAA0E;wBAEhG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAC/C,sBAAO,aAAa,EAAC;;;;KACxB;IACL,sBAAC;AAAD,CAxHA,CAAqC,kBAAkB;;;;"}
1
+ {"version":3,"file":"RedirectHandler.js","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError, Logger } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\r\n\r\nexport type RedirectParams = InteractionParams & {\r\n navigationClient: INavigationClient;\r\n redirectTimeout: number;\r\n redirectStartPage: string;\r\n onRedirectNavigate?: (url: string) => void | boolean;\r\n};\r\n\r\nexport class RedirectHandler extends InteractionHandler {\r\n\r\n private browserCrypto: ICrypto;\r\n\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, browserCrypto: ICrypto) {\r\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\r\n this.browserCrypto = browserCrypto;\r\n }\r\n\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n // Navigate if valid URL\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n\r\n // Set interaction status in the library.\r\n this.browserStorage.setInteractionInProgress(true);\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.browserRequestLogger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\r\n const navigationOptions: NavigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n \r\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\r\n if (typeof params.onRedirectNavigate === \"function\") {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n const navigate = params.onRedirectNavigate(requestUrl);\r\n\r\n // Returning false from onRedirectNavigate will stop navigation\r\n if (navigate !== false) {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n } else {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return;\r\n }\r\n } else {\r\n // Navigate window to request URL\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\r\n return;\r\n }\r\n } else {\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n }\r\n\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n async handleCodeResponse(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise<AuthenticationResult> {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n\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 // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\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 // Remove throttle if it exists\r\n if (clientId) {\r\n ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest);\r\n }\r\n\r\n // Acquire token with retrieved code.\r\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\r\n\r\n this.browserStorage.cleanRequestByState(state);\r\n return tokenResponse;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, Constants, UrlString } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"SilentHandler.js","sources":["../../src/interaction_handler/SilentHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler } from \"./InteractionHandler\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\n\nexport class SilentHandler extends InteractionHandler {\n\n private navigateFrameWait: number;\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, navigateFrameWait: number) {\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n this.navigateFrameWait = navigateFrameWait;\n }\n\n /**\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\n * @param urlNavigate\n * @param userRequestScopes\n */\n async initiateAuthRequest(requestUrl: string): Promise<HTMLIFrameElement> {\n if (StringUtils.isEmpty(requestUrl)) {\n // Throw error if request URL is empty.\n this.browserRequestLogger.info(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\n }\n\n /**\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\n * @param iframe\n * @param timeout\n */\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise<string> {\n return new Promise((resolve, reject) => {\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n this.browserRequestLogger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\n }\n\n /*\n * Polling for iframes can be purely timing based,\n * since we don't need to account for interaction.\n */\n const nowMark = window.performance.now();\n const timeoutMark = nowMark + timeout;\n\n const intervalId = setInterval(() => {\n if (window.performance.now() > timeoutMark) {\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n const contentWindow = iframe.contentWindow;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\n } catch (e) {}\n\n if (StringUtils.isEmpty(href)) {\n return;\n }\n\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\n if (UrlString.hashContainsKnownProperties(contentHash)) {\n // Success case\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n resolve(contentHash);\n return;\n }\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * @hidden\n * Loads iframe with authorization endpoint URL\n * @ignore\n */\n private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\n /*\n * This trick overcomes iframe navigation in IE\n * IE does not load the page consistently in iframe\n */\n\n return new Promise((resolve, reject) => {\n const frameHandle = this.createHiddenIframe();\n\n setTimeout(() => {\n if (!frameHandle) {\n reject(\"Unable to load iframe\");\n return;\n }\n\n frameHandle.src = urlNavigate;\n\n resolve(frameHandle);\n }, this.navigateFrameWait);\n });\n }\n\n /**\n * @hidden\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\n * @param urlNavigate\n * @param frameName\n * @param logger\n */\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\n const frameHandle = this.createHiddenIframe();\n\n frameHandle.src = urlNavigate;\n\n return frameHandle;\n }\n\n /**\n * @hidden\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\n * @ignore\n */\n private createHiddenIframe(): HTMLIFrameElement {\n const authFrame = document.createElement(\"iframe\");\n\n authFrame.style.visibility = \"hidden\";\n authFrame.style.position = \"absolute\";\n authFrame.style.width = authFrame.style.height = \"0\";\n authFrame.style.border = \"0\";\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\n\n return authFrame;\n }\n\n /**\n * @hidden\n * Removes a hidden iframe from the page.\n * @ignore\n */\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\n if (document.body === iframe.parentNode) {\n document.body.removeChild(iframe);\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SilentHandler.js","sources":["../../src/interaction_handler/SilentHandler.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, Constants, Logger } from \"@azure/msal-common\";\r\nimport { InteractionHandler } from \"./InteractionHandler\";\r\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\r\n\r\nexport class SilentHandler extends InteractionHandler {\r\n\r\n private navigateFrameWait: number;\r\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, navigateFrameWait: number) {\r\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\r\n this.navigateFrameWait = navigateFrameWait;\r\n }\r\n\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n async initiateAuthRequest(requestUrl: string): Promise<HTMLIFrameElement> {\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n\r\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\r\n }\r\n\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n this.browserRequestLogger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\r\n }\r\n\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n const nowMark = window.performance.now();\r\n const timeoutMark = nowMark + timeout;\r\n\r\n const intervalId = setInterval(() => {\r\n if (window.performance.now() > timeoutMark) {\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n const contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n } catch (e) {}\r\n\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n\r\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n\r\n return new Promise((resolve, reject) => {\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n setTimeout(() => {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n resolve(frameHandle);\r\n }, this.navigateFrameWait);\r\n });\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\r\n const frameHandle = this.createHiddenIframe();\r\n\r\n frameHandle.src = urlNavigate;\r\n\r\n return frameHandle;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n private createHiddenIframe(): HTMLIFrameElement {\r\n const authFrame = document.createElement(\"iframe\");\r\n\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n\r\n return authFrame;\r\n }\r\n\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationClient.js","sources":["../../src/navigation/NavigationClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INavigationClient } from \"./INavigationClient\";\nimport { NavigationOptions } from \"./NavigationOptions\";\n\nexport class NavigationClient implements INavigationClient {\n /**\n * Navigates to other pages within the same web application\n * @param url \n * @param options \n */\n navigateInternal(url: string, options: NavigationOptions): Promise<boolean>{\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Navigates to other pages outside the web application i.e. the Identity Provider\n * @param url \n * @param options \n */\n navigateExternal(url: string, options: NavigationOptions): Promise<boolean> {\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Default navigation implementation invoked by the internal and external functions\n * @param url \n * @param options \n */\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise<boolean> {\n if (options.noHistory) {\n window.location.replace(url);\n } else {\n window.location.assign(url);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, options.timeout);\n });\n }\n}\n"],"names":[],"mappings":";;AAAA;;;;;IAQA;KAqCC;;;;;;IA/BG,2CAAgB,GAAhB,UAAiB,GAAW,EAAE,OAA0B;QACpD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;;;;;;IAOD,2CAAgB,GAAhB,UAAiB,GAAW,EAAE,OAA0B;QACpD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;;;;;;IAOc,sCAAqB,GAApC,UAAqC,GAAW,EAAE,OAA0B;QACxE,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAChC;aAAM;YACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;YACvB,UAAU,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SACvB,CAAC,CAAC;KACN;IACL,uBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"NavigationClient.js","sources":["../../src/navigation/NavigationClient.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INavigationClient } from \"./INavigationClient\";\r\nimport { NavigationOptions } from \"./NavigationOptions\";\r\n\r\nexport class NavigationClient implements INavigationClient {\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url \r\n * @param options \r\n */\r\n navigateInternal(url: string, options: NavigationOptions): Promise<boolean>{\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url \r\n * @param options \r\n */\r\n navigateExternal(url: string, options: NavigationOptions): Promise<boolean> {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n }\r\n\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url \r\n * @param options \r\n */\r\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise<boolean> {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n } else {\r\n window.location.assign(url);\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;;IAQA;KAqCC;;;;;;IA/BG,2CAAgB,GAAhB,UAAiB,GAAW,EAAE,OAA0B;QACpD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;;;;;;IAOD,2CAAgB,GAAhB,UAAiB,GAAW,EAAE,OAA0B;QACpD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KAC/D;;;;;;IAOc,sCAAqB,GAApC,UAAqC,GAAW,EAAE,OAA0B;QACxE,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAChC;aAAM;YACH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;YACvB,UAAU,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;SACvB,CAAC,CAAC;KACN;IACL,uBAAC;AAAD,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
@@ -1 +1 @@
1
- {"version":3,"file":"FetchClient.js","sources":["../../src/network/FetchClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class FetchClient implements INetworkModule {\n\n /**\n * Fetch Client for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.GET,\n headers: this.getFetchHeaders(options)\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createGetRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Fetch Client for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n const reqBody = (options && options.body) || \"\";\n\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.POST,\n headers: this.getFetchHeaders(options),\n body: reqBody\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createPostRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Get Fetch API Headers object from string map\n * @param inputHeaders \n */\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\n const headers = new Headers();\n if (!(options && options.headers)) {\n return headers;\n }\n const optionsHeaders = options.headers;\n Object.keys(optionsHeaders).forEach((key) => {\n headers.append(key, optionsHeaders[key]);\n });\n return headers;\n }\n\n private getHeaderDict(headers: Headers): Record<string, string> {\n const headerDict: Record<string, string> = {};\n headers.forEach((value: string, key: string) => {\n headerDict[key] = value;\n });\n return headerDict;\n }\n}\n"],"names":[],"mappings":";;;;;;AAAA;;;;AASA;;;;IAGA;KA4FC;;;;;;;IApFS,yCAAmB,GAAzB,UAA6B,GAAW,EAAE,OAA+B;;;;;;;wBAGtD,qBAAM,KAAK,CAAC,GAAG,EAAE;gCACxB,MAAM,EAAE,iBAAiB,CAAC,GAAG;gCAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;6BACzC,CAAC,EAAA;;wBAHF,QAAQ,GAAG,SAGT,CAAC;;;;wBAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;4BACzB,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;yBAC9D;6BAAM;4BACH,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;yBAC7D;;;;4BAKG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;wBACvC,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAF/B,uBAEI,OAAI,IAAE,SAA0B,CAAA;4BAChC,SAAM,GAAE,QAAQ,CAAC,MAAM;iCACzB;;;wBAEF,MAAM,gBAAgB,CAAC,uCAAuC,CAAC,GAAG,CAAC,CAAC;;;;;KAE3E;;;;;;;IAQK,0CAAoB,GAA1B,UAA8B,GAAW,EAAE,OAA+B;;;;;;wBAChE,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;;;;wBAIjC,qBAAM,KAAK,CAAC,GAAG,EAAE;gCACxB,MAAM,EAAE,iBAAiB,CAAC,IAAI;gCAC9B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gCACtC,IAAI,EAAE,OAAO;6BAChB,CAAC,EAAA;;wBAJF,QAAQ,GAAG,SAIT,CAAC;;;;wBAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;4BACzB,MAAM,gBAAgB,CAAC,4BAA4B,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;yBAC/D;6BAAM;4BACH,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;yBAC7D;;;;4BAKG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;wBACvC,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAF/B,uBAEI,OAAI,IAAE,SAA0B,CAAA;4BAChC,SAAM,GAAE,QAAQ,CAAC,MAAM;iCACzB;;;wBAEF,MAAM,gBAAgB,CAAC,uCAAuC,CAAC,GAAG,CAAC,CAAC;;;;;KAE3E;;;;;IAMO,qCAAe,GAAvB,UAAwB,OAA+B;QACnD,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,OAAO,CAAC;SAClB;QACD,IAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YACpC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;KAClB;IAEO,mCAAa,GAArB,UAAsB,OAAgB;QAClC,IAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,UAAC,KAAa,EAAE,GAAW;YACvC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;KACrB;IACL,kBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"FetchClient.js","sources":["../../src/network/FetchClient.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nexport class FetchClient implements INetworkModule {\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n const reqBody = (options && options.body) || \"\";\r\n\r\n let response;\r\n try {\r\n response = await fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n });\r\n } catch (e) {\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e, url);\r\n } else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n\r\n try {\r\n return {\r\n headers: this.getHeaderDict(response.headers),\r\n body: await response.json() as T,\r\n status: response.status\r\n };\r\n } catch (e) {\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n }\r\n }\r\n\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders \r\n */\r\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\r\n const headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n const optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach((key) => {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n }\r\n\r\n private getHeaderDict(headers: Headers): Record<string, string> {\r\n const headerDict: Record<string, string> = {};\r\n headers.forEach((value: string, key: string) => {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;;;;AASA;;;;IAGA;KA4FC;;;;;;;IApFS,yCAAmB,GAAzB,UAA6B,GAAW,EAAE,OAA+B;;;;;;;wBAGtD,qBAAM,KAAK,CAAC,GAAG,EAAE;gCACxB,MAAM,EAAE,iBAAiB,CAAC,GAAG;gCAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;6BACzC,CAAC,EAAA;;wBAHF,QAAQ,GAAG,SAGT,CAAC;;;;wBAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;4BACzB,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;yBAC9D;6BAAM;4BACH,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;yBAC7D;;;;4BAKG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;wBACvC,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAF/B,uBAEI,OAAI,IAAE,SAA0B,CAAA;4BAChC,SAAM,GAAE,QAAQ,CAAC,MAAM;iCACzB;;;wBAEF,MAAM,gBAAgB,CAAC,uCAAuC,CAAC,GAAG,CAAC,CAAC;;;;;KAE3E;;;;;;;IAQK,0CAAoB,GAA1B,UAA8B,GAAW,EAAE,OAA+B;;;;;;wBAChE,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;;;;wBAIjC,qBAAM,KAAK,CAAC,GAAG,EAAE;gCACxB,MAAM,EAAE,iBAAiB,CAAC,IAAI;gCAC9B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gCACtC,IAAI,EAAE,OAAO;6BAChB,CAAC,EAAA;;wBAJF,QAAQ,GAAG,SAIT,CAAC;;;;wBAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;4BACzB,MAAM,gBAAgB,CAAC,4BAA4B,CAAC,GAAC,EAAE,GAAG,CAAC,CAAC;yBAC/D;6BAAM;4BACH,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,CAAC;yBAC7D;;;;4BAKG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;;wBACvC,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;4BAF/B,uBAEI,OAAI,IAAE,SAA0B,CAAA;4BAChC,SAAM,GAAE,QAAQ,CAAC,MAAM;iCACzB;;;wBAEF,MAAM,gBAAgB,CAAC,uCAAuC,CAAC,GAAG,CAAC,CAAC;;;;;KAE3E;;;;;IAMO,qCAAe,GAAvB,UAAwB,OAA+B;QACnD,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,OAAO,CAAC;SAClB;QACD,IAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG;YACpC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5C,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;KAClB;IAEO,mCAAa,GAArB,UAAsB,OAAgB;QAClC,IAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,UAAC,KAAa,EAAE,GAAW;YACvC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;KACrB;IACL,kBAAC;AAAD,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
@@ -1 +1 @@
1
- {"version":3,"file":"XhrClient.js","sources":["../../src/network/XhrClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This client implements the XMLHttpRequest class to send GET and POST requests.\n */\nexport class XhrClient implements INetworkModule {\n\n /**\n * XhrClient for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\n }\n\n /**\n * XhrClient for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\n }\n\n /**\n * Helper for XhrClient requests.\n * @param url \n * @param method \n * @param options \n */\n private sendRequestAsync<T>(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return new Promise<NetworkResponse<T>>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, /* async: */ true);\n this.setXhrHeaders(xhr, options);\n xhr.onload = (): void => {\n if (xhr.status < 200 || xhr.status >= 300) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n }\n try {\n const jsonResponse = JSON.parse(xhr.responseText) as T;\n const networkResponse: NetworkResponse<T> = {\n headers: this.getHeaderDict(xhr),\n body: jsonResponse,\n status: xhr.status\n };\n resolve(networkResponse);\n } catch (e) {\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\n }\n };\n\n xhr.onerror = (): void => {\n if (window.navigator.onLine) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n } else {\n reject(BrowserAuthError.createNoNetworkConnectivityError());\n }\n };\n\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\n xhr.send(options.body);\n } else if (method === HTTP_REQUEST_TYPE.GET) {\n xhr.send();\n } else {\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\n }\n });\n }\n\n /**\n * Helper to set XHR headers for request.\n * @param xhr \n * @param options \n */\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\n if (options && options.headers) {\n const headers = options.headers;\n Object.keys(headers).forEach((key: string) => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n }\n\n /**\n * Gets a string map of the headers received in the response.\n * \n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n * @param xhr \n */\n private getHeaderDict(xhr: XMLHttpRequest): Record<string, string> {\n const headerString = xhr.getAllResponseHeaders();\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\n const headerDict: Record<string, string> = {};\n headerArr.forEach((value: string) => {\n const parts = value.split(\": \");\n const headerName = parts.shift();\n const headerVal = parts.join(\": \");\n if (headerName && headerVal) {\n headerDict[headerName] = headerVal;\n }\n });\n\n return headerDict;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"XhrClient.js","sources":["../../src/network/XhrClient.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\r\n\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nexport class XhrClient implements INetworkModule {\r\n\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\r\n }\r\n\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url \r\n * @param headers \r\n * @param body \r\n */\r\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\r\n }\r\n\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url \r\n * @param method \r\n * @param options \r\n */\r\n private sendRequestAsync<T>(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\r\n return new Promise<NetworkResponse<T>>((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n this.setXhrHeaders(xhr, options);\r\n xhr.onload = (): void => {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n }\r\n try {\r\n const jsonResponse = JSON.parse(xhr.responseText) as T;\r\n const networkResponse: NetworkResponse<T> = {\r\n headers: this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n } catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n\r\n xhr.onerror = (): void => {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n } else {\r\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\r\n }\r\n } else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n } else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n } else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr \r\n * @param options \r\n */\r\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\r\n if (options && options.headers) {\r\n const headers = options.headers;\r\n Object.keys(headers).forEach((key: string) => {\r\n xhr.setRequestHeader(key, headers[key]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n * \r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr \r\n */\r\n private getHeaderDict(xhr: XMLHttpRequest): Record<string, string> {\r\n const headerString = xhr.getAllResponseHeaders();\r\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n const headerDict: Record<string, string> = {};\r\n headerArr.forEach((value: string) => {\r\n const parts = value.split(\": \");\r\n const headerName = parts.shift();\r\n const headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n\r\n return headerDict;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  /* eslint-disable header/header */
4
4
  var name = "@azure/msal-browser";
@@ -1 +1 @@
1
- {"version":3,"file":"packageMetadata.js","sources":["../src/packageMetadata.ts"],"sourcesContent":["/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.19.0\";\n"],"names":[],"mappings":";;AAAA;IACa,IAAI,GAAG,sBAAsB;IAC7B,OAAO,GAAG;;;;"}
1
+ {"version":3,"file":"packageMetadata.js","sources":["../src/packageMetadata.ts"],"sourcesContent":["/* eslint-disable header/header */\r\nexport const name = \"@azure/msal-browser\";\r\nexport const version = \"2.19.0\";\r\n"],"names":[],"mappings":";;AAAA;IACa,IAAI,GAAG,sBAAsB;IAC7B,OAAO,GAAG;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserConstants.js","sources":["../../src/utils/BrowserConstants.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\n\n/**\n * Constants\n */\nexport const BrowserConstants = {\n /**\n * Interaction in progress cache value\n */\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\n /**\n * Invalid grant error code\n */\n INVALID_GRANT_ERROR: \"invalid_grant\",\n /**\n * Default popup window width\n */\n POPUP_WIDTH: 483,\n /**\n * Default popup window height\n */\n POPUP_HEIGHT: 600,\n /**\n * Name of the popup window starts with\n */\n POPUP_NAME_PREFIX: \"msal\",\n /**\n * Default popup monitor poll interval in milliseconds\n */\n POLL_INTERVAL_MS: 50,\n /**\n * Msal-browser SKU\n */\n MSAL_SKU: \"msal.js.browser\",\n};\n\nexport enum BrowserCacheLocation {\n LocalStorage = \"localStorage\",\n SessionStorage = \"sessionStorage\",\n MemoryStorage = \"memoryStorage\"\n}\n\n/**\n * HTTP Request types supported by MSAL.\n */\nexport enum HTTP_REQUEST_TYPE {\n GET = \"GET\",\n POST = \"POST\"\n}\n\n/**\n * Temporary cache keys for MSAL, deleted after any request.\n */\nexport enum TemporaryCacheKeys {\n AUTHORITY = \"authority\",\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\n SESSION_STATE = \"session.state\",\n REQUEST_STATE = \"request.state\",\n NONCE_IDTOKEN = \"nonce.id_token\",\n ORIGIN_URI = \"request.origin\",\n RENEW_STATUS = \"token.renew.status\",\n URL_HASH = \"urlHash\",\n REQUEST_PARAMS = \"request.params\",\n SCOPES = \"scopes\",\n INTERACTION_STATUS_KEY = \"interaction.status\",\n CCS_CREDENTIAL = \"ccs.credential\",\n CORRELATION_ID = \"request.correlationId\"\n}\n\n/**\n * Cache keys stored in-memory\n */\nexport enum InMemoryCacheKeys {\n WRAPPER_SKU = \"wrapper.sku\",\n WRAPPER_VER = \"wrapper.version\"\n}\n\n/**\n * API Codes for Telemetry purposes. \n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 800-899 Auth Code Flow\n */\nexport enum ApiId {\n acquireTokenRedirect = 861,\n acquireTokenPopup = 862,\n ssoSilent = 863,\n acquireTokenSilent_authCode = 864,\n handleRedirectPromise = 865,\n acquireTokenSilent_silentFlow = 61,\n logout = 961,\n logoutPopup = 962\n}\n\n/*\n * Interaction type of the API - used for state and telemetry\n */\nexport enum InteractionType {\n Redirect = \"redirect\",\n Popup = \"popup\",\n Silent = \"silent\"\n}\n\n/**\n * Types of interaction currently in progress.\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\n */\nexport enum InteractionStatus {\n /**\n * Initial status before interaction occurs\n */\n Startup = \"startup\",\n /**\n * Status set when all login calls occuring\n */\n Login = \"login\",\n /**\n * Status set when logout call occuring\n */ \n Logout = \"logout\",\n /**\n * Status set for acquireToken calls\n */\n AcquireToken = \"acquireToken\",\n /**\n * Status set for ssoSilent calls\n */\n SsoSilent = \"ssoSilent\",\n /**\n * Status set when handleRedirect in progress\n */\n HandleRedirect = \"handleRedirect\",\n /**\n * Status set when interaction is complete\n */\n None = \"none\"\n}\n\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\n scopes: OIDC_DEFAULT_SCOPES\n};\n\n/**\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\n */\nexport const KEY_FORMAT_JWK = \"jwk\";\n\n// Supported wrapper SKUs\nexport enum WrapperSKU {\n React = \"@azure/msal-react\",\n Angular = \"@azure/msal-angular\"\n}\n\n// DatabaseStorage Constants\nexport const DB_NAME = \"msal.db\";\nexport const DB_VERSION = 1;\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\n"],"names":[],"mappings":";;;;AAAA;;;;AASA;;;IAGa,gBAAgB,GAAG;;;;IAI5B,6BAA6B,EAAE,yBAAyB;;;;IAIxD,mBAAmB,EAAE,eAAe;;;;IAIpC,WAAW,EAAE,GAAG;;;;IAIhB,YAAY,EAAE,GAAG;;;;IAIjB,iBAAiB,EAAE,MAAM;;;;IAIzB,gBAAgB,EAAE,EAAE;;;;IAIpB,QAAQ,EAAE,iBAAiB;EAC7B;IAEU;AAAZ,WAAY,oBAAoB;IAC5B,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,uDAA+B,CAAA;AACnC,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED;;;IAGY;AAAZ,WAAY,iBAAiB;IACzB,gCAAW,CAAA;IACX,kCAAa,CAAA;AACjB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED;;;IAGY;AAAZ,WAAY,kBAAkB;IAC1B,6CAAuB,CAAA;IACvB,oEAA8C,CAAA;IAC9C,qDAA+B,CAAA;IAC/B,qDAA+B,CAAA;IAC/B,sDAAgC,CAAA;IAChC,mDAA6B,CAAA;IAC7B,yDAAmC,CAAA;IACnC,0CAAoB,CAAA;IACpB,uDAAiC,CAAA;IACjC,uCAAiB,CAAA;IACjB,mEAA6C,CAAA;IAC7C,uDAAiC,CAAA;IACjC,8DAAwC,CAAA;AAC5C,CAAC,EAdW,kBAAkB,KAAlB,kBAAkB,QAc7B;AAED;;;IAGY;AAAZ,WAAY,iBAAiB;IACzB,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;AACnC,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED;;;;;;IAMY;AAAZ,WAAY,KAAK;IACb,mEAA0B,CAAA;IAC1B,6DAAuB,CAAA;IACvB,6CAAe,CAAA;IACf,iFAAiC,CAAA;IACjC,qEAA2B,CAAA;IAC3B,oFAAkC,CAAA;IAClC,uCAAY,CAAA;IACZ,iDAAiB,CAAA;AACrB,CAAC,EATW,KAAK,KAAL,KAAK,QAShB;AAED;;;IAGY;AAAZ,WAAY,eAAe;IACvB,wCAAqB,CAAA;IACrB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED;;;;IAIY;AAAZ,WAAY,iBAAiB;;;;IAIzB,wCAAmB,CAAA;;;;IAInB,oCAAe,CAAA;;;;IAIf,sCAAiB,CAAA;;;;IAIjB,kDAA6B,CAAA;;;;IAI7B,4CAAuB,CAAA;;;;IAIvB,sDAAiC,CAAA;;;;IAIjC,kCAAa,CAAA;AACjB,CAAC,EA7BW,iBAAiB,KAAjB,iBAAiB,QA6B5B;IAEY,eAAe,GAAiC;IACzD,MAAM,EAAE,mBAAmB;EAC7B;AAEF;;;IAGa,cAAc,GAAG,MAAM;AAEpC;IACY;AAAZ,WAAY,UAAU;IAClB,yCAA2B,CAAA;IAC3B,6CAA+B,CAAA;AACnC,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;IACa,OAAO,GAAG,UAAU;IACpB,UAAU,GAAG,EAAE;IACf,aAAa,GAAM,OAAO;;;;"}
1
+ {"version":3,"file":"BrowserConstants.js","sources":["../../src/utils/BrowserConstants.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\r\nimport { PopupRequest } from \"../request/PopupRequest\";\r\nimport { RedirectRequest } from \"../request/RedirectRequest\";\r\n\r\n/**\r\n * Constants\r\n */\r\nexport const BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n POLL_INTERVAL_MS: 50,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\n\r\nexport enum BrowserCacheLocation {\r\n LocalStorage = \"localStorage\",\r\n SessionStorage = \"sessionStorage\",\r\n MemoryStorage = \"memoryStorage\"\r\n}\r\n\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nexport enum HTTP_REQUEST_TYPE {\r\n GET = \"GET\",\r\n POST = \"POST\"\r\n}\r\n\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nexport enum TemporaryCacheKeys {\r\n AUTHORITY = \"authority\",\r\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\r\n SESSION_STATE = \"session.state\",\r\n REQUEST_STATE = \"request.state\",\r\n NONCE_IDTOKEN = \"nonce.id_token\",\r\n ORIGIN_URI = \"request.origin\",\r\n RENEW_STATUS = \"token.renew.status\",\r\n URL_HASH = \"urlHash\",\r\n REQUEST_PARAMS = \"request.params\",\r\n SCOPES = \"scopes\",\r\n INTERACTION_STATUS_KEY = \"interaction.status\",\r\n CCS_CREDENTIAL = \"ccs.credential\",\r\n CORRELATION_ID = \"request.correlationId\"\r\n}\r\n\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nexport enum InMemoryCacheKeys {\r\n WRAPPER_SKU = \"wrapper.sku\",\r\n WRAPPER_VER = \"wrapper.version\"\r\n}\r\n\r\n/**\r\n * API Codes for Telemetry purposes. \r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nexport enum ApiId {\r\n acquireTokenRedirect = 861,\r\n acquireTokenPopup = 862,\r\n ssoSilent = 863,\r\n acquireTokenSilent_authCode = 864,\r\n handleRedirectPromise = 865,\r\n acquireTokenSilent_silentFlow = 61,\r\n logout = 961,\r\n logoutPopup = 962\r\n}\r\n\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nexport enum InteractionType {\r\n Redirect = \"redirect\",\r\n Popup = \"popup\",\r\n Silent = \"silent\"\r\n}\r\n\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nexport enum InteractionStatus {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n Startup = \"startup\",\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n Login = \"login\",\r\n /**\r\n * Status set when logout call occuring\r\n */ \r\n Logout = \"logout\",\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n AcquireToken = \"acquireToken\",\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n SsoSilent = \"ssoSilent\",\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n HandleRedirect = \"handleRedirect\",\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n None = \"none\"\r\n}\r\n\r\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nexport const KEY_FORMAT_JWK = \"jwk\";\r\n\r\n// Supported wrapper SKUs\r\nexport enum WrapperSKU {\r\n React = \"@azure/msal-react\",\r\n Angular = \"@azure/msal-angular\"\r\n}\r\n\r\n// DatabaseStorage Constants\r\nexport const DB_NAME = \"msal.db\";\r\nexport const DB_VERSION = 1;\r\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\r\n"],"names":[],"mappings":";;;;AAAA;;;;AASA;;;IAGa,gBAAgB,GAAG;;;;IAI5B,6BAA6B,EAAE,yBAAyB;;;;IAIxD,mBAAmB,EAAE,eAAe;;;;IAIpC,WAAW,EAAE,GAAG;;;;IAIhB,YAAY,EAAE,GAAG;;;;IAIjB,iBAAiB,EAAE,MAAM;;;;IAIzB,gBAAgB,EAAE,EAAE;;;;IAIpB,QAAQ,EAAE,iBAAiB;EAC7B;IAEU;AAAZ,WAAY,oBAAoB;IAC5B,qDAA6B,CAAA;IAC7B,yDAAiC,CAAA;IACjC,uDAA+B,CAAA;AACnC,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED;;;IAGY;AAAZ,WAAY,iBAAiB;IACzB,gCAAW,CAAA;IACX,kCAAa,CAAA;AACjB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED;;;IAGY;AAAZ,WAAY,kBAAkB;IAC1B,6CAAuB,CAAA;IACvB,oEAA8C,CAAA;IAC9C,qDAA+B,CAAA;IAC/B,qDAA+B,CAAA;IAC/B,sDAAgC,CAAA;IAChC,mDAA6B,CAAA;IAC7B,yDAAmC,CAAA;IACnC,0CAAoB,CAAA;IACpB,uDAAiC,CAAA;IACjC,uCAAiB,CAAA;IACjB,mEAA6C,CAAA;IAC7C,uDAAiC,CAAA;IACjC,8DAAwC,CAAA;AAC5C,CAAC,EAdW,kBAAkB,KAAlB,kBAAkB,QAc7B;AAED;;;IAGY;AAAZ,WAAY,iBAAiB;IACzB,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;AACnC,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED;;;;;;IAMY;AAAZ,WAAY,KAAK;IACb,mEAA0B,CAAA;IAC1B,6DAAuB,CAAA;IACvB,6CAAe,CAAA;IACf,iFAAiC,CAAA;IACjC,qEAA2B,CAAA;IAC3B,oFAAkC,CAAA;IAClC,uCAAY,CAAA;IACZ,iDAAiB,CAAA;AACrB,CAAC,EATW,KAAK,KAAL,KAAK,QAShB;AAED;;;IAGY;AAAZ,WAAY,eAAe;IACvB,wCAAqB,CAAA;IACrB,kCAAe,CAAA;IACf,oCAAiB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED;;;;IAIY;AAAZ,WAAY,iBAAiB;;;;IAIzB,wCAAmB,CAAA;;;;IAInB,oCAAe,CAAA;;;;IAIf,sCAAiB,CAAA;;;;IAIjB,kDAA6B,CAAA;;;;IAI7B,4CAAuB,CAAA;;;;IAIvB,sDAAiC,CAAA;;;;IAIjC,kCAAa,CAAA;AACjB,CAAC,EA7BW,iBAAiB,KAAjB,iBAAiB,QA6B5B;IAEY,eAAe,GAAiC;IACzD,MAAM,EAAE,mBAAmB;EAC7B;AAEF;;;IAGa,cAAc,GAAG,MAAM;AAEpC;IACY;AAAZ,WAAY,UAAU;IAClB,yCAA2B,CAAA;IAC3B,6CAA+B,CAAA;AACnC,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;IACa,OAAO,GAAG,UAAU;IACpB,UAAU,GAAG,EAAE;IACf,aAAa,GAAM,OAAO;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserProtocolUtils.js","sources":["../../src/utils/BrowserProtocolUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InteractionType } from \"./BrowserConstants\";\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\n\nexport type BrowserStateObject = {\n interactionType: InteractionType\n};\n\nexport class BrowserProtocolUtils {\n\n /**\n * Extracts the BrowserStateObject from the state string.\n * @param browserCrypto \n * @param state \n */\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\n if (StringUtils.isEmpty(state)) {\n return null;\n }\n\n try {\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\n return requestStateObj.libraryState.meta as BrowserStateObject;\n } catch (e) {\n throw ClientAuthError.createInvalidStateError(state, e);\n }\n }\n\n /**\n * Parses properties of server response from url hash\n * @param locationHash Hash from url\n */\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\n if (!locationHash) {\n return {};\n }\n \n const hashUrlString = new UrlString(locationHash);\n return UrlString.getDeserializedHash(hashUrlString.getHash());\n }\n}\n"],"names":[],"mappings":";;;;AAAA;;;;;IAYA;KAgCC;;;;;;IAzBU,+CAA0B,GAAjC,UAAkC,aAAsB,EAAE,KAAa;QACnE,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QAED,IAAI;YACA,IAAM,eAAe,GAAuB,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAClG,OAAO,eAAe,CAAC,YAAY,CAAC,IAA0B,CAAC;SAClE;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,eAAe,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC3D;KACJ;;;;;IAMM,gDAA2B,GAAlC,UAAmC,YAAoB;QACnD,IAAI,CAAC,YAAY,EAAE;YACf,OAAO,EAAE,CAAC;SACb;QAED,IAAM,aAAa,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;KACjE;IACL,2BAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"BrowserProtocolUtils.js","sources":["../../src/utils/BrowserProtocolUtils.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { InteractionType } from \"./BrowserConstants\";\r\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\r\n\r\nexport type BrowserStateObject = {\r\n interactionType: InteractionType\r\n};\r\n\r\nexport class BrowserProtocolUtils {\r\n\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto \r\n * @param state \r\n */\r\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n\r\n try {\r\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta as BrowserStateObject;\r\n } catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n }\r\n\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n \r\n const hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAAA;;;;;IAYA;KAgCC;;;;;;IAzBU,+CAA0B,GAAjC,UAAkC,aAAsB,EAAE,KAAa;QACnE,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QAED,IAAI;YACA,IAAM,eAAe,GAAuB,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAClG,OAAO,eAAe,CAAC,YAAY,CAAC,IAA0B,CAAC;SAClE;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,eAAe,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC3D;KACJ;;;;;IAMM,gDAA2B,GAAlC,UAAmC,YAAoB;QACnD,IAAI,CAAC,YAAY,EAAE;YACf,OAAO,EAAE,CAAC;SACb;QAED,IAAM,aAAa,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;KACjE;IACL,2BAAC;AAAD,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserStringUtils.js","sources":["../../src/utils/BrowserStringUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility functions for strings in a browser. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class BrowserStringUtils {\n\n /**\n * Converts string to Uint8Array\n * @param sDOMStr \n */\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\n let nChr;\n let nArrLen = 0;\n const nStrLen = sDOMStr.length;\n /* mapping... */\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n nChr = sDOMStr.charCodeAt(nMapIdx);\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n }\n\n const aBytes = new Uint8Array(nArrLen);\n\n /* transcription... */\n\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n nChr = sDOMStr.charCodeAt(nChrIdx);\n if (nChr < 128) {\n /* one byte */\n aBytes[nIdx++] = nChr;\n } else if (nChr < 0x800) {\n /* two bytes */\n aBytes[nIdx++] = 192 + (nChr >>> 6);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x10000) {\n /* three bytes */\n aBytes[nIdx++] = 224 + (nChr >>> 12);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x200000) {\n /* four bytes */\n aBytes[nIdx++] = 240 + (nChr >>> 18);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x4000000) {\n /* five bytes */\n aBytes[nIdx++] = 248 + (nChr >>> 24);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else /* if (nChr <= 0x7fffffff) */ {\n /* six bytes */\n aBytes[nIdx++] = 252 + (nChr >>> 30);\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n }\n }\n\n return aBytes; \n }\n\n /**\n * Converst string to ArrayBuffer\n * @param dataString \n */\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\n const data = new ArrayBuffer(dataString.length);\n const dataView = new Uint8Array(data);\n for (let i: number = 0; i < dataString.length; i++) {\n dataView[i] = dataString.charCodeAt(i);\n }\n return data;\n }\n\n /**\n * Converts Uint8Array to a string\n * @param aBytes \n */\n static utf8ArrToString (aBytes: Uint8Array): string {\n let sView = \"\";\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n nPart = aBytes[nIdx];\n sView += String.fromCharCode(\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\n : /* nPart < 127 ? */ /* one byte */\n nPart\n );\n }\n return sView;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserStringUtils.js","sources":["../../src/utils/BrowserStringUtils.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nexport class BrowserStringUtils {\r\n\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr \r\n */\r\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\r\n let nChr;\r\n let nArrLen = 0;\r\n const nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n\r\n const aBytes = new Uint8Array(nArrLen);\r\n\r\n /* transcription... */\r\n\r\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n } else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n } else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n\r\n return aBytes; \r\n }\r\n\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString \r\n */\r\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\r\n const data = new ArrayBuffer(dataString.length);\r\n const dataView = new Uint8Array(data);\r\n for (let i: number = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes \r\n */\r\n static utf8ArrToString (aBytes: Uint8Array): string {\r\n let sView = \"\";\r\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(\r\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart\r\n );\r\n }\r\n return sView;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { Constants, UrlString } from '@azure/msal-common';
4
4
  import { FetchClient } from '../network/FetchClient.js';
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserUtils.js","sources":["../../src/utils/BrowserUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\nimport { FetchClient } from \"../network/FetchClient\";\nimport { XhrClient } from \"../network/XhrClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\n\n/**\n * Utility class for browser specific functions\n */\nexport class BrowserUtils {\n\n // #region Window Navigation and URL management\n\n /**\n * Clears hash from window url.\n */\n static clearHash(contentWindow: Window): void {\n // Office.js sets history.replaceState to null\n contentWindow.location.hash = Constants.EMPTY_STRING;\n if (typeof contentWindow.history.replaceState === \"function\") {\n // Full removes \"#\" from url\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\n }\n }\n\n /**\n * Replaces current hash with hash from provided url\n */\n static replaceHash(url: string): void {\n const urlParts = url.split(\"#\");\n urlParts.shift(); // Remove part before the hash\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\n }\n\n /**\n * Returns boolean of whether the current window is in an iframe or not.\n */\n static isInIframe(): boolean {\n return window.parent !== window;\n }\n\n /**\n * Returns boolean of whether or not the current window is a popup opened by msal\n */\n static isInPopup(): boolean {\n return typeof window !== \"undefined\" && !!window.opener && \n window.opener !== window && \n typeof window.name === \"string\" && \n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\n }\n\n // #endregion\n\n /**\n * Returns current window URL as redirect uri\n */\n static getCurrentUri(): string {\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\n }\n\n /**\n * Gets the homepage url for the current window location.\n */\n static getHomepage(): string {\n const currentUrl = new UrlString(window.location.href);\n const urlComponents = currentUrl.getUrlComponents();\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\n }\n\n /**\n * Returns best compatible network client object. \n */\n static getBrowserNetworkClient(): INetworkModule {\n if (window.fetch && window.Headers) {\n return new FetchClient();\n } else {\n return new XhrClient();\n }\n }\n\n /**\n * Throws error if we have completed an auth and are \n * attempting another auth request inside an iframe.\n */\n static blockReloadInHiddenIframes(): void {\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\n // return an error if called from the hidden iframe created by the msal js silent calls\n if (isResponseHash && BrowserUtils.isInIframe()) {\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\n }\n }\n\n /**\n * Block redirect operations in iframes unless explicitly allowed\n * @param interactionType Interaction type for the request\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\n */\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\n const isIframedApp = BrowserUtils.isInIframe();\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\n }\n }\n\n /**\n * Block redirectUri loaded in popup from calling AcquireToken APIs\n */\n static blockAcquireTokenInPopups(): void {\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\n if (BrowserUtils.isInPopup()) {\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\n }\n }\n\n /**\n * Throws error if token requests are made in non-browser environment\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\n */\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\n if (!isBrowserEnvironment) {\n throw BrowserAuthError.createNonBrowserEnvironmentError();\n }\n }\n\n /**\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\n */\n static detectIEOrEdge(): boolean {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf(\"MSIE \");\n const msie11 = ua.indexOf(\"Trident/\");\n const msedge = ua.indexOf(\"Edge/\");\n const isIE = msie > 0 || msie11 > 0;\n const isEdge = msedge > 0;\n return isIE || isEdge;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserUtils.js","sources":["../../src/utils/BrowserUtils.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\r\nimport { FetchClient } from \"../network/FetchClient\";\r\nimport { XhrClient } from \"../network/XhrClient\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nexport class BrowserUtils {\r\n\r\n // #region Window Navigation and URL management\r\n\r\n /**\r\n * Clears hash from window url.\r\n */\r\n static clearHash(contentWindow: Window): void {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\r\n }\r\n }\r\n\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n static replaceHash(url: string): void {\r\n const urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\r\n }\r\n\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n static isInIframe(): boolean {\r\n return window.parent !== window;\r\n }\r\n\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n static isInPopup(): boolean {\r\n return typeof window !== \"undefined\" && !!window.opener && \r\n window.opener !== window && \r\n typeof window.name === \"string\" && \r\n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\r\n }\r\n\r\n // #endregion\r\n\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n static getCurrentUri(): string {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n }\r\n\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n static getHomepage(): string {\r\n const currentUrl = new UrlString(window.location.href);\r\n const urlComponents = currentUrl.getUrlComponents();\r\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\r\n }\r\n\r\n /**\r\n * Returns best compatible network client object. \r\n */\r\n static getBrowserNetworkClient(): INetworkModule {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n } else {\r\n return new XhrClient();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if we have completed an auth and are \r\n * attempting another auth request inside an iframe.\r\n */\r\n static blockReloadInHiddenIframes(): void {\r\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n }\r\n\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\r\n const isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n }\r\n\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n static blockAcquireTokenInPopups(): void {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n }\r\n\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n }\r\n\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n static detectIEOrEdge(): boolean {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf(\"MSIE \");\r\n const msie11 = ua.indexOf(\"Trident/\");\r\n const msedge = ua.indexOf(\"Edge/\");\r\n const isIE = msie > 0 || msie11 > 0;\r\n const isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"MathUtils.js","sources":["../../src/utils/MathUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class for math specific functions in browser.\n */\nexport class MathUtils {\n\n /**\n * Decimal to Hex\n *\n * @param num\n */\n static decimalToHex(num: number): string {\n let hex: string = num.toString(16);\n while (hex.length < 2) {\n hex = \"0\" + hex;\n }\n return hex;\n }\n}\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;;IAGA;KAcC;;;;;;IAPU,sBAAY,GAAnB,UAAoB,GAAW;QAC3B,IAAI,GAAG,GAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;SACnB;QACD,OAAO,GAAG,CAAC;KACd;IACL,gBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"MathUtils.js","sources":["../../src/utils/MathUtils.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nexport class MathUtils {\r\n\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n static decimalToHex(num: number): string {\r\n let hex: string = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;;IAGA;KAcC;;;;;;IAPU,sBAAY,GAAnB,UAAoB,GAAW;QAC3B,IAAI,GAAG,GAAW,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;SACnB;QACD,OAAO,GAAG,CAAC;KACd;IACL,gBAAC;AAAD,CAAC;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.19.0 2021-11-02 */
1
+ /*! @azure/msal-browser v2.19.1 2022-08-03 */
2
2
  'use strict';
3
3
  import { StringUtils, Constants } from '@azure/msal-common';
4
4
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PopupUtils.js","sources":["../../src/utils/PopupUtils.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CommonEndSessionRequest, Constants, Logger, StringUtils } from \"@azure/msal-common\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { PopupParams } from \"../interaction_handler/PopupHandler\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConstants, InteractionType } from \"./BrowserConstants\";\n\n/**\n * Popup configurations for setting dimensions and position of popup window\n */\nexport type PopupWindowAttributes = {\n popupSize?: PopupSize,\n popupPosition?: PopupPosition\n};\n\nexport type PopupSize = {\n height: number;\n width: number;\n};\n\nexport type PopupPosition = {\n top: number;\n left: number;\n};\n\nexport class PopupUtils {\n private browserStorage: BrowserCacheManager;\n private logger: Logger;\n private currentWindow: Window|undefined;\n\n constructor(storageImpl: BrowserCacheManager, logger: Logger) {\n this.browserStorage = storageImpl;\n this.logger = logger;\n\n // Properly sets this reference for the unload event.\n this.unloadWindow = this.unloadWindow.bind(this);\n }\n\n /**\n * @hidden\n *\n * Configures popup window for login.\n *\n * @param urlNavigate\n * @param title\n * @param popUpWidth\n * @param popUpHeight\n * @param popupWindowAttributes\n * @ignore\n * @hidden\n */\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\n try {\n let popupWindow;\n // Popup window passed in, setting url to navigate to\n if (popupParams.popup) {\n popupWindow = popupParams.popup;\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\n popupWindow.location.assign(urlNavigate);\n } else if (typeof popupParams.popup === \"undefined\") {\n // Popup will be undefined if it was not passed in\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\n popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes, this.logger);\n }\n\n // Popup will be null if popups are blocked\n if (!popupWindow) {\n throw BrowserAuthError.createEmptyWindowCreatedError();\n }\n if (popupWindow.focus) {\n popupWindow.focus();\n }\n this.currentWindow = popupWindow;\n window.addEventListener(\"beforeunload\", this.unloadWindow);\n\n return popupWindow;\n } catch (e) {\n this.logger.error(\"error opening popup \" + e.message);\n this.browserStorage.setInteractionInProgress(false);\n throw BrowserAuthError.createPopupWindowError(e.toString());\n }\n }\n\n /**\n * Helper function to set popup window dimensions and position\n * @param urlNavigate \n * @param popupName \n * @param popupWindowAttributes \n * @returns \n */\n static openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes, logger: Logger): Window|null {\n /**\n * adding winLeft and winTop to account for dual monitor\n * using screenLeft and screenTop for IE8 and earlier\n */\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\n const winTop = window.screenTop ? window.screenTop : window.screenY;\n /**\n * window.innerWidth displays browser window\"s height and width excluding toolbars\n * using document.documentElement.clientWidth for IE8 and earlier\n */\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n\n let width = popupWindowAttributes.popupSize?.width;\n let height = popupWindowAttributes.popupSize?.height;\n let top = popupWindowAttributes.popupPosition?.top;\n let left = popupWindowAttributes.popupPosition?.left;\n\n if (!width || width < 0 || width > winWidth) {\n logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\n width = BrowserConstants.POPUP_WIDTH;\n }\n\n if (!height || height < 0 || height > winHeight) {\n logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\n height = BrowserConstants.POPUP_HEIGHT;\n }\n\n if (!top || top < 0 || top > winHeight) {\n logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\n }\n\n if (!left || left < 0 || left > winWidth) {\n logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\n }\n\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\n }\n\n /**\n * Event callback to unload main window.\n */\n unloadWindow(e: Event): void {\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\n if (this.currentWindow) {\n this.currentWindow.close();\n }\n // Guarantees browser unload will happen, so no other errors will be thrown.\n e.preventDefault();\n }\n\n /**\n * Closes popup, removes any state vars created during popup calls.\n * @param popupWindow\n */\n cleanPopup(popupWindow?: Window): void {\n if (popupWindow) {\n // Close window.\n popupWindow.close();\n }\n // Remove window unload function\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n }\n\n /**\n * Monitors a window until it loads a url with the same origin.\n * @param popupWindow - window that is being monitored\n */\n monitorPopupForSameOrigin(popupWindow: Window): Promise<void> {\n return new Promise((resolve, reject) => {\n const intervalId = setInterval(() => {\n if (popupWindow.closed) {\n // Window is closed\n this.cleanPopup();\n clearInterval(intervalId);\n reject(BrowserAuthError.createUserCancelledError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n return;\n }\n\n clearInterval(intervalId);\n resolve();\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * Generates the name for the popup based on the client id and request\n * @param clientId\n * @param request\n */\n static generatePopupName(clientId: string, request: AuthorizationUrlRequest): string {\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${request.scopes.join(\"-\")}.${request.authority}.${request.correlationId}`;\n }\n\n /**\n * Generates the name for the popup based on the client id and request for logouts\n * @param clientId \n * @param request \n */\n static generateLogoutPopupName(clientId: string, request: CommonEndSessionRequest): string {\n const homeAccountId = request.account && request.account.homeAccountId;\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${homeAccountId}.${request.correlationId}`;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PopupUtils.js","sources":["../../src/utils/PopupUtils.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CommonEndSessionRequest, Constants, Logger, StringUtils } from \"@azure/msal-common\";\r\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { PopupParams } from \"../interaction_handler/PopupHandler\";\r\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\r\nimport { BrowserConstants, InteractionType } from \"./BrowserConstants\";\r\n\r\n/**\r\n * Popup configurations for setting dimensions and position of popup window\r\n */\r\nexport type PopupWindowAttributes = {\r\n popupSize?: PopupSize,\r\n popupPosition?: PopupPosition\r\n};\r\n\r\nexport type PopupSize = {\r\n height: number;\r\n width: number;\r\n};\r\n\r\nexport type PopupPosition = {\r\n top: number;\r\n left: number;\r\n};\r\n\r\nexport class PopupUtils {\r\n private browserStorage: BrowserCacheManager;\r\n private logger: Logger;\r\n private currentWindow: Window|undefined;\r\n\r\n constructor(storageImpl: BrowserCacheManager, logger: Logger) {\r\n this.browserStorage = storageImpl;\r\n this.logger = logger;\r\n\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n }\r\n\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\r\n try {\r\n let popupWindow;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\r\n popupWindow.location.assign(urlNavigate);\r\n } else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\r\n popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes, this.logger);\r\n }\r\n\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n return popupWindow;\r\n } catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate \r\n * @param popupName \r\n * @param popupWindowAttributes \r\n * @returns \r\n */\r\n static openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes, logger: Logger): Window|null {\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n const winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n\r\n let width = popupWindowAttributes.popupSize?.width;\r\n let height = popupWindowAttributes.popupSize?.height;\r\n let top = popupWindowAttributes.popupPosition?.top;\r\n let left = popupWindowAttributes.popupPosition?.left;\r\n\r\n if (!width || width < 0 || width > winWidth) {\r\n logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n\r\n if (!height || height < 0 || height > winHeight) {\r\n logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n\r\n if (!top || top < 0 || top > winHeight) {\r\n logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n\r\n if (!left || left < 0 || left > winWidth) {\r\n logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n\r\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\r\n }\r\n\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n unloadWindow(e: Event): void {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n cleanPopup(popupWindow?: Window): void {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n }\r\n\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n */\r\n monitorPopupForSameOrigin(popupWindow: Window): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const intervalId = setInterval(() => {\r\n if (popupWindow.closed) {\r\n // Window is closed\r\n this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n\r\n let href: string = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n } catch (e) {}\r\n\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n\r\n clearInterval(intervalId);\r\n resolve();\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n static generatePopupName(clientId: string, request: AuthorizationUrlRequest): string {\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${request.scopes.join(\"-\")}.${request.authority}.${request.correlationId}`;\r\n }\r\n\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId \r\n * @param request \r\n */\r\n static generateLogoutPopupName(clientId: string, request: CommonEndSessionRequest): string {\r\n const homeAccountId = request.account && request.account.homeAccountId;\r\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${clientId}.${homeAccountId}.${request.correlationId}`;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}