@azure/msal-browser 3.5.1-beta.1 → 3.7.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 (290) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +51 -51
  2. package/dist/app/IPublicClientApplication.mjs +102 -102
  3. package/dist/app/IPublicClientApplication.mjs.map +1 -1
  4. package/dist/app/PublicClientApplication.d.ts +269 -268
  5. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  6. package/dist/app/PublicClientApplication.mjs +333 -333
  7. package/dist/app/PublicClientApplication.mjs.map +1 -1
  8. package/dist/app/PublicClientNext.d.ts +273 -273
  9. package/dist/app/PublicClientNext.mjs +351 -351
  10. package/dist/app/PublicClientNext.mjs.map +1 -1
  11. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
  12. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
  13. package/dist/broker/nativeBroker/NativeMessageHandler.mjs.map +1 -1
  14. package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -44
  15. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  16. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
  17. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
  18. package/dist/broker/nativeBroker/NativeStatusCodes.mjs.map +1 -1
  19. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  20. package/dist/cache/AsyncMemoryStorage.mjs +132 -132
  21. package/dist/cache/AsyncMemoryStorage.mjs.map +1 -1
  22. package/dist/cache/BrowserCacheManager.d.ts +395 -383
  23. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  24. package/dist/cache/BrowserCacheManager.mjs +1283 -1263
  25. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  26. package/dist/cache/BrowserStorage.d.ts +11 -11
  27. package/dist/cache/BrowserStorage.mjs +32 -32
  28. package/dist/cache/BrowserStorage.mjs.map +1 -1
  29. package/dist/cache/CryptoKeyStore.d.ts +18 -18
  30. package/dist/cache/CryptoKeyStore.mjs +40 -40
  31. package/dist/cache/CryptoKeyStore.mjs.map +1 -1
  32. package/dist/cache/DatabaseStorage.d.ts +56 -56
  33. package/dist/cache/DatabaseStorage.mjs +190 -190
  34. package/dist/cache/DatabaseStorage.mjs.map +1 -1
  35. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  36. package/dist/cache/ITokenCache.d.ts +11 -11
  37. package/dist/cache/IWindowStorage.d.ts +27 -27
  38. package/dist/cache/MemoryStorage.d.ts +11 -11
  39. package/dist/cache/MemoryStorage.mjs +31 -31
  40. package/dist/cache/MemoryStorage.mjs.map +1 -1
  41. package/dist/cache/TokenCache.d.ts +77 -77
  42. package/dist/cache/TokenCache.d.ts.map +1 -1
  43. package/dist/cache/TokenCache.mjs +223 -225
  44. package/dist/cache/TokenCache.mjs.map +1 -1
  45. package/dist/config/Configuration.d.ts +206 -206
  46. package/dist/config/Configuration.d.ts.map +1 -1
  47. package/dist/config/Configuration.mjs +128 -128
  48. package/dist/config/Configuration.mjs.map +1 -1
  49. package/dist/controllers/ControllerFactory.d.ts +4 -4
  50. package/dist/controllers/ControllerFactory.d.ts.map +1 -1
  51. package/dist/controllers/ControllerFactory.mjs +29 -29
  52. package/dist/controllers/ControllerFactory.mjs.map +1 -1
  53. package/dist/controllers/IController.d.ts +61 -61
  54. package/dist/controllers/NestedAppAuthController.d.ts +95 -95
  55. package/dist/controllers/NestedAppAuthController.mjs +334 -334
  56. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  57. package/dist/controllers/StandardController.d.ts +407 -407
  58. package/dist/controllers/StandardController.d.ts.map +1 -1
  59. package/dist/controllers/StandardController.mjs +1307 -1294
  60. package/dist/controllers/StandardController.mjs.map +1 -1
  61. package/dist/controllers/UnknownOperatingContextController.d.ts +87 -87
  62. package/dist/controllers/UnknownOperatingContextController.mjs +264 -264
  63. package/dist/controllers/UnknownOperatingContextController.mjs.map +1 -1
  64. package/dist/crypto/BrowserCrypto.d.ts +44 -44
  65. package/dist/crypto/BrowserCrypto.mjs +93 -93
  66. package/dist/crypto/BrowserCrypto.mjs.map +1 -1
  67. package/dist/crypto/CryptoOps.d.ts +63 -63
  68. package/dist/crypto/CryptoOps.mjs +145 -145
  69. package/dist/crypto/CryptoOps.mjs.map +1 -1
  70. package/dist/crypto/PkceGenerator.d.ts +8 -8
  71. package/dist/crypto/PkceGenerator.mjs +54 -54
  72. package/dist/crypto/PkceGenerator.mjs.map +1 -1
  73. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  74. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  75. package/dist/crypto/SignedHttpRequest.mjs.map +1 -1
  76. package/dist/encode/Base64Decode.d.ts +9 -9
  77. package/dist/encode/Base64Decode.mjs +36 -36
  78. package/dist/encode/Base64Decode.mjs.map +1 -1
  79. package/dist/encode/Base64Encode.d.ts +19 -19
  80. package/dist/encode/Base64Encode.mjs +43 -43
  81. package/dist/encode/Base64Encode.mjs.map +1 -1
  82. package/dist/error/BrowserAuthError.d.ts +250 -250
  83. package/dist/error/BrowserAuthError.mjs +258 -258
  84. package/dist/error/BrowserAuthError.mjs.map +1 -1
  85. package/dist/error/BrowserAuthErrorCodes.d.ts +45 -45
  86. package/dist/error/BrowserAuthErrorCodes.mjs +49 -49
  87. package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -1
  88. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  89. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  90. package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
  91. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  92. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  93. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map +1 -1
  94. package/dist/error/NativeAuthError.d.ts +29 -29
  95. package/dist/error/NativeAuthError.mjs +60 -60
  96. package/dist/error/NativeAuthError.mjs.map +1 -1
  97. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  98. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  99. package/dist/error/NativeAuthErrorCodes.mjs.map +1 -1
  100. package/dist/error/NestedAppAuthError.d.ts +14 -14
  101. package/dist/error/NestedAppAuthError.mjs +23 -23
  102. package/dist/error/NestedAppAuthError.mjs.map +1 -1
  103. package/dist/event/EventHandler.d.ts +41 -41
  104. package/dist/event/EventHandler.mjs +119 -119
  105. package/dist/event/EventHandler.mjs.map +1 -1
  106. package/dist/event/EventMessage.d.ts +25 -25
  107. package/dist/event/EventMessage.mjs +68 -68
  108. package/dist/event/EventMessage.mjs.map +1 -1
  109. package/dist/event/EventType.d.ts +28 -28
  110. package/dist/event/EventType.mjs +31 -31
  111. package/dist/event/EventType.mjs.map +1 -1
  112. package/dist/index.d.ts +39 -39
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.mjs +1 -1
  115. package/dist/interaction_client/BaseInteractionClient.d.ts +54 -54
  116. package/dist/interaction_client/BaseInteractionClient.mjs +152 -152
  117. package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
  118. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  119. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  120. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map +1 -1
  121. package/dist/interaction_client/NativeInteractionClient.d.ts +140 -140
  122. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  123. package/dist/interaction_client/NativeInteractionClient.mjs +541 -549
  124. package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
  125. package/dist/interaction_client/PopupClient.d.ts +105 -105
  126. package/dist/interaction_client/PopupClient.mjs +432 -432
  127. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  128. package/dist/interaction_client/RedirectClient.d.ts +49 -49
  129. package/dist/interaction_client/RedirectClient.mjs +311 -311
  130. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  131. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  132. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  133. package/dist/interaction_client/SilentAuthCodeClient.mjs.map +1 -1
  134. package/dist/interaction_client/SilentCacheClient.d.ts +24 -24
  135. package/dist/interaction_client/SilentCacheClient.mjs +61 -61
  136. package/dist/interaction_client/SilentCacheClient.mjs.map +1 -1
  137. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  138. package/dist/interaction_client/SilentIframeClient.mjs +96 -96
  139. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  140. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  141. package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
  142. package/dist/interaction_client/SilentRefreshClient.mjs +47 -43
  143. package/dist/interaction_client/SilentRefreshClient.mjs.map +1 -1
  144. package/dist/interaction_client/StandardInteractionClient.d.ts +54 -54
  145. package/dist/interaction_client/StandardInteractionClient.mjs +222 -222
  146. package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
  147. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  148. package/dist/interaction_handler/InteractionHandler.mjs +93 -93
  149. package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
  150. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  151. package/dist/interaction_handler/RedirectHandler.mjs +134 -134
  152. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  153. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  154. package/dist/interaction_handler/SilentHandler.mjs +133 -133
  155. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  156. package/dist/naa/AccountInfo.d.ts +11 -11
  157. package/dist/naa/AuthBridge.d.ts +8 -5
  158. package/dist/naa/AuthBridge.d.ts.map +1 -1
  159. package/dist/naa/AuthResult.d.ts +7 -0
  160. package/dist/naa/AuthResult.d.ts.map +1 -0
  161. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  162. package/dist/naa/BridgeError.d.ts +9 -9
  163. package/dist/naa/BridgeError.mjs +7 -7
  164. package/dist/naa/BridgeError.mjs.map +1 -1
  165. package/dist/naa/BridgeProxy.d.ts +68 -72
  166. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  167. package/dist/naa/BridgeProxy.mjs +155 -152
  168. package/dist/naa/BridgeProxy.mjs.map +1 -1
  169. package/dist/naa/BridgeRequest.d.ts +7 -6
  170. package/dist/naa/BridgeRequest.d.ts.map +1 -1
  171. package/dist/naa/BridgeRequestEnvelope.d.ts +12 -13
  172. package/dist/naa/BridgeRequestEnvelope.d.ts.map +1 -1
  173. package/dist/naa/BridgeResponseEnvelope.d.ts +13 -10
  174. package/dist/naa/BridgeResponseEnvelope.d.ts.map +1 -1
  175. package/dist/naa/BridgeStatusCode.d.ts +11 -10
  176. package/dist/naa/BridgeStatusCode.d.ts.map +1 -1
  177. package/dist/naa/BridgeStatusCode.mjs +15 -16
  178. package/dist/naa/BridgeStatusCode.mjs.map +1 -1
  179. package/dist/naa/IBridgeProxy.d.ts +10 -12
  180. package/dist/naa/IBridgeProxy.d.ts.map +1 -1
  181. package/dist/naa/{InitializeBridgeResponse.d.ts → InitContext.d.ts} +7 -7
  182. package/dist/naa/InitContext.d.ts.map +1 -0
  183. package/dist/naa/TokenRequest.d.ts +18 -19
  184. package/dist/naa/TokenRequest.d.ts.map +1 -1
  185. package/dist/naa/TokenResponse.d.ts +13 -15
  186. package/dist/naa/TokenResponse.d.ts.map +1 -1
  187. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +23 -23
  188. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +1 -1
  189. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +141 -141
  190. package/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +1 -1
  191. package/dist/navigation/INavigationClient.d.ts +16 -16
  192. package/dist/navigation/NavigationClient.d.ts +22 -22
  193. package/dist/navigation/NavigationClient.mjs +40 -40
  194. package/dist/navigation/NavigationClient.mjs.map +1 -1
  195. package/dist/navigation/NavigationOptions.d.ts +12 -12
  196. package/dist/network/FetchClient.d.ts +26 -26
  197. package/dist/network/FetchClient.mjs +99 -99
  198. package/dist/network/FetchClient.mjs.map +1 -1
  199. package/dist/operatingcontext/BaseOperatingContext.d.ts +41 -40
  200. package/dist/operatingcontext/BaseOperatingContext.d.ts.map +1 -1
  201. package/dist/operatingcontext/BaseOperatingContext.mjs +96 -45
  202. package/dist/operatingcontext/BaseOperatingContext.mjs.map +1 -1
  203. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  204. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  205. package/dist/operatingcontext/StandardOperatingContext.mjs.map +1 -1
  206. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +32 -32
  207. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +85 -85
  208. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  209. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  210. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  211. package/dist/operatingcontext/UnknownOperatingContext.mjs.map +1 -1
  212. package/dist/packageMetadata.d.ts +2 -2
  213. package/dist/packageMetadata.d.ts.map +1 -1
  214. package/dist/packageMetadata.mjs +4 -4
  215. package/dist/packageMetadata.mjs.map +1 -1
  216. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  217. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  218. package/dist/request/ClearCacheRequest.d.ts +10 -10
  219. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  220. package/dist/request/EndSessionRequest.d.ts +15 -15
  221. package/dist/request/PopupRequest.d.ts +34 -34
  222. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  223. package/dist/request/RedirectRequest.d.ts +35 -35
  224. package/dist/request/SilentRequest.d.ts +32 -32
  225. package/dist/request/SsoSilentRequest.d.ts +29 -29
  226. package/dist/response/AuthenticationResult.d.ts +4 -4
  227. package/dist/response/ResponseHandler.d.ts +7 -7
  228. package/dist/response/ResponseHandler.mjs +36 -36
  229. package/dist/response/ResponseHandler.mjs.map +1 -1
  230. package/dist/telemetry/BrowserPerformanceClient.d.ts +34 -36
  231. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  232. package/dist/telemetry/BrowserPerformanceClient.mjs +163 -126
  233. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  234. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  235. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  236. package/dist/telemetry/BrowserPerformanceMeasurement.mjs.map +1 -1
  237. package/dist/utils/BrowserConstants.d.ts +180 -176
  238. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  239. package/dist/utils/BrowserConstants.mjs +213 -205
  240. package/dist/utils/BrowserConstants.mjs.map +1 -1
  241. package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
  242. package/dist/utils/BrowserProtocolUtils.mjs +21 -21
  243. package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
  244. package/dist/utils/BrowserUtils.d.ts +56 -56
  245. package/dist/utils/BrowserUtils.mjs +125 -125
  246. package/dist/utils/BrowserUtils.mjs.map +1 -1
  247. package/lib/msal-browser.cjs +18304 -17929
  248. package/lib/msal-browser.cjs.map +1 -1
  249. package/lib/msal-browser.js +18304 -17929
  250. package/lib/msal-browser.js.map +1 -1
  251. package/lib/msal-browser.min.js +66 -68
  252. package/package.json +103 -102
  253. package/src/app/PublicClientApplication.ts +2 -1
  254. package/src/cache/BrowserCacheManager.ts +38 -23
  255. package/src/cache/DatabaseStorage.ts +1 -1
  256. package/src/cache/TokenCache.ts +34 -29
  257. package/src/config/Configuration.ts +1 -1
  258. package/src/controllers/ControllerFactory.ts +3 -5
  259. package/src/controllers/StandardController.ts +53 -26
  260. package/src/crypto/CryptoOps.ts +1 -1
  261. package/src/crypto/SignedHttpRequest.ts +1 -1
  262. package/src/index.ts +1 -0
  263. package/src/interaction_client/BaseInteractionClient.ts +2 -2
  264. package/src/interaction_client/NativeInteractionClient.ts +24 -20
  265. package/src/interaction_client/PopupClient.ts +1 -1
  266. package/src/interaction_client/RedirectClient.ts +3 -3
  267. package/src/interaction_client/SilentAuthCodeClient.ts +1 -1
  268. package/src/interaction_client/SilentRefreshClient.ts +8 -0
  269. package/src/interaction_client/StandardInteractionClient.ts +1 -1
  270. package/src/interaction_handler/SilentHandler.ts +2 -2
  271. package/src/naa/AuthBridge.ts +3 -2
  272. package/src/naa/AuthResult.ts +12 -0
  273. package/src/naa/BridgeProxy.ts +64 -71
  274. package/src/naa/BridgeRequest.ts +6 -2
  275. package/src/naa/BridgeRequestEnvelope.ts +1 -13
  276. package/src/naa/BridgeResponseEnvelope.ts +5 -7
  277. package/src/naa/BridgeStatusCode.ts +12 -10
  278. package/src/naa/IBridgeProxy.ts +3 -14
  279. package/src/naa/{InitializeBridgeResponse.ts → InitContext.ts} +1 -1
  280. package/src/naa/TokenRequest.ts +1 -2
  281. package/src/naa/TokenResponse.ts +1 -4
  282. package/src/naa/mapping/NestedAppAuthAdapter.ts +19 -19
  283. package/src/operatingcontext/BaseOperatingContext.ts +64 -7
  284. package/src/packageMetadata.ts +1 -1
  285. package/src/telemetry/BrowserPerformanceClient.ts +95 -42
  286. package/src/utils/BrowserConstants.ts +11 -0
  287. package/dist/naa/AccountRequests.d.ts +0 -10
  288. package/dist/naa/AccountRequests.d.ts.map +0 -1
  289. package/dist/naa/InitializeBridgeResponse.d.ts.map +0 -1
  290. package/src/naa/AccountRequests.ts +0 -16
