@flopflip/graphql-adapter 13.5.2 → 14.0.0

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