@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 +1 @@
1
- {"version":3,"file":"BrowserCrypto.js","sources":["../../src/crypto/BrowserCrypto.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { Logger } from \"..\";\n/**\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\n */\n// RSA KeyGen Algorithm\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\n// SHA-256 hashing algorithm\nconst S256_HASH_ALG = \"SHA-256\";\n// MOD length for PoP tokens\nconst MODULUS_LENGTH = 2048;\n// Public Exponent\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\n\n/**\n * This class implements functions used by the browser library to perform cryptography operations such as\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\n */\nexport class BrowserCrypto {\n\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.logger = logger;\n \n if (!(this.hasCryptoAPI())) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\n }\n\n this._keygenAlgorithmOptions = {\n name: PKCS1_V15_KEYGEN_ALG,\n hash: S256_HASH_ALG,\n modulusLength: MODULUS_LENGTH,\n publicExponent: PUBLIC_EXPONENT\n };\n }\n\n /**\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\n * @param dataString \n */\n async sha256Digest(dataString: string): Promise<ArrayBuffer> {\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\n\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\n }\n\n /**\n * Populates buffer with cryptographically random values.\n * @param dataBuffer \n */\n getRandomValues(dataBuffer: Uint8Array): void {\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\n if (!cryptoObj.getRandomValues) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\n }\n cryptoObj.getRandomValues(dataBuffer);\n }\n\n /**\n * Generates a keypair based on current keygen algorithm config.\n * @param extractable \n * @param usages \n */\n async generateKeyPair(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n return (\n this.hasIECrypto() ? \n this.msCryptoGenerateKey(extractable, usages) \n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\n ) as Promise<CryptoKeyPair>;\n }\n\n /**\n * Export key as Json Web Key (JWK)\n * @param key \n * @param format \n */\n async exportJwk(key: CryptoKey): Promise<JsonWebKey> {\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\n }\n\n /**\n * Imports key as Json Web Key (JWK), can set extractable and usages.\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n const keyString = BrowserCrypto.getJwkString(key);\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\n\n return this.hasIECrypto() ? \n this.msCryptoImportKey(keyBuffer, extractable, usages) \n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\n }\n\n /**\n * Signs given data with given key\n * @param key \n * @param data \n */\n async sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n return this.hasIECrypto() ?\n this.msCryptoSign(key, data)\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\n }\n\n /**\n * Check whether IE crypto or other browser cryptography is available.\n */\n private hasCryptoAPI(): boolean {\n return this.hasIECrypto() || this.hasBrowserCrypto();\n }\n\n /**\n * Checks whether IE crypto (AKA msCrypto) is available.\n */\n private hasIECrypto(): boolean {\n return \"msCrypto\" in window;\n }\n\n /**\n * Check whether browser crypto is available.\n */\n private hasBrowserCrypto(): boolean {\n return \"crypto\" in window;\n }\n\n /**\n * Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n return window.crypto.subtle.digest(algorithm, data);\n }\n\n /**\n * IE Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n return new Promise((resolve, reject) => {\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n resolve(e.target.result);\n });\n digestOperation.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for generating a keypair\n * @param extractable \n * @param usages \n */\n private async msCryptoGenerateKey(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n return new Promise((resolve: Function, reject: Function) => {\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike<CryptoKeyPair>; }; }) => {\n resolve(e.target.result);\n });\n\n msGenerateKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for exportKey\n * @param key \n * @param format \n */\n private async msCryptoExportJwk(key: CryptoKey): Promise<JsonWebKey> {\n return new Promise((resolve: Function, reject: Function) => {\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\n const resultBuffer: ArrayBuffer = e.target.result;\n\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\n .replace(/\\r/g, \"\")\n .replace(/\\n/g, \"\")\n .replace(/\\t/g, \"\")\n .split(\" \").join(\"\")\n .replace(\"\\u0000\", \"\");\n\n try {\n resolve(JSON.parse(resultString));\n } catch (e) {\n reject(e);\n }\n });\n\n msExportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for importKey\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n return new Promise((resolve: Function, reject: Function) => {\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike<CryptoKey>; }; }) => {\n resolve(e.target.result);\n });\n\n msImportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for sign JWT\n * @param key \n * @param data \n */\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n return new Promise((resolve: Function, reject: Function) => {\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n resolve(e.target.result);\n });\n\n msSign.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * Returns stringified jwk.\n * @param jwk \n */\n static getJwkString(jwk: JsonWebKey): string {\n return JSON.stringify(jwk, Object.keys(jwk).sort());\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserCrypto.js","sources":["../../src/crypto/BrowserCrypto.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { Logger } from \"..\";\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nconst S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nconst MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\r\n\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nexport class BrowserCrypto {\r\n\r\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\r\n private logger: Logger;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n \r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString \r\n */\r\n async sha256Digest(dataString: string): Promise<ArrayBuffer> {\r\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n\r\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\r\n }\r\n\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer \r\n */\r\n getRandomValues(dataBuffer: Uint8Array): void {\r\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n }\r\n\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable \r\n * @param usages \r\n */\r\n async generateKeyPair(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\r\n return (\r\n this.hasIECrypto() ? \r\n this.msCryptoGenerateKey(extractable, usages) \r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\r\n ) as Promise<CryptoKeyPair>;\r\n }\r\n\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key \r\n * @param format \r\n */\r\n async exportJwk(key: CryptoKey): Promise<JsonWebKey> {\r\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\r\n }\r\n\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\r\n const keyString = BrowserCrypto.getJwkString(key);\r\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n\r\n return this.hasIECrypto() ? \r\n this.msCryptoImportKey(keyBuffer, extractable, usages) \r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\r\n }\r\n\r\n /**\r\n * Signs given data with given key\r\n * @param key \r\n * @param data \r\n */\r\n async sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n }\r\n\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n private hasCryptoAPI(): boolean {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n }\r\n\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n private hasIECrypto(): boolean {\r\n return \"msCrypto\" in window;\r\n }\r\n\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n private hasBrowserCrypto(): boolean {\r\n return \"crypto\" in window;\r\n }\r\n\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\r\n return window.crypto.subtle.digest(algorithm, data);\r\n }\r\n\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm \r\n * @param data \r\n */\r\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\r\n return new Promise((resolve, reject) => {\r\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoGenerateKey(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike<CryptoKeyPair>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msGenerateKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key \r\n * @param format \r\n */\r\n private async msCryptoExportJwk(key: CryptoKey): Promise<JsonWebKey> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\r\n const resultBuffer: ArrayBuffer = e.target.result;\r\n\r\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, \"\")\r\n .replace(/\\n/g, \"\")\r\n .replace(/\\t/g, \"\")\r\n .split(\" \").join(\"\")\r\n .replace(\"\\u0000\", \"\");\r\n\r\n try {\r\n resolve(JSON.parse(resultString));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n msExportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for importKey\r\n * @param key \r\n * @param format \r\n * @param extractable \r\n * @param usages \r\n */\r\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike<CryptoKey>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msImportKey.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key \r\n * @param data \r\n */\r\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\r\n return new Promise((resolve: Function, reject: Function) => {\r\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\r\n resolve(e.target.result);\r\n });\r\n\r\n msSign.addEventListener(\"error\", (error: string) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk \r\n */\r\n static getJwkString(jwk: JsonWebKey): string {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\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 { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { GuidGenerator } from './GuidGenerator.js';
@@ -1 +1 @@
1
- {"version":3,"file":"CryptoOps.js","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { GuidGenerator } from \"./GuidGenerator\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { Base64Decode } from \"../encode/Base64Decode\";\nimport { PkceGenerator } from \"./PkceGenerator\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AsyncMemoryStorage } from \"../cache/AsyncMemoryStorage\";\n\nexport type CachedKeyPair = {\n publicKey: CryptoKey,\n privateKey: CryptoKey,\n requestMethod?: string,\n requestUri?: string\n};\n\n/**\n * MSAL CryptoKeyStore DB Version 2\n */\nexport type CryptoKeyStore = {\n asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\n symmetricKeys: AsyncMemoryStorage<CryptoKey>;\n};\n\n/**\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n */\nexport class CryptoOps implements ICrypto {\n\n private browserCrypto: BrowserCrypto;\n private guidGenerator: GuidGenerator;\n private b64Encode: Base64Encode;\n private b64Decode: Base64Decode;\n private pkceGenerator: PkceGenerator;\n private logger: Logger;\n\n private static POP_KEY_USAGES: Array<KeyUsage> = [\"sign\", \"verify\"];\n private static EXTRACTABLE: boolean = true;\n private cache: CryptoKeyStore;\n\n constructor(logger: Logger) {\n this.logger = logger;\n // Browser crypto needs to be validated first before any other classes can be set.\n this.browserCrypto = new BrowserCrypto(this.logger);\n this.b64Encode = new Base64Encode();\n this.b64Decode = new Base64Decode();\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\n this.cache = {\n asymmetricKeys: new AsyncMemoryStorage<CachedKeyPair>(this.logger),\n symmetricKeys: new AsyncMemoryStorage<CryptoKey>(this.logger)\n };\n }\n\n /**\n * Creates a new random GUID - used to populate state and nonce.\n * @returns string (GUID)\n */\n createNewGuid(): string {\n return this.guidGenerator.generateGuid();\n }\n\n /**\n * Encodes input string to base64.\n * @param input \n */\n base64Encode(input: string): string {\n return this.b64Encode.encode(input);\n } \n \n /**\n * Decodes input string from base64.\n * @param input \n */\n base64Decode(input: string): string {\n return this.b64Decode.decode(input);\n }\n\n /**\n * Generates PKCE codes used in Authorization Code Flow.\n */\n async generatePkceCodes(): Promise<PkceCodes> {\n return this.pkceGenerator.generateCodes();\n }\n\n /**\n * Generates a keypair, stores it and returns a thumbprint\n * @param request\n */\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string> {\n // Generate Keypair\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\n\n // Generate Thumbprint for Public Key\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\n \n const pubKeyThumprintObj: JsonWebKey = {\n e: publicKeyJwk.e,\n kty: publicKeyJwk.kty,\n n: publicKeyJwk.n\n };\n\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\n const publicJwkBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(publicJwkString);\n const publicJwkHash: string = this.b64Encode.urlEncodeArr(new Uint8Array(publicJwkBuffer));\n\n // Generate Thumbprint for Private Key\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\n // Re-import private key to make it unextractable\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\n\n // Store Keypair data in keystore\n await this.cache.asymmetricKeys.setItem(\n publicJwkHash, \n {\n privateKey: unextractablePrivateKey,\n publicKey: keyPair.publicKey,\n requestMethod: request.resourceRequestMethod,\n requestUri: request.resourceRequestUri\n }\n );\n\n return publicJwkHash;\n }\n\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid \n */\n async removeTokenBindingKey(kid: string): Promise<boolean> {\n await this.cache.asymmetricKeys.removeItem(kid);\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\n return !keyFound;\n }\n\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n async clearKeystore(): Promise<boolean> {\n const dataStoreNames = Object.keys(this.cache);\n const databaseStorage = this.cache[dataStoreNames[0]];\n return databaseStorage ? await databaseStorage.deleteDatabase() : false;\n }\n\n /**\n * Signs the given object as a jwt payload with private key retrieved by given kid.\n * @param payload \n * @param kid \n */\n async signJwt(payload: SignedHttpRequest, kid: string): Promise<string> {\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\n \n if (!cachedKeyPair) {\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\n }\n\n // Get public key as JWK\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\n\n // Generate header\n const header = {\n alg: publicKeyJwk.alg,\n type: KEY_FORMAT_JWK\n };\n const encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\n\n // Generate payload\n payload.cnf = {\n jwk: JSON.parse(publicKeyJwkString)\n };\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\n\n // Form token string\n const tokenString = `${encodedHeader}.${encodedPayload}`;\n\n // Sign token\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\n\n return `${tokenString}.${encodedSignature}`;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptoOps.js","sources":["../../src/crypto/CryptoOps.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, Logger, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\r\nimport { GuidGenerator } from \"./GuidGenerator\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { Base64Decode } from \"../encode/Base64Decode\";\r\nimport { PkceGenerator } from \"./PkceGenerator\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { AsyncMemoryStorage } from \"../cache/AsyncMemoryStorage\";\r\n\r\nexport type CachedKeyPair = {\r\n publicKey: CryptoKey,\r\n privateKey: CryptoKey,\r\n requestMethod?: string,\r\n requestUri?: string\r\n};\r\n\r\n/**\r\n * MSAL CryptoKeyStore DB Version 2\r\n */\r\nexport type CryptoKeyStore = {\r\n asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\r\n symmetricKeys: AsyncMemoryStorage<CryptoKey>;\r\n};\r\n\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nexport class CryptoOps implements ICrypto {\r\n\r\n private browserCrypto: BrowserCrypto;\r\n private guidGenerator: GuidGenerator;\r\n private b64Encode: Base64Encode;\r\n private b64Decode: Base64Decode;\r\n private pkceGenerator: PkceGenerator;\r\n private logger: Logger;\r\n\r\n private static POP_KEY_USAGES: Array<KeyUsage> = [\"sign\", \"verify\"];\r\n private static EXTRACTABLE: boolean = true;\r\n private cache: CryptoKeyStore;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = {\r\n asymmetricKeys: new AsyncMemoryStorage<CachedKeyPair>(this.logger),\r\n symmetricKeys: new AsyncMemoryStorage<CryptoKey>(this.logger)\r\n };\r\n }\r\n\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n createNewGuid(): string {\r\n return this.guidGenerator.generateGuid();\r\n }\r\n\r\n /**\r\n * Encodes input string to base64.\r\n * @param input \r\n */\r\n base64Encode(input: string): string {\r\n return this.b64Encode.encode(input);\r\n } \r\n \r\n /**\r\n * Decodes input string from base64.\r\n * @param input \r\n */\r\n base64Decode(input: string): string {\r\n return this.b64Decode.decode(input);\r\n }\r\n\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n async generatePkceCodes(): Promise<PkceCodes> {\r\n return this.pkceGenerator.generateCodes();\r\n }\r\n\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string> {\r\n // Generate Keypair\r\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\r\n\r\n // Generate Thumbprint for Public Key\r\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\r\n \r\n const pubKeyThumprintObj: JsonWebKey = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n\r\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n const publicJwkBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(publicJwkString);\r\n const publicJwkHash: string = this.b64Encode.urlEncodeArr(new Uint8Array(publicJwkBuffer));\r\n\r\n // Generate Thumbprint for Private Key\r\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\r\n // Re-import private key to make it unextractable\r\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\r\n\r\n // Store Keypair data in keystore\r\n await this.cache.asymmetricKeys.setItem(\r\n publicJwkHash, \r\n {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n }\r\n );\r\n\r\n return publicJwkHash;\r\n }\r\n\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid \r\n */\r\n async removeTokenBindingKey(kid: string): Promise<boolean> {\r\n await this.cache.asymmetricKeys.removeItem(kid);\r\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\r\n return !keyFound;\r\n }\r\n\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n async clearKeystore(): Promise<boolean> {\r\n const dataStoreNames = Object.keys(this.cache);\r\n const databaseStorage = this.cache[dataStoreNames[0]];\r\n return databaseStorage ? await databaseStorage.deleteDatabase() : false;\r\n }\r\n\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload \r\n * @param kid \r\n */\r\n async signJwt(payload: SignedHttpRequest, kid: string): Promise<string> {\r\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\r\n \r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n\r\n // Get public key as JWK\r\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\r\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n\r\n // Generate header\r\n const header = {\r\n alg: publicKeyJwk.alg,\r\n type: KEY_FORMAT_JWK\r\n };\r\n const encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\r\n\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n\r\n // Form token string\r\n const tokenString = `${encodedHeader}.${encodedPayload}`;\r\n\r\n // Sign token\r\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\r\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n\r\n return `${tokenString}.${encodedSignature}`;\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 { MathUtils } from '../utils/MathUtils.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"GuidGenerator.js","sources":["../../src/crypto/GuidGenerator.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { MathUtils } from \"../utils/MathUtils\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\nexport class GuidGenerator {\n\n // browser crypto object used to generate random values\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.cryptoObj = cryptoObj;\n }\n\n /*\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\n * pseudo-random numbers.\n * The algorithm is as follows:\n * Set the two most significant bits (bits 6 and 7) of the\n * clock_seq_hi_and_reserved to zero and one, respectively.\n * Set the four most significant bits (bits 12 through 15) of the\n * time_hi_and_version field to the 4-bit version number from\n * Section 4.1.3. Version4\n * Set all the other bits to randomly (or pseudo-randomly) chosen\n * values.\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\n * time-low = 4hexOctet\n * time-mid = 2hexOctet\n * time-high-and-version = 2hexOctet\n * clock-seq-and-reserved = hexOctet:\n * clock-seq-low = hexOctet\n * node = 6hexOctet\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\n * y values are 8, 9, A, B\n */\n generateGuid(): string {\n try {\n const buffer: Uint8Array = new Uint8Array(16);\n this.cryptoObj.getRandomValues(buffer);\n\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\n\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\n\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\n }\n catch (err) {\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n const hex: string = \"0123456789abcdef\";\n let r: number = 0;\n let guidResponse: string = \"\";\n for (let i: number = 0; i < 36; i++) {\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\n // each x and y needs to be random\n r = Math.random() * 16 | 0;\n }\n if (guidHolder[i] === \"x\") {\n guidResponse += hex[r];\n } else if (guidHolder[i] === \"y\") {\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\n r |= 0x8; // set pos 3 to 1 as 1???\n guidResponse += hex[r];\n } else {\n guidResponse += guidHolder[i];\n }\n }\n return guidResponse;\n }\n }\n\n /**\n * verifies if a string is GUID\n * @param guid\n */\n static isGuid(guid: string): boolean {\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexGuid.test(guid);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GuidGenerator.js","sources":["../../src/crypto/GuidGenerator.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { MathUtils } from \"../utils/MathUtils\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\nexport class GuidGenerator {\r\n\r\n // browser crypto object used to generate random values\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n generateGuid(): string {\r\n try {\r\n const buffer: Uint8Array = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n const hex: string = \"0123456789abcdef\";\r\n let r: number = 0;\r\n let guidResponse: string = \"\";\r\n for (let i: number = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n } else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n } else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n }\r\n\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\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 { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PkceGenerator.js","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { PkceCodes } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\n// Constant byte array length\nconst RANDOM_BYTE_ARR_LENGTH = 32;\n\n/**\n * Class which exposes APIs to generate PKCE codes and code verifiers.\n */\nexport class PkceGenerator {\n\n private base64Encode: Base64Encode;\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.base64Encode = new Base64Encode();\n this.cryptoObj = cryptoObj;\n }\n\n /**\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\n */\n async generateCodes(): Promise<PkceCodes> {\n const codeVerifier = this.generateCodeVerifier();\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\n return {\n verifier: codeVerifier,\n challenge: codeChallenge\n };\n }\n\n /**\n * Generates a random 32 byte buffer and returns the base64\n * encoded string to be used as a PKCE Code Verifier\n */\n private generateCodeVerifier(): string {\n try {\n // Generate random values as utf-8\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\n this.cryptoObj.getRandomValues(buffer);\n // encode verifier as base64\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\n return pkceCodeVerifierB64;\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n\n /**\n * Creates a base64 encoded PKCE Code Challenge string from the\n * hash created from the PKCE Code Verifier supplied\n */\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise<string> {\n try {\n // hashed verifier\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\n // encode hash as base64\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n}\n"],"names":[],"mappings":";;;;;;AAAA;;;;AAUA;AACA,IAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;IAQI,uBAAY,SAAwB;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;;;;IAKK,qCAAa,GAAnB;;;;;;wBACU,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC3B,qBAAM,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,EAAA;;wBAA1E,aAAa,GAAG,SAA0D;wBAChF,sBAAO;gCACH,QAAQ,EAAE,YAAY;gCACtB,SAAS,EAAE,aAAa;6BAC3B,EAAC;;;;KACL;;;;;IAMO,4CAAoB,GAA5B;QACI,IAAI;;YAEA,IAAM,MAAM,GAAe,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;YAEvC,IAAM,mBAAmB,GAAW,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3E,OAAO,mBAAmB,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;SACzD;KACJ;;;;;IAMa,yDAAiC,GAA/C,UAAgD,gBAAwB;;;;;;;wBAGjC,qBAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAA;;wBAA5E,sBAAsB,GAAG,SAAmD;;wBAElF,sBAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,EAAC;;;wBAE9E,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,GAAC,CAAC,CAAC;;;;;KAE7D;IACL,oBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"PkceGenerator.js","sources":["../../src/crypto/PkceGenerator.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { PkceCodes } from \"@azure/msal-common\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\nimport { Base64Encode } from \"../encode/Base64Encode\";\r\nimport { BrowserCrypto } from \"./BrowserCrypto\";\r\n\r\n// Constant byte array length\r\nconst RANDOM_BYTE_ARR_LENGTH = 32;\r\n\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nexport class PkceGenerator {\r\n\r\n private base64Encode: Base64Encode;\r\n private cryptoObj: BrowserCrypto;\r\n\r\n constructor(cryptoObj: BrowserCrypto) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n async generateCodes(): Promise<PkceCodes> {\r\n const codeVerifier = this.generateCodeVerifier();\r\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\r\n return {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n };\r\n }\r\n\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n private generateCodeVerifier(): string {\r\n try {\r\n // Generate random values as utf-8\r\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise<string> {\r\n try {\r\n // hashed verifier\r\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\r\n // encode hash as base64\r\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\r\n } catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;;;;AAUA;AACA,IAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;IAQI,uBAAY,SAAwB;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;;;;IAKK,qCAAa,GAAnB;;;;;;wBACU,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC3B,qBAAM,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,EAAA;;wBAA1E,aAAa,GAAG,SAA0D;wBAChF,sBAAO;gCACH,QAAQ,EAAE,YAAY;gCACtB,SAAS,EAAE,aAAa;6BAC3B,EAAC;;;;KACL;;;;;IAMO,4CAAoB,GAA5B;QACI,IAAI;;YAEA,IAAM,MAAM,GAAe,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;YAEvC,IAAM,mBAAmB,GAAW,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC3E,OAAO,mBAAmB,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;SACzD;KACJ;;;;;IAMa,yDAAiC,GAA/C,UAAgD,gBAAwB;;;;;;;wBAGjC,qBAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAA;;wBAA5E,sBAAsB,GAAG,SAAmD;;wBAElF,sBAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,EAAC;;;wBAE9E,MAAM,gBAAgB,CAAC,2BAA2B,CAAC,GAAC,CAAC,CAAC;;;;;KAE7D;IACL,oBAAC;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 { CryptoOps } from './CryptoOps.js';
@@ -1 +1 @@
1
- {"version":3,"file":"SignedHttpRequest.js","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"./CryptoOps\";\nimport { Logger, LoggerOptions, PopTokenGenerator, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { version, name } from \"../packageMetadata\";\n\nexport type SignedHttpRequestOptions = {\n loggerOptions: LoggerOptions\n};\n\nexport class SignedHttpRequest {\n private popTokenGenerator: PopTokenGenerator;\n private cryptoOps: CryptoOps;\n private shrParameters: SignedHttpRequestParameters;\n private logger: Logger;\n\n constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions) {\n const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};\n this.logger = new Logger(loggerOptions, name, version);\n this.cryptoOps = new CryptoOps(this.logger);\n this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);\n this.shrParameters = shrParameters;\n }\n\n /**\n * Generates and caches a keypair for the given request options.\n * @returns Public key digest, which should be sent to the token issuer.\n */\n async generatePublicKeyThumbprint(): Promise<string> {\n const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);\n\n return kid;\n }\n\n /**\n * Generates a signed http request for the given payload with the given key.\n * @param payload Payload to sign (e.g. access token)\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\n * @param claims Additional claims to include/override in the signed JWT \n * @returns Pop token signed with the corresponding private key\n */\n async signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string> {\n return this.popTokenGenerator.signPayload(\n payload, \n publicKeyThumbprint,\n this.shrParameters, \n claims\n );\n }\n\n /**\n * Removes cached keys from browser for given public key thumbprint\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\n * @returns If keys are properly deleted\n */\n async removeKeys(publicKeyThumbprint: string): Promise<boolean> {\n return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);\n }\n}\n"],"names":[],"mappings":";;;;;;;AAAA;;;;;IAmBI,2BAAY,aAA0C,EAAE,UAAqC;QACzF,IAAM,aAAa,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;;;;;IAMK,uDAA2B,GAAjC;;;;;4BACoB,qBAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAApE,GAAG,GAAK,CAAA,SAA4D,KAAjE;wBAEX,sBAAO,GAAG,EAAC;;;;KACd;;;;;;;;IASK,uCAAW,GAAjB,UAAkB,OAAe,EAAE,mBAA2B,EAAE,MAAe;;;gBAC3E,sBAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACrC,OAAO,EACP,mBAAmB,EACnB,IAAI,CAAC,aAAa,EAClB,MAAM,CACT,EAAC;;;KACL;;;;;;IAOK,sCAAU,GAAhB,UAAiB,mBAA2B;;;;4BACjC,qBAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAA;4BAAtE,sBAAO,SAA+D,EAAC;;;;KAC1E;IACL,wBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"SignedHttpRequest.js","sources":["../../src/crypto/SignedHttpRequest.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CryptoOps } from \"./CryptoOps\";\r\nimport { Logger, LoggerOptions, PopTokenGenerator, SignedHttpRequestParameters } from \"@azure/msal-common\";\r\nimport { version, name } from \"../packageMetadata\";\r\n\r\nexport type SignedHttpRequestOptions = {\r\n loggerOptions: LoggerOptions\r\n};\r\n\r\nexport class SignedHttpRequest {\r\n private popTokenGenerator: PopTokenGenerator;\r\n private cryptoOps: CryptoOps;\r\n private shrParameters: SignedHttpRequestParameters;\r\n private logger: Logger;\r\n\r\n constructor(shrParameters: SignedHttpRequestParameters, shrOptions?: SignedHttpRequestOptions) {\r\n const loggerOptions = (shrOptions && shrOptions.loggerOptions) || {};\r\n this.logger = new Logger(loggerOptions, name, version);\r\n this.cryptoOps = new CryptoOps(this.logger);\r\n this.popTokenGenerator = new PopTokenGenerator(this.cryptoOps);\r\n this.shrParameters = shrParameters;\r\n }\r\n\r\n /**\r\n * Generates and caches a keypair for the given request options.\r\n * @returns Public key digest, which should be sent to the token issuer.\r\n */\r\n async generatePublicKeyThumbprint(): Promise<string> {\r\n const { kid } = await this.popTokenGenerator.generateKid(this.shrParameters);\r\n\r\n return kid;\r\n }\r\n\r\n /**\r\n * Generates a signed http request for the given payload with the given key.\r\n * @param payload Payload to sign (e.g. access token)\r\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\r\n * @param claims Additional claims to include/override in the signed JWT \r\n * @returns Pop token signed with the corresponding private key\r\n */\r\n async signRequest(payload: string, publicKeyThumbprint: string, claims?: object): Promise<string> {\r\n return this.popTokenGenerator.signPayload(\r\n payload, \r\n publicKeyThumbprint,\r\n this.shrParameters, \r\n claims\r\n );\r\n }\r\n\r\n /**\r\n * Removes cached keys from browser for given public key thumbprint\r\n * @param publicKeyThumbprint Public key digest (from generatePublicKeyThumbprint API)\r\n * @returns If keys are properly deleted\r\n */\r\n async removeKeys(publicKeyThumbprint: string): Promise<boolean> {\r\n return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;AAAA;;;;;IAmBI,2BAAY,aAA0C,EAAE,UAAqC;QACzF,IAAM,aAAa,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;;;;;IAMK,uDAA2B,GAAjC;;;;;4BACoB,qBAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,EAAA;;wBAApE,GAAG,GAAK,CAAA,SAA4D,KAAjE;wBAEX,sBAAO,GAAG,EAAC;;;;KACd;;;;;;;;IASK,uCAAW,GAAjB,UAAkB,OAAe,EAAE,mBAA2B,EAAE,MAAe;;;gBAC3E,sBAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CACrC,OAAO,EACP,mBAAmB,EACnB,IAAI,CAAC,aAAa,EAClB,MAAM,CACT,EAAC;;;KACL;;;;;;IAOK,sCAAU,GAAhB,UAAiB,mBAA2B;;;;4BACjC,qBAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAA;4BAAtE,sBAAO,SAA+D,EAAC;;;;KAC1E;IACL,wBAAC;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 { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"Base64Decode.js","sources":["../../src/encode/Base64Decode.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to decode base64 strings to plaintext. 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 Base64Decode {\n\n /**\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\n * @param input \n */\n decode(input: string): string {\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (encodedString.length % 4) {\n case 0:\n break;\n case 2:\n encodedString += \"==\";\n break;\n case 3:\n encodedString += \"=\";\n break;\n default:\n throw new Error(\"Invalid base64 string\");\n }\n\n const inputUtf8Arr = this.base64DecToArr(encodedString);\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\n }\n\n /**\n * Decodes base64 into Uint8Array\n * @param base64String \n * @param nBlockSize \n */\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, \"\");\n const nInLen = sB64Enc.length;\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\n const aBytes = new Uint8Array(nOutLen);\n\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3;\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n }\n nUint24 = 0;\n }\n }\n\n return aBytes;\n }\n\n /**\n * Base64 string to array decoding helper\n * @param charNum \n */\n private b64ToUint6(charNum: number): number {\n return charNum > 64 && charNum < 91 ?\n charNum - 65\n : charNum > 96 && charNum < 123 ? \n charNum - 71\n : charNum > 47 && charNum < 58 ?\n charNum + 4\n : charNum === 43 ?\n 62\n : charNum === 47 ?\n 63\n :\n 0;\n }\n}\n"],"names":[],"mappings":";;;;AAAA;;;;AAOA;;;;;IAIA;KAoEC;;;;;IA9DG,6BAAM,GAAN,UAAO,KAAa;QAChB,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChE,QAAQ,aAAa,CAAC,MAAM,GAAG,CAAC;YAC5B,KAAK,CAAC;gBACF,MAAM;YACV,KAAK,CAAC;gBACF,aAAa,IAAI,IAAI,CAAC;gBACtB,MAAM;YACV,KAAK,CAAC;gBACF,aAAa,IAAI,GAAG,CAAC;gBACrB,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAChD;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACxD,OAAO,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;KAC3D;;;;;;IAOO,qCAAc,GAAtB,UAAuB,YAAoB,EAAE,UAAmB;QAC5D,IAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChH,IAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvC,KAAK,IAAI,KAAK,SAAA,EAAE,KAAK,SAAA,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE;YACpF,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;YACnB,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YACzE,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE;gBACtC,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;oBAChE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;iBAC3D;gBACD,OAAO,GAAG,CAAC,CAAC;aACf;SACJ;QAED,OAAO,MAAM,CAAC;KACjB;;;;;IAMO,iCAAU,GAAlB,UAAmB,OAAe;QAC9B,OAAO,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;YAC/B,OAAO,GAAG,EAAE;cACV,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG;gBAC3B,OAAO,GAAG,EAAE;kBACV,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;oBAC1B,OAAO,GAAG,CAAC;sBACT,OAAO,KAAK,EAAE;wBACZ,EAAE;0BACA,OAAO,KAAK,EAAE;4BACZ,EAAE;;gCAEF,CAAC,CAAC;KACzB;IACL,mBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"Base64Decode.js","sources":["../../src/encode/Base64Decode.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. 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 Base64Decode {\r\n\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input \r\n */\r\n decode(input: string): string {\r\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n\r\n const inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String \r\n * @param nBlockSize \r\n */\r\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\r\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, \"\");\r\n const nInLen = sB64Enc.length;\r\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n const aBytes = new Uint8Array(nOutLen);\r\n\r\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return aBytes;\r\n }\r\n\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum \r\n */\r\n private b64ToUint6(charNum: number): number {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ? \r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAAA;;;;AAOA;;;;;IAIA;KAoEC;;;;;IA9DG,6BAAM,GAAN,UAAO,KAAa;QAChB,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChE,QAAQ,aAAa,CAAC,MAAM,GAAG,CAAC;YAC5B,KAAK,CAAC;gBACF,MAAM;YACV,KAAK,CAAC;gBACF,aAAa,IAAI,IAAI,CAAC;gBACtB,MAAM;YACV,KAAK,CAAC;gBACF,aAAa,IAAI,GAAG,CAAC;gBACrB,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAChD;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACxD,OAAO,kBAAkB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;KAC3D;;;;;;IAOO,qCAAc,GAAtB,UAAuB,YAAoB,EAAE,UAAmB;QAC5D,IAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChH,IAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvC,KAAK,IAAI,KAAK,SAAA,EAAE,KAAK,SAAA,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE;YACpF,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;YACnB,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YACzE,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE;gBACtC,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE;oBAChE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,MAAM,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;iBAC3D;gBACD,OAAO,GAAG,CAAC,CAAC;aACf;SACJ;QAED,OAAO,MAAM,CAAC;KACjB;;;;;IAMO,iCAAU,GAAlB,UAAmB,OAAe;QAC9B,OAAO,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;YAC/B,OAAO,GAAG,EAAE;cACV,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG;gBAC3B,OAAO,GAAG,EAAE;kBACV,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;oBAC1B,OAAO,GAAG,CAAC;sBACT,OAAO,KAAK,EAAE;wBACZ,EAAE;0BACA,OAAO,KAAK,EAAE;4BACZ,EAAE;;gCAEF,CAAC,CAAC;KACzB;IACL,mBAAC;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 { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"Base64Encode.js","sources":["../../src/encode/Base64Encode.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to encode plaintext to base64 encoded string. 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 Base64Encode {\n \n /**\n * Returns URL Safe b64 encoded string from a plaintext string.\n * @param input \n */\n urlEncode(input: string): string {\n return encodeURIComponent(this.encode(input)\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\"));\n }\n\n /**\n * Returns URL Safe b64 encoded string from an int8Array.\n * @param inputArr \n */\n urlEncodeArr(inputArr: Uint8Array): string {\n return this.base64EncArr(inputArr)\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n }\n\n /**\n * Returns b64 encoded string from plaintext string.\n * @param input \n */\n encode(input: string): string {\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\n return this.base64EncArr(inputUtf8Arr);\n }\n\n /**\n * Base64 encode byte array\n * @param aBytes \n */\n private base64EncArr(aBytes: Uint8Array): string { \n const eqLen = (3 - (aBytes.length % 3)) % 3;\n let sB64Enc = \"\";\n \n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n nMod3 = nIdx % 3;\n /* Uncomment the following line in order to split the output in lines 76-character long: */\n /*\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n */\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n sB64Enc += String.fromCharCode(\n this.uint6ToB64(nUint24 >>> 18 & 63), \n this.uint6ToB64(nUint24 >>> 12 & 63), \n this.uint6ToB64(nUint24 >>> 6 & 63), \n this.uint6ToB64(nUint24 & 63)\n );\n nUint24 = 0;\n }\n }\n\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\n }\n\n /**\n * Base64 string to array encoding helper\n * @param nUint6 \n */\n private uint6ToB64 (nUint6: number): number {\n return nUint6 < 26 ?\n nUint6 + 65\n : nUint6 < 52 ?\n nUint6 + 71\n : nUint6 < 62 ?\n nUint6 - 4\n : nUint6 === 62 ?\n 43\n : nUint6 === 63 ?\n 47\n :\n 65;\n }\n}\n"],"names":[],"mappings":";;;;AAAA;;;;AAOA;;;;;IAIA;KAgFC;;;;;IA1EG,gCAAS,GAAT,UAAU,KAAa;QACnB,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACvC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;KAC7B;;;;;IAMD,mCAAY,GAAZ,UAAa,QAAoB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aAC7B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5B;;;;;IAMD,6BAAM,GAAN,UAAO,KAAa;QAChB,IAAM,YAAY,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;KAC1C;;;;;IAMO,mCAAY,GAApB,UAAqB,MAAkB;QACnC,IAAM,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,KAAK,SAAA,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9E,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;;;;;YAKjB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE;gBAC3C,OAAO,IAAI,MAAM,CAAC,YAAY,CAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAE,GAAG,EAAE,CAAC,EACpC,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAE,GAAG,EAAE,CAAC,EACpC,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EACnC,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC,CAChC,CAAC;gBACF,OAAO,GAAG,CAAC,CAAC;aACf;SACJ;QAED,OAAQ,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;KAC7G;;;;;IAMO,iCAAU,GAAlB,UAAoB,MAAc;QAC9B,OAAO,MAAM,GAAG,EAAE;YACd,MAAM,GAAG,EAAE;cACT,MAAM,GAAG,EAAE;gBACT,MAAM,GAAG,EAAE;kBACT,MAAM,GAAG,EAAE;oBACT,MAAM,GAAG,CAAC;sBACR,MAAM,KAAK,EAAE;wBACX,EAAE;0BACA,MAAM,KAAK,EAAE;4BACX,EAAE;;gCAEF,EAAE,CAAC;KAC1B;IACL,mBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"Base64Encode.js","sources":["../../src/encode/Base64Encode.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\r\n\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. 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 Base64Encode {\r\n \r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input \r\n */\r\n urlEncode(input: string): string {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n }\r\n\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr \r\n */\r\n urlEncodeArr(inputArr: Uint8Array): string {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, \"\")\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n }\r\n\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input \r\n */\r\n encode(input: string): string {\r\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n }\r\n\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes \r\n */\r\n private base64EncArr(aBytes: Uint8Array): string { \r\n const eqLen = (3 - (aBytes.length % 3)) % 3;\r\n let sB64Enc = \"\";\r\n \r\n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(\r\n this.uint6ToB64(nUint24 >>> 18 & 63), \r\n this.uint6ToB64(nUint24 >>> 12 & 63), \r\n this.uint6ToB64(nUint24 >>> 6 & 63), \r\n this.uint6ToB64(nUint24 & 63)\r\n );\r\n nUint24 = 0;\r\n }\r\n }\r\n\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n }\r\n\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6 \r\n */\r\n private uint6ToB64 (nUint6: number): number {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;AAAA;;;;AAOA;;;;;IAIA;KAgFC;;;;;IA1EG,gCAAS,GAAT,UAAU,KAAa;QACnB,OAAO,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACvC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;KAC7B;;;;;IAMD,mCAAY,GAAZ,UAAa,QAAoB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aAC7B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;aACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5B;;;;;IAMD,6BAAM,GAAN,UAAO,KAAa;QAChB,IAAM,YAAY,GAAG,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;KAC1C;;;;;IAMO,mCAAY,GAApB,UAAqB,MAAkB;QACnC,IAAM,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,KAAK,SAAA,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9E,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;;;;;YAKjB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE;gBAC3C,OAAO,IAAI,MAAM,CAAC,YAAY,CAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAE,GAAG,EAAE,CAAC,EACpC,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,EAAE,GAAG,EAAE,CAAC,EACpC,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EACnC,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,CAAC,CAChC,CAAC;gBACF,OAAO,GAAG,CAAC,CAAC;aACf;SACJ;QAED,OAAQ,KAAK,KAAK,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;KAC7G;;;;;IAMO,iCAAU,GAAlB,UAAoB,MAAc;QAC9B,OAAO,MAAM,GAAG,EAAE;YACd,MAAM,GAAG,EAAE;cACT,MAAM,GAAG,EAAE;gBACT,MAAM,GAAG,EAAE;kBACT,MAAM,GAAG,EAAE;oBACT,MAAM,GAAG,CAAC;sBACR,MAAM,KAAK,EAAE;wBACX,EAAE;0BACA,MAAM,KAAK,EAAE;4BACX,EAAE;;gCAEF,EAAE,CAAC;KAC1B;IACL,mBAAC;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 { __extends } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, AuthError } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserAuthError.js","sources":["../../src/error/BrowserAuthError.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessage = {\n pkceNotGenerated: {\n code: \"pkce_not_created\",\n desc: \"The PKCE code challenge and verifier could not be generated.\"\n },\n cryptoDoesNotExist: {\n code: \"crypto_nonexistent\",\n desc: \"The crypto object or function is not available.\"\n },\n httpMethodNotImplementedError: {\n code: \"http_method_not_implemented\",\n desc: \"The HTTP method given has not been implemented in this library.\"\n },\n emptyNavigateUriError: {\n code: \"empty_navigate_uri\",\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\n },\n hashEmptyError: {\n code: \"hash_empty_error\",\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\n },\n hashDoesNotContainStateError: {\n code: \"no_state_in_hash\",\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\n },\n hashDoesNotContainKnownPropertiesError: {\n code: \"hash_does_not_contain_known_properties\",\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\n },\n unableToParseStateError: {\n code: \"unable_to_parse_state\",\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\n },\n stateInteractionTypeMismatchError: {\n code: \"state_interaction_type_mismatch\",\n desc: \"Hash contains state but the interaction type does not match the caller.\"\n },\n interactionInProgress: {\n code: \"interaction_in_progress\",\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n popupWindowError: {\n code: \"popup_window_error\",\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\n },\n emptyWindowError: {\n code: \"empty_window_error\",\n desc: \"window.open returned null or undefined window object.\"\n },\n userCancelledError: {\n code: \"user_cancelled\",\n desc: \"User cancelled the flow.\"\n },\n monitorPopupTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n monitorIframeTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n redirectInIframeError: {\n code: \"redirect_in_iframe\",\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\n },\n blockTokenRequestsInHiddenIframeError: {\n code: \"block_iframe_reload\",\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\n },\n blockAcquireTokenInPopupsError: {\n code: \"block_nested_popups\",\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\n },\n iframeClosedPrematurelyError: {\n code: \"iframe_closed_prematurely\",\n desc: \"The iframe being monitored was closed prematurely.\"\n },\n silentLogoutUnsupportedError: {\n code: \"silent_logout_unsupported\",\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\n },\n noAccountError: {\n code: \"no_account_error\",\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\n },\n silentPromptValueError: {\n code: \"silent_prompt_value_error\",\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\n },\n noTokenRequestCacheError: {\n code: \"no_token_request_cache_error\",\n desc: \"No token request found in cache.\"\n },\n unableToParseTokenRequestCacheError: {\n code: \"unable_to_parse_token_request_cache_error\",\n desc: \"The cached token request could not be parsed.\"\n },\n noCachedAuthorityError: {\n code: \"no_cached_authority_error\",\n desc: \"No cached authority found.\"\n },\n authRequestNotSet: {\n code: \"auth_request_not_set_error\",\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n notInBrowserEnvironment: {\n code: \"non_browser_environment\",\n desc: \"Login and token requests are not supported in non-browser environments.\"\n },\n databaseNotOpen: {\n code: \"database_not_open\",\n desc: \"Database is not open!\"\n },\n noNetworkConnectivity: {\n code: \"no_network_connectivity\",\n desc: \"No network connectivity. Check your internet connection.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\n },\n getRequestFailed: {\n code: \"get_request_failed\",\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\n },\n failedToParseNetworkResponse: {\n code: \"failed_to_parse_response\",\n desc: \"Failed to parse network response. Check network trace.\"\n },\n unableToLoadTokenError: {\n code: \"unable_to_load_token\",\n desc: \"Error loading token to cache.\"\n },\n signingKeyNotFoundInStorage: {\n code: \"crypto_key_not_found\",\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\n },\n databaseUnavailable: {\n code: \"database_unavailable\",\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\n this.name = \"BrowserAuthError\";\n }\n\n /**\n * Creates an error thrown when PKCE is not implemented.\n * @param errDetail \n */\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the crypto object is unavailable.\n * @param errDetail \n */\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\n * @param method \n */\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\n }\n\n /**\n * Creates an error thrown when the navigation URI is empty.\n */\n static createEmptyNavigationUriError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n * @param hashValue \n */\n static createEmptyHashError(hashValue: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createHashDoesNotContainStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value does not contain known properties\n */\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createUnableToParseStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\n }\n\n /**\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\n */\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\n */\n static createInteractionInProgressError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\n }\n\n /**\n * Creates an error thrown when the popup window could not be opened.\n * @param errDetail \n */\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\n }\n\n /**\n * Creates an error thrown when window.open returns an empty window object.\n * @param errDetail \n */\n static createEmptyWindowCreatedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\n }\n\n /**\n * Creates an error thrown when the user closes a popup.\n */\n static createUserCancelledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\n BrowserAuthErrorMessage.userCancelledError.desc);\n }\n\n /**\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\n */\n static createMonitorPopupTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\n */\n static createMonitorIframeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when navigateWindow is called inside an iframe.\n * @param windowParentCheck \n */\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, \n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\n }\n\n /**\n * Creates an error thrown when an auth reload is done inside an iframe.\n */\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\n }\n\n /**\n * Creates an error thrown when a popup attempts to call an acquireToken API\n * @returns \n */\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, \n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\n }\n\n /**\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\n */\n static createIframeClosedPrematurelyError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\n }\n\n /**\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\n */\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\n }\n\n /**\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\n */\n static createNoAccountError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\n }\n\n /**\n * Creates an error thrown when a given prompt value is invalid for silent requests.\n */\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\n }\n\n /**\n * Creates an error thrown when the cached token request could not be retrieved from the cache\n */\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when the token request could not be retrieved from the cache\n */\n static createNoTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\n */\n static createAuthRequestNotSetError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\n BrowserAuthErrorMessage.authRequestNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the authority could not be retrieved from the cache\n */\n static createNoCachedAuthorityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\n }\n\n /**\n * Creates an error thrown if cache type is invalid.\n */\n static createInvalidCacheTypeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Create an error thrown when login and token requests are made from a non-browser environment\n */\n static createNonBrowserEnvironmentError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\n }\n\n /**\n * Create an error thrown when indexDB database is not open\n */\n static createDatabaseNotOpenError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to no internet\n */\n static createNoNetworkConnectivityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\n */\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when get request fails due to reasons other than internet connectivity\n */\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when network client fails to parse network response\n */\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when the necessary information is not available to sideload tokens \n */\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\n }\n \n /**\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\n */\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\n }\n\n /**\n * Create an error when IndexedDB is unavailable\n */\n static createDatabaseUnavailableError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserAuthError.js","sources":["../../src/error/BrowserAuthError.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n\r\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\r\n this.name = \"BrowserAuthError\";\r\n }\r\n\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail \r\n */\r\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\r\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail \r\n */\r\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\r\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method \r\n */\r\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\r\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n static createEmptyNavigationUriError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue \r\n */\r\n static createEmptyHashError(hashValue: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createHashDoesNotContainStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n static createUnableToParseStateError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n static createInteractionInProgressError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail \r\n */\r\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\r\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail \r\n */\r\n static createEmptyWindowCreatedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n static createUserCancelledError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\r\n BrowserAuthErrorMessage.userCancelledError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n static createMonitorPopupTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n static createMonitorIframeTimeoutError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\r\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe.\r\n * @param windowParentCheck \r\n */\r\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, \r\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\r\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns \r\n */\r\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, \r\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n static createIframeClosedPrematurelyError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n static createNoAccountError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n static createNoTokenRequestCacheError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\r\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n static createAuthRequestNotSetError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\r\n BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n static createNoCachedAuthorityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\r\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n static createInvalidCacheTypeError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n static createNonBrowserEnvironmentError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n static createDatabaseNotOpenError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n static createNoNetworkConnectivityError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n }\r\n\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\r\n }\r\n\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens \r\n */\r\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\r\n }\r\n \r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\r\n }\r\n\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n static createDatabaseUnavailableError(): BrowserAuthError {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\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 } from '../_virtual/_tslib.js';
4
4
  import { AuthError } from '@azure/msal-common';
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserConfigurationAuthError.js","sources":["../../src/error/BrowserConfigurationAuthError.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserConfigurationAuthErrorMessage = {\n redirectUriNotSet: {\n code: \"redirect_uri_empty\",\n desc: \"A redirect URI is required for all calls, and none has been set.\"\n },\n postLogoutUriNotSet: {\n code: \"post_logout_uri_empty\",\n desc: \"A post logout redirect has not been set.\"\n },\n storageNotSupportedError: {\n code: \"storage_not_supported\",\n desc: \"Given storage configuration option was not supported.\"\n },\n noRedirectCallbacksSet: {\n code: \"no_redirect_callbacks\",\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n invalidCallbackObject: {\n code: \"invalid_callback_object\",\n desc: \"The object passed for the callback was invalid. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n stubPcaInstanceCalled: {\n code: \"stubbed_public_client_application_called\",\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\n },\n inMemRedirectUnavailable: {\n code: \"in_mem_redirect_unavailable\",\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserConfigurationAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"BrowserConfigurationAuthError\";\n\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\n }\n\n /**\n * Creates an error thrown when the redirect uri is empty (not set by caller)\n */\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n */\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\n }\n\n /**\n * Creates error thrown when given storage location is not supported.\n * @param givenStorageLocation \n */\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\n }\n\n /**\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\n */\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\n }\n\n /**\n * Creates error thrown when the stub instance of PublicClientApplication is called.\n */\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\n }\n\n /*\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\n */\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;;;;AAOA;;;IAGa,oCAAoC,GAAG;IAChD,iBAAiB,EAAE;QACf,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,kEAAkE;KAC3E;IACD,mBAAmB,EAAE;QACjB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,0CAA0C;KACnD;IACD,wBAAwB,EAAE;QACtB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,uDAAuD;KAChE;IACD,sBAAsB,EAAE;QACpB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,qIAAqI;YACvI,0HAA0H;KACjI;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,kDAAkD;YACtD,0HAA0H;KAC/H;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,0CAA0C;QAChD,IAAI,EAAE,gLAAgL;KACzL;IACD,wBAAwB,EAAE;QACtB,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,uRAAuR;KAChS;EACH;AAEF;;;;IAGmD,iDAAS;IAExD,uCAAY,SAAiB,EAAE,YAAqB;QAApD,YACI,kBAAM,SAAS,EAAE,YAAY,CAAC,SAIjC;QAHG,KAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAE5C,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,6BAA6B,CAAC,SAAS,CAAC,CAAC;;KACxE;;;;IAKM,yDAA2B,GAAlC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,iBAAiB,CAAC,IAAI,EAChG,oCAAoC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KACpE;;;;IAKM,mEAAqC,GAA5C;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,mBAAmB,CAAC,IAAI,EAClG,oCAAoC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KACtE;;;;;IAMM,4DAA8B,GAArC,UAAsC,oBAA4B;QAC9D,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,EAAK,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,yBAAoB,oBAAsB,CAAC,CAAC;KACjO;;;;IAKM,gEAAkC,GAAzC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,sBAAsB,CAAC,IAAI,EACrG,oCAAoC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;KACzE;;;;IAKM,8DAAgC,GAAvC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,qBAAqB,CAAC,IAAI,EACpG,oCAAoC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACxE;;;;IAKM,oEAAsC,GAA7C;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,EAAE,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;KACpL;IACL,oCAAC;AAAD,CAvDA,CAAmD,SAAS;;;;"}
1
+ {"version":3,"file":"BrowserConfigurationAuthError.js","sources":["../../src/error/BrowserConfigurationAuthError.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthError } from \"@azure/msal-common\";\r\n\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nexport const BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n }\r\n};\r\n\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nexport class BrowserConfigurationAuthError extends AuthError {\r\n\r\n constructor(errorCode: string, errorMessage?: string) {\r\n super(errorCode, errorMessage);\r\n this.name = \"BrowserConfigurationAuthError\";\r\n\r\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\r\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation \r\n */\r\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\r\n }\r\n\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \r\n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n }\r\n\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\r\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n }\r\n\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAAA;;;;AAOA;;;IAGa,oCAAoC,GAAG;IAChD,iBAAiB,EAAE;QACf,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,kEAAkE;KAC3E;IACD,mBAAmB,EAAE;QACjB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,0CAA0C;KACnD;IACD,wBAAwB,EAAE;QACtB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,uDAAuD;KAChE;IACD,sBAAsB,EAAE;QACpB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,qIAAqI;YACvI,0HAA0H;KACjI;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,kDAAkD;YACtD,0HAA0H;KAC/H;IACD,qBAAqB,EAAE;QACnB,IAAI,EAAE,0CAA0C;QAChD,IAAI,EAAE,gLAAgL;KACzL;IACD,wBAAwB,EAAE;QACtB,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,uRAAuR;KAChS;EACH;AAEF;;;;IAGmD,iDAAS;IAExD,uCAAY,SAAiB,EAAE,YAAqB;QAApD,YACI,kBAAM,SAAS,EAAE,YAAY,CAAC,SAIjC;QAHG,KAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;QAE5C,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,6BAA6B,CAAC,SAAS,CAAC,CAAC;;KACxE;;;;IAKM,yDAA2B,GAAlC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,iBAAiB,CAAC,IAAI,EAChG,oCAAoC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KACpE;;;;IAKM,mEAAqC,GAA5C;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,mBAAmB,CAAC,IAAI,EAClG,oCAAoC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;KACtE;;;;;IAMM,4DAA8B,GAArC,UAAsC,oBAA4B;QAC9D,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,EAAK,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,yBAAoB,oBAAsB,CAAC,CAAC;KACjO;;;;IAKM,gEAAkC,GAAzC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,sBAAsB,CAAC,IAAI,EACrG,oCAAoC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;KACzE;;;;IAKM,8DAAgC,GAAvC;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,qBAAqB,CAAC,IAAI,EACpG,oCAAoC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACxE;;;;IAKM,oEAAsC,GAA7C;QACI,OAAO,IAAI,6BAA6B,CAAC,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,EAAE,oCAAoC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;KACpL;IACL,oCAAC;AAAD,CAvDA,CAAmD,SAAS;;;;"}
@@ -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 { AccountEntity, CacheManager } from '@azure/msal-common';
4
4
  import { EventType } from './EventType.js';
@@ -1 +1 @@
1
- {"version":3,"file":"EventHandler.js","sources":["../../src/event/EventHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\nimport { InteractionType } from \"../utils/BrowserConstants\";\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\nimport { EventType } from \"./EventType\";\n\nexport class EventHandler {\n // Callback for subscribing to events\n private eventCallbacks: Map<string, EventCallbackFunction>;\n private logger: Logger;\n private browserCrypto: ICrypto;\n private listeningToStorageEvents: boolean;\n\n constructor(logger: Logger, browserCrypto: ICrypto) {\n this.eventCallbacks = new Map();\n this.logger = logger;\n this.browserCrypto = browserCrypto;\n this.listeningToStorageEvents = false;\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(callback: EventCallbackFunction): string | null {\n if (typeof window !== \"undefined\") {\n const callbackId = this.browserCrypto.createNewGuid();\n this.eventCallbacks.set(callbackId, callback);\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\n \n return callbackId;\n }\n \n return null;\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventCallbacks.delete(callbackId);\n this.logger.verbose(`Event callback ${callbackId} removed.`);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (!this.listeningToStorageEvents) {\n this.logger.verbose(\"Adding account storage listener.\");\n this.listeningToStorageEvents = true;\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\n } else {\n this.logger.verbose(\"Account storage listener already registered.\");\n }\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (this.listeningToStorageEvents) {\n this.logger.verbose(\"Removing account storage listener.\");\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\n this.listeningToStorageEvents = false;\n } else {\n this.logger.verbose(\"No account storage listener registered.\");\n }\n }\n\n /**\n * Emits events by calling callback with event message\n * @param eventType\n * @param interactionType\n * @param payload\n * @param error\n */\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\n if (typeof window !== \"undefined\") {\n const message: EventMessage = {\n eventType: eventType,\n interactionType: interactionType || null,\n payload: payload || null,\n error: error || null,\n timestamp: Date.now()\n };\n\n this.logger.info(`Emitting event: ${eventType}`);\n\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\n callback.apply(null, [message]);\n });\n }\n }\n\n /**\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\n */\n private handleAccountCacheChange(e: StorageEvent): void {\n try {\n const cacheValue = e.newValue || e.oldValue;\n if (!cacheValue) {\n return;\n }\n const parsedValue = JSON.parse(cacheValue);\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\n return;\n }\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedValue);\n const accountInfo = accountEntity.getAccountInfo();\n if (!e.oldValue && e.newValue) {\n this.logger.info(\"Account was added to cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\n } else if (!e.newValue && e.oldValue) {\n this.logger.info(\"Account was removed from cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\n }\n } catch (e) {\n return;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventHandler.js","sources":["../../src/event/EventHandler.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\r\nimport { InteractionType } from \"../utils/BrowserConstants\";\r\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\r\nimport { EventType } from \"./EventType\";\r\n\r\nexport class EventHandler {\r\n // Callback for subscribing to events\r\n private eventCallbacks: Map<string, EventCallbackFunction>;\r\n private logger: Logger;\r\n private browserCrypto: ICrypto;\r\n private listeningToStorageEvents: boolean;\r\n\r\n constructor(logger: Logger, browserCrypto: ICrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n addEventCallback(callback: EventCallbackFunction): string | null {\r\n if (typeof window !== \"undefined\") {\r\n const callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\r\n \r\n return callbackId;\r\n }\r\n \r\n return null;\r\n }\r\n\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n removeEventCallback(callbackId: string): void {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(`Event callback ${callbackId} removed.`);\r\n }\r\n\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n enableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n } else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n }\r\n\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n disableAccountStorageEvents(): void {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n } else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n }\r\n\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\r\n if (typeof window !== \"undefined\") {\r\n const message: EventMessage = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n\r\n this.logger.info(`Emitting event: ${eventType}`);\r\n\r\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\r\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\r\n callback.apply(null, [message]);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n private handleAccountCacheChange(e: StorageEvent): void {\r\n try {\r\n const cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n const parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedValue);\r\n const accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n } else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n } catch (e) {\r\n return;\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
  import { EventType } from './EventType.js';
4
4
  import { InteractionType, InteractionStatus } from '../utils/BrowserConstants.js';