package/package.json CHANGED
@@ -1,105 +1,106 @@
1
1
  {
2
- "name": "@azure/msal-browser",
3
- "author": {
4
- "name": "Microsoft",
5
- "email": "nugetaad@microsoft.com",
6
- "url": "https://www.microsoft.com"
2
+ "name": "@azure/msal-browser",
3
+ "author": {
4
+ "name": "Microsoft",
5
+ "email": "nugetaad@microsoft.com",
6
+ "url": "https://www.microsoft.com"
7
+ },
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
+ },
13
+ "version": "3.7.0",
14
+ "description": "Microsoft Authentication Library for js",
15
+ "keywords": [
16
+ "implicit",
17
+ "authorization code",
18
+ "PKCE",
19
+ "js",
20
+ "AAD",
21
+ "msal",
22
+ "oauth"
23
+ ],
24
+ "type": "module",
25
+ "sideEffects": false,
26
+ "module": "./dist/index.mjs",
27
+ "types": "./dist/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "module": "./dist/index.mjs",
32
+ "import": "./dist/index.mjs",
33
+ "require": "./lib/msal-browser.cjs",
34
+ "default": "./dist/index.mjs"
7
35
  },
8
- "license": "MIT",
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
- },
13
- "version": "3.5.1-beta.1",
14
- "description": "Microsoft Authentication Library for js",
15
- "keywords": [
16
- "implicit",
17
- "authorization code",
18
- "PKCE",
19
- "js",
20
- "AAD",
21
- "msal",
22
- "oauth"
23
- ],
24
- "type": "module",
25
- "sideEffects": false,
26
- "module": "./dist/index.mjs",
27
- "types": "./dist/index.d.ts",
28
- "exports": {
29
- ".": {
30
- "types": "./dist/index.d.ts",
31
- "module": "./dist/index.mjs",
32
- "import": "./dist/index.mjs",
33
- "require": "./lib/msal-browser.cjs",
34
- "default": "./dist/index.mjs"
35
- },
36
- "./package.json": "./package.json"
37
- },
38
- "engines": {
39
- "node": ">=0.8.0"
40
- },
41
- "beachball": {
42
- "disallowedChangeTypes": [
43
- "major"
44
- ]
45
- },
46
- "directories": {
47
- "test": "test"
48
- },
49
- "files": [
50
- "dist",
51
- "lib/msal-browser.js",
52
- "lib/msal-browser.js.map",
53
- "lib/msal-browser.cjs",
54
- "lib/msal-browser.cjs.map",
55
- "lib/msal-browser.min.js",
56
- "src"
57
- ],
58
- "scripts": {
59
- "clean": "shx rm -rf dist lib",
60
- "clean:coverage": "rimraf ../../.nyc_output/*",
61
- "lint": "eslint src --ext .ts",
62
- "lint:fix": "npm run lint -- --fix",
63
- "test": "jest",
64
- "test:coverage": "jest --coverage",
65
- "test:coverage:only": "npm run clean:coverage && npm run test:coverage",
66
- "build:all": "cd ../.. && npm run build --workspace=@azure/msal-common --workspace=@azure/msal-browser",
67
- "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs",
68
- "build:modules:watch": "rollup -cw --bundleConfigAsCjs",
69
- "build": "npm run clean && npm run build:modules",
70
- "prepack": "npm run build:all",
71
- "format:check": "npx prettier --ignore-path .gitignore --check src test",
72
- "format:fix": "npx prettier --ignore-path .gitignore --write src test"
73
- },
74
- "devDependencies": {
75
- "@azure/storage-blob": "^12.2.1",
76
- "@babel/core": "^7.7.2",
77
- "@babel/plugin-proposal-class-properties": "^7.7.0",
78
- "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
79
- "@babel/preset-env": "^7.7.1",
80
- "@babel/preset-typescript": "^7.7.2",
81
- "@rollup/plugin-node-resolve": "^15.0.1",
82
- "@rollup/plugin-terser": "^0.4.0",
83
- "@rollup/plugin-typescript": "^11.0.0",
84
- "@types/jest": "^29.5.0",
85
- "@types/node": "^20.3.1",
86
- "@types/sinon": "^7.5.0",
87
- "dotenv": "^8.2.0",
88
- "eslint-config-msal": "^0.0.0",
89
- "fake-indexeddb": "^3.1.3",
90
- "jest": "^29.5.0",
91
- "jest-environment-jsdom": "^29.5.0",
92
- "prettier": "2.8.7",
93
- "rimraf": "^3.0.0",
94
- "rollup": "^3.14.0",
95
- "shx": "^0.3.2",
96
- "sinon": "^7.5.0",
97
- "ssri": "^8.0.1",
98
- "ts-jest": "^29.1.0",
99
- "tslib": "^1.10.0",
100
- "typescript": "^4.9.5"
101
- },
102
- "dependencies": {
103
- "@azure/msal-common": "14.4.1-beta.1"
104
- }
36
+ "./package.json": "./package.json"
37
+ },
38
+ "engines": {
39
+ "node": ">=0.8.0"
40
+ },
41
+ "beachball": {
42
+ "disallowedChangeTypes": [
43
+ "major"
44
+ ]
45
+ },
46
+ "directories": {
47
+ "test": "test"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "lib/msal-browser.js",
52
+ "lib/msal-browser.js.map",
53
+ "lib/msal-browser.cjs",
54
+ "lib/msal-browser.cjs.map",
55
+ "lib/msal-browser.min.js",
56
+ "src"
57
+ ],
58
+ "scripts": {
59
+ "clean": "shx rm -rf dist lib",
60
+ "clean:coverage": "rimraf ../../.nyc_output/*",
61
+ "lint": "eslint src --ext .ts",
62
+ "lint:fix": "npm run lint -- --fix",
63
+ "test": "jest",
64
+ "test:coverage": "jest --coverage",
65
+ "test:coverage:only": "npm run clean:coverage && npm run test:coverage",
66
+ "build:all": "cd ../.. && npm run build --workspace=@azure/msal-common --workspace=@azure/msal-browser",
67
+ "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs",
68
+ "build:modules:watch": "rollup -cw --bundleConfigAsCjs",
69
+ "build": "npm run clean && npm run build:modules",
70
+ "prepack": "npm run build:all",
71
+ "format:check": "npx prettier --ignore-path .gitignore --check src test",
72
+ "format:fix": "npx prettier --ignore-path .gitignore --write src test"
73
+ },
74
+ "devDependencies": {
75
+ "@azure/storage-blob": "^12.2.1",
76
+ "@babel/core": "^7.7.2",
77
+ "@babel/plugin-proposal-class-properties": "^7.7.0",
78
+ "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
79
+ "@babel/preset-env": "^7.7.1",
80
+ "@babel/preset-typescript": "^7.7.2",
81
+ "@rollup/plugin-node-resolve": "^15.0.1",
82
+ "@rollup/plugin-terser": "^0.4.0",
83
+ "@rollup/plugin-typescript": "^11.0.0",
84
+ "@types/jest": "^29.5.0",
85
+ "@types/node": "^20.3.1",
86
+ "@types/sinon": "^7.5.0",
87
+ "dotenv": "^8.2.0",
88
+ "eslint-config-msal": "^0.0.0",
89
+ "msal-test-utils": "^0.0.1",
90
+ "fake-indexeddb": "^3.1.3",
91
+ "jest": "^29.5.0",
92
+ "jest-environment-jsdom": "^29.5.0",
93
+ "prettier": "2.8.7",
94
+ "rimraf": "^3.0.0",
95
+ "rollup": "^3.14.0",
96
+ "shx": "^0.3.2",
97
+ "sinon": "^7.5.0",
98
+ "ssri": "^8.0.1",
99
+ "ts-jest": "^29.1.0",
100
+ "tslib": "^1.10.0",
101
+ "typescript": "^4.9.5"
102
+ },
103
+ "dependencies": {
104
+ "@azure/msal-common": "14.6.0"
105
+ }
105
106
  }
