@azure/msal-browser 3.28.0 → 3.28.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 (95) hide show
  1. package/dist/app/IPublicClientApplication.mjs +1 -1
  2. package/dist/app/PublicClientApplication.mjs +1 -1
  3. package/dist/app/PublicClientNext.mjs +1 -1
  4. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +1 -1
  5. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  6. package/dist/cache/AccountManager.mjs +1 -1
  7. package/dist/cache/AsyncMemoryStorage.mjs +1 -1
  8. package/dist/cache/BrowserCacheManager.mjs +1 -1
  9. package/dist/cache/BrowserStorage.mjs +1 -1
  10. package/dist/cache/CookieStorage.mjs +1 -1
  11. package/dist/cache/DatabaseStorage.mjs +1 -1
  12. package/dist/cache/LocalStorage.mjs +1 -1
  13. package/dist/cache/MemoryStorage.mjs +1 -1
  14. package/dist/cache/SessionStorage.mjs +1 -1
  15. package/dist/cache/TokenCache.mjs +1 -1
  16. package/dist/config/Configuration.mjs +1 -1
  17. package/dist/controllers/ControllerFactory.mjs +1 -1
  18. package/dist/controllers/NestedAppAuthController.mjs +2 -2
  19. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  20. package/dist/controllers/StandardController.mjs +1 -1
  21. package/dist/controllers/UnknownOperatingContextController.mjs +1 -1
  22. package/dist/crypto/BrowserCrypto.d.ts +1 -1
  23. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  24. package/dist/crypto/BrowserCrypto.mjs +3 -3
  25. package/dist/crypto/BrowserCrypto.mjs.map +1 -1
  26. package/dist/crypto/CryptoOps.d.ts +1 -1
  27. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  28. package/dist/crypto/CryptoOps.mjs +3 -3
  29. package/dist/crypto/CryptoOps.mjs.map +1 -1
  30. package/dist/crypto/PkceGenerator.mjs +1 -1
  31. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  32. package/dist/encode/Base64Decode.mjs +1 -1
  33. package/dist/encode/Base64Encode.mjs +1 -1
  34. package/dist/error/BrowserAuthError.mjs +1 -1
  35. package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
  36. package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
  37. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  38. package/dist/error/NativeAuthError.mjs +1 -1
  39. package/dist/error/NativeAuthErrorCodes.mjs +1 -1
  40. package/dist/error/NestedAppAuthError.mjs +1 -1
  41. package/dist/event/EventHandler.mjs +1 -1
  42. package/dist/event/EventMessage.mjs +1 -1
  43. package/dist/event/EventType.mjs +1 -1
  44. package/dist/index.mjs +1 -1
  45. package/dist/interaction_client/BaseInteractionClient.mjs +1 -1
  46. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  47. package/dist/interaction_client/NativeInteractionClient.mjs +1 -1
  48. package/dist/interaction_client/PopupClient.mjs +1 -1
  49. package/dist/interaction_client/RedirectClient.mjs +1 -1
  50. package/dist/interaction_client/SilentAuthCodeClient.mjs +1 -1
  51. package/dist/interaction_client/SilentCacheClient.mjs +1 -1
  52. package/dist/interaction_client/SilentIframeClient.mjs +1 -1
  53. package/dist/interaction_client/SilentRefreshClient.mjs +1 -1
  54. package/dist/interaction_client/StandardInteractionClient.mjs +1 -1
  55. package/dist/interaction_handler/InteractionHandler.mjs +1 -1
  56. package/dist/interaction_handler/RedirectHandler.mjs +1 -1
  57. package/dist/interaction_handler/SilentHandler.mjs +1 -1
  58. package/dist/naa/BridgeError.mjs +1 -1
  59. package/dist/naa/BridgeProxy.mjs +1 -1
  60. package/dist/naa/BridgeStatusCode.mjs +1 -1
  61. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
  62. package/dist/navigation/NavigationClient.mjs +1 -1
  63. package/dist/network/FetchClient.mjs +1 -1
  64. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  65. package/dist/operatingcontext/NestedAppOperatingContext.mjs +1 -1
  66. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  67. package/dist/operatingcontext/UnknownOperatingContext.mjs +1 -1
  68. package/dist/packageMetadata.d.ts +1 -1
  69. package/dist/packageMetadata.mjs +2 -2
  70. package/dist/request/RequestHelpers.mjs +1 -1
  71. package/dist/response/ResponseHandler.mjs +1 -1
  72. package/dist/telemetry/BrowserPerformanceClient.mjs +1 -1
  73. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  74. package/dist/utils/BrowserConstants.mjs +1 -1
  75. package/dist/utils/BrowserProtocolUtils.mjs +1 -1
  76. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  77. package/dist/utils/BrowserUtils.mjs +4 -2
  78. package/dist/utils/BrowserUtils.mjs.map +1 -1
  79. package/lib/msal-browser.cjs +73 -71
  80. package/lib/msal-browser.cjs.map +1 -1
  81. package/lib/msal-browser.js +73 -71
  82. package/lib/msal-browser.js.map +1 -1
  83. package/lib/msal-browser.min.js +59 -59
  84. package/lib/types/crypto/BrowserCrypto.d.ts +1 -1
  85. package/lib/types/crypto/BrowserCrypto.d.ts.map +1 -1
  86. package/lib/types/crypto/CryptoOps.d.ts +1 -1
  87. package/lib/types/crypto/CryptoOps.d.ts.map +1 -1
  88. package/lib/types/packageMetadata.d.ts +1 -1
  89. package/lib/types/utils/BrowserUtils.d.ts.map +1 -1
  90. package/package.json +1 -1
  91. package/src/controllers/NestedAppAuthController.ts +1 -1
  92. package/src/crypto/BrowserCrypto.ts +4 -2
  93. package/src/crypto/CryptoOps.ts +8 -2
  94. package/src/packageMetadata.ts +1 -1
  95. package/src/utils/BrowserUtils.ts +3 -1
