Skip to content

Commit 4bd7073

Browse files
add memory-only bandit configuration store for offline client. (#150)
* add memory-only bandit configuration store for offline client. * salt
1 parent d4b9679 commit 4bd7073

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@eppo/js-client-sdk",
3-
"version": "3.9.4-alpha.4",
3+
"version": "3.9.4-alpha.5",
44
"description": "Eppo SDK for client-side JavaScript applications",
55
"main": "dist/index.js",
66
"files": [

src/configuration-factory.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
MemoryStore,
77
PrecomputedFlag,
88
} from '@eppo/js-client-sdk-common';
9+
import { IObfuscatedPrecomputedBandit } from '@eppo/js-client-sdk-common/dist/interfaces';
910

1011
import ChromeStorageAsyncMap from './cache/chrome-storage-async-map';
1112
import { ChromeStorageEngine } from './chrome-storage-engine';
@@ -20,6 +21,10 @@ export function precomputedFlagsStorageFactory(): IConfigurationStore<Precompute
2021
return new MemoryOnlyConfigurationStore();
2122
}
2223

24+
export function precomputedBanditStoreFactory(): IConfigurationStore<IObfuscatedPrecomputedBandit> {
25+
return new MemoryOnlyConfigurationStore();
26+
}
27+
2328
export function configurationStorageFactory(
2429
{
2530
maxAgeSeconds = 0,

src/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
hasChromeStorage,
3434
hasWindowLocalStorage,
3535
localStorageIfAvailable,
36+
precomputedBanditStoreFactory,
3637
} from './configuration-factory';
3738
import BrowserNetworkStatusListener from './events/browser-network-status-listener';
3839
import LocalStorageBackedNamedEventQueue from './events/local-storage-backed-named-event-queue';
@@ -721,6 +722,14 @@ export function offlinePrecomputedInit(
721722
);
722723
memoryOnlyPrecomputedStore.salt = parsedResponse.salt;
723724

725+
const memoryOnlyPrecomputedBanditStore = precomputedBanditStoreFactory();
726+
memoryOnlyPrecomputedBanditStore
727+
.setEntries(parsedResponse.bandits)
728+
.catch((err) =>
729+
applicationLogger.warn('Error setting precomputed bandits for memory-only store', err),
730+
);
731+
memoryOnlyPrecomputedBanditStore.salt = parsedResponse.salt;
732+
724733
const subject: Subject = {
725734
subjectKey,
726735
subjectAttributes: subjectAttributes ?? {},
@@ -729,6 +738,7 @@ export function offlinePrecomputedInit(
729738
shutdownEppoPrecomputedClient();
730739
EppoPrecomputedJSClient.instance = new EppoPrecomputedJSClient({
731740
precomputedFlagStore: memoryOnlyPrecomputedStore,
741+
precomputedBanditStore: memoryOnlyPrecomputedBanditStore,
732742
subject,
733743
});
734744

0 commit comments

Comments
 (0)