UNPKG

@splitsoftware/splitio

Version:
70 lines (69 loc) 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SplitFactory = void 0; var splitApi_1 = require("@splitsoftware/splitio-commons/cjs/services/splitApi"); var syncManagerOnline_1 = require("@splitsoftware/splitio-commons/cjs/sync/syncManagerOnline"); var pushManager_1 = require("@splitsoftware/splitio-commons/cjs/sync/streaming/pushManager"); var pollingManagerSS_1 = require("@splitsoftware/splitio-commons/cjs/sync/polling/pollingManagerSS"); var inRedis_1 = require("@splitsoftware/splitio-commons/cjs/storages/inRedis"); var InMemoryStorage_1 = require("@splitsoftware/splitio-commons/cjs/storages/inMemory/InMemoryStorage"); var sdkManager_1 = require("@splitsoftware/splitio-commons/cjs/sdkManager"); var sdkClientMethod_1 = require("@splitsoftware/splitio-commons/cjs/sdkClient/sdkClientMethod"); var impressionObserverSS_1 = require("@splitsoftware/splitio-commons/cjs/trackers/impressionObserver/impressionObserverSS"); var sdkFactory_1 = require("@splitsoftware/splitio-commons/cjs/sdkFactory"); var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants"); var LocalhostFromFile_1 = require("../sync/offline/LocalhostFromFile"); var node_1 = require("../settings/node"); var platform_1 = require("../platform"); var bloomFilter_1 = require("../platform/filter/bloomFilter"); var syncManagerOnlineSSFactory = (0, syncManagerOnline_1.syncManagerOnlineFactory)(pollingManagerSS_1.pollingManagerSSFactory, pushManager_1.pushManagerFactory); function getStorage(settings) { return settings.storage.type === 'REDIS' ? (0, inRedis_1.InRedisStorage)(settings.storage) : InMemoryStorage_1.InMemoryStorageFactory; } /** * * @param {import("@splitsoftware/splitio-commons/types/types").ISettings} settings */ function getModules(settings) { var modules = { settings: settings, platform: platform_1.platform, storageFactory: getStorage(settings), splitApiFactory: splitApi_1.splitApiFactory, syncManagerFactory: syncManagerOnlineSSFactory, sdkManagerFactory: sdkManager_1.sdkManagerFactory, sdkClientMethodFactory: sdkClientMethod_1.sdkClientMethodFactory, SignalListener: platform_1.SignalListener, impressionsObserverFactory: impressionObserverSS_1.impressionObserverSSFactory, filterAdapterFactory: bloomFilter_1.bloomFilterFactory }; switch (settings.mode) { case constants_1.LOCALHOST_MODE: modules.splitApiFactory = undefined; modules.syncManagerFactory = LocalhostFromFile_1.localhostFromFileFactory; modules.SignalListener = undefined; break; case constants_1.CONSUMER_MODE: modules.syncManagerFactory = undefined; break; } return modules; } /** * SplitFactory for server-side. * * @param {SplitIO.INodeSettings | SplitIO.INodeAsyncSettings} config configuration object used to instantiate the SDK * @param {Function=} __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. */ function SplitFactory(config, __updateModules) { var settings = (0, node_1.settingsFactory)(config); var modules = getModules(settings); if (__updateModules) __updateModules(modules); return (0, sdkFactory_1.sdkFactory)(modules); } exports.SplitFactory = SplitFactory;