@flopflip/http-adapter 13.6.0 → 14.0.1

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.
@@ -7,6 +7,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
7
7
  var _classPrivateFieldLooseBase = require('@babel/runtime/helpers/classPrivateFieldLooseBase');
8
8
  var _classPrivateFieldLooseKey = require('@babel/runtime/helpers/classPrivateFieldLooseKey');
9
9
  var adapterUtilities = require('@flopflip/adapter-utilities');
10
+ var cache = require('@flopflip/cache');
10
11
  var types = require('@flopflip/types');
11
12
  var isEqual = require('lodash/isEqual');
12
13
  var mitt = require('mitt');
@@ -14,29 +15,10 @@ var warning = require('tiny-warning');
14
15
 
15
16
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
16
17
 
17
- function _interopNamespace(e) {
18
- if (e && e.__esModule) return e;
19
- var n = Object.create(null);
20
- if (e) {
21
- Object.keys(e).forEach(function (k) {
22
- if (k !== 'default') {
23
- var d = Object.getOwnPropertyDescriptor(e, k);
24
- Object.defineProperty(n, k, d.get ? d : {
25
- enumerable: true,
26
- get: function () { return e[k]; }
27
- });
28
- }
29
- });
30
- }
31
- n["default"] = e;
32
- return Object.freeze(n);
33
- }
34
-
35
18
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
36
19
  var mitt__default = /*#__PURE__*/_interopDefault(mitt);
37
20
  var warning__default = /*#__PURE__*/_interopDefault(warning);
38
21
 
39
- const STORAGE_SLICE = '@flopflip/http-adapter';
40
22
  const intialAdapterState = {
41
23
  subscriptionStatus: types.AdapterSubscriptionStatus.Subscribed,
42
24
  configurationStatus: types.AdapterConfigurationStatus.Unconfigured,
@@ -51,7 +33,6 @@ var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
51
33
  var _defaultpollingIntervalMs = /*#__PURE__*/_classPrivateFieldLooseKey("defaultpollingIntervalMs");
52
34
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
53
35
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
54
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
55
36
  var _didFlagsChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagsChange");
56
37
  var _fetchFlags = /*#__PURE__*/_classPrivateFieldLooseKey("fetchFlags");
57
38
  var _subscribeToFlagsChanges = /*#__PURE__*/_classPrivateFieldLooseKey("subscribeToFlagsChanges");
@@ -83,39 +64,6 @@ class HttpAdapter {
83
64
  writable: true,
84
65
  value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.has(flagName)
85
66
  });
