@azure/msal-browser 2.17.0 → 2.21.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.
- package/CHANGELOG.json +203 -0
- package/{changelog.md → CHANGELOG.md} +506 -445
- package/LICENSE +21 -21
- package/README.md +14 -6
- package/dist/_virtual/_tslib.js +1 -1
- package/dist/app/ClientApplication.d.ts +31 -0
- package/dist/app/ClientApplication.d.ts.map +1 -1
- package/dist/app/ClientApplication.js +96 -3
- package/dist/app/ClientApplication.js.map +1 -1
- package/dist/app/IPublicClientApplication.d.ts +6 -0
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.js +13 -1
- package/dist/app/IPublicClientApplication.js.map +1 -1
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.js +31 -24
- package/dist/app/PublicClientApplication.js.map +1 -1
- package/dist/cache/AsyncMemoryStorage.d.ts +46 -0
- package/dist/cache/AsyncMemoryStorage.d.ts.map +1 -0
- package/dist/cache/AsyncMemoryStorage.js +195 -0
- package/dist/cache/AsyncMemoryStorage.js.map +1 -0
- package/dist/cache/BrowserCacheManager.d.ts +9 -1
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +55 -2
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.d.ts +1 -1
- package/dist/cache/BrowserStorage.d.ts.map +1 -1
- package/dist/cache/BrowserStorage.js +1 -1
- package/dist/cache/BrowserStorage.js.map +1 -1
- package/dist/cache/DatabaseStorage.d.ts +25 -6
- package/dist/cache/DatabaseStorage.d.ts.map +1 -1
- package/dist/cache/DatabaseStorage.js +127 -81
- package/dist/cache/DatabaseStorage.js.map +1 -1
- package/dist/cache/IAsyncMemoryStorage.d.ts +28 -0
- package/dist/cache/IAsyncMemoryStorage.d.ts.map +1 -0
- package/dist/cache/IWindowStorage.d.ts +3 -3
- package/dist/cache/IWindowStorage.d.ts.map +1 -1
- package/dist/cache/MemoryStorage.d.ts +3 -3
- package/dist/cache/MemoryStorage.d.ts.map +1 -1
- package/dist/cache/MemoryStorage.js +1 -1
- package/dist/cache/MemoryStorage.js.map +1 -1
- package/dist/cache/TokenCache.js +1 -1
- package/dist/cache/TokenCache.js.map +1 -1
- package/dist/config/Configuration.js +1 -1
- package/dist/config/Configuration.js.map +1 -1
- package/dist/crypto/BrowserCrypto.d.ts +3 -1
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.js +3 -2
- package/dist/crypto/BrowserCrypto.js.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +16 -5
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +58 -17
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.js +1 -1
- package/dist/crypto/GuidGenerator.js.map +1 -1
- package/dist/crypto/PkceGenerator.js +1 -1
- package/dist/crypto/PkceGenerator.js.map +1 -1
- package/dist/crypto/SignedHttpRequest.d.ts +6 -2
- package/dist/crypto/SignedHttpRequest.d.ts.map +1 -1
- package/dist/crypto/SignedHttpRequest.js +11 -5
- package/dist/crypto/SignedHttpRequest.js.map +1 -1
- package/dist/encode/Base64Decode.js +1 -1
- package/dist/encode/Base64Decode.js.map +1 -1
- package/dist/encode/Base64Encode.js +1 -1
- package/dist/encode/Base64Encode.js.map +1 -1
- package/dist/error/BrowserAuthError.d.ts +16 -8
- package/dist/error/BrowserAuthError.d.ts.map +1 -1
- package/dist/error/BrowserAuthError.js +22 -12
- package/dist/error/BrowserAuthError.js.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.js +1 -1
- package/dist/error/BrowserConfigurationAuthError.js.map +1 -1
- package/dist/event/EventHandler.d.ts +13 -0
- package/dist/event/EventHandler.d.ts.map +1 -1
- package/dist/event/EventHandler.js +66 -1
- package/dist/event/EventHandler.js.map +1 -1
- package/dist/event/EventMessage.d.ts +2 -2
- package/dist/event/EventMessage.d.ts.map +1 -1
- package/dist/event/EventMessage.js +1 -1
- package/dist/event/EventMessage.js.map +1 -1
- package/dist/event/EventType.d.ts +5 -0
- package/dist/event/EventType.d.ts.map +1 -1
- package/dist/event/EventType.js +6 -1
- package/dist/event/EventType.js.map +1 -1
- package/dist/index.cjs.js +1465 -520
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +21 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +77 -3
- package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +5 -0
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map +1 -0
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +21 -0
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js.map +1 -0
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.js +47 -37
- package/dist/interaction_client/PopupClient.js.map +1 -1
- package/dist/interaction_client/RedirectClient.js +16 -15
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -0
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -0
- package/dist/interaction_client/SilentAuthCodeClient.js +82 -0
- package/dist/interaction_client/SilentAuthCodeClient.js.map +1 -0
- package/dist/interaction_client/SilentCacheClient.d.ts +1 -1
- package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentCacheClient.js +12 -2
- package/dist/interaction_client/SilentCacheClient.js.map +1 -1
- package/dist/interaction_client/SilentIframeClient.js +15 -13
- package/dist/interaction_client/SilentIframeClient.js.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.js +10 -7
- package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts +3 -23
- package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.js +51 -105
- package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts +11 -2
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.js +36 -10
- package/dist/interaction_handler/InteractionHandler.js.map +1 -1
- package/dist/interaction_handler/PopupHandler.js +1 -1
- package/dist/interaction_handler/PopupHandler.js.map +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
- package/dist/interaction_handler/RedirectHandler.js +2 -2
- package/dist/interaction_handler/RedirectHandler.js.map +1 -1
- package/dist/interaction_handler/SilentHandler.js +1 -1
- package/dist/interaction_handler/SilentHandler.js.map +1 -1
- package/dist/navigation/NavigationClient.js +1 -1
- package/dist/navigation/NavigationClient.js.map +1 -1
- package/dist/network/FetchClient.js +1 -1
- package/dist/network/FetchClient.js.map +1 -1
- package/dist/network/XhrClient.js +1 -1
- package/dist/network/XhrClient.js.map +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.js +2 -2
- package/dist/packageMetadata.js.map +1 -1
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -0
- package/dist/request/AuthorizationCodeRequest.d.ts.map +1 -0
- package/dist/request/AuthorizationUrlRequest.d.ts +1 -1
- package/dist/request/AuthorizationUrlRequest.d.ts.map +1 -1
- package/dist/request/PopupRequest.d.ts +1 -1
- package/dist/request/PopupRequest.d.ts.map +1 -1
- package/dist/request/RedirectRequest.d.ts +1 -1
- package/dist/request/RedirectRequest.d.ts.map +1 -1
- package/dist/request/SilentRequest.d.ts +1 -1
- package/dist/request/SilentRequest.d.ts.map +1 -1
- package/dist/request/SsoSilentRequest.d.ts +1 -1
- package/dist/request/SsoSilentRequest.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.d.ts +4 -0
- package/dist/utils/BrowserConstants.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.js +8 -3
- package/dist/utils/BrowserConstants.js.map +1 -1
- package/dist/utils/BrowserProtocolUtils.js +1 -1
- package/dist/utils/BrowserProtocolUtils.js.map +1 -1
- package/dist/utils/BrowserStringUtils.js +1 -1
- package/dist/utils/BrowserStringUtils.js.map +1 -1
- package/dist/utils/BrowserUtils.js +1 -1
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MathUtils.js +1 -1
- package/dist/utils/MathUtils.js.map +1 -1
- package/dist/utils/PopupUtils.js +1 -1
- package/dist/utils/PopupUtils.js.map +1 -1
- package/lib/msal-browser.js +1465 -520
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +30 -30
- package/package.json +9 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.21.0 2022-01-04 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __awaiter, __generator } from '../_virtual/_tslib.js';
|
|
4
4
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
5
|
+
import { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';
|
|
5
6
|
|
|
6
7
|
/*
|
|
7
8
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -11,10 +12,10 @@ import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
|
11
12
|
* Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
|
|
12
13
|
*/
|
|
13
14
|
var DatabaseStorage = /** @class */ (function () {
|
|
14
|
-
function DatabaseStorage(
|
|
15
|
-
this.dbName =
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
15
|
+
function DatabaseStorage() {
|
|
16
|
+
this.dbName = DB_NAME;
|
|
17
|
+
this.version = DB_VERSION;
|
|
18
|
+
this.tableName = DB_TABLE_NAME;
|
|
18
19
|
this.dbOpen = false;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
@@ -25,7 +26,6 @@ var DatabaseStorage = /** @class */ (function () {
|
|
|
25
26
|
var _this = this;
|
|
26
27
|
return __generator(this, function (_a) {
|
|
27
28
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
28
|
-
// TODO: Add timeouts?
|
|
29
29
|
var openDB = window.indexedDB.open(_this.dbName, _this.version);
|
|
30
30
|
openDB.addEventListener("upgradeneeded", function (e) {
|
|
31
31
|
var event = e;
|
|
@@ -37,40 +37,53 @@ var DatabaseStorage = /** @class */ (function () {
|
|
|
37
37
|
_this.dbOpen = true;
|
|
38
38
|
resolve();
|
|
39
39
|
});
|
|
40
|
-
openDB.addEventListener("error", function (
|
|
40
|
+
openDB.addEventListener("error", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });
|
|
41
41
|
})];
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
44
|
};
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param key
|
|
46
|
+
* Opens database if it's not already open
|
|
48
47
|
*/
|
|
49
|
-
DatabaseStorage.prototype.
|
|
48
|
+
DatabaseStorage.prototype.validateDbIsOpen = function () {
|
|
50
49
|
return __awaiter(this, void 0, void 0, function () {
|
|
51
|
-
var _this = this;
|
|
52
50
|
return __generator(this, function (_a) {
|
|
53
51
|
switch (_a.label) {
|
|
54
52
|
case 0:
|
|
55
53
|
if (!!this.dbOpen) return [3 /*break*/, 2];
|
|
56
54
|
return [4 /*yield*/, this.open()];
|
|
55
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
56
|
+
case 2: return [2 /*return*/];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Retrieves item from IndexedDB instance.
|
|
63
|
+
* @param key
|
|
64
|
+
*/
|
|
65
|
+
DatabaseStorage.prototype.getItem = function (key) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
67
|
+
var _this = this;
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
switch (_a.label) {
|
|
70
|
+
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
|
|
57
71
|
case 1:
|
|
58
72
|
_a.sent();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
})];
|
|
73
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
74
|
+
// TODO: Add timeouts?
|
|
75
|
+
if (!_this.db) {
|
|
76
|
+
return reject(BrowserAuthError.createDatabaseNotOpenError());
|
|
77
|
+
}
|
|
78
|
+
var transaction = _this.db.transaction([_this.tableName], "readonly");
|
|
79
|
+
var objectStore = transaction.objectStore(_this.tableName);
|
|
80
|
+
var dbGet = objectStore.get(key);
|
|
81
|
+
dbGet.addEventListener("success", function (e) {
|
|
82
|
+
var event = e;
|
|
83
|
+
resolve(event.target.result);
|
|
84
|
+
});
|
|
85
|
+
dbGet.addEventListener("error", function (e) { return reject(e); });
|
|
86
|
+
})];
|
|
74
87
|
}
|
|
75
88
|
});
|
|
76
89
|
});
|
|
@@ -80,31 +93,25 @@ var DatabaseStorage = /** @class */ (function () {
|
|
|
80
93
|
* @param key
|
|
81
94
|
* @param payload
|
|
82
95
|
*/
|
|
83
|
-
DatabaseStorage.prototype.
|
|
96
|
+
DatabaseStorage.prototype.setItem = function (key, payload) {
|
|
84
97
|
return __awaiter(this, void 0, void 0, function () {
|
|
85
98
|
var _this = this;
|
|
86
99
|
return __generator(this, function (_a) {
|
|
87
100
|
switch (_a.label) {
|
|
88
|
-
case 0:
|
|
89
|
-
if (!!this.dbOpen) return [3 /*break*/, 2];
|
|
90
|
-
return [4 /*yield*/, this.open()];
|
|
101
|
+
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
|
|
91
102
|
case 1:
|
|
92
103
|
_a.sent();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
resolve(event.target.result);
|
|
105
|
-
});
|
|
106
|
-
dbPut.addEventListener("error", function (e) { return reject(e); });
|
|
107
|
-
})];
|
|
104
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
105
|
+
// TODO: Add timeouts?
|
|
106
|
+
if (!_this.db) {
|
|
107
|
+
return reject(BrowserAuthError.createDatabaseNotOpenError());
|
|
108
|
+
}
|
|
109
|
+
var transaction = _this.db.transaction([_this.tableName], "readwrite");
|
|
110
|
+
var objectStore = transaction.objectStore(_this.tableName);
|
|
111
|
+
var dbPut = objectStore.put(payload, key);
|
|
112
|
+
dbPut.addEventListener("success", function () { return resolve(); });
|
|
113
|
+
dbPut.addEventListener("error", function (e) { return reject(e); });
|
|
114
|
+
})];
|
|
108
115
|
}
|
|
109
116
|
});
|
|
110
117
|
});
|
|
@@ -113,62 +120,101 @@ var DatabaseStorage = /** @class */ (function () {
|
|
|
113
120
|
* Removes item from IndexedDB under given key
|
|
114
121
|
* @param key
|
|
115
122
|
*/
|
|
116
|
-
DatabaseStorage.prototype.
|
|
123
|
+
DatabaseStorage.prototype.removeItem = function (key) {
|
|
117
124
|
return __awaiter(this, void 0, void 0, function () {
|
|
118
125
|
var _this = this;
|
|
119
126
|
return __generator(this, function (_a) {
|
|
120
127
|
switch (_a.label) {
|
|
121
|
-
case 0:
|
|
122
|
-
if (!!this.dbOpen) return [3 /*break*/, 2];
|
|
123
|
-
return [4 /*yield*/, this.open()];
|
|
128
|
+
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
|
|
124
129
|
case 1:
|
|
125
130
|
_a.sent();
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
resolve(event.target.result === undefined);
|
|
137
|
-
});
|
|
138
|
-
dbDelete.addEventListener("error", function (e) { return reject(e); });
|
|
139
|
-
})];
|
|
131
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
132
|
+
if (!_this.db) {
|
|
133
|
+
return reject(BrowserAuthError.createDatabaseNotOpenError());
|
|
134
|
+
}
|
|
135
|
+
var transaction = _this.db.transaction([_this.tableName], "readwrite");
|
|
136
|
+
var objectStore = transaction.objectStore(_this.tableName);
|
|
137
|
+
var dbDelete = objectStore.delete(key);
|
|
138
|
+
dbDelete.addEventListener("success", function () { return resolve(); });
|
|
139
|
+
dbDelete.addEventListener("error", function (e) { return reject(e); });
|
|
140
|
+
})];
|
|
140
141
|
}
|
|
141
142
|
});
|
|
142
143
|
});
|
|
143
144
|
};
|
|
144
|
-
|
|
145
|
+
/**
|
|
146
|
+
* Get all the keys from the storage object as an iterable array of strings.
|
|
147
|
+
*/
|
|
148
|
+
DatabaseStorage.prototype.getKeys = function () {
|
|
145
149
|
return __awaiter(this, void 0, void 0, function () {
|
|
146
150
|
var _this = this;
|
|
147
151
|
return __generator(this, function (_a) {
|
|
148
152
|
switch (_a.label) {
|
|
149
|
-
case 0:
|
|
150
|
-
if (!!this.dbOpen) return [3 /*break*/, 2];
|
|
151
|
-
return [4 /*yield*/, this.open()];
|
|
153
|
+
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
|
|
152
154
|
case 1:
|
|
153
155
|
_a.sent();
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})];
|
|
156
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
157
|
+
if (!_this.db) {
|
|
158
|
+
return reject(BrowserAuthError.createDatabaseNotOpenError());
|
|
159
|
+
}
|
|
160
|
+
var transaction = _this.db.transaction([_this.tableName], "readonly");
|
|
161
|
+
var objectStore = transaction.objectStore(_this.tableName);
|
|
162
|
+
var dbGetKeys = objectStore.getAllKeys();
|
|
163
|
+
dbGetKeys.addEventListener("success", function (e) {
|
|
164
|
+
var event = e;
|
|
165
|
+
resolve(event.target.result);
|
|
166
|
+
});
|
|
167
|
+
dbGetKeys.addEventListener("error", function (e) { return reject(e); });
|
|
168
|
+
})];
|
|
168
169
|
}
|
|
169
170
|
});
|
|
170
171
|
});
|
|
171
172
|
};
|
|
173
|
+
/**
|
|
174
|
+
*
|
|
175
|
+
* Checks whether there is an object under the search key in the object store
|
|
176
|
+
*/
|
|
177
|
+
DatabaseStorage.prototype.containsKey = function (key) {
|
|
178
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
179
|
+
var _this = this;
|
|
180
|
+
return __generator(this, function (_a) {
|
|
181
|
+
switch (_a.label) {
|
|
182
|
+
case 0: return [4 /*yield*/, this.validateDbIsOpen()];
|
|
183
|
+
case 1:
|
|
184
|
+
_a.sent();
|
|
185
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
186
|
+
if (!_this.db) {
|
|
187
|
+
return reject(BrowserAuthError.createDatabaseNotOpenError());
|
|
188
|
+
}
|
|
189
|
+
var transaction = _this.db.transaction([_this.tableName], "readonly");
|
|
190
|
+
var objectStore = transaction.objectStore(_this.tableName);
|
|
191
|
+
var dbContainsKey = objectStore.count(key);
|
|
192
|
+
dbContainsKey.addEventListener("success", function (e) {
|
|
193
|
+
var event = e;
|
|
194
|
+
resolve(event.target.result === 1);
|
|
195
|
+
});
|
|
196
|
+
dbContainsKey.addEventListener("error", function (e) { return reject(e); });
|
|
197
|
+
})];
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
/**
|
|
203
|
+
* Deletes the MSAL database. The database is deleted rather than cleared to make it possible
|
|
204
|
+
* for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues
|
|
205
|
+
* with IndexedDB database versions.
|
|
206
|
+
*/
|
|
207
|
+
DatabaseStorage.prototype.deleteDatabase = function () {
|
|
208
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
209
|
+
return __generator(this, function (_a) {
|
|
210
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
211
|
+
var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);
|
|
212
|
+
deleteDbRequest.addEventListener("success", function () { return resolve(true); });
|
|
213
|
+
deleteDbRequest.addEventListener("error", function () { return reject(false); });
|
|
214
|
+
})];
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
};
|
|
172
218
|
return DatabaseStorage;
|
|
173
219
|
}());
|
|
174
220
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseStorage.js","sources":["../../src/cache/DatabaseStorage.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\ninterface IDBOpenDBRequestEvent extends Event {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\r\n target: IDBOpenDBRequest & EventTarget;\r\n}\r\n\r\ninterface IDBRequestEvent extends Event {\r\n target: IDBRequest & EventTarget;\r\n}\r\n\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nexport class DatabaseStorage<T>{\r\n private db: IDBDatabase|undefined;\r\n private dbName: string;\r\n private tableName: string;\r\n private version: number;\r\n private dbOpen: boolean;\r\n\r\n constructor(dbName: string, tableName: string, version: number) {\r\n this.dbName = dbName;\r\n this.tableName = tableName;\r\n this.version = version;\r\n this.dbOpen = false;\r\n }\r\n\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n async open(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n const openDB = window.indexedDB.open(this.dbName, this.version);\r\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\r\n const event = e as IDBOpenOnUpgradeNeededEvent;\r\n event.target.result.createObjectStore(this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBOpenDBRequestEvent;\r\n this.db = event.target.result;\r\n this.dbOpen = true;\r\n resolve();\r\n });\r\n\r\n openDB.addEventListener(\"error\", error => reject(error));\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key \r\n */\r\n async get(key: string): Promise<T> {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise<T>((resolve, reject) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readonly\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n const dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key \r\n * @param payload \r\n */\r\n async put(key: string, payload: T): Promise<T> {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise<T>((resolve: Function, reject: Function) => {\r\n // TODO: Add timeouts?\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result);\r\n });\r\n dbPut.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n async delete(key: string): Promise<boolean> {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise<boolean>((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbDelete = objectStore.delete(key);\r\n\r\n dbDelete.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result === undefined);\r\n });\r\n dbDelete.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n\r\n async clear(): Promise<boolean> {\r\n if (!this.dbOpen) {\r\n await this.open();\r\n }\r\n\r\n return new Promise<boolean>((resolve: Function, reject: Function) => {\r\n if (!this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n\r\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\r\n\r\n const objectStore = transaction.objectStore(this.tableName);\r\n\r\n const dbDelete = objectStore.clear();\r\n\r\n dbDelete.addEventListener(\"success\", (e: Event) => {\r\n const event = e as IDBRequestEvent;\r\n resolve(event.target.result === undefined);\r\n });\r\n dbDelete.addEventListener(\"error\", e => reject(e));\r\n });\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatabaseStorage.js","sources":["../../src/cache/DatabaseStorage.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\n\ninterface IDBOpenDBRequestEvent extends Event {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBRequestEvent extends Event {\n target: IDBRequest & EventTarget;\n}\n\n/**\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport class DatabaseStorage<T> implements IAsyncStorage<T> {\n private db: IDBDatabase|undefined;\n private dbName: string;\n private tableName: string;\n private version: number;\n private dbOpen: boolean;\n\n constructor() {\n this.dbName = DB_NAME;\n this.version = DB_VERSION;\n this.tableName = DB_TABLE_NAME;\n this.dbOpen = false;\n }\n\n /**\n * Opens IndexedDB instance.\n */\n async open(): Promise<void> {\n return new Promise((resolve, reject) => {\n const openDB = window.indexedDB.open(this.dbName, this.version);\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\n const event = e as IDBOpenOnUpgradeNeededEvent;\n event.target.result.createObjectStore(this.tableName);\n });\n openDB.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBOpenDBRequestEvent;\n this.db = event.target.result;\n this.dbOpen = true;\n resolve();\n });\n openDB.addEventListener(\"error\", () => reject(BrowserAuthError.createDatabaseUnavailableError()));\n });\n }\n\n /**\n * Opens database if it's not already open\n */\n private async validateDbIsOpen(): Promise<void> {\n if (!this.dbOpen) {\n return await this.open();\n }\n }\n\n /**\n * Retrieves item from IndexedDB instance.\n * @param key \n */\n async getItem(key: string): Promise<T | null> {\n await this.validateDbIsOpen();\n\n return new Promise<T>((resolve, reject) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGet = objectStore.get(key);\n dbGet.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n resolve(event.target.result);\n });\n dbGet.addEventListener(\"error\", (e) => reject(e));\n });\n }\n\n /**\n * Adds item to IndexedDB under given key\n * @param key \n * @param payload \n */\n async setItem(key: string, payload: T): Promise<void> {\n await this.validateDbIsOpen();\n\n return new Promise<void>((resolve: Function, reject: Function) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n\n const objectStore = transaction.objectStore(this.tableName);\n\n const dbPut = objectStore.put(payload, key);\n\n dbPut.addEventListener(\"success\", () => resolve());\n dbPut.addEventListener(\"error\", (e) => reject(e));\n });\n }\n\n /**\n * Removes item from IndexedDB under given key\n * @param key\n */\n async removeItem(key: string): Promise<void> {\n await this.validateDbIsOpen();\n\n return new Promise<void>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbDelete = objectStore.delete(key);\n dbDelete.addEventListener(\"success\", () => resolve());\n dbDelete.addEventListener(\"error\", (e) => reject(e));\n });\n }\n\n /**\n * Get all the keys from the storage object as an iterable array of strings.\n */\n async getKeys(): Promise<string[]> {\n await this.validateDbIsOpen();\n\n return new Promise<string[]>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGetKeys = objectStore.getAllKeys();\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n resolve(event.target.result);\n });\n dbGetKeys.addEventListener(\"error\", (e: Event) => reject(e));\n });\n }\n\n /**\n * \n * Checks whether there is an object under the search key in the object store\n */\n async containsKey(key: string): Promise<boolean> {\n await this.validateDbIsOpen();\n\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbContainsKey = objectStore.count(key);\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n resolve(event.target.result === 1);\n });\n dbContainsKey.addEventListener(\"error\", (e: Event) => reject(e));\n });\n }\n\n /**\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\n * with IndexedDB database versions.\n */\n async deleteDatabase(): Promise<boolean> {\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\n deleteDbRequest.addEventListener(\"success\", () => resolve(true));\n deleteDbRequest.addEventListener(\"error\", () => reject(false));\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface IAsyncStorage<T> {
|
|
2
|
+
/**
|
|
3
|
+
* Get the item from the asynchronous storage object matching the given key.
|
|
4
|
+
* @param key
|
|
5
|
+
*/
|
|
6
|
+
getItem(key: string): Promise<T | null>;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the item in the asynchronous storage object with the given key.
|
|
9
|
+
* @param key
|
|
10
|
+
* @param value
|
|
11
|
+
*/
|
|
12
|
+
setItem(key: string, value: T): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Removes the item in the asynchronous storage object matching the given key.
|
|
15
|
+
* @param key
|
|
16
|
+
*/
|
|
17
|
+
removeItem(key: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Get all the keys from the asynchronous storage object as an iterable array of strings.
|
|
20
|
+
*/
|
|
21
|
+
getKeys(): Promise<string[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Returns true or false if the given key is present in the cache.
|
|
24
|
+
* @param key
|
|
25
|
+
*/
|
|
26
|
+
containsKey(key: string): Promise<boolean>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=IAsyncMemoryStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IAsyncMemoryStorage.d.ts","sourceRoot":"","sources":["../../src/cache/IAsyncMemoryStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9C"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export interface IWindowStorage {
|
|
1
|
+
export interface IWindowStorage<T> {
|
|
2
2
|
/**
|
|
3
3
|
* Get the item from the window storage object matching the given key.
|
|
4
4
|
* @param key
|
|
5
5
|
*/
|
|
6
|
-
getItem(key: string):
|
|
6
|
+
getItem(key: string): T | null;
|
|
7
7
|
/**
|
|
8
8
|
* Sets the item in the window storage object with the given key.
|
|
9
9
|
* @param key
|
|
10
10
|
* @param value
|
|
11
11
|
*/
|
|
12
|
-
setItem(key: string, value:
|
|
12
|
+
setItem(key: string, value: T): void;
|
|
13
13
|
/**
|
|
14
14
|
* Removes the item in the window storage object matching the given key.
|
|
15
15
|
* @param key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IWindowStorage.d.ts","sourceRoot":"","sources":["../../src/cache/IWindowStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;
|
|
1
|
+
{"version":3,"file":"IWindowStorage.d.ts","sourceRoot":"","sources":["../../src/cache/IWindowStorage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAE/B;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACrC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IWindowStorage } from "./IWindowStorage";
|
|
2
|
-
export declare class MemoryStorage implements IWindowStorage {
|
|
2
|
+
export declare class MemoryStorage<T> implements IWindowStorage<T> {
|
|
3
3
|
private cache;
|
|
4
4
|
constructor();
|
|
5
|
-
getItem(key: string):
|
|
6
|
-
setItem(key: string, value:
|
|
5
|
+
getItem(key: string): T | null;
|
|
6
|
+
setItem(key: string, value: T): void;
|
|
7
7
|
removeItem(key: string): void;
|
|
8
8
|
getKeys(): string[];
|
|
9
9
|
containsKey(key: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../src/cache/MemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,
|
|
1
|
+
{"version":3,"file":"MemoryStorage.d.ts","sourceRoot":"","sources":["../../src/cache/MemoryStorage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IAEtD,OAAO,CAAC,KAAK,CAAiB;;IAM9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI9B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIpC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,MAAM,EAAE;IAQnB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,IAAI,IAAI;CAGhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryStorage.js","sources":["../../src/cache/MemoryStorage.ts"],"sourcesContent":["/*\
|
|
1
|
+
{"version":3,"file":"MemoryStorage.js","sources":["../../src/cache/MemoryStorage.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class MemoryStorage<T> implements IWindowStorage<T> {\n\n private cache: Map<string, T>;\n\n constructor() {\n this.cache = new Map<string, T>();\n }\n\n getItem(key: string): T | null {\n return this.cache.get(key) || null;\n }\n\n setItem(key: string, value: T): void {\n this.cache.set(key, value);\n }\n\n removeItem(key: string): void {\n this.cache.delete(key);\n }\n\n getKeys(): string[] {\n const cacheKeys: string[] = [];\n this.cache.forEach((value: T, key: string) => {\n cacheKeys.push(key);\n });\n return cacheKeys;\n }\n\n containsKey(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear() :void {\n this.cache.clear();\n }\n}\n"],"names":[],"mappings":";;AAAA;;;;;IAWI;QACI,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;KACrC;IAED,+BAAO,GAAP,UAAQ,GAAW;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;KACtC;IAED,+BAAO,GAAP,UAAQ,GAAW,EAAE,KAAQ;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KAC9B;IAED,kCAAU,GAAV,UAAW,GAAW;QAClB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,+BAAO,GAAP;QACI,IAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,KAAQ,EAAE,GAAW;YACrC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;KACpB;IAED,mCAAW,GAAX,UAAY,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,6BAAK,GAAL;QACI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KACtB;IACL,oBAAC;AAAD,CAAC;;;;"}
|
package/dist/cache/TokenCache.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.21.0 2022-01-04 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { Authority, IdTokenEntity, AuthToken, AccountEntity, ScopeSet, AccessTokenEntity } from '@azure/msal-common';
|
|
4
4
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenCache.js","sources":["../../src/cache/TokenCache.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken } from \"@azure/msal-common\";\r\nimport { BrowserConfiguration } from \"../config/Configuration\";\r\nimport { SilentRequest } from \"../request/SilentRequest\";\r\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\r\nimport { ITokenCache } from \"./ITokenCache\";\r\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\r\n\r\nexport type LoadTokenOptions = {\r\n clientInfo?: string,\r\n extendedExpiresOn?: number\r\n};\r\n\r\n/**\r\n * Token cache manager\r\n */\r\nexport class TokenCache implements ITokenCache {\r\n // Flag to indicate if in browser environment\r\n public isBrowserEnvironment: boolean;\r\n // Input configuration by developer/user\r\n protected config: BrowserConfiguration;\r\n // Browser cache storage\r\n private storage: BrowserCacheManager;\r\n // Logger\r\n private logger: Logger;\r\n // Crypto class\r\n private cryptoObj: ICrypto;\r\n\r\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n \r\n // Move getAllAccounts here and cache utility APIs\r\n\r\n /**\r\n * API to load tokens to msal-browser cache. \r\n * @param request \r\n * @param response\r\n * @param options\r\n */\r\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): void {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n\r\n if (request.account) {\r\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n } else if (request.authority) {\r\n\r\n const authorityOptions: AuthorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n const authority = new Authority(request.authority, this.config.system.networkClient, this.storage, authorityOptions);\r\n\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n } else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken \r\n * @param homeAccountId \r\n * @param environment \r\n * @param tenantId \r\n * @param options \r\n */\r\n private loadIdToken(idToken: string, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\r\n\r\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\r\n const idAuthToken = new AuthToken(idToken, this.cryptoObj);\r\n const accountEntity = options.clientInfo ?\r\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setAccount(accountEntity);\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request \r\n * @param response \r\n * @param options \r\n * @param homeAccountId \r\n * @param environment \r\n * @param tenantId \r\n * @returns \r\n */\r\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\r\n\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return;\r\n }\r\n\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n \r\n const scopes = new ScopeSet(request.scopes).printScopes();\r\n const expiresOn = response.expires_in;\r\n const extendedExpiresOn = options.extendedExpiresOn;\r\n\r\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n } else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenCache.js","sources":["../../src/cache/TokenCache.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\nimport { ITokenCache } from \"./ITokenCache\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport type LoadTokenOptions = {\n clientInfo?: string,\n extendedExpiresOn?: number\n};\n\n/**\n * Token cache manager\n */\nexport class TokenCache implements ITokenCache {\n // Flag to indicate if in browser environment\n public isBrowserEnvironment: boolean;\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n // Browser cache storage\n private storage: BrowserCacheManager;\n // Logger\n private logger: Logger;\n // Crypto class\n private cryptoObj: ICrypto;\n\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n this.config = configuration;\n this.storage = storage;\n this.logger = logger;\n this.cryptoObj = cryptoObj;\n }\n \n // Move getAllAccounts here and cache utility APIs\n\n /**\n * API to load tokens to msal-browser cache. \n * @param request \n * @param response\n * @param options\n */\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): void {\n this.logger.info(\"TokenCache - loadExternalTokens called\");\n\n if (!response.id_token) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\n }\n\n if (request.account) {\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n } else if (request.authority) {\n\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata\n };\n const authority = new Authority(request.authority, this.config.system.networkClient, this.storage, authorityOptions);\n\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\n if (options.clientInfo) {\n this.logger.trace(\"TokenCache - homeAccountId from options\");\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n } else if (response.client_info) {\n this.logger.trace(\"TokenCache - homeAccountId from response\");\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\n }\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\n }\n }\n\n /**\n * Helper function to load id tokens to msal-browser cache\n * @param idToken \n * @param homeAccountId \n * @param environment \n * @param tenantId \n * @param options \n */\n private loadIdToken(idToken: string, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\n const idAuthToken = new AuthToken(idToken, this.cryptoObj);\n const accountEntity = options.clientInfo ?\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading id token\");\n this.storage.setAccount(accountEntity);\n this.storage.setIdTokenCredential(idTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n\n /**\n * Helper function to load access tokens to msal-browser cache\n * @param request \n * @param response \n * @param options \n * @param homeAccountId \n * @param environment \n * @param tenantId \n * @returns \n */\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n if (!response.access_token) {\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\n return;\n }\n\n if (!response.expires_in) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\n }\n\n if (!options.extendedExpiresOn) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\n }\n \n const scopes = new ScopeSet(request.scopes).printScopes();\n const expiresOn = response.expires_in;\n const extendedExpiresOn = options.extendedExpiresOn;\n\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading access token\");\n this.storage.setAccessTokenCredential(accessTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.21.0 2022-01-04 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __assign } from '../_virtual/_tslib.js';
|
|
4
4
|
import { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, LogLevel } from '@azure/msal-common';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Configuration.js","sources":["../../src/config/Configuration.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule } from \"@azure/msal-common\";\r\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\r\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\r\nimport { INavigationClient } from \"../navigation/INavigationClient\";\r\nimport { NavigationClient } from \"../navigation/NavigationClient\";\r\n\r\n// Default timeout for popup windows and iframes in milliseconds\r\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\n\r\n/**\r\n * Use this to configure the auth options in the Configuration object\r\n *\r\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\r\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\r\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\r\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\r\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\r\n * - postLogoutRedirectUri - The redirect URI where the window navigates after a successful logout.\r\n * - navigateToLoginRequestUrl - Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\r\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\r\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\r\n */\r\nexport type BrowserAuthOptions = {\r\n clientId: string;\r\n authority?: string;\r\n knownAuthorities?: Array<string>;\r\n cloudDiscoveryMetadata?: string;\r\n authorityMetadata?: string;\r\n redirectUri?: string;\r\n postLogoutRedirectUri?: string | null;\r\n navigateToLoginRequestUrl?: boolean;\r\n clientCapabilities?: Array<string>;\r\n protocolMode?: ProtocolMode;\r\n};\r\n\r\n/**\r\n * Use this to configure the below cache configuration options:\r\n *\r\n * - cacheLocation - Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\r\n * - storeAuthStateInCookie - If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\r\n * - secureCookies - If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\r\n */\r\nexport type CacheOptions = {\r\n cacheLocation?: BrowserCacheLocation | string;\r\n storeAuthStateInCookie?: boolean;\r\n secureCookies?: boolean;\r\n};\r\n\r\n/**\r\n * Library Specific Options\r\n *\r\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\r\n * - loggerOptions - Used to initialize the Logger object (See ClientConfiguration.ts)\r\n * - networkClient - Network interface implementation\r\n * - windowHashTimeout - Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\r\n * - iframeHashTimeout - Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\r\n * - loadFrameTimeout - Sets the timeout for waiting for a response hash in an iframe or popup\r\n * - navigateFrameWait - Maximum time the library should wait for a frame to load\r\n * - redirectNavigationTimeout - Time to wait for redirection to occur before resolving promise\r\n * - asyncPopups - Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\r\n * - allowRedirectInIframe - Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\r\n */\r\nexport type BrowserSystemOptions = SystemOptions & {\r\n loggerOptions?: LoggerOptions;\r\n networkClient?: INetworkModule;\r\n navigationClient?: INavigationClient;\r\n windowHashTimeout?: number;\r\n iframeHashTimeout?: number;\r\n loadFrameTimeout?: number;\r\n navigateFrameWait?: number;\r\n redirectNavigationTimeout?: number;\r\n asyncPopups?: boolean;\r\n allowRedirectInIframe?: boolean;\r\n};\r\n\r\n/**\r\n * Use the configuration object to configure MSAL and initialize the UserAgentApplication.\r\n *\r\n * This object allows you to configure important elements of MSAL functionality:\r\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\r\n * - cache: this is where you configure cache location and whether to store cache in cookies\r\n * - system: this is where you can configure the network client, logger, token renewal offset\r\n */\r\nexport type Configuration = {\r\n auth: BrowserAuthOptions,\r\n cache?: CacheOptions,\r\n system?: BrowserSystemOptions\r\n};\r\n\r\nexport type BrowserConfiguration = {\r\n auth: Required<BrowserAuthOptions>,\r\n cache: Required<CacheOptions>,\r\n system: Required<BrowserSystemOptions>\r\n};\r\n\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\r\n\r\n // Default auth options for browser\r\n const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\r\n clientId: \"\",\r\n authority: `${Constants.DEFAULT_AUTHORITY}`,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: \"\",\r\n authorityMetadata: \"\",\r\n redirectUri: \"\",\r\n postLogoutRedirectUri: \"\",\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD\r\n };\r\n\r\n // Default cache options for browser\r\n const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n\r\n // Default logger options for browser\r\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: (): void => {},\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n\r\n // Default system options for browser\r\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required<BrowserSystemOptions> = {\r\n ...DEFAULT_SYSTEM_OPTIONS,\r\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\r\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\r\n navigationClient: new NavigationClient(),\r\n loadFrameTimeout: 0,\r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS,\r\n iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS,\r\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\r\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\r\n asyncPopups: false,\r\n allowRedirectInIframe: false\r\n };\r\n\r\n const overlayedConfig: BrowserConfiguration = {\r\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\r\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\r\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem }\r\n };\r\n return overlayedConfig;\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;AAWA;IACa,wBAAwB,GAAG,MAAM;IACjC,yBAAyB,GAAG,KAAK;IACjC,2BAA2B,GAAG,MAAM;AAwFjD;;;;;;;;;SASgB,kBAAkB,CAAC,EAAsF,EAAE,oBAA6B;QAA7G,aAAa,UAAA,EAAS,cAAc,WAAA,EAAU,eAAe,YAAA;;IAGpG,IAAM,oBAAoB,GAAiC;QACvD,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,KAAG,SAAS,CAAC,iBAAmB;QAC3C,gBAAgB,EAAE,EAAE;QACpB,sBAAsB,EAAE,EAAE;QAC1B,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE,EAAE;QACf,qBAAqB,EAAE,EAAE;QACzB,yBAAyB,EAAE,IAAI;QAC/B,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,YAAY,CAAC,GAAG;KACjC,CAAC;;IAGF,IAAM,qBAAqB,GAA2B;QAClD,aAAa,EAAE,oBAAoB,CAAC,cAAc;QAClD,sBAAsB,EAAE,KAAK;QAC7B,aAAa,EAAE,KAAK;KACvB,CAAC;;IAGF,IAAM,sBAAsB,GAAkB;;QAE1C,cAAc,EAAE,eAAc;QAC9B,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,iBAAiB,EAAE,KAAK;KAC3B,CAAC;;IAGF,IAAM,8BAA8B,yBAC7B,sBAAsB,KACzB,aAAa,EAAE,sBAAsB,EACrC,aAAa,EAAE,oBAAoB,GAAG,YAAY,CAAC,uBAAuB,EAAE,GAAG,oBAAoB,EACnG,gBAAgB,EAAE,IAAI,gBAAgB,EAAE,EACxC,gBAAgB,EAAE,CAAC;;QAEnB,iBAAiB,EAAE,CAAC,eAAe,IAAI,eAAe,CAAC,gBAAgB,KAAK,wBAAwB,EACpG,iBAAiB,EAAE,CAAC,eAAe,IAAI,eAAe,CAAC,gBAAgB,KAAK,yBAAyB,EACrG,iBAAiB,EAAE,oBAAoB,IAAI,YAAY,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,CAAC,EAClF,yBAAyB,EAAE,2BAA2B,EACtD,WAAW,EAAE,KAAK,EAClB,qBAAqB,EAAE,KAAK,GAC/B,CAAC;IAEF,IAAM,eAAe,GAAyB;QAC1C,IAAI,wBAAO,oBAAoB,GAAK,aAAa,CAAE;QACnD,KAAK,wBAAO,qBAAqB,GAAK,cAAc,CAAE;QACtD,MAAM,wBAAO,8BAA8B,GAAK,eAAe,CAAE;KACpE,CAAC;IACF,OAAO,eAAe,CAAC;AAC3B;;;;"}
|
|
1
|
+
{"version":3,"file":"Configuration.js","sources":["../../src/config/Configuration.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule } from \"@azure/msal-common\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationClient } from \"../navigation/NavigationClient\";\n\n// Default timeout for popup windows and iframes in milliseconds\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n *\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n * - postLogoutRedirectUri - The redirect URI where the window navigates after a successful logout.\n * - navigateToLoginRequestUrl - Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\nexport type BrowserAuthOptions = {\n clientId: string;\n authority?: string;\n knownAuthorities?: Array<string>;\n cloudDiscoveryMetadata?: string;\n authorityMetadata?: string;\n redirectUri?: string;\n postLogoutRedirectUri?: string | null;\n navigateToLoginRequestUrl?: boolean;\n clientCapabilities?: Array<string>;\n protocolMode?: ProtocolMode;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n *\n * - cacheLocation - Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\n * - storeAuthStateInCookie - If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\n * - secureCookies - If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\n */\nexport type CacheOptions = {\n cacheLocation?: BrowserCacheLocation | string;\n storeAuthStateInCookie?: boolean;\n secureCookies?: boolean;\n};\n\n/**\n * Library Specific Options\n *\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\n * - loggerOptions - Used to initialize the Logger object (See ClientConfiguration.ts)\n * - networkClient - Network interface implementation\n * - windowHashTimeout - Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n * - iframeHashTimeout - Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n * - loadFrameTimeout - Sets the timeout for waiting for a response hash in an iframe or popup\n * - navigateFrameWait - Maximum time the library should wait for a frame to load\n * - redirectNavigationTimeout - Time to wait for redirection to occur before resolving promise\n * - asyncPopups - Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\n * - allowRedirectInIframe - Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n */\nexport type BrowserSystemOptions = SystemOptions & {\n loggerOptions?: LoggerOptions;\n networkClient?: INetworkModule;\n navigationClient?: INavigationClient;\n windowHashTimeout?: number;\n iframeHashTimeout?: number;\n loadFrameTimeout?: number;\n navigateFrameWait?: number;\n redirectNavigationTimeout?: number;\n asyncPopups?: boolean;\n allowRedirectInIframe?: boolean;\n};\n\n/**\n * Use the configuration object to configure MSAL and initialize the UserAgentApplication.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - auth: this is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n * - cache: this is where you configure cache location and whether to store cache in cookies\n * - system: this is where you can configure the network client, logger, token renewal offset\n */\nexport type Configuration = {\n auth: BrowserAuthOptions,\n cache?: CacheOptions,\n system?: BrowserSystemOptions\n};\n\nexport type BrowserConfiguration = {\n auth: Required<BrowserAuthOptions>,\n cache: Required<CacheOptions>,\n system: Required<BrowserSystemOptions>\n};\n\n/**\n * MSAL function that sets the default options when not explicitly configured from app developer\n *\n * @param auth\n * @param cache\n * @param system\n *\n * @returns Configuration object\n */\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\n\n // Default auth options for browser\n const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\n clientId: \"\",\n authority: `${Constants.DEFAULT_AUTHORITY}`,\n knownAuthorities: [],\n cloudDiscoveryMetadata: \"\",\n authorityMetadata: \"\",\n redirectUri: \"\",\n postLogoutRedirectUri: \"\",\n navigateToLoginRequestUrl: true,\n clientCapabilities: [],\n protocolMode: ProtocolMode.AAD\n };\n\n // Default cache options for browser\n const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n\n // Default logger options for browser\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n loggerCallback: (): void => {},\n logLevel: LogLevel.Info,\n piiLoggingEnabled: false\n };\n\n // Default system options for browser\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required<BrowserSystemOptions> = {\n ...DEFAULT_SYSTEM_OPTIONS,\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\n navigationClient: new NavigationClient(),\n loadFrameTimeout: 0,\n // If loadFrameTimeout is provided, use that as default.\n windowHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS,\n iframeHashTimeout: (userInputSystem && userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS,\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\n asyncPopups: false,\n allowRedirectInIframe: false\n };\n\n const overlayedConfig: BrowserConfiguration = {\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem }\n };\n return overlayedConfig;\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;AAWA;IACa,wBAAwB,GAAG,MAAM;IACjC,yBAAyB,GAAG,KAAK;IACjC,2BAA2B,GAAG,MAAM;AAwFjD;;;;;;;;;SASgB,kBAAkB,CAAC,EAAsF,EAAE,oBAA6B;QAA7G,aAAa,UAAA,EAAS,cAAc,WAAA,EAAU,eAAe,YAAA;;IAGpG,IAAM,oBAAoB,GAAiC;QACvD,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,KAAG,SAAS,CAAC,iBAAmB;QAC3C,gBAAgB,EAAE,EAAE;QACpB,sBAAsB,EAAE,EAAE;QAC1B,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE,EAAE;QACf,qBAAqB,EAAE,EAAE;QACzB,yBAAyB,EAAE,IAAI;QAC/B,kBAAkB,EAAE,EAAE;QACtB,YAAY,EAAE,YAAY,CAAC,GAAG;KACjC,CAAC;;IAGF,IAAM,qBAAqB,GAA2B;QAClD,aAAa,EAAE,oBAAoB,CAAC,cAAc;QAClD,sBAAsB,EAAE,KAAK;QAC7B,aAAa,EAAE,KAAK;KACvB,CAAC;;IAGF,IAAM,sBAAsB,GAAkB;;QAE1C,cAAc,EAAE,eAAc;QAC9B,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,iBAAiB,EAAE,KAAK;KAC3B,CAAC;;IAGF,IAAM,8BAA8B,yBAC7B,sBAAsB,KACzB,aAAa,EAAE,sBAAsB,EACrC,aAAa,EAAE,oBAAoB,GAAG,YAAY,CAAC,uBAAuB,EAAE,GAAG,oBAAoB,EACnG,gBAAgB,EAAE,IAAI,gBAAgB,EAAE,EACxC,gBAAgB,EAAE,CAAC;;QAEnB,iBAAiB,EAAE,CAAC,eAAe,IAAI,eAAe,CAAC,gBAAgB,KAAK,wBAAwB,EACpG,iBAAiB,EAAE,CAAC,eAAe,IAAI,eAAe,CAAC,gBAAgB,KAAK,yBAAyB,EACrG,iBAAiB,EAAE,oBAAoB,IAAI,YAAY,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,CAAC,EAClF,yBAAyB,EAAE,2BAA2B,EACtD,WAAW,EAAE,KAAK,EAClB,qBAAqB,EAAE,KAAK,GAC/B,CAAC;IAEF,IAAM,eAAe,GAAyB;QAC1C,IAAI,wBAAO,oBAAoB,GAAK,aAAa,CAAE;QACnD,KAAK,wBAAO,qBAAqB,GAAK,cAAc,CAAE;QACtD,MAAM,wBAAO,8BAA8B,GAAK,eAAe,CAAE;KACpE,CAAC;IACF,OAAO,eAAe,CAAC;AAC3B;;;;"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { Logger } from "..";
|
|
1
2
|
/**
|
|
2
3
|
* This class implements functions used by the browser library to perform cryptography operations such as
|
|
3
4
|
* hashing and encoding. It also has helper functions to validate the availability of specific APIs.
|
|
4
5
|
*/
|
|
5
6
|
export declare class BrowserCrypto {
|
|
6
7
|
private _keygenAlgorithmOptions;
|
|
7
|
-
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(logger: Logger);
|
|
8
10
|
/**
|
|
9
11
|
* Returns a sha-256 hash of the given dataString as an ArrayBuffer.
|
|
10
12
|
* @param dataString
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BrowserCrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/BrowserCrypto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAa5B;;;GAGG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,uBAAuB,CAAwB;IACvD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAe1B;;;OAGG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAM5D;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQ7C;;;;OAIG;IACG,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ5F;;;;OAIG;IACG,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAIpD;;;;;;OAMG;IACG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IASnG;;;;OAIG;IACG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAMnE;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;YACW,qBAAqB;IAInC;;;;OAIG;YACW,iBAAiB;IAY/B;;;;OAIG;YACW,mBAAmB;IAajC;;;;OAIG;YACW,iBAAiB;IA0B/B;;;;;;OAMG;YACW,iBAAiB;IAa/B;;;;OAIG;YACW,YAAY;IAa1B;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;CAG/C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.21.0 2022-01-04 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __awaiter, __generator } from '../_virtual/_tslib.js';
|
|
4
4
|
import { BrowserStringUtils } from '../utils/BrowserStringUtils.js';
|
|
@@ -25,7 +25,8 @@ var PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);
|
|
|
25
25
|
* hashing and encoding. It also has helper functions to validate the availability of specific APIs.
|
|
26
26
|
*/
|
|
27
27
|
var BrowserCrypto = /** @class */ (function () {
|
|
28
|
-
function BrowserCrypto() {
|
|
28
|
+
function BrowserCrypto(logger) {
|
|
29
|
+
this.logger = logger;
|
|
29
30
|
if (!(this.hasCryptoAPI())) {
|
|
30
31
|
throw BrowserAuthError.createCryptoNotAvailableError("Browser crypto or msCrypto object not available.");
|
|
31
32
|
}
|