@azure/msal-common 14.13.1 → 14.14.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 (193) hide show
  1. package/dist/account/AccountInfo.d.ts +66 -66
  2. package/dist/account/AccountInfo.mjs +77 -77
  3. package/dist/account/AuthToken.d.ts +17 -17
  4. package/dist/account/AuthToken.mjs +58 -58
  5. package/dist/account/CcsCredential.d.ts +9 -9
  6. package/dist/account/CcsCredential.mjs +8 -8
  7. package/dist/account/ClientCredentials.d.ts +19 -19
  8. package/dist/account/ClientInfo.d.ts +18 -18
  9. package/dist/account/ClientInfo.mjs +37 -37
  10. package/dist/account/TokenClaims.d.ts +83 -83
  11. package/dist/account/TokenClaims.mjs +20 -20
  12. package/dist/authority/Authority.d.ts +254 -254
  13. package/dist/authority/Authority.mjs +836 -836
  14. package/dist/authority/AuthorityFactory.d.ts +18 -18
  15. package/dist/authority/AuthorityFactory.mjs +28 -28
  16. package/dist/authority/AuthorityMetadata.d.ts +43 -43
  17. package/dist/authority/AuthorityMetadata.mjs +137 -137
  18. package/dist/authority/AuthorityOptions.d.ts +27 -27
  19. package/dist/authority/AuthorityOptions.mjs +18 -18
  20. package/dist/authority/AuthorityType.d.ts +10 -10
  21. package/dist/authority/AuthorityType.mjs +13 -13
  22. package/dist/authority/AzureRegion.d.ts +1 -1
  23. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  24. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  25. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  26. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  27. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  28. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  29. package/dist/authority/ImdsOptions.d.ts +5 -5
  30. package/dist/authority/OIDCOptions.d.ts +8 -8
  31. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  32. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  33. package/dist/authority/ProtocolMode.d.ts +8 -8
  34. package/dist/authority/ProtocolMode.mjs +11 -11
  35. package/dist/authority/RegionDiscovery.d.ts +32 -32
  36. package/dist/authority/RegionDiscovery.mjs +106 -106
  37. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  38. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  39. package/dist/cache/CacheManager.d.ts +497 -497
  40. package/dist/cache/CacheManager.mjs +1249 -1249
  41. package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
  42. package/dist/cache/entities/AccountEntity.d.ts +106 -106
  43. package/dist/cache/entities/AccountEntity.mjs +240 -240
  44. package/dist/cache/entities/AppMetadataEntity.d.ts +11 -11
  45. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +15 -15
  46. package/dist/cache/entities/CacheRecord.d.ts +13 -13
  47. package/dist/cache/entities/CredentialEntity.d.ts +30 -30
  48. package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
  49. package/dist/cache/entities/RefreshTokenEntity.d.ts +7 -7
  50. package/dist/cache/entities/ServerTelemetryEntity.d.ts +6 -5
  51. package/dist/cache/entities/ServerTelemetryEntity.d.ts.map +1 -1
  52. package/dist/cache/entities/ThrottlingEntity.d.ts +7 -7
  53. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  54. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  55. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  56. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  57. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  58. package/dist/cache/utils/CacheHelpers.d.ts +94 -94
  59. package/dist/cache/utils/CacheHelpers.mjs +324 -324
  60. package/dist/cache/utils/CacheTypes.d.ts +69 -69
  61. package/dist/client/AuthorizationCodeClient.d.ts +74 -74
  62. package/dist/client/AuthorizationCodeClient.mjs +420 -420
  63. package/dist/client/BaseClient.d.ts +51 -51
  64. package/dist/client/BaseClient.mjs +100 -100
  65. package/dist/client/RefreshTokenClient.d.ts +35 -35
  66. package/dist/client/RefreshTokenClient.mjs +211 -211
  67. package/dist/client/SilentFlowClient.d.ts +27 -27
  68. package/dist/client/SilentFlowClient.mjs +133 -133
  69. package/dist/config/AppTokenProvider.d.ts +38 -38
  70. package/dist/config/ClientConfiguration.d.ts +150 -150
  71. package/dist/config/ClientConfiguration.mjs +95 -95
  72. package/dist/constants/AADServerParamKeys.d.ts +53 -52
  73. package/dist/constants/AADServerParamKeys.d.ts.map +1 -1
  74. package/dist/constants/AADServerParamKeys.mjs +59 -58
  75. package/dist/constants/AADServerParamKeys.mjs.map +1 -1
  76. package/dist/crypto/ICrypto.d.ts +68 -68
  77. package/dist/crypto/ICrypto.mjs +36 -36
  78. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  79. package/dist/crypto/JoseHeader.d.ts +22 -22
  80. package/dist/crypto/JoseHeader.mjs +37 -37
  81. package/dist/crypto/PopTokenGenerator.d.ts +59 -59
  82. package/dist/crypto/PopTokenGenerator.mjs +81 -81
  83. package/dist/crypto/SignedHttpRequest.d.ts +15 -15
  84. package/dist/error/AuthError.d.ts +44 -44
  85. package/dist/error/AuthError.mjs +46 -46
  86. package/dist/error/AuthErrorCodes.d.ts +5 -5
  87. package/dist/error/AuthErrorCodes.mjs +9 -9
  88. package/dist/error/CacheError.d.ts +20 -20
  89. package/dist/error/CacheError.mjs +24 -24
  90. package/dist/error/CacheErrorCodes.d.ts +2 -2
  91. package/dist/error/CacheErrorCodes.mjs +6 -6
  92. package/dist/error/ClientAuthError.d.ts +237 -237
  93. package/dist/error/ClientAuthError.mjs +249 -249
  94. package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
  95. package/dist/error/ClientAuthErrorCodes.mjs +48 -48
  96. package/dist/error/ClientConfigurationError.d.ts +128 -128
  97. package/dist/error/ClientConfigurationError.mjs +135 -135
  98. package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
  99. package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
  100. package/dist/error/InteractionRequiredAuthError.d.ts +65 -65
  101. package/dist/error/InteractionRequiredAuthError.mjs +85 -85
  102. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +7 -7
  103. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +13 -13
  104. package/dist/error/JoseHeaderError.d.ts +15 -15
  105. package/dist/error/JoseHeaderError.mjs +22 -22
  106. package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
  107. package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
  108. package/dist/error/ServerError.d.ts +15 -15
  109. package/dist/error/ServerError.mjs +16 -16
  110. package/dist/index.cjs +8664 -8599
  111. package/dist/index.cjs.map +1 -1
  112. package/dist/index.d.ts +107 -107
  113. package/dist/index.mjs +1 -1
  114. package/dist/logger/Logger.d.ts +95 -95
  115. package/dist/logger/Logger.mjs +188 -188
  116. package/dist/network/INetworkModule.d.ts +29 -29
  117. package/dist/network/INetworkModule.mjs +12 -12
  118. package/dist/network/NetworkManager.d.ts +33 -33
  119. package/dist/network/NetworkManager.mjs +34 -34
  120. package/dist/network/RequestThumbprint.d.ts +18 -18
  121. package/dist/network/ThrottlingUtils.d.ts +42 -42
  122. package/dist/network/ThrottlingUtils.mjs +95 -95
  123. package/dist/packageMetadata.d.ts +2 -2
  124. package/dist/packageMetadata.mjs +4 -4
  125. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  126. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  127. package/dist/request/BaseAuthRequest.d.ts +47 -47
  128. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  129. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  130. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  131. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  132. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  133. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  134. package/dist/request/CommonRefreshTokenRequest.d.ts +22 -22
  135. package/dist/request/CommonSilentFlowRequest.d.ts +27 -27
  136. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  137. package/dist/request/NativeRequest.d.ts +19 -19
  138. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  139. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  140. package/dist/request/RequestParameterBuilder.mjs +382 -382
  141. package/dist/request/RequestValidator.d.ts +27 -27
  142. package/dist/request/RequestValidator.mjs +64 -64
  143. package/dist/request/ScopeSet.d.ts +88 -88
  144. package/dist/request/ScopeSet.mjs +197 -197
  145. package/dist/request/StoreInCache.d.ts +8 -8
  146. package/dist/response/AuthenticationResult.d.ts +41 -41
  147. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  148. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  149. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  150. package/dist/response/IMDSBadResponse.d.ts +4 -4
  151. package/dist/response/ResponseHandler.d.ts +69 -69
  152. package/dist/response/ResponseHandler.mjs +374 -374
  153. package/dist/response/ServerAuthorizationCodeResponse.d.ts +26 -26
  154. package/dist/response/ServerAuthorizationTokenResponse.d.ts +47 -47
  155. package/dist/telemetry/performance/IPerformanceClient.d.ts +57 -57
  156. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  157. package/dist/telemetry/performance/PerformanceClient.d.ts +242 -242
  158. package/dist/telemetry/performance/PerformanceClient.mjs +587 -587
  159. package/dist/telemetry/performance/PerformanceEvent.d.ts +515 -505
  160. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  161. package/dist/telemetry/performance/PerformanceEvent.mjs +484 -480
  162. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  163. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  164. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  165. package/dist/telemetry/server/ServerTelemetryManager.d.ts +78 -66
  166. package/dist/telemetry/server/ServerTelemetryManager.d.ts.map +1 -1
  167. package/dist/telemetry/server/ServerTelemetryManager.mjs +260 -201
  168. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  169. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  170. package/dist/url/IUri.d.ts +12 -12
  171. package/dist/url/UrlString.d.ts +48 -48
  172. package/dist/url/UrlString.mjs +161 -161
  173. package/dist/utils/ClientAssertionUtils.d.ts +2 -2
  174. package/dist/utils/ClientAssertionUtils.mjs +16 -16
  175. package/dist/utils/Constants.d.ts +309 -309
  176. package/dist/utils/Constants.mjs +322 -322
  177. package/dist/utils/FunctionWrappers.d.ts +27 -27
  178. package/dist/utils/FunctionWrappers.mjs +94 -94
  179. package/dist/utils/MsalTypes.d.ts +6 -6
  180. package/dist/utils/ProtocolUtils.d.ts +42 -42
  181. package/dist/utils/ProtocolUtils.mjs +69 -69
  182. package/dist/utils/StringUtils.d.ts +40 -40
  183. package/dist/utils/StringUtils.mjs +95 -95
  184. package/dist/utils/TimeUtils.d.ts +25 -25
  185. package/dist/utils/TimeUtils.mjs +43 -43
  186. package/dist/utils/UrlUtils.d.ts +10 -10
  187. package/dist/utils/UrlUtils.mjs +44 -44
  188. package/package.json +1 -1
  189. package/src/cache/entities/ServerTelemetryEntity.ts +1 -0
  190. package/src/constants/AADServerParamKeys.ts +1 -0
  191. package/src/packageMetadata.ts +1 -1
  192. package/src/telemetry/performance/PerformanceEvent.ts +12 -0
  193. package/src/telemetry/server/ServerTelemetryManager.ts +95 -1
