UNPKG

@splitsoftware/splitio

Version:
74 lines (73 loc) 3.9 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 pollingManagerCS_1 = require("@splitsoftware/splitio-commons/cjs/sync/polling/pollingManagerCS"); var inLocalStorage_1 = require("@splitsoftware/splitio-commons/cjs/storages/inLocalStorage"); var InMemoryStorageCS_1 = require("@splitsoftware/splitio-commons/cjs/storages/inMemory/InMemoryStorageCS"); var sdkManager_1 = require("@splitsoftware/splitio-commons/cjs/sdkManager"); var sdkClientMethodCS_1 = require("@splitsoftware/splitio-commons/cjs/sdkClient/sdkClientMethodCS"); var impressionObserverCS_1 = require("@splitsoftware/splitio-commons/cjs/trackers/impressionObserver/impressionObserverCS"); var storageCS_1 = require("@splitsoftware/splitio-commons/cjs/utils/settingsValidation/storage/storageCS"); var sdkFactory_1 = require("@splitsoftware/splitio-commons/cjs/sdkFactory"); var constants_1 = require("@splitsoftware/splitio-commons/cjs/utils/constants"); var sdkUserConsent_1 = require("@splitsoftware/splitio-commons/cjs/consent/sdkUserConsent"); var LocalhostFromObject_1 = require("@splitsoftware/splitio-commons/cjs/sync/offline/LocalhostFromObject"); var browser_1 = require("../settings/browser"); var platform_1 = require("../platform"); var syncManagerOnlineCSFactory = (0, syncManagerOnline_1.syncManagerOnlineFactory)(pollingManagerCS_1.pollingManagerCSFactory, pushManager_1.pushManagerFactory); function getStorage(settings) { return settings.storage.type === constants_1.STORAGE_LOCALSTORAGE ? (0, inLocalStorage_1.InLocalStorage)(settings.storage) : settings.storage.__originalType === constants_1.STORAGE_LOCALSTORAGE ? storageCS_1.__InLocalStorageMockFactory : InMemoryStorageCS_1.InMemoryStorageCSFactory; } /** * * @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: syncManagerOnlineCSFactory, sdkManagerFactory: sdkManager_1.sdkManagerFactory, sdkClientMethodFactory: sdkClientMethodCS_1.sdkClientMethodCSFactory, SignalListener: platform_1.SignalListener, impressionsObserverFactory: impressionObserverCS_1.impressionObserverCSFactory, extraProps: function (params) { return { UserConsent: (0, sdkUserConsent_1.createUserConsentAPI)(params) }; } }; switch (settings.mode) { case constants_1.LOCALHOST_MODE: modules.splitApiFactory = undefined; modules.syncManagerFactory = LocalhostFromObject_1.localhostFromObjectFactory; modules.SignalListener = undefined; break; } return modules; } /** * SplitFactory for client-side. * * @param {SplitIO.IBrowserSettings} 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, browser_1.settingsFactory)(config); var modules = getModules(settings); if (__updateModules) __updateModules(modules); return (0, sdkFactory_1.sdkFactory)(modules); } exports.SplitFactory = SplitFactory;