@@ -27,6 +27,7 @@ import { StandardOperatingContext } from "../operatingcontext/StandardOperatingC
27
27
  import { AuthenticationResult } from "../response/AuthenticationResult";
28
28
  import { EventCallbackFunction } from "../event/EventMessage";
29
29
  import { ClearCacheRequest } from "../request/ClearCacheRequest";
30
+ import { EndSessionPopupRequest } from "../request/EndSessionPopupRequest";
30
31
 
31
32
  /**
32
33
  * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications
@@ -306,7 +307,7 @@ export class PublicClientApplication implements IPublicClientApplication {
306
307
  * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server
307
308
  * @param logoutRequest
308
309
  */
309
- logoutPopup(logoutRequest?: EndSessionRequest): Promise<void> {
310
+ logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void> {
310
311
  return this.controller.logoutPopup(logoutRequest);
311
312
  }
312
313
 
@@ -394,15 +394,31 @@ export class BrowserCacheManager extends CacheManager {
394
394
  * fetch the account entity from the platform cache
395
395
  * @param accountKey
396
396
  */
397
- getAccount(accountKey: string): AccountEntity | null {
397
+ getAccount(accountKey: string, logger?: Logger): AccountEntity | null {
398
398
  this.logger.trace("BrowserCacheManager.getAccount called");
399
- const account = this.getItem(accountKey);
400
- if (!account) {
399
+ const accountEntity = this.getCachedAccountEntity(accountKey);
400
+
401
+ return this.updateOutdatedCachedAccount(
402
+ accountKey,
403
+ accountEntity,
404
+ logger
405
+ );
406
+ }
407
+
408
+ /**
409
+ * Reads account from cache, deserializes it into an account entity and returns it.
410
+ * If account is not found from the key, returns null and removes key from map.
411
+ * @param accountKey
412
+ * @returns
413
+ */
414
+ getCachedAccountEntity(accountKey: string): AccountEntity | null {
415
+ const serializedAccount = this.getItem(accountKey);
416
+ if (!serializedAccount) {
401
417
  this.removeAccountKeyFromMap(accountKey);
402
418
  return null;
403
419
  }
404
420
 
405
- const parsedAccount = this.validateAndParseJson(account);
421
+ const parsedAccount = this.validateAndParseJson(serializedAccount);
406
422
  if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {
407
423
  this.removeAccountKeyFromMap(accountKey);
408
424
  return null;
@@ -505,6 +521,15 @@ export class BrowserCacheManager extends CacheManager {
505
521
  this.removeAccountKeyFromMap(key);
506
522
  }
507
523
 
524
+ /**
525
+ * Remove account entity from the platform cache if it's outdated
526
+ * @param accountKey
527
+ */
528
+ removeOutdatedAccount(accountKey: string): void {
529
+ this.removeItem(accountKey);
530
+ this.removeAccountKeyFromMap(accountKey);
531
+ }
532
+
508
533
  /**
509
534
  * Removes given idToken from the cache and from the key map
510
535
  * @param key
@@ -841,10 +866,7 @@ export class BrowserCacheManager extends CacheManager {
841
866
  const parsedMetadata = this.validateAndParseJson(value);
842
867
  if (
843
868
  !parsedMetadata ||
844
- !AppMetadataEntity.isAppMetadataEntity(
845
- appMetadataKey,
846
- parsedMetadata
847
- )
869
+ !CacheHelpers.isAppMetadataEntity(appMetadataKey, parsedMetadata)
848
870
  ) {
849
871
  this.logger.trace(
850
872
  "BrowserCacheManager.getAppMetadata: called, no cache hit"
@@ -853,7 +875,7 @@ export class BrowserCacheManager extends CacheManager {
853
875
  }
854
876
 
855
877
  this.logger.trace("BrowserCacheManager.getAppMetadata: cache hit");
856
- return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);
878
+ return parsedMetadata as AppMetadataEntity;
857
879
  }
858
880
 
859
881
  /**
@@ -862,7 +884,7 @@ export class BrowserCacheManager extends CacheManager {
862
884
  */
863
885
  setAppMetadata(appMetadata: AppMetadataEntity): void {
864
886
  this.logger.trace("BrowserCacheManager.setAppMetadata called");
865
- const appMetadataKey = appMetadata.generateAppMetadataKey();
887
+ const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata);
866
888
  this.setItem(appMetadataKey, JSON.stringify(appMetadata));
867
889
  }
868
890
 
@@ -925,18 +947,12 @@ export class BrowserCacheManager extends CacheManager {
925
947
  const parsedMetadata = this.validateAndParseJson(value);
926
948
  if (
927
949
  parsedMetadata &&
928
- AuthorityMetadataEntity.isAuthorityMetadataEntity(
929
- key,
930
- parsedMetadata
931
- )
950
+ CacheHelpers.isAuthorityMetadataEntity(key, parsedMetadata)
932
951
  ) {
933
952
  this.logger.trace(
934
953
  "BrowserCacheManager.getAuthorityMetadata: cache hit"
935
954
  );
936
- return CacheManager.toObject(
937
- new AuthorityMetadataEntity(),
938
- parsedMetadata
939
- );
955
+ return parsedMetadata as AuthorityMetadataEntity;
940
956
  }
941
957
  return null;
942
958
  }
@@ -1034,6 +1050,7 @@ export class BrowserCacheManager extends CacheManager {
1034
1050
  return this.getAccountInfoFilteredBy({
1035
1051
  homeAccountId: activeAccountValueObj.homeAccountId,
1036
1052
  localAccountId: activeAccountValueObj.localAccountId,
1053
+ tenantId: activeAccountValueObj.tenantId,
1037
1054
  });
1038
1055
  }
1039
1056
  this.logger.trace(
@@ -1058,6 +1075,7 @@ export class BrowserCacheManager extends CacheManager {
1058
1075
  const activeAccountValue: ActiveAccountFilters = {
1059
1076
  homeAccountId: account.homeAccountId,
1060
1077
  localAccountId: account.localAccountId,
1078
+ tenantId: account.tenantId,
1061
1079
  };
1062
1080
  this.browserStorage.setItem(
1063
1081
  activeAccountKey,
@@ -1092,7 +1110,7 @@ export class BrowserCacheManager extends CacheManager {
1092
1110
  const parsedThrottlingCache = this.validateAndParseJson(value);
1093
1111
  if (
1094
1112
  !parsedThrottlingCache ||
1095
- !ThrottlingEntity.isThrottlingEntity(
1113
+ !CacheHelpers.isThrottlingEntity(
1096
1114
  throttlingCacheKey,
1097
1115
  parsedThrottlingCache
1098
1116
  )
@@ -1104,10 +1122,7 @@ export class BrowserCacheManager extends CacheManager {
1104
1122
  }
1105
1123
 
1106
1124
  this.logger.trace("BrowserCacheManager.getThrottlingCache: cache hit");
1107
- return CacheManager.toObject(
1108
- new ThrottlingEntity(),
1109
- parsedThrottlingCache
1110
- );
1125
+ return parsedThrottlingCache as ThrottlingEntity;
1111
1126
  }
1112
1127
 
1113
1128
  /**
@@ -85,7 +85,7 @@ export class DatabaseStorage<T> implements IAsyncStorage<T> {
85
85
  */
86
86
  private async validateDbIsOpen(): Promise<void> {
87
87
  if (!this.dbOpen) {
88
- return await this.open();
88
+ return this.open();
89
89
  }
90
90
  }
91
91
 
@@ -19,6 +19,7 @@ import {
19
19
  CacheRecord,
20
20
  TokenClaims,
21
21
  CacheHelpers,
22
+ buildAccountToCache,
22
23
  } from "@azure/msal-common";
23
24
  import { BrowserConfiguration } from "../config/Configuration";
24
25
  import { SilentRequest } from "../request/SilentRequest";
@@ -240,40 +241,44 @@ export class TokenCache implements ITokenCache {
240
241
  clientInfo?: string,
241
242
  requestHomeAccountId?: string
242
243
  ): AccountEntity {
243
- let homeAccountId;
244
- if (requestHomeAccountId) {
245
- homeAccountId = requestHomeAccountId;
246
- } else if (authority.authorityType !== undefined && clientInfo) {
247
- homeAccountId = AccountEntity.generateHomeAccountId(
248
- clientInfo,
249
- authority.authorityType,
250
- this.logger,
251
- this.cryptoObj,
252
- idTokenClaims
253
- );
254
- }
244
+ if (this.isBrowserEnvironment) {
245
+ this.logger.verbose("TokenCache - loading account");
246
+ let homeAccountId;
247
+ if (requestHomeAccountId) {
248
+ homeAccountId = requestHomeAccountId;
249
+ } else if (authority.authorityType !== undefined && clientInfo) {
250
+ homeAccountId = AccountEntity.generateHomeAccountId(
251
+ clientInfo,
252
+ authority.authorityType,
253
+ this.logger,
254
+ this.cryptoObj,
255
+ idTokenClaims
256
+ );
257
+ }
255
258
 
256
- if (!homeAccountId) {
257
- throw createBrowserAuthError(
258
- BrowserAuthErrorCodes.unableToLoadToken
259
- );
260
- }
259
+ if (!homeAccountId) {
260
+ throw createBrowserAuthError(
261
+ BrowserAuthErrorCodes.unableToLoadToken
262
+ );
263
+ }
264
+ const claimsTenantId = idTokenClaims.tid;
261
265
 
262
- const accountEntity = AccountEntity.createAccount(
263
- {
266
+ const cachedAccount = buildAccountToCache(
267
+ this.storage,
268
+ authority,
264
269
  homeAccountId,
265
- idTokenClaims: idTokenClaims,
270
+ idTokenClaims,
271
+ base64Decode,
266
272
  clientInfo,
267
- environment: authority.hostnameAndPort,
268
- },
269
- authority
270
- );
271
-
272
- if (this.isBrowserEnvironment) {
273
- this.logger.verbose("TokenCache - loading account");
273
+ authority.hostnameAndPort,
274
+ claimsTenantId,
275
+ undefined, // authCodePayload
276
+ undefined, // nativeAccountId
277
+ this.logger
278
+ );
274
279
 
275
- this.storage.setAccount(accountEntity);
276
- return accountEntity;
280
+ this.storage.setAccount(cachedAccount);
281
+ return cachedAccount;
277
282
  } else {
278
283
  throw createBrowserAuthError(
279
284
  BrowserAuthErrorCodes.unableToLoadToken
@@ -33,7 +33,7 @@ import { FetchClient } from "../network/FetchClient";
33
33
 
34
34
  // Default timeout for popup windows and iframes in milliseconds
35
35
  export const DEFAULT_POPUP_TIMEOUT_MS = 60000;
36
- export const DEFAULT_IFRAME_TIMEOUT_MS = 6000;
36
+ export const DEFAULT_IFRAME_TIMEOUT_MS = 10000;
37
37
  export const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;
38
38
  export const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;
39
39
 
@@ -16,7 +16,7 @@ export async function createV3Controller(
16
16
  await standard.initialize();
17
17
 
18
18
  const controller = await import("./StandardController");
19
- return await controller.StandardController.createController(standard);
19
+ return controller.StandardController.createController(standard);
20
20
  }
21
21
 
22
22
  export async function createController(
@@ -34,12 +34,10 @@ export async function createController(
34
34
  teamsApp.getConfig().auth.supportsNestedAppAuth
35
35
  ) {
36
36
  const controller = await import("./NestedAppAuthController");
37
- return await controller.NestedAppAuthController.createController(
38
- teamsApp
39
- );
37
+ return controller.NestedAppAuthController.createController(teamsApp);
40
38
  } else if (standard.isAvailable()) {
41
39
  const controller = await import("./StandardController");
42
- return await controller.StandardController.createController(standard);
40
+ return controller.StandardController.createController(standard);
43
41
  } else {
44
42
  // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController
45
43
  return null;
@@ -43,6 +43,7 @@ import {
43
43
  CacheLookupPolicy,
44
44
  DEFAULT_REQUEST,
45
45
  BrowserConstants,
46
+ iFrameRenewalPolicies,
46
47
  } from "../utils/BrowserConstants";
47
48
  import * as BrowserUtils from "../utils/BrowserUtils";
48
49
  import { RedirectRequest } from "../request/RedirectRequest";
@@ -923,10 +924,10 @@ export class StandardController implements IController {
923
924
  );
924
925
  atbcMeasurement.discard();
925
926
  }
926
- return response;
927
+ return await response;
927
928
  } else if (request.nativeAccountId) {
928
929
  if (this.canUseNative(request, request.nativeAccountId)) {
929
- return this.acquireTokenNative(
930
+ return await this.acquireTokenNative(
930
931
  {
931
932
  ...request,
932
933
  correlationId,
@@ -1549,7 +1550,7 @@ export class StandardController implements IController {
1549
1550
  ): string {
1550
1551
  const account =
1551
1552
  request.account ||
1552
- this.browserStorage.getAccountInfoFilteredBy({
1553
+ this.getAccount({
1553
1554
  loginHint: request.loginHint,
1554
1555
  sid: request.sid,
1555
1556
  }) ||
@@ -2078,31 +2079,17 @@ export class StandardController implements IController {
2078
2079
  silentRequest.correlationId
2079
2080
  )(silentRequest, cacheLookupPolicy).catch(
2080
2081
  (refreshTokenError: AuthError) => {
2081
- const isSilentlyResolvable =
2082
- (!(
2083
- refreshTokenError instanceof
2084
- InteractionRequiredAuthError
2085
- ) &&
2086
- (refreshTokenError.errorCode ===
2087
- BrowserConstants.INVALID_GRANT_ERROR ||
2088
- refreshTokenError.errorCode ===
2089
- ClientAuthErrorCodes.tokenRefreshRequired)) ||
2090
- refreshTokenError.errorCode ===
2091
- InteractionRequiredAuthErrorCodes.noTokensFound ||
2092
- refreshTokenError.errorCode ===
2093
- InteractionRequiredAuthErrorCodes.refreshTokenExpired;
2094
-
2095
- const tryIframeRenewal =
2096
- cacheLookupPolicy ===
2097
- CacheLookupPolicy.Default ||
2098
- cacheLookupPolicy === CacheLookupPolicy.Skip ||
2099
- cacheLookupPolicy ===
2100
- CacheLookupPolicy.RefreshTokenAndNetwork;
2101
-
2102
- if (isSilentlyResolvable && tryIframeRenewal) {
2082
+ const shouldTryToResolveSilently =
2083
+ checkIfRefreshTokenErrorCanBeResolvedSilently(
2084
+ refreshTokenError,
2085
+ silentRequest,
2086
+ cacheLookupPolicy
2087
+ );
2088
+
2089
+ if (shouldTryToResolveSilently) {
2103
2090
  this.logger.verbose(
2104
2091
  "Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.",
2105
- request.correlationId
2092
+ silentRequest.correlationId
2106
2093
  );
2107
2094
  return invokeAsync(
2108
2095
  this.acquireTokenBySilentIframe.bind(this),
@@ -2112,6 +2099,7 @@ export class StandardController implements IController {
2112
2099
  silentRequest.correlationId
2113
2100
  )(silentRequest);
2114
2101
  } else {
2102
+ // Error cannot be silently resolved or iframe renewal is not allowed, interaction required
2115
2103
  throw refreshTokenError;
2116
2104
  }
2117
2105
  }
@@ -2157,3 +2145,42 @@ export class StandardController implements IController {
2157
2145
  });
2158
2146
  }
2159
2147
  }
2148
+
2149
+ /**
2150
+ * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction
2151
+ * @param refreshTokenError
2152
+ * @param silentRequest
2153
+ * @param cacheLookupPolicy
2154
+ * @returns
2155
+ */
2156
+ function checkIfRefreshTokenErrorCanBeResolvedSilently(
2157
+ refreshTokenError: AuthError,
2158
+ silentRequest: CommonSilentFlowRequest,
2159
+ cacheLookupPolicy: CacheLookupPolicy
2160
+ ): boolean {
2161
+ const noInteractionRequired = !(
2162
+ refreshTokenError instanceof InteractionRequiredAuthError &&
2163
+ // For refresh token errors, bad_token does not always require interaction (silently resolvable)
2164
+ refreshTokenError.subError !==
2165
+ InteractionRequiredAuthErrorCodes.badToken
2166
+ );
2167
+
2168
+ // Errors that result when the refresh token needs to be replaced
2169
+ const refreshTokenRefreshRequired =
2170
+ refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR ||
2171
+ refreshTokenError.errorCode ===
2172
+ ClientAuthErrorCodes.tokenRefreshRequired;
2173
+
2174
+ // Errors that may be resolved before falling back to interaction (through iframe renewal)
2175
+ const isSilentlyResolvable =
2176
+ (noInteractionRequired && refreshTokenRefreshRequired) ||
2177
+ refreshTokenError.errorCode ===
2178
+ InteractionRequiredAuthErrorCodes.noTokensFound ||
2179
+ refreshTokenError.errorCode ===
2180
+ InteractionRequiredAuthErrorCodes.refreshTokenExpired;
2181
+
2182
+ // Only these policies allow for an iframe renewal attempt
2183
+ const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy);
2184
+
2185
+ return isSilentlyResolvable && tryIframeRenewal;
2186
+ }
@@ -151,7 +151,7 @@ export class CryptoOps implements ICrypto {
151
151
  * Removes all cryptographic keys from IndexedDB storage
152
152
  */
153
153
  async clearKeystore(): Promise<boolean> {
154
- return await this.cache.clear();
154
+ return this.cache.clear();
155
155
  }
156
156
 
157
157
  /**
@@ -71,6 +71,6 @@ export class SignedHttpRequest {
71
71
  * @returns If keys are properly deleted
72
72
  */
73
73
  async removeKeys(publicKeyThumbprint: string): Promise<boolean> {
74
- return await this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
74
+ return this.cryptoOps.removeTokenBindingKey(publicKeyThumbprint);
75
75
  }
76
76
  }
package/src/index.ts CHANGED
@@ -146,6 +146,7 @@ export {
146
146
  PerformanceEvents,
147
147
  // Telemetry
148
148
  InProgressPerformanceEvent,
149
+ TenantProfile,
149
150
  } from "@azure/msal-common";
150
151
 
151
152
  export { version } from "./packageMetadata";