Skip to content

Commit bef0393

Browse files
committed
refactor: remove old configuration store
1 parent 3b79e68 commit bef0393

20 files changed

+48
-1116
lines changed

src/client/eppo-client-assignment-details.spec.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,14 @@ import * as fs from 'fs';
22

33
import {
44
IAssignmentTestCase,
5-
MOCK_UFC_RESPONSE_FILE,
65
readMockUfcConfiguration,
7-
readMockUFCResponse,
86
} from '../../test/testHelpers';
9-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
107
import { AllocationEvaluationCode } from '../flag-evaluation-details-builder';
11-
import { Flag, ObfuscatedFlag, Variation, VariationType } from '../interfaces';
8+
import { Variation, VariationType } from '../interfaces';
129
import { OperatorType } from '../rules';
1310
import { AttributeType } from '../types';
1411

1512
import EppoClient, { IAssignmentDetails } from './eppo-client';
16-
import { initConfiguration } from './test-utils';
17-
import { read } from 'fs';
1813

1914
describe('EppoClient get*AssignmentDetails', () => {
2015
const testStart = Date.now();

src/client/eppo-client-experiment-container.spec.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
import { MOCK_UFC_RESPONSE_FILE, readMockUfcConfiguration, readMockUFCResponse } from '../../test/testHelpers';
1+
import { readMockUfcConfiguration } from '../../test/testHelpers';
22
import * as applicationLogger from '../application-logger';
3-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
4-
import { Flag, ObfuscatedFlag } from '../interfaces';
53

64
import EppoClient, { IContainerExperiment } from './eppo-client';
7-
import { initConfiguration } from './test-utils';
85

96
type Container = { name: string };
107

src/client/eppo-client-with-bandits.spec.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ import ApiEndpoints from '../api-endpoints';
1313
import { IAssignmentEvent, IAssignmentLogger } from '../assignment-logger';
1414
import { BanditEvaluation, BanditEvaluator } from '../bandit-evaluator';
1515
import { IBanditEvent, IBanditLogger } from '../bandit-logger';
16-
import {
17-
IPrecomputedConfiguration,
18-
IObfuscatedPrecomputedConfigurationResponse,
19-
} from '../configuration-wire/configuration-wire-types';
2016
import { Evaluator, FlagEvaluation } from '../evaluator';
2117
import {
2218
AllocationEvaluationCode,
@@ -52,16 +48,6 @@ describe('EppoClient Bandits E2E test', () => {
5248
json: () => Promise.resolve(response),
5349
});
5450
}) as jest.Mock;
55-
56-
// Initialize a configuration requestor
57-
const apiEndpoints = new ApiEndpoints({
58-
baseUrl: 'http://127.0.0.1:4000',
59-
queryParams: {
60-
apiKey: 'dummy',
61-
sdkName: 'js-client-sdk-common',
62-
sdkVersion: '1.0.0',
63-
},
64-
});
6551
});
6652

