@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
36 lines (34 loc) • 1.23 kB
text/typescript
import { IStorageSync } from '../../../storages/types';
import { IReadinessManager } from '../../../readiness/types';
import { syncTaskFactory } from '../../syncTask';
import { ISplitsSyncTask } from '../types';
import { splitChangesFetcherFactory } from '../fetchers/splitChangesFetcher';
import { IFetchSplitChanges } from '../../../services/types';
import { ISettings } from '../../../types';
import { splitChangesUpdaterFactory } from '../updaters/splitChangesUpdater';
/**
* Creates a sync task that periodically executes a `splitChangesUpdater` task
*/
export function splitsSyncTaskFactory(
fetchSplitChanges: IFetchSplitChanges,
storage: IStorageSync,
readiness: IReadinessManager,
settings: ISettings,
isClientSide?: boolean
): ISplitsSyncTask {
return syncTaskFactory(
settings.log,
splitChangesUpdaterFactory(
settings.log,
splitChangesFetcherFactory(fetchSplitChanges, settings, storage),
storage,
settings.sync.__splitFiltersValidation,
readiness.splits,
settings.startup.requestTimeoutBeforeReady,
settings.startup.retriesOnFailureBeforeReady,
isClientSide
),
settings.scheduler.featuresRefreshRate,
'splitChangesUpdater',
);
}