@@ -2,7 +2,7 @@ import { IPerformanceClient } from "@azure/msal-common/browser";
2
2
  /**
3
3
  * Check whether browser crypto is available.
4
4
  */
5
- export declare function validateCryptoAvailable(): void;
5
+ export declare function validateCryptoAvailable(skipValidateSubtleCrypto: boolean): void;
6
6
  /**
7
7
  * Returns a sha-256 hash of the given dataString as an ArrayBuffer.
8
8
  * @param dataString {string} data string
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"AASA,OAAO,EACH,kBAAkB,EAErB,MAAM,4BAA4B,CAAC;AAkCpC;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAe9C;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAElE;AAWD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAuCtC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAKnE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC3B,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,SAAS,CAAC,CAQpB;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACtB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE"}
1
+ {"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"AASA,OAAO,EACH,kBAAkB,EAErB,MAAM,4BAA4B,CAAC;AAkCpC;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,wBAAwB,EAAE,OAAO,GAClC,IAAI,CAeN;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,WAAW,CAAC,CAWtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAElE;AAWD;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAuCtC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAKnE;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC3B,GAAG,EAAE,UAAU,EACf,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GACxB,OAAO,CAAC,SAAS,CAAC,CAQpB;AAED;;;;GAIG;AACH,wBAAsB,IAAI,CACtB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,WAAW,GAClB,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE"}
@@ -19,7 +19,7 @@ export declare class CryptoOps implements ICrypto {
19
19
  private static POP_KEY_USAGES;
20
20
  private static EXTRACTABLE;
21
21
  private cache;
22
- constructor(logger: Logger, performanceClient?: IPerformanceClient);
22
+ constructor(logger: Logger, performanceClient?: IPerformanceClient, skipValidateSubtleCrypto?: boolean);
23
23
  /**
24
24
  * Creates a new random GUID - used to populate state and nonce.
25
25
  * @returns string (GUID)
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAoC;gBAErC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,kBAAkB;IAQlE;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA0BvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA0DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"}
1
+ {"version":3,"file":"CryptoOps.d.ts","sourceRoot":"","sources":["../../../src/crypto/CryptoOps.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,OAAO,EACP,kBAAkB,EAElB,MAAM,EAEN,UAAU,EACV,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,4BAA4B,CAAC;AAcpC,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,qBAAa,SAAU,YAAW,OAAO;IACrC,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAiB;IAC3C,OAAO,CAAC,KAAK,CAAoC;gBAG7C,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,kBAAkB,EACtC,wBAAwB,CAAC,EAAE,OAAO;IAWtC;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAItC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAInC;;;OAGG;IACG,sBAAsB,CACxB,OAAO,EAAE,2BAA2B,GACrC,OAAO,CAAC,MAAM,CAAC;IAqDlB;;;OAGG;IACG,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA0BvC;;;;OAIG;IACG,OAAO,CACT,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IA0DlB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvD"}
@@ -1,3 +1,3 @@
1
1
  export declare const name = "@azure/msal-browser";
2
- export declare const version = "3.28.0";
2
+ export declare const version = "3.28.1";
3
3
  //# sourceMappingURL=packageMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAW5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;GAEG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAQnC;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAK1E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAYzD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAYN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAalD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"BrowserUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/BrowserUtils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAW5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;GAEG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI7C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAQnC;AAID;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAQjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAK1E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAYzD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,oBAAoB,GAC7B,IAAI,CAYN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAalD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,CAAC"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "type": "git",
11
11
  "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
12
  },
13
- "version": "3.28.0",
13
+ "version": "3.28.1",
14
14
  "description": "Microsoft Authentication Library for js",
15
15
  "keywords": [
16
16
  "implicit",
@@ -102,7 +102,7 @@ export class NestedAppAuthController implements IController {
102
102
 
103
103
  // Initialize the crypto class.
104
104
  this.browserCrypto = operatingContext.isBrowserEnvironment()
105
- ? new CryptoOps(this.logger, this.performanceClient)
105
+ ? new CryptoOps(this.logger, this.performanceClient, true)
106
106
  : DEFAULT_CRYPTO_IMPLEMENTATION;
107
107
 
108
108
  // Initialize the browser storage class.
@@ -47,7 +47,9 @@ const keygenAlgorithmOptions: RsaHashedKeyGenParams = {
47
47
  /**
48
48
  * Check whether browser crypto is available.
49
49
  */
