@splitsoftware/splitio
Version:
74 lines (73 loc) • 3.9 kB
JavaScript
;
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;