@flopflip/launchdarkly-adapter 13.2.3 → 13.3.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.
@@ -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): Promise<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,74 @@ 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
+ async function getCachedFlags(cacheIdentifier) {
90
+ const cacheModule = await importCache(cacheIdentifier);
91
+ const createCache = cacheModule.default;
92
+ const referenceCache = createCache({
93
+ prefix: CACHE_PREFIX
94
+ });
95
+ const reference = referenceCache.get(FLAGS_REFERENCE_KEY);
96
+ if (reference) {
97
+ // Cache without prefix as the reference is already prefixed.
98
+ const flagsCache = createCache({
99
+ prefix: ''
100
+ });
101
+ return flagsCache.get(reference);
102
+ }
103
+ }
104
+
44
105
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
45
106
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
46
107
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
47
108
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
48
109
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
49
110
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
50
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
51
111
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
52
112
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
53
113
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -104,40 +164,6 @@ class LaunchDarklyAdapter {
104
164
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
105
165
  }))
106
166
  });
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
167
  Object.defineProperty(this, _getIsAnonymousContext, {
142
168
  writable: true,
143
169
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -190,7 +216,7 @@ class LaunchDarklyAdapter {
190
216
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
191
217
  if (cacheIdentifier) {
192
218
  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);
219
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
194
220
  cache.set(normalizedFlags);
195
221
  }
196
222
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -241,7 +267,6 @@ class LaunchDarklyAdapter {
241
267
  const updatedFlags = {
242
268
  [normalizedFlagName]: normalizedFlagValue
243
269
  };
244
-
245
270
  // NOTE: Adapter state needs to be updated outside of debounced-fn
246
271
  // so that no flag updates are lost.
247
272
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -324,7 +349,7 @@ class LaunchDarklyAdapter {
324
349
  let cachedFlags;
325
350
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
326
351
  if (adapterArgs.cacheIdentifier) {
327
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
352
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
328
353
  cachedFlags = cache.get();
329
354
  if (cachedFlags) {
330
355
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -356,7 +381,7 @@ class LaunchDarklyAdapter {
356
381
  if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
357
382
  if (adapterArgs.cacheIdentifier) {
358
383
  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);
384
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
360
385
  cache.unset();
361
386
  }
362
387
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -394,7 +419,8 @@ class LaunchDarklyAdapter {
394
419
  const adapter = new LaunchDarklyAdapter();
395
420
  adapterUtilities.exposeGlobally(adapter);
396
421
 
397
- const version = "13.2.3";
422
+ const version = "13.3.0";
398
423
 
399
424
  exports["default"] = adapter;
425
+ exports.getCachedFlags = getCachedFlags;
400
426
  exports.version = version;
@@ -40,14 +40,74 @@ 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
+ async function getCachedFlags(cacheIdentifier) {
90
+ const cacheModule = await importCache(cacheIdentifier);
91
+ const createCache = cacheModule.default;
92
+ const referenceCache = createCache({
93
+ prefix: CACHE_PREFIX
94
+ });
95
+ const reference = referenceCache.get(FLAGS_REFERENCE_KEY);
96
+ if (reference) {
97
+ // Cache without prefix as the reference is already prefixed.
98
+ const flagsCache = createCache({
99
+ prefix: ''
100
+ });
101
+ return flagsCache.get(reference);
102
+ }
103
+ }
104
+
44
105
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
45
106
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
46
107
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
47
108
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
48
109
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
49
110
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
50
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
51
111
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
52
112
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
53
113
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -104,40 +164,6 @@ class LaunchDarklyAdapter {
104
164
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
105
165
  }))
106
166
  });
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
167
  Object.defineProperty(this, _getIsAnonymousContext, {
142
168
  writable: true,
143
169
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -190,7 +216,7 @@ class LaunchDarklyAdapter {
190
216
  const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
191
217
  if (cacheIdentifier) {
192
218
  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);
219
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
194
220
  cache.set(normalizedFlags);
195
221
  }
196
222
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -241,7 +267,6 @@ class LaunchDarklyAdapter {
241
267
  const updatedFlags = {
242
268
  [normalizedFlagName]: normalizedFlagValue
243
269
  };
244
-
245
270
  // NOTE: Adapter state needs to be updated outside of debounced-fn
246
271
  // so that no flag updates are lost.
247
272
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -324,7 +349,7 @@ class LaunchDarklyAdapter {
324
349
  let cachedFlags;
325
350
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
326
351
  if (adapterArgs.cacheIdentifier) {
327
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
352
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
328
353
  cachedFlags = cache.get();
329
354
  if (cachedFlags) {
330
355
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -356,7 +381,7 @@ class LaunchDarklyAdapter {
356
381
  if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
357
382
  if (adapterArgs.cacheIdentifier) {
358
383
  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);
384
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
360
385
  cache.unset();
361
386
  }
362
387
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -394,7 +419,8 @@ class LaunchDarklyAdapter {
394
419
  const adapter = new LaunchDarklyAdapter();
395
420
  adapterUtilities.exposeGlobally(adapter);
396
421
 
397
- const version = "13.2.3";
422
+ const version = "13.3.0";
398
423
 
399
424
  exports["default"] = adapter;
425
+ exports.getCachedFlags = getCachedFlags;
400
426
  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,74 @@ 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
+ async function getCachedFlags(cacheIdentifier) {
61
+ const cacheModule = await importCache(cacheIdentifier);
62
+ const createCache = cacheModule.default;
63
+ const referenceCache = createCache({
64
+ prefix: CACHE_PREFIX
65
+ });
66
+ const reference = referenceCache.get(FLAGS_REFERENCE_KEY);
67
+ if (reference) {
68
+ // Cache without prefix as the reference is already prefixed.
69
+ const flagsCache = createCache({
70
+ prefix: ''
71
+ });
72
+ return flagsCache.get(reference);
73
+ }
74
+ }
75
+
15
76
  var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
16
77
  var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
17
78
  var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
18
79
  var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
19
80
  var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
20
81
  var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
21
- var _getCache = /*#__PURE__*/_classPrivateFieldLooseKey("getCache");
22
82
  var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
23
83
  var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
24
84
  var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
@@ -75,40 +135,6 @@ class LaunchDarklyAdapter {
75
135
  return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
76
136
  }))
77
137
  });
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
138
  Object.defineProperty(this, _getIsAnonymousContext, {
113
139
  writable: true,
114
140
  value: context => !(context !== null && context !== void 0 && context.key)
@@ -161,7 +187,7 @@ class LaunchDarklyAdapter {
161
187
  const normalizedFlags = normalizeFlags(flagsFromSdk);
162
188
  if (cacheIdentifier) {
163
189
  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);
190
+ const cache = await getCache(cacheIdentifier, (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo2 === void 0 ? void 0 : _classPrivateFieldLoo2.key);
165
191
  cache.set(normalizedFlags);
166
192
  }
167
193
  const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
@@ -212,7 +238,6 @@ class LaunchDarklyAdapter {
212
238
  const updatedFlags = {
213
239
  [normalizedFlagName]: normalizedFlagValue
214
240
  };
215
-
216
241
  // NOTE: Adapter state needs to be updated outside of debounced-fn
217
242
  // so that no flag updates are lost.
218
243
  _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
@@ -295,7 +320,7 @@ class LaunchDarklyAdapter {
295
320
  let cachedFlags;
296
321
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
297
322
  if (adapterArgs.cacheIdentifier) {
298
- const cache = await _classPrivateFieldLooseBase(this, _getCache)[_getCache](adapterArgs.cacheIdentifier, context.key);
323
+ const cache = await getCache(adapterArgs.cacheIdentifier, context.key);
299
324
  cachedFlags = cache.get();
300
325
  if (cachedFlags) {
301
326
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
@@ -327,7 +352,7 @@ class LaunchDarklyAdapter {
327
352
  if (!isEqual(_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
328
353
  if (adapterArgs.cacheIdentifier) {
329
354
  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);
355
+ const cache = await getCache(adapterArgs.cacheIdentifier, (_classPrivateFieldLoo3 = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context) === null || _classPrivateFieldLoo3 === void 0 ? void 0 : _classPrivateFieldLoo3.key);
331
356
  cache.unset();
332
357
  }
333
358
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
@@ -365,6 +390,6 @@ class LaunchDarklyAdapter {
365
390
  const adapter = new LaunchDarklyAdapter();
366
391
  exposeGlobally(adapter);
367
392
 
368
- const version = "13.2.3";
393
+ const version = "13.3.0";
369
394
 
370
- export { adapter as default, version };
395
+ 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.0",
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.0",
31
+ "@flopflip/localstorage-cache": "13.3.0",
32
+ "@flopflip/sessionstorage-cache": "13.3.0",
33
+ "@flopflip/types": "13.3.0",
34
34
  "debounce-fn": "4.0.0",
35
35
  "launchdarkly-js-client-sdk": "3.1.4",
36
36
  "lodash": "4.17.21",