Skip to content

Commit ecb9dc5

Browse files
authored
[FSSDK-11512] remove eventManager and segmentManager from odp public api (#1048)
1 parent 7a75f13 commit ecb9dc5

11 files changed

+62
-48
lines changed

lib/entrypoint.universal.test-d.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ import { LogLevel } from './logging/logger';
4949

5050
import { OptimizelyDecideOption } from './shared_types';
5151
import { UniversalConfig } from './index.universal';
52+
import { OpaqueOdpManager } from './odp/odp_manager_factory';
53+
54+
import { UniversalOdpManagerOptions } from './odp/odp_manager_factory.universal';
5255

5356
export type UniversalEntrypoint = {
5457
// client factory
@@ -63,8 +66,7 @@ export type UniversalEntrypoint = {
6366
createForwardingEventProcessor: (eventDispatcher: EventDispatcher) => OpaqueEventProcessor;
6467
createBatchEventProcessor: (options: UniversalBatchEventProcessorOptions) => OpaqueEventProcessor;
6568

66-
// TODO: odp manager related exports
67-
// createOdpManager: (options: OdpManagerOptions) => OpaqueOdpManager;
69+
createOdpManager: (options: UniversalOdpManagerOptions) => OpaqueOdpManager;
6870

6971
// TODO: vuid manager related exports
7072
// createVuidManager: (options: VuidManagerOptions) => OpaqueVuidManager;

lib/export_types.ts

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ export type {
3939
OpaqueOdpManager,
4040
} from './odp/odp_manager_factory';
4141

42+
export type {
43+
UserAgentParser,
44+
} from './odp/ua_parser/user_agent_parser';
45+
4246
// Vuid manager related types
4347
export type {
4448
VuidManagerOptions,

lib/index.universal.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ export { createPollingProjectConfigManager } from './project_config/config_manag
3939

4040
export { createForwardingEventProcessor, createBatchEventProcessor } from './event_processor/event_processor_factory.universal';
4141

42-
// TODO: decide on universal odp manager factory interface
43-
// export { createOdpManager } from './odp/odp_manager_factory.node';
42+
export { createOdpManager } from './odp/odp_manager_factory.universal';
43+
44+
// TODO: decide on vuid manager API for universal
4445
// export { createVuidManager } from './vuid/vuid_manager_factory.node';
4546

4647
export * from './common_exports';
@@ -67,6 +68,15 @@ export type {
6768

6869
export type { UniversalBatchEventProcessorOptions } from './event_processor/event_processor_factory.universal';
6970

71+
// odp manager related types
72+
export type {
73+
UniversalOdpManagerOptions,
74+
} from './odp/odp_manager_factory.universal';
75+
76+
export type {
77+
UserAgentParser,
78+
} from './odp/ua_parser/user_agent_parser';
79+
7080
export type {
7181
OpaqueEventProcessor,
7282
} from './event_processor/event_processor_factory';

lib/odp/odp_manager_factory.browser.spec.ts

-2
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,7 @@ describe('createOdpManager', () => {
117117
segmentsCache: {} as any,
118118
segmentsCacheSize: 11,
119119
segmentsCacheTimeout: 2025,
120-
segmentManager: {} as any,
121120
eventFlushInterval: 2222,
122-
eventManager: {} as any,
123121
userAgentParser: {} as any,
124122
};
125123
const odpManager = createOdpManager(options);

lib/odp/odp_manager_factory.node.spec.ts

-2
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ describe('createOdpManager', () => {
117117
segmentsCache: {} as any,
118118
segmentsCacheSize: 11,
119119
segmentsCacheTimeout: 2025,
120-
segmentManager: {} as any,
121-
eventManager: {} as any,
122120
userAgentParser: {} as any,
123121
};
124122
const odpManager = createOdpManager(options);

lib/odp/odp_manager_factory.node.ts

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import { NodeRequestHandler } from '../utils/http_request_handler/request_handler.node';
1818
import { eventApiRequestGenerator } from './event_manager/odp_event_api_manager';
19-
import { OdpManager } from './odp_manager';
2019
import { getOpaqueOdpManager, OdpManagerOptions, OpaqueOdpManager } from './odp_manager_factory';
2120

2221
export const NODE_DEFAULT_API_TIMEOUT = 10_000;

lib/odp/odp_manager_factory.react_native.spec.ts

-2
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ describe('createOdpManager', () => {
117117
segmentsCache: {} as any,
118118
segmentsCacheSize: 11,
119119
segmentsCacheTimeout: 2025,
120-
segmentManager: {} as any,
121-
eventManager: {} as any,
122120
userAgentParser: {} as any,
123121
};
124122
const odpManager = createOdpManager(options);

lib/odp/odp_manager_factory.spec.ts

+2-32
Original file line numberDiff line numberDiff line change
@@ -90,22 +90,7 @@ describe('getOdpManager', () => {
9090
MockExponentialBackoff.mockClear();
9191
});
9292

93-
it('should use provided segment manager', () => {
94-
const segmentManager = {} as any;
95-
96-
const odpManager = getOdpManager({
97-
segmentManager,
98-
segmentRequestHandler: getMockRequestHandler(),
99-
eventRequestHandler: getMockRequestHandler(),
100-
eventRequestGenerator: vi.fn(),
101-
});
102-
103-
expect(Object.is(odpManager, MockDefaultOdpManager.mock.instances[0])).toBe(true);
104-
const { segmentManager: usedSegmentManager } = MockDefaultOdpManager.mock.calls[0][0];
105-
expect(usedSegmentManager).toBe(segmentManager);
106-
});
107-
108-
describe('when no segment manager is provided', () => {
93+
describe('segment manager', () => {
10994
it('should create a default segment manager with default api manager using the passed eventRequestHandler', () => {
11095
const segmentRequestHandler = getMockRequestHandler();
11196
const odpManager = getOdpManager({
@@ -205,22 +190,7 @@ describe('getOdpManager', () => {
205190
});
206191
});
207192

208-
it('uses provided event manager', () => {
209-
const eventManager = {} as any;
210-
211-
const odpManager = getOdpManager({
212-
eventManager,
213-
segmentRequestHandler: getMockRequestHandler(),
214-
eventRequestHandler: getMockRequestHandler(),
215-
eventRequestGenerator: vi.fn(),
216-
});
217-
218-
expect(odpManager).toBe(MockDefaultOdpManager.mock.instances[0]);
219-
const { eventManager: usedEventManager } = MockDefaultOdpManager.mock.calls[0][0];
220-
expect(usedEventManager).toBe(eventManager);
221-
});
222-
223-
describe('when no event manager is provided', () => {
193+
describe('event manager', () => {
224194
it('should use a default event manager with default api manager using the passed eventRequestHandler and eventRequestGenerator', () => {
225195
const eventRequestHandler = getMockRequestHandler();
226196
const eventRequestGenerator = vi.fn();

lib/odp/odp_manager_factory.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,9 @@ export type OdpManagerOptions = {
4545
segmentsCacheSize?: number;
4646
segmentsCacheTimeout?: number;
4747
segmentsApiTimeout?: number;
48-
segmentManager?: OdpSegmentManager;
4948
eventFlushInterval?: number;
5049
eventBatchSize?: number;
5150
eventApiTimeout?: number;
52-
eventManager?: OdpEventManager;
5351
userAgentParser?: UserAgentParser;
5452
};
5553

@@ -90,8 +88,8 @@ const getDefaultEventManager = (options: OdpManagerFactoryOptions) => {
9088
}
9189

9290
export const getOdpManager = (options: OdpManagerFactoryOptions): OdpManager => {
93-
const segmentManager = options.segmentManager || getDefaultSegmentManager(options);
94-
const eventManager = options.eventManager || getDefaultEventManager(options);
91+
const segmentManager = getDefaultSegmentManager(options);
92+
const eventManager = getDefaultEventManager(options);
9593

9694
return new DefaultOdpManager({
9795
segmentManager,
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* Copyright 2025, Optimizely
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { RequestHandler } from '../utils/http_request_handler/http';
18+
import { eventApiRequestGenerator } from './event_manager/odp_event_api_manager';
19+
import { getOpaqueOdpManager, OdpManagerOptions, OpaqueOdpManager } from './odp_manager_factory';
20+
21+
export const DEFAULT_API_TIMEOUT = 10_000;
22+
export const DEFAULT_BATCH_SIZE = 1;
23+
export const DEFAULT_FLUSH_INTERVAL = 1000;
24+
25+
export type UniversalOdpManagerOptions = OdpManagerOptions & {
26+
requestHandler: RequestHandler;
27+
};
28+
29+
export const createOdpManager = (options: UniversalOdpManagerOptions): OpaqueOdpManager => {
30+
return getOpaqueOdpManager({
31+
...options,
32+
segmentRequestHandler: options.requestHandler,
33+
eventRequestHandler: options.requestHandler,
34+
eventBatchSize: options.eventBatchSize || DEFAULT_BATCH_SIZE,
35+
eventFlushInterval: options.eventFlushInterval || DEFAULT_FLUSH_INTERVAL,
36+
eventRequestGenerator: eventApiRequestGenerator,
37+
});
38+
};

lib/vuid/vuid_manager_factory.browser.ts

-1
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,3 @@ export const createVuidManager = (options: VuidManagerOptions = {}): OpaqueVuidM
2626
enableVuid: options.enableVuid
2727
}));
2828
};
29-

0 commit comments

Comments
 (0)