50
- export function validateCryptoAvailable(): void {
50
+ export function validateCryptoAvailable(
51
+ skipValidateSubtleCrypto: boolean
52
+ ): void {
51
53
  if (!window) {
52
54
  throw createBrowserAuthError(
53
55
  BrowserAuthErrorCodes.nonBrowserEnvironment
@@ -56,7 +58,7 @@ export function validateCryptoAvailable(): void {
56
58
  if (!window.crypto) {
57
59
  throw createBrowserAuthError(BrowserAuthErrorCodes.cryptoNonExistent);
58
60
  }
59
- if (!window.crypto.subtle) {
61
+ if (!skipValidateSubtleCrypto && !window.crypto.subtle) {
60
62
  throw createBrowserAuthError(
61
63
  BrowserAuthErrorCodes.cryptoNonExistent,
62
64
  SUBTLE_SUBERROR
@@ -50,10 +50,16 @@ export class CryptoOps implements ICrypto {
50
50
  private static EXTRACTABLE: boolean = true;
51
51
  private cache: AsyncMemoryStorage<CachedKeyPair>;
52
52
 
53
- constructor(logger: Logger, performanceClient?: IPerformanceClient) {
53
+ constructor(
54
+ logger: Logger,
55
+ performanceClient?: IPerformanceClient,
56
+ skipValidateSubtleCrypto?: boolean
57
+ ) {
54
58
  this.logger = logger;
55
59
  // Browser crypto needs to be validated first before any other classes can be set.
56
- BrowserCrypto.validateCryptoAvailable();
60
+ BrowserCrypto.validateCryptoAvailable(
61
+ skipValidateSubtleCrypto ?? false
62
+ );
57
63
  this.cache = new AsyncMemoryStorage<CachedKeyPair>(this.logger);
58
64
  this.performanceClient = performanceClient;
59
65
  }
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-browser";
3
- export const version = "3.28.0";
3
+ export const version = "3.28.1";
@@ -67,7 +67,9 @@ export function isInPopup(): boolean {
67
67
  * Returns current window URL as redirect uri
68
68
  */
69
69
  export function getCurrentUri(): string {
70
- return window.location.href.split("?")[0].split("#")[0];
70
+ return typeof window !== "undefined" && window.location
71
+ ? window.location.href.split("?")[0].split("#")[0]
72
+ : "";
71
73
  }
72
74
 
73
75
  /**