@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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @firebase/app-check
|
|
2
2
|
|
|
3
|
+
## 0.5.16
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`4af28c1a4`](https://github.com/firebase/firebase-js-sdk/commit/4af28c1a42bd25ce2353f694ca1724c6101cbce5) [#6682](https://github.com/firebase/firebase-js-sdk/pull/6682) - Upgrade TypeScript to 4.7.4.
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`4af28c1a4`](https://github.com/firebase/firebase-js-sdk/commit/4af28c1a42bd25ce2353f694ca1724c6101cbce5)]:
|
|
10
|
+
- @firebase/component@0.5.21
|
|
11
|
+
- @firebase/logger@0.3.4
|
|
12
|
+
- @firebase/util@1.7.3
|
|
13
|
+
|
|
3
14
|
## 0.5.15
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/dist/esm/index.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';
|
|
2
2
|
import { Component } from '@firebase/component';
|
|
3
|
-
import { __awaiter, __generator,
|
|
3
|
+
import { __assign, __awaiter, __generator, __spreadArray } from 'tslib';
|
|
4
4
|
import { Deferred, ErrorFactory, isIndexedDBAvailable, uuidv4, getGlobal, base64, issuedAtTime, calculateBackoffMillis, getModularInstance } from '@firebase/util';
|
|
5
5
|
import { Logger } from '@firebase/logger';
|
|
6
6
|
|
|
@@ -29,11 +29,19 @@ var DEBUG_STATE = {
|
|
|
29
29
|
initialized: false,
|
|
30
30
|
enabled: false
|
|
31
31
|
};
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Gets a reference to the state object.
|
|
34
|
+
*/
|
|
35
|
+
function getStateReference(app) {
|
|
36
|
+
return APP_CHECK_STATES.get(app) || __assign({}, DEFAULT_STATE);
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Set once on initialization. The map should hold the same reference to the
|
|
40
|
+
* same object until this entry is deleted.
|
|
41
|
+
*/
|
|
42
|
+
function setInitialState(app, state) {
|
|
36
43
|
APP_CHECK_STATES.set(app, state);
|
|
44
|
+
return APP_CHECK_STATES.get(app);
|
|
37
45
|
}
|
|
38
46
|
function getDebugState() {
|
|
39
47
|
return DEBUG_STATE;
|
|
@@ -271,7 +279,7 @@ function getRecaptcha(isEnterprise) {
|
|
|
271
279
|
return self.grecaptcha;
|
|
272
280
|
}
|
|
273
281
|
function ensureActivated(app) {
|
|
274
|
-
if (!
|
|
282
|
+
if (!getStateReference(app).activated) {
|
|
275
283
|
throw ERROR_FACTORY.create("use-before-activation" /* USE_BEFORE_ACTIVATION */, {
|
|
276
284
|
appName: app.name
|
|
277
285
|
});
|
|
@@ -772,7 +780,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
772
780
|
case 0:
|
|
773
781
|
app = appCheck.app;
|
|
774
782
|
ensureActivated(app);
|
|
775
|
-
state =
|
|
783
|
+
state = getStateReference(app);
|
|
776
784
|
token = state.token;
|
|
777
785
|
error = undefined;
|
|
778
786
|
/**
|
|
@@ -780,7 +788,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
780
788
|
* memory and unset the local variable `token`.
|
|
781
789
|
*/
|
|
782
790
|
if (token && !isValid(token)) {
|
|
783
|
-
|
|
791
|
+
state.token = undefined;
|
|
784
792
|
token = undefined;
|
|
785
793
|
}
|
|
786
794
|
if (!!token) return [3 /*break*/, 4];
|
|
@@ -829,7 +837,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
829
837
|
// Write debug token to indexedDB.
|
|
830
838
|
_e.sent();
|
|
831
839
|
// Write debug token to state.
|
|
832
|
-
|
|
840
|
+
state.token = tokenFromDebugExchange;
|
|
833
841
|
return [2 /*return*/, { token: tokenFromDebugExchange.token }];
|
|
834
842
|
case 9:
|
|
835
843
|
_e.trys.push([9, 11, , 12]);
|
|
@@ -844,7 +852,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
844
852
|
});
|
|
845
853
|
shouldCallListeners = true;
|
|
846
854
|
}
|
|
847
|
-
return [4 /*yield*/,
|
|
855
|
+
return [4 /*yield*/, getStateReference(app).exchangeTokenPromise];
|
|
848
856
|
case 10:
|
|
849
857
|
token = _e.sent();
|
|
850
858
|
return [3 /*break*/, 12];
|
|
@@ -894,7 +902,7 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
894
902
|
};
|
|
895
903
|
// write the new token to the memory state as well as the persistent storage.
|
|
896
904
|
// Only do it if we got a valid new token
|
|
897
|
-
|
|
905
|
+
state.token = token;
|
|
898
906
|
return [4 /*yield*/, writeTokenToStorage(app, token)];
|
|
899
907
|
case 15:
|
|
900
908
|
_e.sent();
|
|
@@ -910,13 +918,13 @@ function getToken$2(appCheck, forceRefresh) {
|
|
|
910
918
|
}
|
|
911
919
|
function addTokenListener(appCheck, type, listener, onError) {
|
|
912
920
|
var app = appCheck.app;
|
|
913
|
-
var state =
|
|
921
|
+
var state = getStateReference(app);
|
|
914
922
|
var tokenObserver = {
|
|
915
923
|
next: listener,
|
|
916
924
|
error: onError,
|
|
917
925
|
type: type
|
|
918
926
|
};
|
|
919
|
-
|
|
927
|
+
state.tokenObservers = __spreadArray(__spreadArray([], state.tokenObservers), [tokenObserver]);
|
|
920
928
|
// Invoke the listener async immediately if there is a valid token
|
|
921
929
|
// in memory.
|
|
922
930
|
if (state.token && isValid(state.token)) {
|
|
@@ -943,27 +951,27 @@ function addTokenListener(appCheck, type, listener, onError) {
|
|
|
943
951
|
void state.cachedTokenPromise.then(function () { return initTokenRefresher(appCheck); });
|
|
944
952
|
}
|
|
945
953
|
function removeTokenListener(app, listener) {
|
|
946
|
-
var state =
|
|
954
|
+
var state = getStateReference(app);
|
|
947
955
|
var newObservers = state.tokenObservers.filter(function (tokenObserver) { return tokenObserver.next !== listener; });
|
|
948
956
|
if (newObservers.length === 0 &&
|
|
949
957
|
state.tokenRefresher &&
|
|
950
958
|
state.tokenRefresher.isRunning()) {
|
|
951
959
|
state.tokenRefresher.stop();
|
|
952
960
|
}
|
|
953
|
-
|
|
961
|
+
state.tokenObservers = newObservers;
|
|
954
962
|
}
|
|
955
963
|
/**
|
|
956
964
|
* Logic to create and start refresher as needed.
|
|
957
965
|
*/
|
|
958
966
|
function initTokenRefresher(appCheck) {
|
|
959
967
|
var app = appCheck.app;
|
|
960
|
-
var state =
|
|
968
|
+
var state = getStateReference(app);
|
|
961
969
|
// Create the refresher but don't start it if `isTokenAutoRefreshEnabled`
|
|
962
970
|
// is not true.
|
|
963
971
|
var refresher = state.tokenRefresher;
|
|
964
972
|
if (!refresher) {
|
|
965
973
|
refresher = createTokenRefresher(appCheck);
|
|
966
|
-
|
|
974
|
+
state.tokenRefresher = refresher;
|
|
967
975
|
}
|
|
968
976
|
if (!refresher.isRunning() && state.isTokenAutoRefreshEnabled) {
|
|
969
977
|
refresher.start();
|
|
@@ -980,7 +988,7 @@ function createTokenRefresher(appCheck) {
|
|
|
980
988
|
return __generator(this, function (_a) {
|
|
981
989
|
switch (_a.label) {
|
|
982
990
|
case 0:
|
|
983
|
-
state =
|
|
991
|
+
state = getStateReference(app);
|
|
984
992
|
if (!!state.token) return [3 /*break*/, 2];
|
|
985
993
|
return [4 /*yield*/, getToken$2(appCheck)];
|
|
986
994
|
case 1:
|
|
@@ -1015,7 +1023,7 @@ function createTokenRefresher(appCheck) {
|
|
|
1015
1023
|
}); }, function () {
|
|
1016
1024
|
return true;
|
|
1017
1025
|
}, function () {
|
|
1018
|
-
var state =
|
|
1026
|
+
var state = getStateReference(app);
|
|
1019
1027
|
if (state.token) {
|
|
1020
1028
|
// issuedAtTime + (50% * total TTL) + 5 minutes
|
|
1021
1029
|
var nextRefreshTimeMillis = state.token.issuedAtTimeMillis +
|
|
@@ -1033,7 +1041,7 @@ function createTokenRefresher(appCheck) {
|
|
|
1033
1041
|
}, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);
|
|
1034
1042
|
}
|
|
1035
1043
|
function notifyTokenListeners(app, token) {
|
|
1036
|
-
var observers =
|
|
1044
|
+
var observers = getStateReference(app).tokenObservers;
|
|
1037
1045
|
for (var _i = 0, observers_1 = observers; _i < observers_1.length; _i++) {
|
|
1038
1046
|
var observer = observers_1[_i];
|
|
1039
1047
|
try {
|
|
@@ -1090,7 +1098,7 @@ var AppCheckService = /** @class */ (function () {
|
|
|
1090
1098
|
this.heartbeatServiceProvider = heartbeatServiceProvider;
|
|
1091
1099
|
}
|
|
1092
1100
|
AppCheckService.prototype._delete = function () {
|
|
1093
|
-
var tokenObservers =
|
|
1101
|
+
var tokenObservers = getStateReference(this.app).tokenObservers;
|
|
1094
1102
|
for (var _i = 0, tokenObservers_1 = tokenObservers; _i < tokenObservers_1.length; _i++) {
|
|
1095
1103
|
var tokenObserver = tokenObservers_1[_i];
|
|
1096
1104
|
removeTokenListener(this.app, tokenObserver.next);
|
|
@@ -1113,7 +1121,7 @@ function internalFactory(appCheck) {
|
|
|
1113
1121
|
}
|
|
1114
1122
|
|
|
1115
1123
|
var name = "@firebase/app-check";
|
|
1116
|
-
var version = "0.5.
|
|
1124
|
+
var version = "0.5.16-canary.457fc2eeb";
|
|
1117
1125
|
|
|
1118
1126
|
/**
|
|
1119
1127
|
* @license
|
|
@@ -1134,9 +1142,9 @@ var version = "0.5.15";
|
|
|
1134
1142
|
var RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';
|
|
1135
1143
|
var RECAPTCHA_ENTERPRISE_URL = 'https://www.google.com/recaptcha/enterprise.js';
|
|
1136
1144
|
function initializeV3(app, siteKey) {
|
|
1137
|
-
var state = getState(app);
|
|
1138
1145
|
var initialized = new Deferred();
|
|
1139
|
-
|
|
1146
|
+
var state = getStateReference(app);
|
|
1147
|
+
state.reCAPTCHAState = { initialized: initialized };
|
|
1140
1148
|
var divId = makeDiv(app);
|
|
1141
1149
|
var grecaptcha = getRecaptcha(false);
|
|
1142
1150
|
if (!grecaptcha) {
|
|
@@ -1155,9 +1163,9 @@ function initializeV3(app, siteKey) {
|
|
|
1155
1163
|
return initialized.promise;
|
|
1156
1164
|
}
|
|
1157
1165
|
function initializeEnterprise(app, siteKey) {
|
|
1158
|
-
var state = getState(app);
|
|
1159
1166
|
var initialized = new Deferred();
|
|
1160
|
-
|
|
1167
|
+
var state = getStateReference(app);
|
|
1168
|
+
state.reCAPTCHAState = { initialized: initialized };
|
|
1161
1169
|
var divId = makeDiv(app);
|
|
1162
1170
|
var grecaptcha = getRecaptcha(true);
|
|
1163
1171
|
if (!grecaptcha) {
|
|
@@ -1205,13 +1213,13 @@ function getToken$1(app) {
|
|
|
1205
1213
|
switch (_a.label) {
|
|
1206
1214
|
case 0:
|
|
1207
1215
|
ensureActivated(app);
|
|
1208
|
-
reCAPTCHAState =
|
|
1216
|
+
reCAPTCHAState = getStateReference(app).reCAPTCHAState;
|
|
1209
1217
|
return [4 /*yield*/, reCAPTCHAState.initialized.promise];
|
|
1210
1218
|
case 1:
|
|
1211
1219
|
recaptcha = _a.sent();
|
|
1212
1220
|
return [2 /*return*/, new Promise(function (resolve, _reject) {
|
|
1213
1221
|
// Updated after initialization is complete.
|
|
1214
|
-
var reCAPTCHAState =
|
|
1222
|
+
var reCAPTCHAState = getStateReference(app).reCAPTCHAState;
|
|
1215
1223
|
recaptcha.ready(function () {
|
|
1216
1224
|
resolve(
|
|
1217
1225
|
// widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.
|
|
@@ -1234,9 +1242,9 @@ function renderInvisibleWidget(app, siteKey, grecaptcha, container) {
|
|
|
1234
1242
|
sitekey: siteKey,
|
|
1235
1243
|
size: 'invisible'
|
|
1236
1244
|
});
|
|
1237
|
-
var state =
|
|
1238
|
-
|
|
1239
|
-
|
|
1245
|
+
var state = getStateReference(app);
|
|
1246
|
+
state.reCAPTCHAState = __assign(__assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()
|
|
1247
|
+
widgetId: widgetId });
|
|
1240
1248
|
}
|
|
1241
1249
|
function loadReCAPTCHAV3Script(onload) {
|
|
1242
1250
|
var script = document.createElement('script');
|
|
@@ -1601,7 +1609,7 @@ function initializeAppCheck(app, options) {
|
|
|
1601
1609
|
// If isTokenAutoRefreshEnabled is false, do not send any requests to the
|
|
1602
1610
|
// exchange endpoint without an explicit call from the user either directly
|
|
1603
1611
|
// or through another Firebase library (storage, functions, etc.)
|
|
1604
|
-
if (
|
|
1612
|
+
if (getStateReference(app).isTokenAutoRefreshEnabled) {
|
|
1605
1613
|
// Adding a listener will start the refresher and fetch a token if needed.
|
|
1606
1614
|
// This gets a token ready and prevents a delay when an internal library
|
|
1607
1615
|
// requests the token.
|
|
@@ -1622,12 +1630,14 @@ function initializeAppCheck(app, options) {
|
|
|
1622
1630
|
* false and can be set in the app config.
|
|
1623
1631
|
*/
|
|
1624
1632
|
function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1633
|
+
// Create an entry in the APP_CHECK_STATES map. Further changes should
|
|
1634
|
+
// directly mutate this object.
|
|
1635
|
+
var state = setInitialState(app, __assign({}, DEFAULT_STATE));
|
|
1636
|
+
state.activated = true;
|
|
1637
|
+
state.provider = provider; // Read cached token from storage if it exists and store it in memory.
|
|
1638
|
+
state.cachedTokenPromise = readTokenFromStorage(app).then(function (cachedToken) {
|
|
1629
1639
|
if (cachedToken && isValid(cachedToken)) {
|
|
1630
|
-
|
|
1640
|
+
state.token = cachedToken;
|
|
1631
1641
|
// notify all listeners with the cached token
|
|
1632
1642
|
notifyTokenListeners(app, { token: cachedToken.token });
|
|
1633
1643
|
}
|
|
@@ -1636,12 +1646,11 @@ function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
|
1636
1646
|
// Use value of global `automaticDataCollectionEnabled` (which
|
|
1637
1647
|
// itself defaults to false if not specified in config) if
|
|
1638
1648
|
// `isTokenAutoRefreshEnabled` param was not provided by user.
|
|
1639
|
-
|
|
1649
|
+
state.isTokenAutoRefreshEnabled =
|
|
1640
1650
|
isTokenAutoRefreshEnabled === undefined
|
|
1641
1651
|
? app.automaticDataCollectionEnabled
|
|
1642
1652
|
: isTokenAutoRefreshEnabled;
|
|
1643
|
-
|
|
1644
|
-
newState.provider.initialize(app);
|
|
1653
|
+
state.provider.initialize(app);
|
|
1645
1654
|
}
|
|
1646
1655
|
/**
|
|
1647
1656
|
* Set whether App Check will automatically refresh tokens as needed.
|
|
@@ -1654,7 +1663,7 @@ function _activate(app, provider, isTokenAutoRefreshEnabled) {
|
|
|
1654
1663
|
*/
|
|
1655
1664
|
function setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled) {
|
|
1656
1665
|
var app = appCheckInstance.app;
|
|
1657
|
-
var state =
|
|
1666
|
+
var state = getStateReference(app);
|
|
1658
1667
|
// This will exist if any product libraries have called
|
|
1659
1668
|
// `addTokenListener()`
|
|
1660
1669
|
if (state.tokenRefresher) {
|
|
@@ -1665,7 +1674,7 @@ function setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled)
|
|
|
1665
1674
|
state.tokenRefresher.stop();
|
|
1666
1675
|
}
|
|
1667
1676
|
}
|
|
1668
|
-
|
|
1677
|
+
state.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
1669
1678
|
}
|
|
1670
1679
|
/**
|
|
1671
1680
|
* Get the current App Check token. Attaches to the most recent
|