86
- Object.defineProperty(this, _getCache, {
87
- writable: true,
88
- value: async cacheIdentifier => {
89
- let cacheModule;
90
- switch (cacheIdentifier) {
91
- case types.cacheIdentifiers.local:
92
- {
93
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
94
- break;
95
- }
96
- case types.cacheIdentifiers.session:
97
- {
98
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
99
- break;
100
- }
101
- }
102
- const createCache = cacheModule.default;
103
- const cache = createCache({
104
- prefix: STORAGE_SLICE
105
- });
106
- return {
107
- set(flags) {
108
- return cache.set('flags', flags);
109
- },
110
- get() {
111
- return cache.get('flags');
112
- },
113
- unset() {
114
- return cache.unset('flags');
115
- }
116
- };
117
- }
118
- });
119
67
  Object.defineProperty(this, _didFlagsChange, {
120
68
  writable: true,
121
69
  value: nextFlags => {
@@ -144,10 +92,14 @@ class HttpAdapter {
144
92
  const nextFlags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
145
93
  if (_classPrivateFieldLooseBase(this, _didFlagsChange)[_didFlagsChange](nextFlags)) {
146
94
  if (adapterArgs.cacheIdentifier) {
147
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
148
- cache.set(nextFlags);
95
+ var _classPrivateFieldLoo;
96
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.key);
97
+ cache$1.set(nextFlags);
149
98
  }
150
99
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = nextFlags;
100
+ if (adapterArgs.cacheMode === types.cacheModes.lazy) {
101
+ return;
102
+ }
151
103
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', nextFlags);
152
104
  }
153
105
  }
@@ -215,8 +167,9 @@ class HttpAdapter {
215
167
  return Promise.resolve().then(async () => {
216
168
  let cachedFlags;
217
169
  if (adapterArgs.cacheIdentifier) {
218
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
219
- cachedFlags = cache.get();
170
+ var _classPrivateFieldLoo2;
171
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
172
+ cachedFlags = cache$1.get();
220
173
  if (cachedFlags) {
221
174
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
222
175
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
@@ -226,10 +179,13 @@ class HttpAdapter {
226
179
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
227
180
  this.setConfigurationStatus(types.AdapterConfigurationStatus.Configured);
228
181
  if (adapterArgs.cacheIdentifier) {
229
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
230
- cache.set(flags);
182
+ var _classPrivateFieldLoo3;
183
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
184
+ cache$1.set(flags);
185
+ }
186
+ if (adapterArgs.cacheMode !== types.cacheModes.lazy) {
187
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
231
188
  }
232
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
233
189
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
234
190
  _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
235
191
  return {
@@ -239,18 +195,21 @@ class HttpAdapter {
239
195
  }
240
196
  async reconfigure(adapterArgs, _adapterEventHandlers) {
241
197
  if (!this.getIsConfigurationStatus(types.AdapterConfigurationStatus.Configured)) return Promise.reject(new Error('@flopflip/http-adapter: please configure adapter before reconfiguring.'));
242
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
243
- if (adapterArgs.cacheIdentifier) {
244
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
245
- cache.unset();
246
- }
247
198
  const nextUser = adapterArgs.user;
248
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
249
- const flags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
250
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
251
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
252
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
253
- _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
199
+ if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user, nextUser)) {
200
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
201
+ if (adapterArgs.cacheIdentifier) {
202
+ var _classPrivateFieldLoo4;
203
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo4 === void 0 ? void 0 : _classPrivateFieldLoo4.key);
204
+ cache$1.unset();
205
+ }
206
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
207
+ const flags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
208
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
209
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
210
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
211
+ _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
212
+ }
254
213
  return Promise.resolve({
255
214
  initializationStatus: types.AdapterInitializationStatus.Succeeded
256
215
  });
@@ -264,8 +223,8 @@ class HttpAdapter {
264
223
  return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
265
224
  }
266
225
  getFlag(flagName) {
267
- var _classPrivateFieldLoo;
268
- return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.flags[flagName];
226
+ var _classPrivateFieldLoo5;
227
+ return (_classPrivateFieldLoo5 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo5 === void 0 ? void 0 : _classPrivateFieldLoo5.flags[flagName];
269
228
  }
270
229
  setConfigurationStatus(nextConfigurationStatus) {
271
230
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
@@ -277,7 +236,7 @@ class HttpAdapter {
277
236
  const adapter = new HttpAdapter();
278
237
  adapterUtilities.exposeGlobally(adapter);
279
238
 
280
- const version = "13.6.0";
239
+ const version = "14.0.1";
281
240
 
282
241
  exports["default"] = adapter;
283
242
  exports.version = version;
@@ -7,6 +7,7 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
7
7
  var _classPrivateFieldLooseBase = require('@babel/runtime/helpers/classPrivateFieldLooseBase');
8
8
  var _classPrivateFieldLooseKey = require('@babel/runtime/helpers/classPrivateFieldLooseKey');
9
9
  var adapterUtilities = require('@flopflip/adapter-utilities');
10
+ var cache = require('@flopflip/cache');
10
11
  var types = require('@flopflip/types');
11
12
  var isEqual = require('lodash/isEqual');
12
13
  var mitt = require('mitt');
@@ -14,29 +15,10 @@ var warning = require('tiny-warning');
14
15
 
15
16
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
16
17
 
17
- function _interopNamespace(e) {
18
- if (e && e.__esModule) return e;
19
- var n = Object.create(null);
20
- if (e) {
21
- Object.keys(e).forEach(function (k) {
22
- if (k !== 'default') {
23
- var d = Object.getOwnPropertyDescriptor(e, k);
24
- Object.defineProperty(n, k, d.get ? d : {
25
- enumerable: true,
26
- get: function () { return e[k]; }
27
- });
28
- }
29
- });
30
- }
31
- n["default"] = e;
32
- return Object.freeze(n);
33
- }
34
-
35
18
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
36
19
  var mitt__default = /*#__PURE__*/_interopDefault(mitt);
37
20
  var warning__default = /*#__PURE__*/_interopDefault(warning);
38
21
 
39
- const STORAGE_SLICE = '@flopflip/http-adapter';
40
22
  const intialAdapterState = {
41
23
  subscriptionStatus: types.AdapterSubscriptionStatus.Subscribed,
42
24
  configurationStatus: types.AdapterConfigurationStatus.Unconfigured,
@@ -51,7 +33,6 @@ var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
51
33
  var _defaultpollingIntervalMs = /*#__PURE__*/_classPrivateFieldLooseKey("defaultpollingIntervalMs");
52
34
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
53
35
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
54
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
55
36
  var _didFlagsChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagsChange");
56
37
  var _fetchFlags = /*#__PURE__*/_classPrivateFieldLooseKey("fetchFlags");
57
38
  var _subscribeToFlagsChanges = /*#__PURE__*/_classPrivateFieldLooseKey("subscribeToFlagsChanges");
@@ -83,39 +64,6 @@ class HttpAdapter {
83
64
  writable: true,
84
65
  value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.has(flagName)
85
66
  });
86
- Object.defineProperty(this, _getCache, {
87
- writable: true,
88
- value: async cacheIdentifier => {
89
- let cacheModule;
90
- switch (cacheIdentifier) {
91
- case types.cacheIdentifiers.local:
92
- {
93
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
94
- break;
95
- }
96
- case types.cacheIdentifiers.session:
97
- {
98
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
99
- break;
100
- }
101
- }
102
- const createCache = cacheModule.default;
103
- const cache = createCache({
104
- prefix: STORAGE_SLICE
105
- });
106
- return {
107
- set(flags) {
108
- return cache.set('flags', flags);
109
- },
110
- get() {
111
- return cache.get('flags');
112
- },
113
- unset() {
114
- return cache.unset('flags');
115
- }
116
- };
117
- }
118
- });
119
67
  Object.defineProperty(this, _didFlagsChange, {
120
68
  writable: true,
121
69
  value: nextFlags => {
@@ -144,10 +92,14 @@ class HttpAdapter {
144
92
  const nextFlags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
145
93
  if (_classPrivateFieldLooseBase(this, _didFlagsChange)[_didFlagsChange](nextFlags)) {
146
94
  if (adapterArgs.cacheIdentifier) {
147
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
148
- cache.set(nextFlags);
95
+ var _classPrivateFieldLoo;
96
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.key);
97
+ cache$1.set(nextFlags);
149
98
  }
150
99
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = nextFlags;
100
+ if (adapterArgs.cacheMode === types.cacheModes.lazy) {
101
+ return;
102
+ }
151
103
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', nextFlags);
152
104
  }
153
105
  }
@@ -215,8 +167,9 @@ class HttpAdapter {
215
167
  return Promise.resolve().then(async () => {
216
168
  let cachedFlags;
217
169
  if (adapterArgs.cacheIdentifier) {
218
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
219
- cachedFlags = cache.get();
170
+ var _classPrivateFieldLoo2;
171
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
172
+ cachedFlags = cache$1.get();
220
173
  if (cachedFlags) {
221
174
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
222
175
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
@@ -226,10 +179,13 @@ class HttpAdapter {
226
179
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
227
180
  this.setConfigurationStatus(types.AdapterConfigurationStatus.Configured);
228
181
  if (adapterArgs.cacheIdentifier) {
229
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
230
- cache.set(flags);
182
+ var _classPrivateFieldLoo3;
183
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
184
+ cache$1.set(flags);
185
+ }
186
+ if (adapterArgs.cacheMode !== types.cacheModes.lazy) {
187
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
231
188
  }
232
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
233
189
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
234
190
  _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
235
191
  return {
@@ -239,18 +195,21 @@ class HttpAdapter {
239
195
  }
240
196
  async reconfigure(adapterArgs, _adapterEventHandlers) {
241
197
  if (!this.getIsConfigurationStatus(types.AdapterConfigurationStatus.Configured)) return Promise.reject(new Error('@flopflip/http-adapter: please configure adapter before reconfiguring.'));
242
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
243
- if (adapterArgs.cacheIdentifier) {
244
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
245
- cache.unset();
246
- }
247
198
  const nextUser = adapterArgs.user;
248
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
249
- const flags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
250
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
251
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
252
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
253
- _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
199
+ if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user, nextUser)) {
200
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
201
+ if (adapterArgs.cacheIdentifier) {
202
+ var _classPrivateFieldLoo4;
203
+ const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.http, (_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo4 === void 0 ? void 0 : _classPrivateFieldLoo4.key);
204
+ cache$1.unset();
205
+ }
206
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
207
+ const flags = adapterUtilities.normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
208
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
209
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
210
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
211
+ _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
212
+ }
254
213
  return Promise.resolve({
255
214
  initializationStatus: types.AdapterInitializationStatus.Succeeded
256
215
  });
@@ -264,8 +223,8 @@ class HttpAdapter {
264
223
  return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
265
224
  }
266
225
  getFlag(flagName) {
267
- var _classPrivateFieldLoo;
268
- return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.flags[flagName];
226
+ var _classPrivateFieldLoo5;
227
+ return (_classPrivateFieldLoo5 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo5 === void 0 ? void 0 : _classPrivateFieldLoo5.flags[flagName];
269
228
  }
270
229
  setConfigurationStatus(nextConfigurationStatus) {
271
230
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
@@ -277,7 +236,7 @@ class HttpAdapter {
277
236
  const adapter = new HttpAdapter();
278
237
  adapterUtilities.exposeGlobally(adapter);
279
238
 
280
- const version = "13.6.0";
239
+ const version = "14.0.1";
281
240
 
282
241
  exports["default"] = adapter;
283
242
  exports.version = version;
@@ -3,12 +3,12 @@ import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
3
3
  import _classPrivateFieldLooseBase from '@babel/runtime/helpers/esm/classPrivateFieldLooseBase';
4
4
  import _classPrivateFieldLooseKey from '@babel/runtime/helpers/esm/classPrivateFieldLooseKey';
5
5
  import { exposeGlobally, normalizeFlags, normalizeFlag } from '@flopflip/adapter-utilities';
6
- import { AdapterSubscriptionStatus, AdapterConfigurationStatus, cacheIdentifiers, adapterIdentifiers, AdapterInitializationStatus } from '@flopflip/types';
6
+ import { getCache } from '@flopflip/cache';
7
+ import { AdapterSubscriptionStatus, AdapterConfigurationStatus, adapterIdentifiers, cacheModes, AdapterInitializationStatus } from '@flopflip/types';
7
8
  import isEqual from 'lodash/isEqual';
8
9
  import mitt from 'mitt';
9
10
  import warning from 'tiny-warning';
10
11
 
11
- const STORAGE_SLICE = '@flopflip/http-adapter';
12
12
  const intialAdapterState = {
13
13
  subscriptionStatus: AdapterSubscriptionStatus.Subscribed,
14
14
  configurationStatus: AdapterConfigurationStatus.Unconfigured,
@@ -23,7 +23,6 @@ var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
23
23
  var _defaultpollingIntervalMs = /*#__PURE__*/_classPrivateFieldLooseKey("defaultpollingIntervalMs");
24
24
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
25
25
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
26
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
27
26
  var _didFlagsChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagsChange");
28
27
  var _fetchFlags = /*#__PURE__*/_classPrivateFieldLooseKey("fetchFlags");
29
28
  var _subscribeToFlagsChanges = /*#__PURE__*/_classPrivateFieldLooseKey("subscribeToFlagsChanges");
@@ -55,39 +54,6 @@ class HttpAdapter {
55
54
  writable: true,
56
55
  value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.has(flagName)
57
56
  });
58
- Object.defineProperty(this, _getCache, {
59
- writable: true,
60
- value: async cacheIdentifier => {
61
- let cacheModule;
62
- switch (cacheIdentifier) {
63
- case cacheIdentifiers.local:
64
- {
65
- cacheModule = await import('@flopflip/localstorage-cache');
66
- break;
67
- }
68
- case cacheIdentifiers.session:
69
- {
70
- cacheModule = await import('@flopflip/sessionstorage-cache');
71
- break;
72
- }
73
- }
74
- const createCache = cacheModule.default;
75
- const cache = createCache({
76
- prefix: STORAGE_SLICE
77
- });
78
- return {
79
- set(flags) {
80
- return cache.set('flags', flags);
81
- },
82
- get() {
83
- return cache.get('flags');
84
- },
85
- unset() {
86
- return cache.unset('flags');
87
- }
88
- };
89
- }
90
- });
91
57
  Object.defineProperty(this, _didFlagsChange, {
92
58
  writable: true,
93
59
  value: nextFlags => {
@@ -116,10 +82,14 @@ class HttpAdapter {
116
82
  const nextFlags = normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
117
83
  if (_classPrivateFieldLooseBase(this, _didFlagsChange)[_didFlagsChange](nextFlags)) {
118
84
  if (adapterArgs.cacheIdentifier) {
119
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
85
+ var _classPrivateFieldLoo;
86
+ const cache = await getCache(adapterArgs.cacheIdentifier, adapterIdentifiers.http, (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.key);
120
87
  cache.set(nextFlags);
121
88
  }
122
89
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = nextFlags;
90
+ if (adapterArgs.cacheMode === cacheModes.lazy) {
91
+ return;
92
+ }
123
93
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', nextFlags);
124
94
  }
125
95
  }
@@ -187,7 +157,8 @@ class HttpAdapter {
187
157
  return Promise.resolve().then(async () => {
188
158
  let cachedFlags;
189
159
  if (adapterArgs.cacheIdentifier) {
190
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
160
+ var _classPrivateFieldLoo2;
161
+ const cache = await getCache(adapterArgs.cacheIdentifier, adapterIdentifiers.http, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
191
162
  cachedFlags = cache.get();
192
163
  if (cachedFlags) {
193
164
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -198,10 +169,13 @@ class HttpAdapter {
198
169
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
199
170
  this.setConfigurationStatus(AdapterConfigurationStatus.Configured);
200
171
  if (adapterArgs.cacheIdentifier) {
201
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
172
+ var _classPrivateFieldLoo3;
173
+ const cache = await getCache(adapterArgs.cacheIdentifier, adapterIdentifiers.http, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
202
174
  cache.set(flags);
203
175
  }
204
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
176
+ if (adapterArgs.cacheMode !== cacheModes.lazy) {
177
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
178
+ }
205
179
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
206
180
  _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
207
181
  return {
@@ -211,18 +185,21 @@ class HttpAdapter {
211
185
  }
212
186
  async reconfigure(adapterArgs, _adapterEventHandlers) {
213
187
  if (!this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured)) return Promise.reject(new Error('@flopflip/http-adapter: please configure adapter before reconfiguring.'));
214
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
215
- if (adapterArgs.cacheIdentifier) {
216
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier);
217
- cache.unset();
218
- }
219
188
  const nextUser = adapterArgs.user;
220
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
221
- const flags = normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
222
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
223
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
224
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
225
- _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
189
+ if (!isEqual(_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user, nextUser)) {
190
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = {};
191
+ if (adapterArgs.cacheIdentifier) {
192
+ var _classPrivateFieldLoo4;
193
+ const cache = await getCache(adapterArgs.cacheIdentifier, adapterIdentifiers.http, (_classPrivateFieldLoo4 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user) === null || _classPrivateFieldLoo4 === void 0 ? void 0 : _classPrivateFieldLoo4.key);
194
+ cache.unset();
195
+ }
196
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].user = nextUser;
197
+ const flags = normalizeFlags(await _classPrivateFieldLooseBase(this, _fetchFlags)[_fetchFlags](adapterArgs));
198
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = flags;
199
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', flags);
200
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit(_classPrivateFieldLooseBase(this, _internalConfiguredStatusChange__)[_internalConfiguredStatusChange__]);
201
+ _classPrivateFieldLooseBase(this, _subscribeToFlagsChanges)[_subscribeToFlagsChanges](adapterArgs);
202
+ }
226
203
  return Promise.resolve({
227
204
  initializationStatus: AdapterInitializationStatus.Succeeded
228
205
  });
@@ -236,8 +213,8 @@ class HttpAdapter {
236
213
  return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
237
214
  }
238
215
  getFlag(flagName) {
239
- var _classPrivateFieldLoo;
240
- return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.flags[flagName];
216
+ var _classPrivateFieldLoo5;
217
+ return (_classPrivateFieldLoo5 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState]) === null || _classPrivateFieldLoo5 === void 0 ? void 0 : _classPrivateFieldLoo5.flags[flagName];
241
218
  }
242
219
  setConfigurationStatus(nextConfigurationStatus) {
243
220
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
@@ -249,6 +226,6 @@ class HttpAdapter {
249
226
  const adapter = new HttpAdapter();
250
227
  exposeGlobally(adapter);
251
228
 
252
- const version = "13.6.0";
229
+ const version = "14.0.1";
253
230
 
254
231
  export { adapter as default, version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flopflip/http-adapter",
3
- "version": "13.6.0",
3
+ "version": "14.0.1",
4
4
  "description": "An HTTP adapter for flipflop",
5
5
  "main": "dist/flopflip-http-adapter.cjs.js",
6
6
  "module": "dist/flopflip-http-adapter.esm.js",
@@ -29,16 +29,17 @@
29
29
  "client"
30
30
  ],
31
31
  "dependencies": {
32
- "@babel/runtime": "7.24.4",
33
- "@flopflip/adapter-utilities": "13.6.0",
34
- "@flopflip/localstorage-cache": "13.6.0",
35
- "@flopflip/sessionstorage-cache": "13.6.0",
36
- "@flopflip/types": "13.6.0",
32
+ "@babel/runtime": "7.24.5",
37
33
  "lodash": "4.17.21",
38
34
  "mitt": "3.0.1",
39
- "tiny-warning": "1.0.3"
35
+ "tiny-warning": "1.0.3",
36
+ "@flopflip/adapter-utilities": "14.0.1",
37
+ "@flopflip/cache": "14.0.1",
38
+ "@flopflip/localstorage-cache": "14.0.1",
39
+ "@flopflip/types": "14.0.1",
40
+ "@flopflip/sessionstorage-cache": "14.0.1"
40
41
  },
41
42
  "devDependencies": {
42
- "globalthis": "1.0.3"
43
+ "globalthis": "1.0.4"
43
44
  }
44
45
  }