@flopflip/launchdarkly-adapter 13.3.4 → 13.4.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.
@@ -112,6 +112,7 @@ var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnony
112
112
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
113
113
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
114
114
  var _changeClientContext = /*#__PURE__*/_classPrivateFieldLooseKey("changeClientContext");
115
+ var _maybeUpdateFlagsInCache = /*#__PURE__*/_classPrivateFieldLooseKey("maybeUpdateFlagsInCache");
115
116
  var _getInitialFlags = /*#__PURE__*/_classPrivateFieldLooseKey("getInitialFlags");
116
117
  var _didFlagChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagChange");
117
118
  var _setupFlagSubcription = /*#__PURE__*/_classPrivateFieldLooseKey("setupFlagSubcription");
@@ -191,6 +192,17 @@ class LaunchDarklyAdapter {
191
192
  return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) !== null && _classPrivateFieldLoo !== void 0 && _classPrivateFieldLoo.identify ? _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.identify(nextContext) : Promise.reject(new Error('Can not change user context: client not yet initialized.'));
192
193
  }
193
194
  });
195
+ Object.defineProperty(this, _maybeUpdateFlagsInCache, {
196
+ writable: true,
197
+ value: async (flagsToCache, cacheIdentifier) => {
198
+ if (cacheIdentifier) {
199
+ var _classPrivateFieldLoo2;
200
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
201
+ const cachedFlags = cache.get();
202
+ cache.set(_objectSpread(_objectSpread({}, cachedFlags), flagsToCache));
203
+ }
204
+ }
205
+ });
194
206
  Object.defineProperty(this, _getInitialFlags, {
195
207
  writable: true,
196
208
  value: async _ref5 => {
@@ -214,11 +226,7 @@ class LaunchDarklyAdapter {
214
226
  }
215
227
  if (flagsFromSdk) {
216
228
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
217
- if (cacheIdentifier) {
218
- var _classPrivateFieldLoo2;
219
- const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
220
- cache.set(normalizedFlags);
221
- }
229
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache](normalizedFlags, cacheIdentifier);
222
230
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
223
231
  this.updateFlags(flags);
224
232
  }
@@ -251,15 +259,19 @@ class LaunchDarklyAdapter {
251
259
  writable: true,
252
260
  value: _ref8 => {
253
261
  let flagsFromSdk = _ref8.flagsFromSdk,
254
- flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs;
262
+ flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs,
263
+ cacheIdentifier = _ref8.cacheIdentifier;
255
264
  for (const flagName in flagsFromSdk) {
256
265
  // Dispatch whenever a configured flag value changes
257
266
  if (Object.hasOwn(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
258
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), flagValue => {
267
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), async flagValue => {
259
268
  const _normalizeFlag = adapterUtilities.normalizeFlag(flagName, flagValue),
260
269
  _normalizeFlag2 = _slicedToArray(_normalizeFlag, 2),
261
270
  normalizedFlagName = _normalizeFlag2[0],
262
271
  normalizedFlagValue = _normalizeFlag2[1];
272
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache]({
273
+ [normalizedFlagName]: normalizedFlagValue
274
+ }, cacheIdentifier);
263
275
  if (_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
264
276
 
265
277
  // Sometimes the SDK flushes flag changes without a value having changed.
@@ -352,6 +364,9 @@ class LaunchDarklyAdapter {
352
364
  const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
353
365
  cachedFlags = cache.get();
354
366
  if (cachedFlags) {
367
+ _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](cachedFlags, {
368
+ unsubscribeFlags: adapterArgs.unsubscribeFromCachedFlags
369
+ });
355
370
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
356
371
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
357
372
  }
@@ -367,7 +382,8 @@ class LaunchDarklyAdapter {
367
382
  if (subscribeToFlagChanges && flagsFromSdk) {
368
383
  _classPrivateFieldLooseBase(this, _setupFlagSubcription)[_setupFlagSubcription]({
369
384
  flagsFromSdk,
370
- flagsUpdateDelayMs
385
+ flagsUpdateDelayMs,
386
+ cacheIdentifier: adapterArgs.cacheIdentifier
371
387
  });
372
388
  }
373
389
  return {
@@ -419,7 +435,7 @@ class LaunchDarklyAdapter {
419
435
  const adapter = new LaunchDarklyAdapter();
420
436
  adapterUtilities.exposeGlobally(adapter);
421
437
 
422
- const version = "13.3.4";
438
+ const version = "13.4.1";
423
439
 
424
440
  exports["default"] = adapter;
425
441
  exports.getCachedFlags = getCachedFlags;
@@ -112,6 +112,7 @@ var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnony
112
112
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
113
113
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
114
114
  var _changeClientContext = /*#__PURE__*/_classPrivateFieldLooseKey("changeClientContext");
115
+ var _maybeUpdateFlagsInCache = /*#__PURE__*/_classPrivateFieldLooseKey("maybeUpdateFlagsInCache");
115
116
  var _getInitialFlags = /*#__PURE__*/_classPrivateFieldLooseKey("getInitialFlags");
116
117
  var _didFlagChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagChange");
117
118
  var _setupFlagSubcription = /*#__PURE__*/_classPrivateFieldLooseKey("setupFlagSubcription");
@@ -191,6 +192,17 @@ class LaunchDarklyAdapter {
191
192
  return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) !== null && _classPrivateFieldLoo !== void 0 && _classPrivateFieldLoo.identify ? _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.identify(nextContext) : Promise.reject(new Error('Can not change user context: client not yet initialized.'));
192
193
  }
193
194
  });
195
+ Object.defineProperty(this, _maybeUpdateFlagsInCache, {
196
+ writable: true,
197
+ value: async (flagsToCache, cacheIdentifier) => {
198
+ if (cacheIdentifier) {
199
+ var _classPrivateFieldLoo2;
200
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
201
+ const cachedFlags = cache.get();
202
+ cache.set(_objectSpread(_objectSpread({}, cachedFlags), flagsToCache));
203
+ }
204
+ }
205
+ });
194
206
  Object.defineProperty(this, _getInitialFlags, {
195
207
  writable: true,
196
208
  value: async _ref5 => {
@@ -214,11 +226,7 @@ class LaunchDarklyAdapter {
214
226
  }
215
227
  if (flagsFromSdk) {
216
228
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
217
- if (cacheIdentifier) {
218
- var _classPrivateFieldLoo2;
219
- const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
220
- cache.set(normalizedFlags);
221
- }
229
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache](normalizedFlags, cacheIdentifier);
222
230
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
223
231
  this.updateFlags(flags);
224
232
  }
@@ -251,15 +259,19 @@ class LaunchDarklyAdapter {
251
259
  writable: true,
252
260
  value: _ref8 => {
253
261
  let flagsFromSdk = _ref8.flagsFromSdk,
254
- flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs;
262
+ flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs,
263
+ cacheIdentifier = _ref8.cacheIdentifier;
255
264
  for (const flagName in flagsFromSdk) {
256
265
  // Dispatch whenever a configured flag value changes
257
266
  if (Object.hasOwn(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
258
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), flagValue => {
267
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), async flagValue => {
259
268
  const _normalizeFlag = adapterUtilities.normalizeFlag(flagName, flagValue),
260
269
  _normalizeFlag2 = _slicedToArray(_normalizeFlag, 2),
261
270
  normalizedFlagName = _normalizeFlag2[0],
262
271
  normalizedFlagValue = _normalizeFlag2[1];
272
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache]({
273
+ [normalizedFlagName]: normalizedFlagValue
274
+ }, cacheIdentifier);
263
275
  if (_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
264
276
 
265
277
  // Sometimes the SDK flushes flag changes without a value having changed.
@@ -352,6 +364,9 @@ class LaunchDarklyAdapter {
352
364
  const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
353
365
  cachedFlags = cache.get();
354
366
  if (cachedFlags) {
367
+ _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](cachedFlags, {
368
+ unsubscribeFlags: adapterArgs.unsubscribeFromCachedFlags
369
+ });
355
370
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
356
371
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
357
372
  }
@@ -367,7 +382,8 @@ class LaunchDarklyAdapter {
367
382
  if (subscribeToFlagChanges && flagsFromSdk) {
368
383
  _classPrivateFieldLooseBase(this, _setupFlagSubcription)[_setupFlagSubcription]({
369
384
  flagsFromSdk,
370
- flagsUpdateDelayMs
385
+ flagsUpdateDelayMs,
386
+ cacheIdentifier: adapterArgs.cacheIdentifier
371
387
  });
372
388
  }
373
389
  return {
@@ -419,7 +435,7 @@ class LaunchDarklyAdapter {
419
435
  const adapter = new LaunchDarklyAdapter();
420
436
  adapterUtilities.exposeGlobally(adapter);
421
437
 
422
- const version = "13.3.4";
438
+ const version = "13.4.1";
423
439
 
424
440
  exports["default"] = adapter;
425
441
  exports.getCachedFlags = getCachedFlags;
@@ -83,6 +83,7 @@ var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnony
83
83
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
84
84
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
85
85
  var _changeClientContext = /*#__PURE__*/_classPrivateFieldLooseKey("changeClientContext");
86
+ var _maybeUpdateFlagsInCache = /*#__PURE__*/_classPrivateFieldLooseKey("maybeUpdateFlagsInCache");
86
87
  var _getInitialFlags = /*#__PURE__*/_classPrivateFieldLooseKey("getInitialFlags");
87
88
  var _didFlagChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagChange");
88
89
  var _setupFlagSubcription = /*#__PURE__*/_classPrivateFieldLooseKey("setupFlagSubcription");
@@ -162,6 +163,17 @@ class LaunchDarklyAdapter {
162
163
  return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) !== null && _classPrivateFieldLoo !== void 0 && _classPrivateFieldLoo.identify ? _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.identify(nextContext) : Promise.reject(new Error('Can not change user context: client not yet initialized.'));
163
164
  }
164
165
  });
166
+ Object.defineProperty(this, _maybeUpdateFlagsInCache, {
167
+ writable: true,
168
+ value: async (flagsToCache, cacheIdentifier) => {
169
+ if (cacheIdentifier) {
170
+ var _classPrivateFieldLoo2;
171
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
172
+ const cachedFlags = cache.get();
173
+ cache.set(_objectSpread(_objectSpread({}, cachedFlags), flagsToCache));
174
+ }
175
+ }
176
+ });
165
177
  Object.defineProperty(this, _getInitialFlags, {
166
178
  writable: true,
167
179
  value: async _ref5 => {
@@ -185,11 +197,7 @@ class LaunchDarklyAdapter {
185
197
  }
186
198
  if (flagsFromSdk) {
187
199
  const normalizedFlags = normalizeFlags(flagsFromSdk);
188
- if (cacheIdentifier) {
189
- var _classPrivateFieldLoo2;
190
- const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
191
- cache.set(normalizedFlags);
192
- }
200
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache](normalizedFlags, cacheIdentifier);
193
201
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
194
202
  this.updateFlags(flags);
195
203
  }
@@ -222,15 +230,19 @@ class LaunchDarklyAdapter {
222
230
  writable: true,
223
231
  value: _ref8 => {
224
232
  let flagsFromSdk = _ref8.flagsFromSdk,
225
- flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs;
233
+ flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs,
234
+ cacheIdentifier = _ref8.cacheIdentifier;
226
235
  for (const flagName in flagsFromSdk) {
227
236
  // Dispatch whenever a configured flag value changes
228
237
  if (Object.hasOwn(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
229
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), flagValue => {
238
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), async flagValue => {
230
239
  const _normalizeFlag = normalizeFlag(flagName, flagValue),
231
240
  _normalizeFlag2 = _slicedToArray(_normalizeFlag, 2),
232
241
  normalizedFlagName = _normalizeFlag2[0],
233
242
  normalizedFlagValue = _normalizeFlag2[1];
243
+ await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache]({
244
+ [normalizedFlagName]: normalizedFlagValue
245
+ }, cacheIdentifier);
234
246
  if (_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
235
247
 
236
248
  // Sometimes the SDK flushes flag changes without a value having changed.
@@ -323,6 +335,9 @@ class LaunchDarklyAdapter {
323
335
  const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
324
336
  cachedFlags = cache.get();
325
337
  if (cachedFlags) {
338
+ _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](cachedFlags, {
339
+ unsubscribeFlags: adapterArgs.unsubscribeFromCachedFlags
340
+ });
326
341
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
327
342
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
328
343
  }
@@ -338,7 +353,8 @@ class LaunchDarklyAdapter {
338
353
  if (subscribeToFlagChanges && flagsFromSdk) {
339
354
  _classPrivateFieldLooseBase(this, _setupFlagSubcription)[_setupFlagSubcription]({
340
355
  flagsFromSdk,
341
- flagsUpdateDelayMs
356
+ flagsUpdateDelayMs,
357
+ cacheIdentifier: adapterArgs.cacheIdentifier
342
358
  });
343
359
  }
344
360
  return {
@@ -390,6 +406,6 @@ class LaunchDarklyAdapter {
390
406
  const adapter = new LaunchDarklyAdapter();
391
407
  exposeGlobally(adapter);
392
408
 
393
- const version = "13.3.4";
409
+ const version = "13.4.1";
394
410
 
395
411
  export { adapter as default, getCachedFlags, version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flopflip/launchdarkly-adapter",
3
- "version": "13.3.4",
3
+ "version": "13.4.1",
4
4
  "description": "A adapter around the LaunchDarkly client for flipflop",
5
5
  "main": "dist/flopflip-launchdarkly-adapter.cjs.js",
6
6
  "module": "dist/flopflip-launchdarkly-adapter.esm.js",
@@ -27,10 +27,10 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@babel/runtime": "7.24.0",
30
- "@flopflip/adapter-utilities": "13.3.4",
31
- "@flopflip/localstorage-cache": "13.3.4",
32
- "@flopflip/sessionstorage-cache": "13.3.4",
33
- "@flopflip/types": "13.3.4",
30
+ "@flopflip/adapter-utilities": "13.4.1",
31
+ "@flopflip/localstorage-cache": "13.4.1",
32
+ "@flopflip/sessionstorage-cache": "13.4.1",
33
+ "@flopflip/types": "13.4.1",
34
34
  "debounce-fn": "4.0.0",
35
35
  "launchdarkly-js-client-sdk": "3.1.4",
36
36
  "lodash": "4.17.21",