@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +213 -213
  3. package/dist/app/IPublicClientApplication.d.ts +45 -45
  4. package/dist/app/IPublicClientApplication.js +96 -96
  5. package/dist/app/PublicClientApplication.d.ts +244 -244
  6. package/dist/app/PublicClientApplication.js +307 -307
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
  8. package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  12. package/dist/cache/AsyncMemoryStorage.js +132 -132
  13. package/dist/cache/BrowserCacheManager.d.ts +376 -377
  14. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  15. package/dist/cache/BrowserCacheManager.js +1275 -1276
  16. package/dist/cache/BrowserCacheManager.js.map +1 -1
  17. package/dist/cache/BrowserStorage.d.ts +11 -11
  18. package/dist/cache/BrowserStorage.js +35 -35
  19. package/dist/cache/CryptoKeyStore.d.ts +18 -17
  20. package/dist/cache/CryptoKeyStore.d.ts.map +1 -1
  21. package/dist/cache/CryptoKeyStore.js +40 -41
  22. package/dist/cache/CryptoKeyStore.js.map +1 -1
  23. package/dist/cache/DatabaseStorage.d.ts +56 -56
  24. package/dist/cache/DatabaseStorage.js +190 -190
  25. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  26. package/dist/cache/ITokenCache.d.ts +10 -10
  27. package/dist/cache/IWindowStorage.d.ts +27 -27
  28. package/dist/cache/MemoryStorage.d.ts +11 -11
  29. package/dist/cache/MemoryStorage.js +31 -31
  30. package/dist/cache/TokenCache.d.ts +76 -76
  31. package/dist/cache/TokenCache.js +225 -225
  32. package/dist/config/Configuration.d.ts +187 -203
  33. package/dist/config/Configuration.d.ts.map +1 -1
  34. package/dist/config/Configuration.js +97 -101
  35. package/dist/config/Configuration.js.map +1 -1
  36. package/dist/controllers/ControllerFactory.d.ts +9 -9
  37. package/dist/controllers/ControllerFactory.js +37 -37
  38. package/dist/controllers/IController.d.ts +66 -66
  39. package/dist/controllers/IController.d.ts.map +1 -1
  40. package/dist/controllers/StandardController.d.ts +413 -413
  41. package/dist/controllers/StandardController.d.ts.map +1 -1
  42. package/dist/controllers/StandardController.js +1277 -1272
  43. package/dist/controllers/StandardController.js.map +1 -1
  44. package/dist/crypto/BrowserCrypto.d.ts +49 -61
  45. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  46. package/dist/crypto/BrowserCrypto.js +93 -134
  47. package/dist/crypto/BrowserCrypto.js.map +1 -1
  48. package/dist/crypto/CryptoOps.d.ts +72 -73
  49. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  50. package/dist/crypto/CryptoOps.js +150 -150
  51. package/dist/crypto/CryptoOps.js.map +1 -1
  52. package/dist/crypto/GuidGenerator.d.ts +12 -12
  53. package/dist/crypto/GuidGenerator.js +96 -96
  54. package/dist/crypto/ISubtleCrypto.d.ts +9 -9
  55. package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
  56. package/dist/crypto/ModernBrowserCrypto.js +24 -24
  57. package/dist/crypto/PkceGenerator.d.ts +24 -24
  58. package/dist/crypto/PkceGenerator.js +58 -58
  59. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  60. package/dist/crypto/SignedHttpRequest.js +39 -39
  61. package/dist/encode/Base64Decode.d.ts +22 -22
  62. package/dist/encode/Base64Decode.js +73 -73
  63. package/dist/encode/Base64Encode.d.ts +31 -31
  64. package/dist/encode/Base64Encode.js +79 -79
  65. package/dist/error/BrowserAuthError.d.ts +382 -382
  66. package/dist/error/BrowserAuthError.js +483 -483
  67. package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
  68. package/dist/error/BrowserConfigurationAuthError.js +96 -96
  69. package/dist/error/NativeAuthError.d.ts +57 -56
  70. package/dist/error/NativeAuthError.d.ts.map +1 -1
  71. package/dist/error/NativeAuthError.js +93 -88
  72. package/dist/error/NativeAuthError.js.map +1 -1
  73. package/dist/event/EventHandler.d.ts +41 -41
  74. package/dist/event/EventHandler.js +119 -119
  75. package/dist/event/EventMessage.d.ts +25 -25
  76. package/dist/event/EventMessage.d.ts.map +1 -1
  77. package/dist/event/EventMessage.js +68 -67
  78. package/dist/event/EventMessage.js.map +1 -1
  79. package/dist/event/EventType.d.ts +28 -26
  80. package/dist/event/EventType.d.ts.map +1 -1
  81. package/dist/event/EventType.js +32 -32
  82. package/dist/event/EventType.js.map +1 -1
  83. package/dist/index.d.ts +35 -35
  84. package/dist/index.js +1 -1
  85. package/dist/interaction_client/BaseInteractionClient.d.ts +53 -52
  86. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  87. package/dist/interaction_client/BaseInteractionClient.js +151 -138
  88. package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
  89. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  90. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
  91. package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
  92. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  93. package/dist/interaction_client/NativeInteractionClient.js +521 -517
  94. package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
  95. package/dist/interaction_client/PopupClient.d.ts +111 -111
  96. package/dist/interaction_client/PopupClient.js +476 -476
  97. package/dist/interaction_client/RedirectClient.d.ts +48 -48
  98. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  99. package/dist/interaction_client/RedirectClient.js +291 -290
  100. package/dist/interaction_client/RedirectClient.js.map +1 -1
  101. package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
  102. package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
  103. package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
  104. package/dist/interaction_client/SilentCacheClient.js +67 -67
  105. package/dist/interaction_client/SilentCacheClient.js.map +1 -1
  106. package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
  107. package/dist/interaction_client/SilentIframeClient.js +127 -127
  108. package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
  109. package/dist/interaction_client/SilentRefreshClient.js +62 -62
  110. package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
  111. package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
  112. package/dist/interaction_client/StandardInteractionClient.js +259 -259
  113. package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
  114. package/dist/interaction_handler/InteractionHandler.js +127 -127
  115. package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
  116. package/dist/interaction_handler/RedirectHandler.js +118 -118
  117. package/dist/interaction_handler/SilentHandler.d.ts +47 -47
  118. package/dist/interaction_handler/SilentHandler.js +162 -162
  119. package/dist/internals.d.ts +23 -23
  120. package/dist/internals.js +4 -4
  121. package/dist/navigation/INavigationClient.d.ts +16 -16
  122. package/dist/navigation/NavigationClient.d.ts +22 -22
  123. package/dist/navigation/NavigationClient.js +40 -40
  124. package/dist/navigation/NavigationOptions.d.ts +12 -12
  125. package/dist/network/FetchClient.d.ts +26 -26
  126. package/dist/network/FetchClient.js +99 -99
  127. package/dist/network/XhrClient.d.ts +40 -40
  128. package/dist/network/XhrClient.js +117 -117
  129. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  130. package/dist/operatingcontext/BaseOperatingContext.js +44 -44
  131. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  132. package/dist/operatingcontext/StandardOperatingContext.js +43 -43
  133. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
  134. package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
  135. package/dist/packageMetadata.d.ts +2 -2
  136. package/dist/packageMetadata.d.ts.map +1 -1
  137. package/dist/packageMetadata.js +4 -4
  138. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  139. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  140. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  141. package/dist/request/EndSessionRequest.d.ts +15 -15
  142. package/dist/request/PopupRequest.d.ts +32 -32
  143. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  144. package/dist/request/RedirectRequest.d.ts +33 -33
  145. package/dist/request/SilentRequest.d.ts +30 -30
  146. package/dist/request/SsoSilentRequest.d.ts +26 -26
  147. package/dist/telemetry/BrowserPerformanceClient.d.ts +37 -38
  148. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  149. package/dist/telemetry/BrowserPerformanceClient.js +124 -124
  150. package/dist/telemetry/BrowserPerformanceClient.js.map +1 -1
  151. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  152. package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
  153. package/dist/utils/BrowserConstants.d.ts +176 -166
  154. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  155. package/dist/utils/BrowserConstants.js +205 -215
  156. package/dist/utils/BrowserConstants.js.map +1 -1
  157. package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
  158. package/dist/utils/BrowserProtocolUtils.js +34 -34
  159. package/dist/utils/BrowserStringUtils.d.ts +26 -26
  160. package/dist/utils/BrowserStringUtils.js +149 -149
  161. package/dist/utils/BrowserUtils.d.ts +65 -65
  162. package/dist/utils/BrowserUtils.js +138 -138
  163. package/dist/utils/MathUtils.d.ts +11 -11
  164. package/dist/utils/MathUtils.js +21 -21
  165. package/lib/msal-browser.cjs.js +18227 -0
  166. package/lib/msal-browser.cjs.js.map +1 -0
  167. package/lib/msal-browser.js +18233 -0
  168. package/lib/msal-browser.js.map +1 -0
  169. package/lib/msal-browser.min.js +63 -0
  170. package/package.json +101 -95
  171. package/dist/crypto/MsBrowserCrypto.d.ts +0 -10
  172. package/dist/crypto/MsBrowserCrypto.d.ts.map +0 -1
  173. package/dist/crypto/MsBrowserCrypto.js +0 -88
  174. package/dist/crypto/MsBrowserCrypto.js.map +0 -1
  175. package/dist/crypto/MsrBrowserCrypto.d.ts +0 -18
  176. package/dist/crypto/MsrBrowserCrypto.d.ts.map +0 -1
  177. package/dist/crypto/MsrBrowserCrypto.js +0 -35
  178. package/dist/crypto/MsrBrowserCrypto.js.map +0 -1
