@flopflip/launchdarkly-adapter 13.2.3 → 13.3.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.
@@ -0,0 +1,10 @@
1
+ import { type TCacheIdentifiers, type TFlags } from '@flopflip/types';
2
+ import { type LDContext } from 'launchdarkly-js-client-sdk';
3
+ declare const CACHE_PREFIX = "@flopflip/launchdarkly-adapter";
4
+ declare function getCache(cacheIdentifier: TCacheIdentifiers, cacheKey: LDContext['key']): Promise<{
5
+ set(flags: TFlags): any;
6
+ get(): any;
7
+ unset(): any;
8
+ }>;
9
+ declare function getCachedFlags(cacheIdentifier: TCacheIdentifiers): any;
10
+ export { CACHE_PREFIX, getCache, getCachedFlags };
@@ -1 +1,2 @@
1
1
  export { default } from "./adapter.js";
2
+ export { getCachedFlags } from "./cache.js";
@@ -1,3 +1,3 @@
1
1
  declare const version = "__@FLOPFLIP/VERSION_OF_RELEASE__";
2
2
  export { version };
3
- export { default } from "./adapter/index.js";
3
+ export { default, getCachedFlags } from "./adapter/index.js";
@@ -40,14 +40,73 @@ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
40
40
  var mitt__default = /*#__PURE__*/_interopDefault(mitt);
41
41
  var warning__default = /*#__PURE__*/_interopDefault(warning);
42
42
 
43
- const STORAGE_SLICE = '@flopflip/launchdarkly-adapter';
43
+ const CACHE_PREFIX = '@flopflip/launchdarkly-adapter';
44
+ const FLAGS_KEY = 'flags';
45
+ const FLAGS_REFERENCE_KEY = 'flags-reference';
46
+ async function importCache(cacheIdentifier) {
47
+ let cacheModule;
48
+ switch (cacheIdentifier) {
49
+ case types.cacheIdentifiers.local:
50
+ {
51
+ cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
52
+ break;
53
+ }
54
+ case types.cacheIdentifiers.session:
55
+ {
56
+ cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
57
+ break;
58
+ }
59
+ }
60
+ return cacheModule;
61
+ }
62
+ async function getCache(cacheIdentifier, cacheKey) {
63
+ const cacheModule = await importCache(cacheIdentifier);
64
+ const createCache = cacheModule.default;
65
+ const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
66
+ const flagsCache = createCache({
67
+ prefix: flagsCachePrefix
68
+ });
69
+ const referenceCache = createCache({
70
+ prefix: CACHE_PREFIX
71
+ });
72
+ return {
73
+ set(flags) {
74
+ const haveFlagsBeenWritten = flagsCache.set(FLAGS_KEY, flags);
75
+ if (haveFlagsBeenWritten) {
76
+ referenceCache.set(FLAGS_REFERENCE_KEY, [flagsCachePrefix, FLAGS_KEY].join('/'));
77
+ }
78
+ return haveFlagsBeenWritten;
79
+ },
80
+ get() {
81
+ return flagsCache.get(FLAGS_KEY);
82
+ },
83
+ unset() {
84
+ referenceCache.unset(FLAGS_REFERENCE_KEY);
85
+ return flagsCache.unset(FLAGS_KEY);
86
+ }
87
+ };
88
+ }
89
+ function getCachedFlags(cacheIdentifier) {
90
+ const cacheModule = cacheIdentifier === types.cacheIdentifiers.local ? localStorage : sessionStorage;
91
+ const referenceToCachedFlags = cacheModule.get(FLAGS_REFERENCE_KEY);
92
+ if (referenceToCachedFlags) {
93
+ try {
94
+ const cacheKey = JSON.parse(referenceToCachedFlags);
95
+ const cachedFlags = cacheModule.get(cacheKey);
96
+ if (cacheKey && cachedFlags) {
97
+ return JSON.parse(cachedFlags);
98
+ }
99
+ return {};
100
+ } catch (error) {}
101
+ }
102
+ }
103
+
44
104
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
45
105
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
46
106
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
47
107
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
48
108
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
49
109
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
50
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
51
110
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
52
111
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
53
112
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -104,40 +163,6 @@ class LaunchDarklyAdapter {
104
163
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
105
164
  }))
