@flopflip/graphql-adapter 13.6.0 → 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
|
-
|
|
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
|
-
|
|
153
|
-
cache.
|
|
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
|
-
|
|
224
|
-
|
|
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
|
-
|
|
235
|
-
cache.
|
|
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
|
-
|
|
250
|
-
cache.
|
|
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,
|
|
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
|
|
269
|
-
return (
|
|
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 = "
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
cache.
|
|
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
|
-
|
|
224
|
-
|
|
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
|
-
|
|
235
|
-
cache.
|
|
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
|
-
|
|
250
|
-
cache.
|
|
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,
|
|
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
|
|
269
|
-
return (
|
|
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 = "
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
241
|
-
return (
|
|
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 = "
|
|
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": "
|
|
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": "
|
|
34
|
-
"@flopflip/
|
|
35
|
-
"@flopflip/
|
|
36
|
-
"@flopflip/
|
|
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"
|