@@ -1,23 +1,23 @@
1
- /**
2
- * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:
3
- * 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
4
- */
5
- export declare class Base64Decode {
6
- /**
7
- * Returns a URL-safe plaintext decoded string from b64 encoded input.
8
- * @param input
9
- */
10
- decode(input: string): string;
11
- /**
12
- * Decodes base64 into Uint8Array
13
- * @param base64String
14
- * @param nBlockSize
15
- */
16
- private base64DecToArr;
17
- /**
18
- * Base64 string to array decoding helper
19
- * @param charNum
20
- */
21
- private b64ToUint6;
22
- }
1
+ /**
2
+ * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:
3
+ * 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
4
+ */
5
+ export declare class Base64Decode {
6
+ /**
7
+ * Returns a URL-safe plaintext decoded string from b64 encoded input.
8
+ * @param input
9
+ */
10
+ decode(input: string): string;
11
+ /**
12
+ * Decodes base64 into Uint8Array
13
+ * @param base64String
14
+ * @param nBlockSize
15
+ */
16
+ private base64DecToArr;
17
+ /**
18
+ * Base64 string to array decoding helper
19
+ * @param charNum
20
+ */
21
+ private b64ToUint6;
22
+ }
23
23
  //# sourceMappingURL=Base64Decode.d.ts.map
