@firebase/app-check 0.5.15 → 0.5.16-canary.457fc2eeb
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.md +11 -0
- package/dist/esm/index.esm.js +50 -41
- package/dist/esm/index.esm.js.map +1 -1
- package/dist/esm/index.esm2017.js +49 -40
- package/dist/esm/index.esm2017.js.map +1 -1
- package/dist/esm/src/state.d.ts +9 -2
- package/dist/index.cjs.js +49 -40
- package/dist/index.cjs.js.map +1 -1
- package/dist/src/state.d.ts +9 -2
- package/package.json +7 -7
package/dist/index.cjs.js
CHANGED
|
@@ -33,11 +33,19 @@ var DEBUG_STATE = {
|
|
|
33
33
|
initialized: false,
|
|
34
34
|
enabled: false
|
|
35
35
|
};
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Gets a reference to the state object.
|
|
38
|
+
*/
|
|
39
|
+
function getStateReference(app) {
|
|
40
|
+
return APP_CHECK_STATES.get(app) || tslib.__assign({}, DEFAULT_STATE);
|
|
38
41
|
}
|
|
39
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Set once on initialization. The map should hold the same reference to the
|
|
44
|
+
* same object until this entry is deleted.
|
|
45
|
+
*/
|
|
46
|
+
function setInitialState(app, state) {
|
|
40
47
|
APP_CHECK_STATES.set(app, state);
|
|
48
|
+
return APP_CHECK_STATES.get(app);
|
|
41
49
|
}
|
|
42
50
|
function getDebugState() {
|
|
43
51
|
return DEBUG_STATE;
|
|
@@ -275,7 +283,7 @@ function getRecaptcha(isEnterprise) {
|
|
|
275
283
|
return self.grecaptcha;
|
|
276
284
|
}
|
|
277
285
|
function ensureActivated(app) {
|
|
278
|
-
if (!
|
|
286
|
+
if (!getStateReference(app).activated) {
|
|
279
287
|
throw ERROR_FACTORY.create("use-before-activation" /* USE_BEFORE_ACTIVATION */, {
|
|
280
288
|
appName: app.name
|
|
281
289
|
});
|
|
@@ -776,7 +784,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
776
784
|
case 0:
|
|
777
785
|
app = appCheck.app;
|
|
778
786
|
ensureActivated(app);
|
|
779
|
-
state =
|
|
787
|
+
state = getStateReference(app);
|
|
780
788
|
token = state.token;
|
|
781
789
|
error = undefined;
|
|
782
790
|
/**
|
|
@@ -784,7 +792,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
784
792
|
* memory and unset the local variable `token`.
|
|
785
793
|
*/
|
|
786
794
|
if (token && !isValid(token)) {
|
|
787
|
-
|
|
795
|
+
state.token = undefined;
|
|
788
796
|
token = undefined;
|
|
789
797
|
}
|
|
790
798
|
if (!!token) return [3 /*break*/, 4];
|
|
@@ -833,7 +841,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
833
841
|
// Write debug token to indexedDB.
|
|
834
842
|
_e.sent();
|
|
835
843
|
// Write debug token to state.
|
|
836
|
-
|
|
844
|
+
state.token = tokenFromDebugExchange;
|
|
837
845
|
return [2 /*return*/, { token: tokenFromDebugExchange.token }];
|
|
838
846
|
case 9:
|
|
839
847
|
_e.trys.push([9, 11, , 12]);
|
|
@@ -848,7 +856,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
848
856
|
});
|
|
849
857
|
shouldCallListeners = true;
|
|
850
858
|
}
|
|
851
|
-
return [4 /*yield*/,
|
|
859
|
+
return [4 /*yield*/, getStateReference(app).exchangeTokenPromise];
|
|
852
860
|
case 10:
|
|
853
861
|
token = _e.sent();
|
|
854
862
|
return [3 /*break*/, 12];
|
|
@@ -898,7 +906,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
898
906
|
};
|
|
899
907
|
// write the new token to the memory state as well as the persistent storage.
|
|
900
908
|
// Only do it if we got a valid new token
|
|
901
|
-
|
|
909
|
+
state.token = token;
|
|
902
910
|
return [4 /*yield*/, writeTokenToStorage(app, token)];
|
|
903
911
|
case 15:
|
|
904
912
|
_e.sent();
|
|
@@ -914,13 +922,13 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
914
922
|
}
|
|
915
923
|
function addTokenListener(appCheck, type, listener, onError) {
|
|
916
924
|
var app = appCheck.app;
|
|
917
|
-
var state =
|
|
925
|
+
var state = getStateReference(app);
|
|
918
926
|
var tokenObserver = {
|
|
919
927
|
next: listener,
|
|
920
928
|
error: onError,
|
|
921
929
|
type: type
|
|
922
930
|
};
|
|
923
|
-
|
|
931
|
+
state.tokenObservers = tslib.__spreadArray(tslib.__spreadArray([], state.tokenObservers), [tokenObserver]);
|
|
924
932
|
// Invoke the listener async immediately if there is a valid token
|
|
925
933
|
// in memory.
|
|
926
934
|
if (state.token && isValid(state.token)) {
|
|
@@ -947,27 +955,27 @@ function addTokenListener(appCheck, type, listener, onError) {
|
|
|
947
955
|
void state.cachedTokenPromise.then(function () { return initTokenRefresher(appCheck); });
|
|
948
956
|
}
|
|
949
957
|
function removeTokenListener(app, listener) {
|
|
950
|
-
var state =
|
|
958
|
+
var state = getStateReference(app);
|
|
951
959
|
var newObservers = state.tokenObservers.filter(function (tokenObserver) { return tokenObserver.next !== listener; });
|
|
952
960
|
if (newObservers.length === 0 &&
|
|
953
961
|
state.tokenRefresher &&
|
|
954
962
|
state.tokenRefresher.isRunning()) {
|
|
955
963
|
state.tokenRefresher.stop();
|
|
956
964
|
}
|
|
957
|
-
|
|
965
|
+
state.tokenObservers = newObservers;
|
|
958
966
|
}
|
|
959
967
|
/**
|
|
960
968
|
* Logic to create and start refresher as needed.
|
|
961
969
|
*/
|
|
962
970
|
function initTokenRefresher(appCheck) {
|
|
963
971
|
var app = appCheck.app;
|
|
964
|
-
var state =
|
|
972
|
+
var state = getStateReference(app);
|
|
965
973
|
// Create the refresher but don't start it if `isTokenAutoRefreshEnabled`
|
|
966
974
|
// is not true.
|
|
967
975
|
var refresher = state.tokenRefresher;
|
|
968
976
|
if (!refresher) {
|
|
969
977
|
refresher = createTokenRefresher(appCheck);
|
|
970
|
-
|
|
978
|
+
state.tokenRefresher = refresher;
|
|
971
979
|
}
|
|
972
980
|
if (!refresher.isRunning() && state.isTokenAutoRefreshEnabled) {
|
|
973
981
|
refresher.start();
|
|
@@ -984,7 +992,7 @@ function createTokenRefresher(appCheck) {
|
|
|
984
992
|
return tslib.__generator(this, function (_a) {
|
|
985
993
|
switch (_a.label) {
|
|
986
994
|
case 0:
|
|
987
|
-
state =
|
|
995
|
+
state = getStateReference(app);
|
|
988
996
|
if (!!state.token) return [3 /*break*/, 2];
|
|
989
997
|
return [4 /*yield*/, getToken$2(appCheck)];
|
|
990
998
|
case 1:
|
|
@@ -1019,7 +1027,7 @@ function createTokenRefresher(appCheck) {
|
|
|
1019
1027
|
}); }, function () {
|
|
1020
1028
|
return true;
|
|
1021
1029
|
}, function () {
|
|
1022
|
-
var state =
|
|
1030
|
+
var state = getStateReference(app);
|
|
1023
1031
|
if (state.token) {
|
|
1024
1032
|
// issuedAtTime + (50% * total TTL) + 5 minutes
|
|
1025
1033
|
var nextRefreshTimeMillis = state.token.issuedAtTimeMillis +
|
|
@@ -1037,7 +1045,7 @@ function createTokenRefresher(appCheck) {
|
|
|
1037
1045
|
}, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);
|
|
1038
1046
|
}
|
|
1039
1047
|
function notifyTokenListeners(app, token) {
|
|
1040
|
-
var observers =
|
|
1048
|
+
var observers = getStateReference(app).tokenObservers;
|
|
1041
1049
|
for (var _i = 0, observers_1 = observers; _i < observers_1.length; _i++) {
|
|
1042
1050
|
var observer = observers_1[_i];
|
|
1043
1051
|
try {
|
|
@@ -1094,7 +1102,7 @@ var AppCheckService = /** @class */ (function () {
|
|
|
1094
1102
|
this.heartbeatServiceProvider = heartbeatServiceProvider;
|
|
1095
1103
|
}
|
|
1096
1104
|
AppCheckService.prototype._delete = function () {
|
|
1097
|
-
var tokenObservers =
|
|
1105
|
+
var tokenObservers = getStateReference(this.app).tokenObservers;
|
|
1098
1106
|
for (var _i = 0, tokenObservers_1 = tokenObservers; _i < tokenObservers_1.length; _i++) {
|
|
1099
1107
|
var tokenObserver = tokenObservers_1[_i];
|
|
1100
1108
|
removeTokenListener(this.app, tokenObserver.next);
|
|
@@ -1117,7 +1125,7 @@ function internalFactory(appCheck) {
|
|
|
1117
1125
|
}
|
|
1118
1126
|
|
|
1119
1127
|
var name = "@firebase/app-check";
|
|
1120
|
-
var version = "0.5.
|
|
1128
|
+
var version = "0.5.16-canary.457fc2eeb";
|
|
1121
1129
|
|
|
1122
1130
|
/**
|
|
1123
1131
|
* @license
|
|
@@ -1138,9 +1146,9 @@ var version = "0.5.15";
|
|
|
1138
1146
|
var RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';
|
|
1139
1147
|
var RECAPTCHA_ENTERPRISE_URL = 'https://www.google.com/recaptcha/enterprise.js';
|
|
1140
1148
|
function initializeV3(app, siteKey) {
|
|
1141
|
-
var state = getState(app);
|
|
1142
1149
|
var initialized = new util.Deferred();
|
|
1143
|
-
|
|
1150
|
+
var state = getStateReference(app);
|
|
1151
|
+
state.reCAPTCHAState = { initialized: initialized };
|
|
1144
1152
|
var divId = makeDiv(app);
|
|
1145
1153
|
var grecaptcha = getRecaptcha(false);
|
|
1146
1154
|
if (!grecaptcha) {
|
|
@@ -1159,9 +1167,9 @@ function initializeV3(app, siteKey) {
|
|
|
1159
1167
|
return initialized.promise;
|
|
1160
1168
|
}
|
|
1161
1169
|
function initializeEnterprise(app, siteKey) {
|
|
1162
|
-
var state = getState(app);
|
|
1163
1170
|
var initialized = new util.Deferred();
|
|
1164
|
-
|
|
1171
|
+
var state = getStateReference(app);
|
|
1172
|
+
state.reCAPTCHAState = { initialized: initialized };
|
|
1165
1173
|
var divId = makeDiv(app);
|
|
1166
1174
|
var grecaptcha = getRecaptcha(true);
|
|
1167
1175
|
if (!grecaptcha) {
|
|
@@ -1209,13 +1217,13 @@ function getToken$1(app) {
|
|
|
1209
1217
|
switch (_a.label) {
|
|
1210
1218
|
case 0:
|
|
1211
1219
|
ensureActivated(app);
|
|
1212
|
-
reCAPTCHAState =
|
|
1220
|
+
reCAPTCHAState = getStateReference(app).reCAPTCHAState;
|
|
1213
1221
|
return [4 /*yield*/, reCAPTCHAState.initialized.promise];
|
|
1214
1222
|
case 1:
|
|
1215
1223
|
recaptcha = _a.sent();
|
|
1216
1224
|
return [2 /*return*/, new Promise(function (resolve, _reject) {
|
|
1217
1225
|
// Updated after initialization is complete.
|
|
1218
|
-
var reCAPTCHAState =
|
|
1226
|
+
var reCAPTCHAState = getStateReference(app).reCAPTCHAState;
|
|
1219
1227
|
recaptcha.ready(function () {
|
|
1220
1228
|
resolve(
|
|
1221
1229
|
// widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.
|
|
@@ -1238,9 +1246,9 @@ function renderInvisibleWidget(app, siteKey, grecaptcha, container) {
|
|
|
1238
1246
|
sitekey: siteKey,
|
|
1239
1247
|
size: 'invisible'
|
|
1240
1248
|
});
|
|
1241
|
-
var state =
|
|
1242
|
-
|
|
1243
|
-
|
|
1249
|
+
var state = getStateReference(app);
|
|
1250
|
+
state.reCAPTCHAState = tslib.__assign(tslib.__assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()
|
|
1251
|
+
widgetId: widgetId });
|
|
1244
1252
|
}
|
|
1245
1253
|
function loadReCAPTCHAV3Script(onload) {
|
|
1246
1254
|
var script = document.createElement('script');
|
|
@@ -1605,7 +1613,7 @@ function initializeAppCheck(app$1, options) {
|
|
|
1605
1613
|
// If isTokenAutoRefreshEnabled is false, do not send any requests to the
|
|
1606
1614
|
// exchange endpoint without an explicit call from the user either directly
|
|
1607
1615
|
// or through another Firebase library (storage, functions, etc.)
|
|
1608
|
-
if (
|
|
1616
|
+
if (getStateReference(app$1).isTokenAutoRefreshEnabled) {
|
|
1609
1617
|
// Adding a listener will start the refresher and fetch a token if needed.
|
|
1610
1618
|
// This gets a token ready and prevents a delay when an internal library
|
|
1611
1619
|
// requests the token.
|
|
@@ -1626,12 +1634,14 @@ function initializeAppCheck(app$1, options) {
|
|
|
1626
1634
|
* false and can be set in the app config.
|
|
1627
1635
|
*/
|
|
1628
1636
|
function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1637
|
+
// Create an entry in the APP_CHECK_STATES map. Further changes should
|
|
1638
|
+
// directly mutate this object.
|
|
1639
|
+
var state = setInitialState(app, tslib.__assign({}, DEFAULT_STATE));
|
|
1640
|
+
state.activated = true;
|
|
1641
|
+
state.provider = provider; // Read cached token from storage if it exists and store it in memory.
|
|
1642
|
+
state.cachedTokenPromise = readTokenFromStorage(app).then(function (cachedToken) {
|
|
1633
1643
|
if (cachedToken && isValid(cachedToken)) {
|
|
1634
|
-
|
|
1644
|
+
state.token = cachedToken;
|
|
1635
1645
|
// notify all listeners with the cached token
|
|
1636
1646
|
notifyTokenListeners(app, { token: cachedToken.token });
|
|
1637
1647
|
}
|
|
@@ -1640,12 +1650,11 @@ function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
|
1640
1650
|
// Use value of global `automaticDataCollectionEnabled` (which
|
|
1641
1651
|
// itself defaults to false if not specified in config) if
|
|
1642
1652
|
// `isTokenAutoRefreshEnabled` param was not provided by user.
|
|
1643
|
-
|
|
1653
|
+
state.isTokenAutoRefreshEnabled =
|
|
1644
1654
|
isTokenAutoRefreshEnabled === undefined
|
|
1645
1655
|
? app.automaticDataCollectionEnabled
|
|
1646
1656
|
: isTokenAutoRefreshEnabled;
|
|
1647
|
-
|
|
1648
|
-
newState.provider.initialize(app);
|
|
1657
|
+
state.provider.initialize(app);
|
|
1649
1658
|
}
|
|
1650
1659
|
/**
|
|
1651
1660
|
* Set whether App Check will automatically refresh tokens as needed.
|
|
@@ -1658,7 +1667,7 @@ function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
|
1658
1667
|
*/
|
|
1659
1668
|
function setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled) {
|
|
1660
1669
|
var app = appCheckInstance.app;
|
|
1661
|
-
var state =
|
|
1670
|
+
var state = getStateReference(app);
|
|
1662
1671
|
// This will exist if any product libraries have called
|
|
1663
1672
|
// `addTokenListener()`
|
|
1664
1673
|
if (state.tokenRefresher) {
|
|
@@ -1669,7 +1678,7 @@ function setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled)
|
|
|
1669
1678
|
state.tokenRefresher.stop();
|
|
1670
1679
|
}
|
|
1671
1680
|
}
|
|
1672
|
-
|
|
1681
|
+
state.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
1673
1682
|
}
|
|
1674
1683
|
/**
|
|
1675
1684
|
* Get the current App Check token. Attaches to the most recent
|