@statsig/client-core 3.0.0-beta.2 → 3.0.0-beta.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@statsig/client-core",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.4",
4
4
  "dependencies": {},
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -9,7 +9,6 @@ import { StatsigEvent } from './StatsigEvent';
9
9
  import { AnyStatsigOptions, StatsigRuntimeMutableOptions } from './StatsigOptionsCommon';
10
10
  import { DynamicConfig, Experiment, FeatureGate, Layer, ParameterStore } from './StatsigTypes';
11
11
  import { StatsigUser } from './StatsigUser';
12
- import { StorageProvider } from './StorageProvider';
13
12
  import { Flatten } from './TypingUtils';
14
13
  export interface StatsigClientCommonInterface extends StatsigClientEventEmitterInterface {
15
14
  initializeSync(): void;
@@ -24,7 +23,6 @@ export type CommonContext = {
24
23
  errorBoundary: ErrorBoundary;
25
24
  session: StatsigSession;
26
25
  stableID: string;
27
- storageProvider: StorageProvider;
28
26
  };
29
27
  export type OnDeviceEvaluationsContext = CommonContext & {
30
28
  values: DownloadConfigSpecsResponse | null;
@@ -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
- StorageProvider_1.Storage._isProviderReady() && (yield StorageProvider_1.Storage._isProviderReady());
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._getItem) === null || _a === void 0 ? void 0 : _a.call(StorageProvider_1.Storage, cacheKey);
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._setItem(cacheKey, JSON.stringify(result));
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._removeItem(evictable);
134
+ StorageProvider_1.Storage.removeItem(evictable);
133
135
  }
134
136
  (0, StorageProvider_1._setObjectInStorage)(this._lastModifiedStoreKey, lastModifiedTimeMap);
135
137
  }
@@ -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
- StorageProvider_1.Storage._isProviderReady() && (yield StorageProvider_1.Storage._isProviderReady());
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._removeItem(storageKey);
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');
@@ -8,6 +8,7 @@ import { AnyStatsigClientEvent, StatsigClientEventCallback, StatsigClientEventEm
8
8
  import { DataAdapterResult, EvaluationsDataAdapter, SpecsDataAdapter } from './StatsigDataAdapter';
9
9
  import { StatsigEventInternal } from './StatsigEvent';
10
10
  import { AnyStatsigOptions, StatsigRuntimeMutableOptions } from './StatsigOptionsCommon';
11
+ import { StorageProvider } from './StorageProvider';
11
12
  export type StatsigClientEmitEventFunc = (event: AnyStatsigClientEvent) => void;
12
13
  export type StatsigContext = {
13
14
  sdkKey: string;
@@ -19,6 +20,7 @@ export declare abstract class StatsigClientBase<TAdapter extends EvaluationsData
19
20
  loadingStatus: StatsigLoadingStatus;
20
21
  readonly dataAdapter: TAdapter;
21
22
  readonly overrideAdapter: OverrideAdapter | null;
23
+ readonly storageProvider: StorageProvider;
22
24
  protected readonly _sdkKey: string;
23
25
  protected readonly _options: AnyStatsigOptions;
24
26
  protected readonly _errorBoundary: ErrorBoundary;
@@ -52,6 +52,7 @@ class StatsigClientBase {
52
52
  }
53
53
  this.dataAdapter = adapter;
54
54
  this.dataAdapter.attach(sdkKey, options);
55
+ this.storageProvider = StorageProvider_1.Storage;
55
56
  this._primeReadyRipcord();
56
57
  }
57
58
  /**
@@ -1,4 +1,4 @@
1
- export declare const SDK_VERSION = "3.0.0-beta.2";
1
+ export declare const SDK_VERSION = "3.0.0-beta.4";
2
2
  export type StatsigMetadata = {
3
3
  readonly [key: string]: string | undefined;
4
4
  readonly appVersion?: string;
@@ -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.2';
4
+ exports.SDK_VERSION = '3.0.0-beta.4';
5
5
  let metadata = {
6
6
  sdkVersion: exports.SDK_VERSION,
7
7
  sdkType: 'js-mono', // js-mono is overwritten by Precomp and OnDevice clients
@@ -1,10 +1,11 @@
1
1
  export type StorageProvider = {
2
- _isProviderReady: () => Promise<void> | null;
3
- _getProviderName: () => string;
4
- _getItem: (key: string) => string | null;
5
- _setItem: (key: string, value: string) => void;
6
- _removeItem: (key: string) => void;
7
- _getAllKeys: () => readonly string[];
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;
@@ -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
- _isProviderReady: () => null,
9
- _getProviderName: () => 'InMemory',
10
- _getItem: (key) => inMemoryStore[key] ? inMemoryStore[key] : null,
11
- _setItem: (key, value) => {
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
- _removeItem: (key) => {
15
+ removeItem: (key) => {
15
16
  delete inMemoryStore[key];
16
17
  },
17
- _getAllKeys: () => Object.keys(inMemoryStore),
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
- _isProviderReady: () => null,
27
- _getProviderName: () => 'LocalStorage',
28
- _getItem: (key) => win.localStorage.getItem(key),
29
- _setItem: (key, value) => win.localStorage.setItem(key, value),
30
- _removeItem: (key) => win.localStorage.removeItem(key),
31
- _getAllKeys: () => Object.keys(win.localStorage),
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
- _isProviderReady: () => { var _a; return (_a = _current._isProviderReady()) !== null && _a !== void 0 ? _a : null; },
54
- _getProviderName: () => _current._getProviderName(),
55
- _getItem: (key) => _inMemoryBreaker(() => _current._getItem(key)),
56
- _setItem: (key, value) => _current._setItem(key, value),
57
- _removeItem: (key) => _current._removeItem(key),
58
- _getAllKeys: () => _current._getAllKeys(),
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._getItem(key);
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._setItem(key, JSON.stringify(obj));
82
+ exports.Storage.setItem(key, JSON.stringify(obj));
80
83
  }
81
84
  exports._setObjectInStorage = _setObjectInStorage;