@statsig/client-core 3.0.0-beta.3 → 3.0.0-beta.5
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/package.json +1 -1
- package/src/DataAdapterCore.js +6 -4
- package/src/EventLogger.js +4 -2
- package/src/StatsigMetadata.d.ts +1 -1
- package/src/StatsigMetadata.js +1 -1
- package/src/StorageProvider.d.ts +7 -6
- package/src/StorageProvider.js +23 -20
package/package.json
CHANGED
package/src/DataAdapterCore.js
CHANGED
|
@@ -50,7 +50,9 @@ class DataAdapterCore {
|
|
|
50
50
|
}
|
|
51
51
|
_getDataAsyncImpl(current, user, options) {
|
|
52
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
|
|
53
|
+
if (!StorageProvider_1.Storage.isReady()) {
|
|
54
|
+
yield StorageProvider_1.Storage.isReadyResolver();
|
|
55
|
+
}
|
|
54
56
|
const cache = current !== null && current !== void 0 ? current : this.getDataSync(user);
|
|
55
57
|
const ops = [this._fetchAndPrepFromNetwork(cache, user, options)];
|
|
56
58
|
if (options === null || options === void 0 ? void 0 : options.timeoutMs) {
|
|
@@ -111,7 +113,7 @@ class DataAdapterCore {
|
|
|
111
113
|
}
|
|
112
114
|
_loadFromCache(cacheKey) {
|
|
113
115
|
var _a;
|
|
114
|
-
const cache = (_a = StorageProvider_1.Storage.
|
|
116
|
+
const cache = (_a = StorageProvider_1.Storage.getItem) === null || _a === void 0 ? void 0 : _a.call(StorageProvider_1.Storage, cacheKey);
|
|
115
117
|
if (cache == null) {
|
|
116
118
|
return null;
|
|
117
119
|
}
|
|
@@ -119,7 +121,7 @@ class DataAdapterCore {
|
|
|
119
121
|
return result ? Object.assign(Object.assign({}, result), { source: 'Cache' }) : null;
|
|
120
122
|
}
|
|
121
123
|
_writeToCache(cacheKey, result) {
|
|
122
|
-
StorageProvider_1.Storage.
|
|
124
|
+
StorageProvider_1.Storage.setItem(cacheKey, JSON.stringify(result));
|
|
123
125
|
this._runLocalStorageCacheEviction(cacheKey);
|
|
124
126
|
}
|
|
125
127
|
_runLocalStorageCacheEviction(cacheKey) {
|
|
@@ -129,7 +131,7 @@ class DataAdapterCore {
|
|
|
129
131
|
const evictable = _getEvictableKey(lastModifiedTimeMap, CACHE_LIMIT);
|
|
130
132
|
if (evictable) {
|
|
131
133
|
delete lastModifiedTimeMap[evictable];
|
|
132
|
-
StorageProvider_1.Storage.
|
|
134
|
+
StorageProvider_1.Storage.removeItem(evictable);
|
|
133
135
|
}
|
|
134
136
|
(0, StorageProvider_1._setObjectInStorage)(this._lastModifiedStoreKey, lastModifiedTimeMap);
|
|
135
137
|
}
|
package/src/EventLogger.js
CHANGED
|
@@ -219,12 +219,14 @@ class EventLogger {
|
|
|
219
219
|
_retryFailedLogs() {
|
|
220
220
|
const storageKey = this._getStorageKey();
|
|
221
221
|
(() => __awaiter(this, void 0, void 0, function* () {
|
|
222
|
-
|
|
222
|
+
if (!StorageProvider_1.Storage.isReady()) {
|
|
223
|
+
yield StorageProvider_1.Storage.isReadyResolver();
|
|
224
|
+
}
|
|
223
225
|
const events = (0, StorageProvider_1._getObjectFromStorage)(storageKey);
|
|
224
226
|
if (!events) {
|
|
225
227
|
return;
|
|
226
228
|
}
|
|
227
|
-
StorageProvider_1.Storage.
|
|
229
|
+
StorageProvider_1.Storage.removeItem(storageKey);
|
|
228
230
|
yield this._sendEvents(events);
|
|
229
231
|
}))().catch(() => {
|
|
230
232
|
Log_1.Log.warn('Failed to flush stored logs');
|
package/src/StatsigMetadata.d.ts
CHANGED
package/src/StatsigMetadata.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StatsigMetadataProvider = exports.SDK_VERSION = void 0;
|
|
4
|
-
exports.SDK_VERSION = '3.0.0-beta.
|
|
4
|
+
exports.SDK_VERSION = '3.0.0-beta.5';
|
|
5
5
|
let metadata = {
|
|
6
6
|
sdkVersion: exports.SDK_VERSION,
|
|
7
7
|
sdkType: 'js-mono', // js-mono is overwritten by Precomp and OnDevice clients
|
package/src/StorageProvider.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export type StorageProvider = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
isReady: () => boolean;
|
|
3
|
+
isReadyResolver: () => Promise<void> | null;
|
|
4
|
+
getProviderName: () => string;
|
|
5
|
+
getItem: (key: string) => string | null;
|
|
6
|
+
setItem: (key: string, value: string) => void;
|
|
7
|
+
removeItem: (key: string) => void;
|
|
8
|
+
getAllKeys: () => readonly string[];
|
|
8
9
|
};
|
|
9
10
|
type StorageProviderManagment = {
|
|
10
11
|
_setProvider: (newProvider: StorageProvider) => void;
|
package/src/StorageProvider.js
CHANGED
|
@@ -5,16 +5,17 @@ const Log_1 = require("./Log");
|
|
|
5
5
|
const SafeJs_1 = require("./SafeJs");
|
|
6
6
|
const inMemoryStore = {};
|
|
7
7
|
const _inMemoryProvider = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
isReady: () => true,
|
|
9
|
+
isReadyResolver: () => null,
|
|
10
|
+
getProviderName: () => 'InMemory',
|
|
11
|
+
getItem: (key) => inMemoryStore[key] ? inMemoryStore[key] : null,
|
|
12
|
+
setItem: (key, value) => {
|
|
12
13
|
inMemoryStore[key] = value;
|
|
13
14
|
},
|
|
14
|
-
|
|
15
|
+
removeItem: (key) => {
|
|
15
16
|
delete inMemoryStore[key];
|
|
16
17
|
},
|
|
17
|
-
|
|
18
|
+
getAllKeys: () => Object.keys(inMemoryStore),
|
|
18
19
|
};
|
|
19
20
|
let _localStorageProvider = null;
|
|
20
21
|
try {
|
|
@@ -23,12 +24,13 @@ try {
|
|
|
23
24
|
win.localStorage &&
|
|
24
25
|
typeof win.localStorage.getItem === 'function') {
|
|
25
26
|
_localStorageProvider = {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
isReady: () => true,
|
|
28
|
+
isReadyResolver: () => null,
|
|
29
|
+
getProviderName: () => 'LocalStorage',
|
|
30
|
+
getItem: (key) => win.localStorage.getItem(key),
|
|
31
|
+
setItem: (key, value) => win.localStorage.setItem(key, value),
|
|
32
|
+
removeItem: (key) => win.localStorage.removeItem(key),
|
|
33
|
+
getAllKeys: () => Object.keys(win.localStorage),
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
}
|
|
@@ -50,12 +52,13 @@ function _inMemoryBreaker(get) {
|
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
54
|
exports.Storage = {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
isReady: () => _current.isReady(),
|
|
56
|
+
isReadyResolver: () => _current.isReadyResolver(),
|
|
57
|
+
getProviderName: () => _current.getProviderName(),
|
|
58
|
+
getItem: (key) => _inMemoryBreaker(() => _current.getItem(key)),
|
|
59
|
+
setItem: (key, value) => _current.setItem(key, value),
|
|
60
|
+
removeItem: (key) => _current.removeItem(key),
|
|
61
|
+
getAllKeys: () => _current.getAllKeys(),
|
|
59
62
|
// StorageProviderManagment
|
|
60
63
|
_setProvider: (newProvider) => {
|
|
61
64
|
_main = newProvider;
|
|
@@ -71,11 +74,11 @@ exports.Storage = {
|
|
|
71
74
|
},
|
|
72
75
|
};
|
|
73
76
|
function _getObjectFromStorage(key) {
|
|
74
|
-
const value = exports.Storage.
|
|
77
|
+
const value = exports.Storage.getItem(key);
|
|
75
78
|
return JSON.parse(value !== null && value !== void 0 ? value : 'null');
|
|
76
79
|
}
|
|
77
80
|
exports._getObjectFromStorage = _getObjectFromStorage;
|
|
78
81
|
function _setObjectInStorage(key, obj) {
|
|
79
|
-
exports.Storage.
|
|
82
|
+
exports.Storage.setItem(key, JSON.stringify(obj));
|
|
80
83
|
}
|
|
81
84
|
exports._setObjectInStorage = _setObjectInStorage;
|