@@ -1,99 +1,99 @@
1
- /*! @azure/msal-common v14.13.1 2024-07-16 */
1
+ /*! @azure/msal-common v14.14.1 2024-08-13 */
2
2
  'use strict';
3
- /*
4
- * Copyright (c) Microsoft Corporation. All rights reserved.
5
- * Licensed under the MIT License.
6
- */
7
- /**
8
- * @hidden
9
- */
10
- class StringUtils {
11
- /**
12
- * Check if stringified object is empty
13
- * @param strObj
14
- */
15
- static isEmptyObj(strObj) {
16
- if (strObj) {
17
- try {
18
- const obj = JSON.parse(strObj);
19
- return Object.keys(obj).length === 0;
20
- }
21
- catch (e) { }
22
- }
23
- return true;
24
- }
25
- static startsWith(str, search) {
26
- return str.indexOf(search) === 0;
27
- }
28
- static endsWith(str, search) {
29
- return (str.length >= search.length &&
30
- str.lastIndexOf(search) === str.length - search.length);
31
- }
32
- /**
33
- * Parses string into an object.
34
- *
35
- * @param query
36
- */
37
- static queryStringToObject(query) {
38
- const obj = {};
39
- const params = query.split("&");
40
- const decode = (s) => decodeURIComponent(s.replace(/\+/g, " "));
41
- params.forEach((pair) => {
42
- if (pair.trim()) {
43
- const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character
44
- if (key && value) {
45
- obj[decode(key)] = decode(value);
46
- }
47
- }
48
- });
49
- return obj;
50
- }
51
- /**
52
- * Trims entries in an array.
53
- *
54
- * @param arr
55
- */
56
- static trimArrayEntries(arr) {
57
- return arr.map((entry) => entry.trim());
58
- }
59
- /**
60
- * Removes empty strings from array
61
- * @param arr
62
- */
63
- static removeEmptyStringsFromArray(arr) {
64
- return arr.filter((entry) => {
65
- return !!entry;
66
- });
67
- }
68
- /**
69
- * Attempts to parse a string into JSON
70
- * @param str
71
- */
72
- static jsonParseHelper(str) {
73
- try {
74
- return JSON.parse(str);
75
- }
76
- catch (e) {
77
- return null;
78
- }
79
- }
80
- /**
81
- * Tests if a given string matches a given pattern, with support for wildcards and queries.
82
- * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries
83
- * @param input String to match against
84
- */
85
- static matchPattern(pattern, input) {
86
- /**
87
- * Wildcard support: https://stackoverflow.com/a/3117248/4888559
88
- * Queries: replaces "?" in string with escaped "\?" for regex test
89
- */
90
- // eslint-disable-next-line security/detect-non-literal-regexp
91
- const regex = new RegExp(pattern
92
- .replace(/\\/g, "\\\\")
93
- .replace(/\*/g, "[^ ]*")
94
- .replace(/\?/g, "\\?"));
95
- return regex.test(input);
96
- }
3
+ /*
4
+ * Copyright (c) Microsoft Corporation. All rights reserved.
5
+ * Licensed under the MIT License.
6
+ */
7
+ /**
8
+ * @hidden
9
+ */
10
+ class StringUtils {
11
+ /**
12
+ * Check if stringified object is empty
13
+ * @param strObj
14
+ */
15
+ static isEmptyObj(strObj) {
16
+ if (strObj) {
17
+ try {
18
+ const obj = JSON.parse(strObj);
19
+ return Object.keys(obj).length === 0;
20
+ }
21
+ catch (e) { }
22
+ }
23
+ return true;
24
+ }
25
+ static startsWith(str, search) {
26
+ return str.indexOf(search) === 0;
27
+ }
28
+ static endsWith(str, search) {
29
+ return (str.length >= search.length &&
30
+ str.lastIndexOf(search) === str.length - search.length);
31
+ }
32
+ /**
33
+ * Parses string into an object.
34
+ *
35
+ * @param query
36
+ */
37
+ static queryStringToObject(query) {
38
+ const obj = {};
39
+ const params = query.split("&");
40
+ const decode = (s) => decodeURIComponent(s.replace(/\+/g, " "));
41
+ params.forEach((pair) => {
42
+ if (pair.trim()) {
43
+ const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character
44
+ if (key && value) {
45
+ obj[decode(key)] = decode(value);
46
+ }
47
+ }
48
+ });
49
+ return obj;
50
+ }
51
+ /**
52
+ * Trims entries in an array.
53
+ *
54
+ * @param arr
55
+ */
56
+ static trimArrayEntries(arr) {
57
+ return arr.map((entry) => entry.trim());
58
+ }
59
+ /**
60
+ * Removes empty strings from array
61
+ * @param arr
62
+ */
63
+ static removeEmptyStringsFromArray(arr) {
64
+ return arr.filter((entry) => {
65
+ return !!entry;
66
+ });
67
+ }
68
+ /**
69
+ * Attempts to parse a string into JSON
70
+ * @param str
71
+ */
72
+ static jsonParseHelper(str) {
73
+ try {
74
+ return JSON.parse(str);
75
+ }
76
+ catch (e) {
77
+ return null;
78
+ }
79
+ }
80
+ /**
81
+ * Tests if a given string matches a given pattern, with support for wildcards and queries.
82
+ * @param pattern Wildcard pattern to string match. Supports "*" for wildcards and "?" for queries
83
+ * @param input String to match against
84
+ */
85
+ static matchPattern(pattern, input) {
86
+ /**
87
+ * Wildcard support: https://stackoverflow.com/a/3117248/4888559
88
+ * Queries: replaces "?" in string with escaped "\?" for regex test
89
+ */
90
+ // eslint-disable-next-line security/detect-non-literal-regexp
91
+ const regex = new RegExp(pattern
92
+ .replace(/\\/g, "\\\\")
93
+ .replace(/\*/g, "[^ ]*")
94
+ .replace(/\?/g, "\\?"));
95
+ return regex.test(input);
96
+ }
97
97
  }
98
98
 
99
99
  export { StringUtils };
@@ -1,26 +1,26 @@
1
- /**
2
- * Utility functions for managing date and time operations.
3
- */
4
- /**
5
- * return the current time in Unix time (seconds).
6
- */
7
- export declare function nowSeconds(): number;
8
- /**
9
- * check if a token is expired based on given UTC time in seconds.
10
- * @param expiresOn
11
- */
12
- export declare function isTokenExpired(expiresOn: string, offset: number): boolean;
13
- /**
14
- * If the current time is earlier than the time that a token was cached at, we must discard the token
15
- * i.e. The system clock was turned back after acquiring the cached token
16
- * @param cachedAt
17
- * @param offset
18
- */
19
- export declare function wasClockTurnedBack(cachedAt: string): boolean;
20
- /**
21
- * Waits for t number of milliseconds
22
- * @param t number
23
- * @param value T
24
- */
25
- export declare function delay<T>(t: number, value?: T): Promise<T | void>;
1
+ /**
2
+ * Utility functions for managing date and time operations.
3
+ */
4
+ /**
5
+ * return the current time in Unix time (seconds).
6
+ */
7
+ export declare function nowSeconds(): number;
8
+ /**
9
+ * check if a token is expired based on given UTC time in seconds.
10
+ * @param expiresOn
11
+ */
12
+ export declare function isTokenExpired(expiresOn: string, offset: number): boolean;
13
+ /**
14
+ * If the current time is earlier than the time that a token was cached at, we must discard the token
15
+ * i.e. The system clock was turned back after acquiring the cached token
16
+ * @param cachedAt
17
+ * @param offset
18
+ */
19
+ export declare function wasClockTurnedBack(cachedAt: string): boolean;
20
+ /**
21
+ * Waits for t number of milliseconds
22
+ * @param t number
23
+ * @param value T
24
+ */
25
+ export declare function delay<T>(t: number, value?: T): Promise<T | void>;
26
26
  //# sourceMappingURL=TimeUtils.d.ts.map
@@ -1,47 +1,47 @@
1
- /*! @azure/msal-common v14.13.1 2024-07-16 */
1
+ /*! @azure/msal-common v14.14.1 2024-08-13 */
2
2
  'use strict';
3
- /*
4
- * Copyright (c) Microsoft Corporation. All rights reserved.
5
- * Licensed under the MIT License.
6
- */
7
- /**
8
- * Utility functions for managing date and time operations.
9
- */
10
- /**
11
- * return the current time in Unix time (seconds).
12
- */
13
- function nowSeconds() {
14
- // Date.getTime() returns in milliseconds.
15
- return Math.round(new Date().getTime() / 1000.0);
16
- }
17
- /**
18
- * check if a token is expired based on given UTC time in seconds.
19
- * @param expiresOn
20
- */
21
- function isTokenExpired(expiresOn, offset) {
22
- // check for access token expiry
23
- const expirationSec = Number(expiresOn) || 0;
24
- const offsetCurrentTimeSec = nowSeconds() + offset;
25
- // If current time + offset is greater than token expiration time, then token is expired.
26
- return offsetCurrentTimeSec > expirationSec;
27
- }
28
- /**
29
- * If the current time is earlier than the time that a token was cached at, we must discard the token
30
- * i.e. The system clock was turned back after acquiring the cached token
31
- * @param cachedAt
32
- * @param offset
33
- */
34
- function wasClockTurnedBack(cachedAt) {
35
- const cachedAtSec = Number(cachedAt);
36
- return cachedAtSec > nowSeconds();
37
- }
38
- /**
39
- * Waits for t number of milliseconds
40
- * @param t number
41
- * @param value T
42
- */
43
- function delay(t, value) {
44
- return new Promise((resolve) => setTimeout(() => resolve(value), t));
3
+ /*
4
+ * Copyright (c) Microsoft Corporation. All rights reserved.
5
+ * Licensed under the MIT License.
6
+ */
7
+ /**
8
+ * Utility functions for managing date and time operations.
9
+ */
10
+ /**
11
+ * return the current time in Unix time (seconds).
12
+ */
13
+ function nowSeconds() {
14
+ // Date.getTime() returns in milliseconds.
15
+ return Math.round(new Date().getTime() / 1000.0);
16
+ }
17
+ /**
18
+ * check if a token is expired based on given UTC time in seconds.
19
+ * @param expiresOn
20
+ */
21
+ function isTokenExpired(expiresOn, offset) {
22
+ // check for access token expiry
23
+ const expirationSec = Number(expiresOn) || 0;
24
+ const offsetCurrentTimeSec = nowSeconds() + offset;
25
+ // If current time + offset is greater than token expiration time, then token is expired.
26
+ return offsetCurrentTimeSec > expirationSec;
27
+ }
28
+ /**
29
+ * If the current time is earlier than the time that a token was cached at, we must discard the token
30
+ * i.e. The system clock was turned back after acquiring the cached token
31
+ * @param cachedAt
32
+ * @param offset
33
+ */
34
+ function wasClockTurnedBack(cachedAt) {
35
+ const cachedAtSec = Number(cachedAt);
36
+ return cachedAtSec > nowSeconds();
37
+ }
38
+ /**
39
+ * Waits for t number of milliseconds
40
+ * @param t number
41
+ * @param value T
42
+ */
43
+ function delay(t, value) {
44
+ return new Promise((resolve) => setTimeout(() => resolve(value), t));
45
45
  }
46
46
 
47
47
  export { delay, isTokenExpired, nowSeconds, wasClockTurnedBack };
@@ -1,11 +1,11 @@
1
- import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse";
2
- /**
3
- * Parses hash string from given string. Returns empty string if no hash symbol is found.
4
- * @param hashString
5
- */
6
- export declare function stripLeadingHashOrQuery(responseString: string): string;
7
- /**
8
- * Returns URL hash as server auth code response object.
9
- */
10
- export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null;
1
+ import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse";
2
+ /**
3
+ * Parses hash string from given string. Returns empty string if no hash symbol is found.
4
+ * @param hashString
5
+ */
6
+ export declare function stripLeadingHashOrQuery(responseString: string): string;
7
+ /**
8
+ * Returns URL hash as server auth code response object.
9
+ */
10
+ export declare function getDeserializedResponse(responseString: string): ServerAuthorizationCodeResponse | null;
11
11
  //# sourceMappingURL=UrlUtils.d.ts.map
@@ -1,51 +1,51 @@
1
- /*! @azure/msal-common v14.13.1 2024-07-16 */
1
+ /*! @azure/msal-common v14.14.1 2024-08-13 */
2
2
  'use strict';
3
3
  import { createClientAuthError } from '../error/ClientAuthError.mjs';
4
4
  import { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';
5
5
 
6
- /*
7
- * Copyright (c) Microsoft Corporation. All rights reserved.
8
- * Licensed under the MIT License.
9
- */
10
- /**
11
- * Parses hash string from given string. Returns empty string if no hash symbol is found.
12
- * @param hashString
13
- */
14
- function stripLeadingHashOrQuery(responseString) {
15
- if (responseString.startsWith("#/")) {
16
- return responseString.substring(2);
17
- }
18
- else if (responseString.startsWith("#") ||
19
- responseString.startsWith("?")) {
20
- return responseString.substring(1);
21
- }
22
- return responseString;
23
- }
24
- /**
25
- * Returns URL hash as server auth code response object.
26
- */
27
- function getDeserializedResponse(responseString) {
28
- // Check if given hash is empty
29
- if (!responseString || responseString.indexOf("=") < 0) {
30
- return null;
31
- }
32
- try {
33
- // Strip the # or ? symbol if present
34
- const normalizedResponse = stripLeadingHashOrQuery(responseString);
35
- // If # symbol was not present, above will return empty string, so give original hash value
36
- const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));
37
- // Check for known response properties
38
- if (deserializedHash.code ||
39
- deserializedHash.error ||
40
- deserializedHash.error_description ||
41
- deserializedHash.state) {
42
- return deserializedHash;
43
- }
44
- }
45
- catch (e) {
46
- throw createClientAuthError(hashNotDeserialized);
47
- }
48
- return null;
6
+ /*
7
+ * Copyright (c) Microsoft Corporation. All rights reserved.
8
+ * Licensed under the MIT License.
9
+ */
10
+ /**
11
+ * Parses hash string from given string. Returns empty string if no hash symbol is found.
12
+ * @param hashString
13
+ */
14
+ function stripLeadingHashOrQuery(responseString) {
15
+ if (responseString.startsWith("#/")) {
16
+ return responseString.substring(2);
17
+ }
18
+ else if (responseString.startsWith("#") ||
19
+ responseString.startsWith("?")) {
20
+ return responseString.substring(1);
21
+ }
22
+ return responseString;
23
+ }
24
+ /**
25
+ * Returns URL hash as server auth code response object.
26
+ */
27
+ function getDeserializedResponse(responseString) {
28
+ // Check if given hash is empty
29
+ if (!responseString || responseString.indexOf("=") < 0) {
30
+ return null;
31
+ }
32
+ try {
33
+ // Strip the # or ? symbol if present
34
+ const normalizedResponse = stripLeadingHashOrQuery(responseString);
35
+ // If # symbol was not present, above will return empty string, so give original hash value
36
+ const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));
37
+ // Check for known response properties
38
+ if (deserializedHash.code ||
39
+ deserializedHash.error ||
40
+ deserializedHash.error_description ||
41
+ deserializedHash.state) {
42
+ return deserializedHash;
43
+ }
44
+ }
45
+ catch (e) {
46
+ throw createClientAuthError(hashNotDeserialized);
47
+ }
48
+ return null;
49
49
  }