@@ -1,80 +1,80 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { Constants } from '@azure/msal-common';
4
4
  import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
5
5
 
6
- /*
7
- * Copyright (c) Microsoft Corporation. All rights reserved.
8
- * Licensed under the MIT License.
9
- */
10
- /**
11
- * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:
12
- * 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
13
- */
14
- class Base64Decode {
15
- /**
16
- * Returns a URL-safe plaintext decoded string from b64 encoded input.
17
- * @param input
18
- */
19
- decode(input) {
20
- let encodedString = input.replace(/-/g, "+").replace(/_/g, "/");
21
- switch (encodedString.length % 4) {
22
- case 0:
23
- break;
24
- case 2:
25
- encodedString += "==";
26
- break;
27
- case 3:
28
- encodedString += "=";
29
- break;
30
- default:
31
- throw new Error("Invalid base64 string");
32
- }
33
- const inputUtf8Arr = this.base64DecToArr(encodedString);
34
- return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);
35
- }
36
- /**
37
- * Decodes base64 into Uint8Array
38
- * @param base64String
39
- * @param nBlockSize
40
- */
41
- base64DecToArr(base64String, nBlockSize) {
42
- const sB64Enc = base64String.replace(/[^A-Za-z0-9\+\/]/g, Constants.EMPTY_STRING);
43
- const nInLen = sB64Enc.length;
44
- const nOutLen = nBlockSize
45
- ? Math.ceil(((nInLen * 3 + 1) >>> 2) / nBlockSize) * nBlockSize
46
- : (nInLen * 3 + 1) >>> 2;
47
- const aBytes = new Uint8Array(nOutLen);
48
- for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
49
- nMod4 = nInIdx & 3;
50
- nUint24 |=
51
- this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (18 - 6 * nMod4);
52
- if (nMod4 === 3 || nInLen - nInIdx === 1) {
53
- for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
54
- aBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255;
55
- }
56
- nUint24 = 0;
57
- }
58
- }
59
- return aBytes;
60
- }
61
- /**
62
- * Base64 string to array decoding helper
63
- * @param charNum
64
- */
65
- b64ToUint6(charNum) {
66
- return charNum > 64 && charNum < 91
67
- ? charNum - 65
68
- : charNum > 96 && charNum < 123
69
- ? charNum - 71
70
- : charNum > 47 && charNum < 58
71
- ? charNum + 4
72
- : charNum === 43
73
- ? 62
74
- : charNum === 47
75
- ? 63
76
- : 0;
77
- }
6
+ /*
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License.
9
+ */
10
+ /**
11
+ * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:
12
+ * 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
13
+ */
14
+ class Base64Decode {
15
+ /**
16
+ * Returns a URL-safe plaintext decoded string from b64 encoded input.
17
+ * @param input
18
+ */
19
+ decode(input) {
20
+ let encodedString = input.replace(/-/g, "+").replace(/_/g, "/");
21
+ switch (encodedString.length % 4) {
22
+ case 0:
23
+ break;
24
+ case 2:
25
+ encodedString += "==";
26
+ break;
27
+ case 3:
28
+ encodedString += "=";
29
+ break;
30
+ default:
31
+ throw new Error("Invalid base64 string");
32
+ }
33
+ const inputUtf8Arr = this.base64DecToArr(encodedString);
34
+ return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);
35
+ }
36
+ /**
37
+ * Decodes base64 into Uint8Array
38
+ * @param base64String
39
+ * @param nBlockSize
40
+ */
41
+ base64DecToArr(base64String, nBlockSize) {
42
+ const sB64Enc = base64String.replace(/[^A-Za-z0-9\+\/]/g, Constants.EMPTY_STRING);
43
+ const nInLen = sB64Enc.length;
44
+ const nOutLen = nBlockSize
45
+ ? Math.ceil(((nInLen * 3 + 1) >>> 2) / nBlockSize) * nBlockSize
46
+ : (nInLen * 3 + 1) >>> 2;
47
+ const aBytes = new Uint8Array(nOutLen);
48
+ for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
49
+ nMod4 = nInIdx & 3;
50
+ nUint24 |=
51
+ this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (18 - 6 * nMod4);
52
+ if (nMod4 === 3 || nInLen - nInIdx === 1) {
53
+ for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
54
+ aBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255;
55
+ }
56
+ nUint24 = 0;
57
+ }
58
+ }
59
+ return aBytes;
60
+ }
61
+ /**
62
+ * Base64 string to array decoding helper
63
+ * @param charNum
64
+ */
65
+ b64ToUint6(charNum) {
66
+ return charNum > 64 && charNum < 91
67
+ ? charNum - 65
68
+ : charNum > 96 && charNum < 123
69
+ ? charNum - 71
70
+ : charNum > 47 && charNum < 58
71
+ ? charNum + 4
72
+ : charNum === 43
73
+ ? 62
74
+ : charNum === 47
75
+ ? 63
76
+ : 0;
77
+ }
78
78
  }
