-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsdkClient.ts
More file actions
29 lines (24 loc) · 1.01 KB
/
sdkClient.ts
File metadata and controls
29 lines (24 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { objectAssign } from '../utils/lang/objectAssign';
import SplitIO from '../../types/splitio';
import { clientFactory } from './client';
import { clientInputValidationDecorator } from './clientInputValidation';
import { ISdkFactoryContext } from '../sdkFactory/types';
import { sdkLifecycleFactory } from './sdkLifecycle';
/**
* Creates an Sdk client, i.e., a base client with status, init, flush and destroy interface
*/
export function sdkClientFactory(params: ISdkFactoryContext, isSharedClient?: boolean): SplitIO.IClient | SplitIO.IAsyncClient {
const { sdkReadinessManager, settings } = params;
return objectAssign(
// Proto-linkage of the readiness Event Emitter
Object.create(sdkReadinessManager.sdkStatus) as SplitIO.IStatusInterface,
// Client API (getTreatment* & track methods)
clientInputValidationDecorator(
settings,
clientFactory(params),
sdkReadinessManager.readinessManager,
params.fallbackCalculator
),
sdkLifecycleFactory(params, isSharedClient)
);
}