Skip to content

Commit a992599

Browse files
Merge branch 'master' into junaed/fssdk-11483-browser-content-length-removal
2 parents c555a1c + ca88ea4 commit a992599

21 files changed

+142
-98
lines changed

lib/common_exports.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export { createStaticProjectConfigManager } from './project_config/config_manage
1919
export { LogLevel } from './logging/logger';
2020

2121
export {
22-
DebugLog,
23-
InfoLog,
24-
WarnLog,
25-
ErrorLog,
22+
DEBUG,
23+
INFO,
24+
WARN,
25+
ERROR,
2626
} from './logging/logger_factory';
2727

2828
export { createLogger } from './logging/logger_factory';

lib/entrypoint.test-d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ export type Entrypoint = {
7878

7979
// logger related exports
8080
LogLevel: typeof LogLevel;
81-
DebugLog: OpaqueLevelPreset,
82-
InfoLog: OpaqueLevelPreset,
83-
WarnLog: OpaqueLevelPreset,
84-
ErrorLog: OpaqueLevelPreset,
81+
DEBUG: OpaqueLevelPreset,
82+
INFO: OpaqueLevelPreset,
83+
WARN: OpaqueLevelPreset,
84+
ERROR: OpaqueLevelPreset,
8585
createLogger: (config: LoggerConfig) => OpaqueLogger;
8686

8787
// error related exports

lib/entrypoint.universal.test-d.ts

+8-6
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,18 +66,17 @@ 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;
7173

7274
// logger related exports
7375
LogLevel: typeof LogLevel;
74-
DebugLog: OpaqueLevelPreset,
75-
InfoLog: OpaqueLevelPreset,
76-
WarnLog: OpaqueLevelPreset,
77-
ErrorLog: OpaqueLevelPreset,
76+
DEBUG: OpaqueLevelPreset,
77+
INFO: OpaqueLevelPreset,
78+
WARN: OpaqueLevelPreset,
79+
ERROR: OpaqueLevelPreset,
7880
createLogger: (config: LoggerConfig) => OpaqueLogger;
7981

8082
// error related exports

lib/event_processor/batch_event_processor.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ describe('BatchEventProcessor', async () => {
179179
batchSize: 100,
180180
});
181181

182-
expect(processor.process(createImpressionEvent('id-1'))).rejects.toThrow();
182+
await expect(processor.process(createImpressionEvent('id-1'))).rejects.toThrow();
183183
});
184184

185185
it('should enqueue event without dispatching immediately', async () => {

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/logging/logger_factory.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ vi.mock('./logger', async (importOriginal) => {
2525
});
2626

2727
import { OptimizelyLogger, ConsoleLogHandler, LogLevel } from './logger';
28-
import { createLogger, extractLogger, InfoLog } from './logger_factory';
28+
import { createLogger, extractLogger, INFO } from './logger_factory';
2929
import { errorResolver, infoResolver } from '../message/message_resolver';
3030

3131
describe('create', () => {
@@ -41,7 +41,7 @@ describe('create', () => {
4141
const mockLogHandler = { log: vi.fn() };
4242

4343
const logger = extractLogger(createLogger({
44-
level: InfoLog,
44+
level: INFO,
4545
logHandler: mockLogHandler,
4646
}));
4747

@@ -56,7 +56,7 @@ describe('create', () => {
5656

5757
it('should use a ConsoleLogHandler if no logHandler is provided', () => {
5858
const logger = extractLogger(createLogger({
59-
level: InfoLog,
59+
level: INFO,
6060
}));
6161

6262
expect(logger).toBe(MockedOptimizelyLogger.mock.instances[0]);

lib/logging/logger_factory.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,19 @@ export type OpaqueLevelPreset = {
5050
[levelPresetSymbol]: unknown;
5151
};
5252

53-
export const DebugLog: OpaqueLevelPreset = {
53+
export const DEBUG: OpaqueLevelPreset = {
5454
[levelPresetSymbol]: debugPreset,
5555
};
5656

57-
export const InfoLog: OpaqueLevelPreset = {
57+
export const INFO: OpaqueLevelPreset = {
5858
[levelPresetSymbol]: infoPreset,
5959
};
6060

61-
export const WarnLog: OpaqueLevelPreset = {
61+
export const WARN: OpaqueLevelPreset = {
6262
[levelPresetSymbol]: warnPreset,
6363
};
6464

65-
export const ErrorLog: OpaqueLevelPreset = {
65+
export const ERROR: OpaqueLevelPreset = {
6666
[levelPresetSymbol]: errorPreset,
6767
};
6868

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/odp/ua_parser/ua_parser.browser.ts renamed to lib/odp/ua_parser/ua_parser.ts

-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
1716
import { UAParser } from 'ua-parser-js';
1817
import { UserAgentInfo } from './user_agent_info';
1918
import { UserAgentParser } from './user_agent_parser';
@@ -30,4 +29,3 @@ const userAgentParser: UserAgentParser = {
3029
export function getUserAgentParser(): UserAgentParser {
3130
return userAgentParser;
3231
}
33-

lib/project_config/polling_datafile_manager.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ describe('PollingDatafileManager', () => {
495495
manager.start();
496496
for(let i = 0; i < 2; i++) {
497497
const ret = repeater.execute(0);
498-
expect(ret).rejects.toThrow();
498+
await expect(ret).rejects.toThrow();
499499
}
500500

501501
repeater.execute(0);

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-

package-lock.json

-23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)