UNPKG

@splitsoftware/splitio-browserjs

Version:
28 lines (25 loc) 1.45 kB
import type SplitIO from '@splitsoftware/splitio-commons/types/splitio'; import { settingsFactory } from '../settings/full'; import { getModules } from '../platform/getModules'; import { sdkFactory } from '@splitsoftware/splitio-commons/src/sdkFactory/index'; import { ISdkFactoryParams } from '@splitsoftware/splitio-commons/src/sdkFactory/types'; import { getFetch } from '../platform/getFetchFull'; import { getEventSource } from '../platform/getEventSource'; import { EventEmitter } from '@splitsoftware/splitio-commons/src/utils/MinEvents'; import { now } from '@splitsoftware/splitio-commons/src/utils/timeTracker/now/browser'; const platform = { getFetch, getEventSource, EventEmitter, now }; /** * SplitFactory with pluggable modules for Browser. * It includes a `fetch` polyfill out-of-the-box. * * @param config - configuration object used to instantiate the SDK * @param __updateModules - optional function that lets redefine internal SDK modules. Use with * caution since, unlike `config`, this param is not validated neither considered part of the public API. * @throws Will throw an error if the provided config is invalid. */ export function SplitFactory(config: SplitIO.IClientSideSettings, __updateModules?: (modules: ISdkFactoryParams) => void) { const settings = settingsFactory(config); const modules = getModules(settings, platform); if (__updateModules) __updateModules(modules); return sdkFactory(modules); }