79
79
 
80
80
  export { Base64Decode };
@@ -1,32 +1,32 @@
1
- /**
2
- * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:
3
- * 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
4
- */
5
- export declare class Base64Encode {
6
- /**
7
- * Returns URL Safe b64 encoded string from a plaintext string.
8
- * @param input
9
- */
10
- urlEncode(input: string): string;
11
- /**
12
- * Returns URL Safe b64 encoded string from an int8Array.
13
- * @param inputArr
14
- */
15
- urlEncodeArr(inputArr: Uint8Array): string;
16
- /**
17
- * Returns b64 encoded string from plaintext string.
18
- * @param input
19
- */
20
- encode(input: string): string;
21
- /**
22
- * Base64 encode byte array
23
- * @param aBytes
24
- */
25
- private base64EncArr;
26
- /**
27
- * Base64 string to array encoding helper
28
- * @param nUint6
29
- */
30
- private uint6ToB64;
31
- }
1
+ /**
2
+ * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:
3
+ * 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
4
+ */
5
+ export declare class Base64Encode {
6
+ /**
7
+ * Returns URL Safe b64 encoded string from a plaintext string.
8
+ * @param input
9
+ */
10
+ urlEncode(input: string): string;
11
+ /**
12
+ * Returns URL Safe b64 encoded string from an int8Array.
13
+ * @param inputArr
14
+ */
15
+ urlEncodeArr(inputArr: Uint8Array): string;
16
+ /**
17
+ * Returns b64 encoded string from plaintext string.
18
+ * @param input
19
+ */
20
+ encode(input: string): string;
21
+ /**
22
+ * Base64 encode byte array
23
+ * @param aBytes
24
+ */
25
+ private base64EncArr;
26
+ /**
27
+ * Base64 string to array encoding helper
28
+ * @param nUint6
29
+ */
30
+ private uint6ToB64;
31
+ }
32
32
  //# sourceMappingURL=Base64Encode.d.ts.map