6753
beforeEach(() => {

src/client/eppo-client-with-overrides.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Configuration } from '../configuration';
2-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
3-
import { Flag, FormatEnum, ObfuscatedFlag, VariationType } from '../interfaces';
2+
import { Flag, FormatEnum, VariationType } from '../interfaces';
43
import * as overrideValidatorModule from '../override-validator';
54

65
import EppoClient from './eppo-client';

src/client/eppo-client.precomputed.spec.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,19 @@
1-
import * as td from 'testdouble';
2-
31
import {
42
MOCK_PRECOMPUTED_WIRE_FILE,
53
MOCK_DEOBFUSCATED_PRECOMPUTED_RESPONSE_FILE,
64
readMockConfigurationWireResponse,
75
} from '../../test/testHelpers';
8-
import { logger } from '../application-logger';
96
import { IAssignmentLogger } from '../assignment-logger';
107
import { IBanditLogger } from '../bandit-logger';
118
import { Configuration } from '../configuration';
12-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
13-
import { FormatEnum, VariationType, Variation } from '../interfaces';
14-
import { BanditActions } from '../types';
159

1610
import EppoClient from './eppo-client';
1711

1812
describe('EppoClient Precomputed Mode', () => {
1913
// Read both configurations for test reference
2014
const precomputedConfigurationWire = readMockConfigurationWireResponse(MOCK_PRECOMPUTED_WIRE_FILE);
2115
const initialConfiguration = Configuration.fromString(precomputedConfigurationWire);
22-
23-
// We only use deobfuscated configuration as a reference, not for creating a client
24-
const deobfuscatedPrecomputedWire = readMockConfigurationWireResponse(MOCK_DEOBFUSCATED_PRECOMPUTED_RESPONSE_FILE);
25-
16+
2617
let client: EppoClient;
2718
let mockAssignmentLogger: jest.Mocked<IAssignmentLogger>;
2819
let mockBanditLogger: jest.Mocked<IBanditLogger>;

src/client/eppo-client.spec.ts

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,11 @@ import { times } from 'lodash';
33
import * as td from 'testdouble';
44

55
import {
6-
ASSIGNMENT_TEST_DATA_DIR,
7-
getTestAssignments,
8-
IAssignmentTestCase,
96
MOCK_UFC_RESPONSE_FILE,
10-
OBFUSCATED_MOCK_UFC_RESPONSE_FILE,
11-
readMockUfcConfiguration,
12-
readMockUfcObfuscatedConfiguration,
137
readMockUFCResponse,
14-
SubjectTestCase,
15-
testCasesByFileName,
16-
validateTestAssignments,
178
} from '../../test/testHelpers';
189
import { IAssignmentLogger } from '../assignment-logger';
1910
import { AssignmentCache } from '../cache/abstract-assignment-cache';
20-
import { ConfigurationStore } from '../configuration-store';
21-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
22-
import {
23-
IConfigurationWire,
24-
IObfuscatedPrecomputedConfigurationResponse,
25-
ObfuscatedPrecomputedConfigurationResponse,
26-
} from '../configuration-wire/configuration-wire-types';
2711
import {
2812
MAX_EVENT_QUEUE_SIZE,
2913
DEFAULT_BASE_POLLING_INTERVAL_MS,
@@ -32,12 +16,10 @@ import {
3216
import { decodePrecomputedFlag } from '../decoding';
3317
import { Flag, ObfuscatedFlag, VariationType, FormatEnum, Variation } from '../interfaces';
3418
import { getMD5Hash } from '../obfuscation';
35-
import { AttributeType } from '../types';
3619

3720
import EppoClient, { checkTypeMatch } from './eppo-client';
3821
import { Configuration } from '../configuration';
39-
import { IUniversalFlagConfigResponse } from '../http-client';
40-
import { ISyncStore } from '../configuration-store/configuration-store';
22+
import { KVStore, MemoryStore } from '../kvstore';
4123

4224
// Use a known salt to produce deterministic hashes
4325
const salt = base64.fromUint8Array(new Uint8Array([7, 53, 17, 78]));
@@ -748,12 +730,6 @@ describe('EppoClient E2E test', () => {
748730
});
749731

750732
it('Does not fetch configurations if the configuration store is unexpired', async () => {
751-
class MockStore<T> extends MemoryOnlyConfigurationStore<T> {
752-
async isExpired(): Promise<boolean> {
753-
return false;
754-
}
755-
}
756-
757733
// Test needs network fetching approach
758734
client = new EppoClient({
759735
sdkKey: requestConfiguration.apiKey,
@@ -953,11 +929,11 @@ describe('EppoClient E2E test', () => {
953929
describe('flag overrides', () => {
954930
let client: EppoClient;
955931
let mockLogger: IAssignmentLogger;
956-
let overrideStore: ISyncStore<Variation>;
932+
let overrideStore: KVStore<Variation>;
957933

958934
beforeEach(() => {
959935
mockLogger = td.object<IAssignmentLogger>();
960-
overrideStore = new MemoryOnlyConfigurationStore<Variation>();
936+
overrideStore = new MemoryStore<Variation>();
961937
client = new EppoClient({
962938
sdkKey: 'test',
963939
sdkName: 'test',

src/client/eppo-client.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import { TLRUInMemoryAssignmentCache } from '../cache/tlru-in-memory-assignment-
1717
import { Configuration, PrecomputedConfig } from '../configuration';
1818
import ConfigurationRequestor from '../configuration-requestor';
1919
import { ConfigurationStore } from '../configuration-store';
20-
import { ISyncStore } from '../configuration-store/configuration-store';
21-
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
2220
import { IObfuscatedPrecomputedConfigurationResponse } from '../configuration-wire/configuration-wire-types';
2321
import {
2422
DEFAULT_BASE_POLLING_INTERVAL_MS,
@@ -88,6 +86,7 @@ import {
8886
import { decodePrecomputedBandit, decodePrecomputedFlag } from '../decoding';
8987
import { Subject } from './subject';
9088
import { generateSalt } from '../salt';
89+
import { KVStore, MemoryStore } from '../kvstore';
9190

9291
export interface IAssignmentDetails<T extends Variation['value'] | object> {
9392
variation: T;
@@ -110,7 +109,7 @@ export type EppoClientParameters = {
110109
// Dispatcher for arbitrary, application-level events (not to be confused with Eppo specific assignment
111110
// or bandit events). These events are application-specific and captures by EppoClient#track API.
112111
eventDispatcher?: EventDispatcher;
113-
overrideStore?: ISyncStore<Variation>;
112+
overrideStore?: KVStore<Variation>;
114113

115114
bandits?: {
116115
/**
@@ -315,7 +314,7 @@ export default class EppoClient {
315314
private readonly banditEvaluator = new BanditEvaluator();
316315
private banditLogger?: IBanditLogger;
317316
private banditAssignmentCache?: AssignmentCache;
318-
private overrideStore?: ISyncStore<Variation>;
317+
private overrideStore?: KVStore<Variation>;
319318
private assignmentLogger?: IAssignmentLogger;
320319
private assignmentCache?: AssignmentCache;
321320
// whether to suppress any errors and return default values instead
@@ -638,7 +637,7 @@ export default class EppoClient {
638637
withOverrides(overrides: Record<FlagKey, Variation> | undefined): EppoClient {
639638
if (overrides && Object.keys(overrides).length) {
640639
const copy = shallowClone(this);
641-
copy.overrideStore = new MemoryOnlyConfigurationStore<Variation>();
640+
copy.overrideStore = new MemoryStore<Variation>();
642641
copy.overrideStore.setEntries(overrides);
643642
return copy;
644643
}
@@ -666,7 +665,7 @@ export default class EppoClient {
666665
this.eventDispatcher?.attachContext(key, value);
667666
}
668667

669-
setOverrideStore(store: ISyncStore<Variation>): void {
668+
setOverrideStore(store: KVStore<Variation>): void {
670669
this.overrideStore = store;
671670
}
672671

src/configuration-requestor.spec.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@ import { BroadcastChannel } from './broadcast';
1111
import { ConfigurationFeed } from './configuration-feed';
1212
import ConfigurationRequestor from './configuration-requestor';
1313
import { ConfigurationStore } from './configuration-store';
14-
import { IConfigurationStore } from './configuration-store/configuration-store';
1514
import FetchHttpClient, {
1615
IBanditParametersResponse,
1716
IHttpClient,
1817
IUniversalFlagConfigResponse,
1918
} from './http-client';
20-
import { StoreBackedConfiguration } from './i-configuration';
21-
import { BanditParameters, BanditVariation, Flag, VariationType } from './interfaces';
19+
import { BanditParameters } from './interfaces';
2220

2321
const MOCK_PRECOMPUTED_RESPONSE = {
2422
flags: {

src/configuration-store/index.ts renamed to src/configuration-store.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { logger } from '../application-logger';
2-
import { Configuration } from '../configuration';
3-
import { ConfigurationFeed } from '../configuration-feed';
4-
import { BroadcastChannel } from '../broadcast';
1+
import { logger } from './application-logger';
2+
import { Configuration } from './configuration';
3+
import { ConfigurationFeed } from './configuration-feed';
4+
import { BroadcastChannel } from './broadcast';
55

66
export type ActivationStrategy = {
77
/**

src/configuration-store/configuration-store-utils.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)