50
50
 
51
51
  export { getDeserializedResponse, stripLeadingHashOrQuery };
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "type": "git",
11
11
  "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
12
  },
13
- "version": "14.13.1",
13
+ "version": "14.14.1",
14
14
  "description": "Microsoft Authentication Library for js",
15
15
  "keywords": [
16
16
  "implicit",
@@ -7,4 +7,5 @@ export type ServerTelemetryEntity = {
7
7
  failedRequests: Array<string | number>;
8
8
  errors: string[];
9
9
  cacheHits: number;
10
+ nativeBrokerErrorCode?: string;
10
11
  };
@@ -55,3 +55,4 @@ export const LOGOUT_HINT = "logout_hint";
55
55
  export const SID = "sid";
56
56
  export const LOGIN_HINT = "login_hint";
57
57
  export const DOMAIN_HINT = "domain_hint";
58
+ export const X_CLIENT_EXTRA_SKU = "x-client-xtra-sku";
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-common";
3
- export const version = "14.13.1";
3
+ export const version = "14.14.1";
@@ -189,6 +189,11 @@ export const PerformanceEvents = {
189
189
 
190
190
  InitializeClientApplication: "initializeClientApplication",
191
191
 
192
+ /**
193
+ * Helper function in PopupClient class (msal-browser).
194
+ */
195
+ PopupClientTokenHelper: "popupClientTokenHelper",
196
+
192
197
  /**
193
198
  * Helper function in SilentIframeClient class (msal-browser).
194
199
  */
@@ -827,6 +832,13 @@ export type PerformanceEvent = {
827
832
  scenarioId?: string;
828
833
 
829
834
  accountType?: "AAD" | "MSA" | "B2C";
835
+
836
+ /**
837
+ * Server error that triggers a request retry
838
+ *
839
+ * @type {string}
840
+ */
841
+ retryError?: string;
830
842
  };
831
843
 
832
844
  export type PerformanceEventContext = {
@@ -17,6 +17,69 @@ import { ServerTelemetryRequest } from "./ServerTelemetryRequest";
17
17
  import { ServerTelemetryEntity } from "../../cache/entities/ServerTelemetryEntity";
18
18
  import { RegionDiscoveryMetadata } from "../../authority/RegionDiscoveryMetadata";
19
19
 
20
+ const skuGroupSeparator = ",";
21
+ const skuValueSeparator = "|";
22
+
23
+ type SkuParams = {
24
+ libraryName?: string;
25
+ libraryVersion?: string;
26
+ extensionName?: string;
27
+ extensionVersion?: string;
28
+ skus?: string;
29
+ };
30
+
31
+ function makeExtraSkuString(params: SkuParams): string {
32
+ const {
33
+ skus,
34
+ libraryName,
35
+ libraryVersion,
36
+ extensionName,
37
+ extensionVersion,
38
+ } = params;
39
+ const skuMap: Map<number, (string | undefined)[]> = new Map([
40
+ [0, [libraryName, libraryVersion]],
41
+ [2, [extensionName, extensionVersion]],
42
+ ]);
43
+ let skuArr: string[] = [];
44
+
45
+ if (skus?.length) {
46
+ skuArr = skus.split(skuGroupSeparator);
47
+
48
+ // Ignore invalid input sku param
49
+ if (skuArr.length < 4) {
50
+ return skus;
51
+ }
52
+ } else {
53
+ skuArr = Array.from({ length: 4 }, () => skuValueSeparator);
54
+ }
55
+
56
+ skuMap.forEach((value, key) => {
57
+ if (value.length === 2 && value[0]?.length && value[1]?.length) {
58
+ setSku({
59
+ skuArr,
60
+ index: key,
61
+ skuName: value[0],
62
+ skuVersion: value[1],
63
+ });
64
+ }
65
+ });
66
+
67
+ return skuArr.join(skuGroupSeparator);
68
+ }
69
+
70
+ function setSku(params: {
71
+ skuArr: string[];
72
+ index: number;
73
+ skuName: string;
74
+ skuVersion: string;
75
+ }): void {
76
+ const { skuArr, index, skuName, skuVersion } = params;
77
+ if (index >= skuArr.length) {
78
+ return;
79
+ }
80
+ skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);
81
+ }
82
+
20
83
  /** @internal */
21
84
  export class ServerTelemetryManager {
22
85
  private cacheManager: CacheManager;
@@ -51,7 +114,12 @@ export class ServerTelemetryManager {
51
114
  */
52
115
  generateCurrentRequestHeaderValue(): string {
53
116
  const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;
54
- const platformFields = [this.wrapperSKU, this.wrapperVer].join(
117
+ const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];
118
+ const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();
119
+ if (nativeBrokerErrorCode?.length) {
120
+ platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);
121
+ }
122
+ const platformFields = platformFieldsArr.join(
55
123
  SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR
56
124
  );
57
125
  const regionDiscoveryFields = this.getRegionDiscoveryFields();
@@ -277,4 +345,30 @@ export class ServerTelemetryManager {
277
345
  setCacheOutcome(cacheOutcome: CacheOutcome): void {
278
346
  this.cacheOutcome = cacheOutcome;
279
347
  }
348
+
349
+ setNativeBrokerErrorCode(errorCode: string): void {
350
+ const lastRequests = this.getLastRequests();
351
+ lastRequests.nativeBrokerErrorCode = errorCode;
352
+ this.cacheManager.setServerTelemetry(
353
+ this.telemetryCacheKey,
354
+ lastRequests
355
+ );
356
+ }
357
+
358
+ getNativeBrokerErrorCode(): string | undefined {
359
+ return this.getLastRequests().nativeBrokerErrorCode;
360
+ }
361
+
362
+ clearNativeBrokerErrorCode(): void {
363
+ const lastRequests = this.getLastRequests();
364
+ delete lastRequests.nativeBrokerErrorCode;
365
+ this.cacheManager.setServerTelemetry(
366
+ this.telemetryCacheKey,
367
+ lastRequests
368
+ );
369
+ }
370
+
371
+ static makeExtraSkuString(params: SkuParams): string {
372
+ return makeExtraSkuString(params);
373
+ }
280
374
  }