@@ -1,86 +1,86 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
2
2
  'use strict';
3
3
  import { Constants } from '@azure/msal-common';
4
4
  import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
5
5
 
6
- /*
7
- * Copyright (c) Microsoft Corporation. All rights reserved.
8
- * Licensed under the MIT License.
9
- */
10
- /**
11
- * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:
12
- * 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
13
- */
14
- class Base64Encode {
15
- /**
16
- * Returns URL Safe b64 encoded string from a plaintext string.
17
- * @param input
18
- */
19
- urlEncode(input) {
20
- return encodeURIComponent(this.encode(input)
21
- .replace(/=/g, Constants.EMPTY_STRING)
22
- .replace(/\+/g, "-")
23
- .replace(/\//g, "_"));
24
- }
25
- /**
26
- * Returns URL Safe b64 encoded string from an int8Array.
27
- * @param inputArr
28
- */
29
- urlEncodeArr(inputArr) {
30
- return this.base64EncArr(inputArr)
31
- .replace(/=/g, Constants.EMPTY_STRING)
32
- .replace(/\+/g, "-")
33
- .replace(/\//g, "_");
34
- }
35
- /**
36
- * Returns b64 encoded string from plaintext string.
37
- * @param input
38
- */
39
- encode(input) {
40
- const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);
41
- return this.base64EncArr(inputUtf8Arr);
42
- }
43
- /**
44
- * Base64 encode byte array
45
- * @param aBytes
46
- */
47
- base64EncArr(aBytes) {
48
- const eqLen = (3 - (aBytes.length % 3)) % 3;
49
- let sB64Enc = Constants.EMPTY_STRING;
50
- for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
51
- nMod3 = nIdx % 3;
52
- /* Uncomment the following line in order to split the output in lines 76-character long: */
53
- /*
54
- *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
55
- */
56
- nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24);
57
- if (nMod3 === 2 || aBytes.length - nIdx === 1) {
58
- sB64Enc += String.fromCharCode(this.uint6ToB64((nUint24 >>> 18) & 63), this.uint6ToB64((nUint24 >>> 12) & 63), this.uint6ToB64((nUint24 >>> 6) & 63), this.uint6ToB64(nUint24 & 63));
59
- nUint24 = 0;
60
- }
61
- }
62
- return eqLen === 0
63
- ? sB64Enc
64
- : sB64Enc.substring(0, sB64Enc.length - eqLen) +
65
- (eqLen === 1 ? "=" : "==");
66
- }
67
- /**
68
- * Base64 string to array encoding helper
69
- * @param nUint6
70
- */
71
- uint6ToB64(nUint6) {
72
- return nUint6 < 26
73
- ? nUint6 + 65
74
- : nUint6 < 52
75
- ? nUint6 + 71
76
- : nUint6 < 62
77
- ? nUint6 - 4
78
- : nUint6 === 62
79
- ? 43
80
- : nUint6 === 63
81
- ? 47
82
- : 65;
83
- }
6
+ /*
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License.
9
+ */
10
+ /**
11
+ * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:
12
+ * 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
13
+ */
14
+ class Base64Encode {
15
+ /**
16
+ * Returns URL Safe b64 encoded string from a plaintext string.
17
+ * @param input
18
+ */
19
+ urlEncode(input) {
20
+ return encodeURIComponent(this.encode(input)
21
+ .replace(/=/g, Constants.EMPTY_STRING)
22
+ .replace(/\+/g, "-")
23
+ .replace(/\//g, "_"));
24
+ }
25
+ /**
26
+ * Returns URL Safe b64 encoded string from an int8Array.
27
+ * @param inputArr
28
+ */
29
+ urlEncodeArr(inputArr) {
30
+ return this.base64EncArr(inputArr)
31
+ .replace(/=/g, Constants.EMPTY_STRING)
32
+ .replace(/\+/g, "-")
33
+ .replace(/\//g, "_");
34
+ }
35
+ /**
36
+ * Returns b64 encoded string from plaintext string.
37
+ * @param input
38
+ */
39
+ encode(input) {
40
+ const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);
41
+ return this.base64EncArr(inputUtf8Arr);
42
+ }
43
+ /**
44
+ * Base64 encode byte array
45
+ * @param aBytes
46
+ */
47
+ base64EncArr(aBytes) {
48
+ const eqLen = (3 - (aBytes.length % 3)) % 3;
49
+ let sB64Enc = Constants.EMPTY_STRING;
50
+ for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {
51
+ nMod3 = nIdx % 3;
52
+ /* Uncomment the following line in order to split the output in lines 76-character long: */
53
+ /*
54
+ *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += "\r\n"; }
55
+ */
56
+ nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24);
57
+ if (nMod3 === 2 || aBytes.length - nIdx === 1) {
58
+ sB64Enc += String.fromCharCode(this.uint6ToB64((nUint24 >>> 18) & 63), this.uint6ToB64((nUint24 >>> 12) & 63), this.uint6ToB64((nUint24 >>> 6) & 63), this.uint6ToB64(nUint24 & 63));
59
+ nUint24 = 0;
60
+ }
61
+ }
62
+ return eqLen === 0
63
+ ? sB64Enc
64
+ : sB64Enc.substring(0, sB64Enc.length - eqLen) +
65
+ (eqLen === 1 ? "=" : "==");
66
+ }
67
+ /**
68
+ * Base64 string to array encoding helper
69
+ * @param nUint6
70
+ */
71
+ uint6ToB64(nUint6) {
72
+ return nUint6 < 26
73
+ ? nUint6 + 65
74
+ : nUint6 < 52
75
+ ? nUint6 + 71
76
+ : nUint6 < 62
77
+ ? nUint6 - 4
78
+ : nUint6 === 62
79
+ ? 43
80
+ : nUint6 === 63
81
+ ? 47
82
+ : 65;
83
+ }
84
84
  }
85
85
 
86
86
  export { Base64Encode };