106
165
  });
107
- Object.defineProperty(this, _getCache, {
108
- writable: true,
109
- value: async (cacheIdentifier, cacheKey) => {
110
- let cacheModule;
111
- switch (cacheIdentifier) {
112
- case types.cacheIdentifiers.local:
113
- {
114
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
115
- break;
116
- }
117
- case types.cacheIdentifiers.session:
118
- {
119
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
120
- break;
121
- }
122
- }
123
- const createCache = cacheModule.default;
124
- const cachePrefix = [STORAGE_SLICE, cacheKey].filter(Boolean).join('/');
125
- const cache = createCache({
126
- prefix: cachePrefix
127
- });
128
- return {
129
- set(flags) {
130
- return cache.set('flags', flags);
131
- },
132
- get() {
133
- return cache.get('flags');
134
- },
135
- unset() {
136
- return cache.unset('flags');
137
- }
138
- };
139
- }
140
- });
141
166
  Object.defineProperty(this, _getIsAnonymousContext, {
142
167
  writable: true,
143
168
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -190,7 +215,7 @@ class LaunchDarklyAdapter {
190
215
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
191
216
  if (cacheIdentifier) {
192
217
  var _classPrivateFieldLoo2;
193
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
218
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
194
219
  cache.set(normalizedFlags);
195
220
  }
196
221
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -241,7 +266,6 @@ class LaunchDarklyAdapter {
241
266
  const updatedFlags = {
242
267
  [normalizedFlagName]: normalizedFlagValue
243
268
  };
244
-
245
269
  // NOTE: Adapter state needs to be updated outside of debounced-fn
246
270
  // so that no flag updates are lost.
247
271
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -324,7 +348,7 @@ class LaunchDarklyAdapter {
324
348
  let cachedFlags;
325
349
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
326
350
  if (adapterArgs.cacheIdentifier) {
327
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
351
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
328
352
  cachedFlags = cache.get();
329
353
  if (cachedFlags) {
330
354
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -356,7 +380,7 @@ class LaunchDarklyAdapter {
356
380
  if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
357
381
  if (adapterArgs.cacheIdentifier) {
358
382
  var _classPrivateFieldLoo3;
359
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
383
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
360
384
  cache.unset();
361
385
  }
362
386
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -394,7 +418,8 @@ class LaunchDarklyAdapter {
394
418
  const adapter = new LaunchDarklyAdapter();
395
419
  adapterUtilities.exposeGlobally(adapter);
396
420
 
397
- const version = "13.2.3";
421
+ const version = "13.3.1";
398
422
 
399
423
  exports["default"] = adapter;
424
+ exports.getCachedFlags = getCachedFlags;
400
425
  exports.version = version;
@@ -40,14 +40,73 @@ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
40
40
  var mitt__default = /*#__PURE__*/_interopDefault(mitt);
41
41
  var warning__default = /*#__PURE__*/_interopDefault(warning);
42
42
 
43
- const STORAGE_SLICE = '@flopflip/launchdarkly-adapter';
43
+ const CACHE_PREFIX = '@flopflip/launchdarkly-adapter';
44
+ const FLAGS_KEY = 'flags';
45
+ const FLAGS_REFERENCE_KEY = 'flags-reference';
46
+ async function importCache(cacheIdentifier) {
47
+ let cacheModule;
48
+ switch (cacheIdentifier) {
49
+ case types.cacheIdentifiers.local:
50
+ {
51
+ cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
52
+ break;
53
+ }
54
+ case types.cacheIdentifiers.session:
55
+ {
56
+ cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
57
+ break;
58
+ }
59
+ }
60
+ return cacheModule;
61
+ }
62
+ async function getCache(cacheIdentifier, cacheKey) {
63
+ const cacheModule = await importCache(cacheIdentifier);
64
+ const createCache = cacheModule.default;
65
+ const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
66
+ const flagsCache = createCache({
67
+ prefix: flagsCachePrefix
68
+ });
69
+ const referenceCache = createCache({
70
+ prefix: CACHE_PREFIX
71
+ });
72
+ return {
73
+ set(flags) {
74
+ const haveFlagsBeenWritten = flagsCache.set(FLAGS_KEY, flags);
75
+ if (haveFlagsBeenWritten) {
76
+ referenceCache.set(FLAGS_REFERENCE_KEY, [flagsCachePrefix, FLAGS_KEY].join('/'));
77
+ }
78
+ return haveFlagsBeenWritten;
79
+ },
80
+ get() {
81
+ return flagsCache.get(FLAGS_KEY);
82
+ },
83
+ unset() {
84
+ referenceCache.unset(FLAGS_REFERENCE_KEY);
85
+ return flagsCache.unset(FLAGS_KEY);
86
+ }
87
+ };
88
+ }
89
+ function getCachedFlags(cacheIdentifier) {
90
+ const cacheModule = cacheIdentifier === types.cacheIdentifiers.local ? localStorage : sessionStorage;
91
+ const referenceToCachedFlags = cacheModule.get(FLAGS_REFERENCE_KEY);
92
+ if (referenceToCachedFlags) {
93
+ try {
94
+ const cacheKey = JSON.parse(referenceToCachedFlags);
95
+ const cachedFlags = cacheModule.get(cacheKey);
96
+ if (cacheKey && cachedFlags) {
97
+ return JSON.parse(cachedFlags);
98
+ }
99
+ return {};
100
+ } catch (error) {}
101
+ }
102
+ }
103
+
44
104
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
45
105
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
46
106
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
47
107
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
48
108
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
49
109
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
50
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
51
110
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
52
111
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
53
112
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -104,40 +163,6 @@ class LaunchDarklyAdapter {
104
163
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
105
164
  }))
106
165
  });
107
- Object.defineProperty(this, _getCache, {
108
- writable: true,
109
- value: async (cacheIdentifier, cacheKey) => {
110
- let cacheModule;
111
- switch (cacheIdentifier) {
112
- case types.cacheIdentifiers.local:
113
- {
114
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/localstorage-cache')); });
115
- break;
116
- }
117
- case types.cacheIdentifiers.session:
118
- {
119
- cacheModule = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@flopflip/sessionstorage-cache')); });
120
- break;
121
- }
122
- }
123
- const createCache = cacheModule.default;
124
- const cachePrefix = [STORAGE_SLICE, cacheKey].filter(Boolean).join('/');
125
- const cache = createCache({
126
- prefix: cachePrefix
127
- });
128
- return {
129
- set(flags) {
130
- return cache.set('flags', flags);
131
- },
132
- get() {
133
- return cache.get('flags');
134
- },
135
- unset() {
136
- return cache.unset('flags');
137
- }
138
- };
139
- }
140
- });
141
166
  Object.defineProperty(this, _getIsAnonymousContext, {
142
167
  writable: true,
143
168
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -190,7 +215,7 @@ class LaunchDarklyAdapter {
190
215
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
191
216
  if (cacheIdentifier) {
192
217
  var _classPrivateFieldLoo2;
193
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
218
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
194
219
  cache.set(normalizedFlags);
195
220
  }
196
221
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -241,7 +266,6 @@ class LaunchDarklyAdapter {
241
266
  const updatedFlags = {
242
267
  [normalizedFlagName]: normalizedFlagValue
243
268
  };
244
-
245
269
  // NOTE: Adapter state needs to be updated outside of debounced-fn
246
270
  // so that no flag updates are lost.
247
271
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -324,7 +348,7 @@ class LaunchDarklyAdapter {
324
348
  let cachedFlags;
325
349
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
326
350
  if (adapterArgs.cacheIdentifier) {
327
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
351
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
328
352
  cachedFlags = cache.get();
329
353
  if (cachedFlags) {
330
354
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -356,7 +380,7 @@ class LaunchDarklyAdapter {
356
380
  if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
357
381
  if (adapterArgs.cacheIdentifier) {
358
382
  var _classPrivateFieldLoo3;
359
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
383
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
360
384
  cache.unset();
361
385
  }
362
386
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -394,7 +418,8 @@ class LaunchDarklyAdapter {
394
418
  const adapter = new LaunchDarklyAdapter();
395
419
  adapterUtilities.exposeGlobally(adapter);
396
420
 
397
- const version = "13.2.3";
421
+ const version = "13.3.1";
398
422
 
399
423
  exports["default"] = adapter;
424
+ exports.getCachedFlags = getCachedFlags;
400
425
  exports.version = version;
@@ -3,7 +3,7 @@ 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, denormalizeFlagName, normalizeFlags, normalizeFlag } from '@flopflip/adapter-utilities';
6
- import { AdapterSubscriptionStatus, cacheIdentifiers, AdapterConfigurationStatus, AdapterInitializationStatus, adapterIdentifiers } from '@flopflip/types';
6
+ import { cacheIdentifiers, AdapterSubscriptionStatus, AdapterConfigurationStatus, AdapterInitializationStatus, adapterIdentifiers } from '@flopflip/types';
7
7
  import debounce from 'debounce-fn';
8
8
  import { initialize } from 'launchdarkly-js-client-sdk';
9
9
  import isEqual from 'lodash/isEqual';
@@ -11,14 +11,73 @@ import mitt from 'mitt';
11
11
  import warning from 'tiny-warning';
12
12
  import { merge } from 'ts-deepmerge';
13
13
 
14
- const STORAGE_SLICE = '@flopflip/launchdarkly-adapter';
14
+ const CACHE_PREFIX = '@flopflip/launchdarkly-adapter';
15
+ const FLAGS_KEY = 'flags';
16
+ const FLAGS_REFERENCE_KEY = 'flags-reference';
17
+ async function importCache(cacheIdentifier) {
18
+ let cacheModule;
19
+ switch (cacheIdentifier) {
20
+ case cacheIdentifiers.local:
21
+ {
22
+ cacheModule = await import('@flopflip/localstorage-cache');
23
+ break;
24
+ }
25
+ case cacheIdentifiers.session:
26
+ {
27
+ cacheModule = await import('@flopflip/sessionstorage-cache');
28
+ break;
29
+ }
30
+ }
31
+ return cacheModule;
32
+ }
33
+ async function getCache(cacheIdentifier, cacheKey) {
34
+ const cacheModule = await importCache(cacheIdentifier);
35
+ const createCache = cacheModule.default;
36
+ const flagsCachePrefix = [CACHE_PREFIX, cacheKey].filter(Boolean).join('/');
37
+ const flagsCache = createCache({
38
+ prefix: flagsCachePrefix
39
+ });
40
+ const referenceCache = createCache({
41
+ prefix: CACHE_PREFIX
42
+ });
43
+ return {
44
+ set(flags) {
45
+ const haveFlagsBeenWritten = flagsCache.set(FLAGS_KEY, flags);
46
+ if (haveFlagsBeenWritten) {
47
+ referenceCache.set(FLAGS_REFERENCE_KEY, [flagsCachePrefix, FLAGS_KEY].join('/'));
48
+ }
49
+ return haveFlagsBeenWritten;
50
+ },
51
+ get() {
52
+ return flagsCache.get(FLAGS_KEY);
53
+ },
54
+ unset() {
55
+ referenceCache.unset(FLAGS_REFERENCE_KEY);
56
+ return flagsCache.unset(FLAGS_KEY);
57
+ }
58
+ };
59
+ }
60
+ function getCachedFlags(cacheIdentifier) {
61
+ const cacheModule = cacheIdentifier === cacheIdentifiers.local ? localStorage : sessionStorage;
62
+ const referenceToCachedFlags = cacheModule.get(FLAGS_REFERENCE_KEY);
63
+ if (referenceToCachedFlags) {
64
+ try {
65
+ const cacheKey = JSON.parse(referenceToCachedFlags);
66
+ const cachedFlags = cacheModule.get(cacheKey);
67
+ if (cacheKey && cachedFlags) {
68
+ return JSON.parse(cachedFlags);
69
+ }
70
+ return {};
71
+ } catch (error) {}
72
+ }
73
+ }
74
+
15
75
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
16
76
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
17
77
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
18
78
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
19
79
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
20
80
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
21
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
22
81
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
23
82
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
24
83
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -75,40 +134,6 @@ class LaunchDarklyAdapter {
75
134
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
76
135
  }))
77
136
  });
78
- Object.defineProperty(this, _getCache, {
79
- writable: true,
80
- value: async (cacheIdentifier, cacheKey) => {
81
- let cacheModule;
82
- switch (cacheIdentifier) {
83
- case cacheIdentifiers.local:
84
- {
85
- cacheModule = await import('@flopflip/localstorage-cache');
86
- break;
87
- }
88
- case cacheIdentifiers.session:
89
- {
90
- cacheModule = await import('@flopflip/sessionstorage-cache');
91
- break;
92
- }
93
- }
94
- const createCache = cacheModule.default;
95
- const cachePrefix = [STORAGE_SLICE, cacheKey].filter(Boolean).join('/');
96
- const cache = createCache({
97
- prefix: cachePrefix
98
- });
99
- return {
100
- set(flags) {
101
- return cache.set('flags', flags);
102
- },
103
- get() {
104
- return cache.get('flags');
105
- },
106
- unset() {
107
- return cache.unset('flags');
108
- }
109
- };
110
- }
111
- });
112
137
  Object.defineProperty(this, _getIsAnonymousContext, {
113
138
  writable: true,
114
139
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -161,7 +186,7 @@ class LaunchDarklyAdapter {
161
186
  const normalizedFlags = normalizeFlags(flagsFromSdk);
162
187
  if (cacheIdentifier) {
163
188
  var _classPrivateFieldLoo2;
164
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
189
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
165
190
  cache.set(normalizedFlags);
166
191
  }
167
192
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -212,7 +237,6 @@ class LaunchDarklyAdapter {
212
237
  const updatedFlags = {
213
238
  [normalizedFlagName]: normalizedFlagValue
214
239
  };
215
-
216
240
  // NOTE: Adapter state needs to be updated outside of debounced-fn
217
241
  // so that no flag updates are lost.
218
242
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -295,7 +319,7 @@ class LaunchDarklyAdapter {
295
319
  let cachedFlags;
296
320
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
297
321
  if (adapterArgs.cacheIdentifier) {
298
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
322
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
299
323
  cachedFlags = cache.get();
300
324
  if (cachedFlags) {
301
325
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -327,7 +351,7 @@ class LaunchDarklyAdapter {
327
351
  if (!isEqual(_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
328
352
  if (adapterArgs.cacheIdentifier) {
329
353
  var _classPrivateFieldLoo3;
330
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
354
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
331
355
  cache.unset();
332
356
  }
333
357
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -365,6 +389,6 @@ class LaunchDarklyAdapter {
365
389
  const adapter = new LaunchDarklyAdapter();
366
390
  exposeGlobally(adapter);
367
391
 
368
- const version = "13.2.3";
392
+ const version = "13.3.1";
369
393
 
370
- export { adapter as default, version };
394
+ 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.2.3",
3
+ "version": "13.3.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.2.3",
31
- "@flopflip/localstorage-cache": "13.2.3",
32
- "@flopflip/sessionstorage-cache": "13.2.3",
33
- "@flopflip/types": "13.2.3",
30
+ "@flopflip/adapter-utilities": "13.3.1",
31
+ "@flopflip/localstorage-cache": "13.3.1",
32
+ "@flopflip/sessionstorage-cache": "13.3.1",
33
+ "@flopflip/types": "13.3.1",
34
34
  "debounce-fn": "4.0.0",
35
35
  "launchdarkly-js-client-sdk": "3.1.4",
36
36
  "lodash": "4.17.21",