UNPKG

@absmartly/javascript-sdk

Version:

A/B Smartly Javascript SDK

94 lines (93 loc) 3.19 kB
"use strict"; require("core-js/modules/es.array.iterator.js"); require("core-js/modules/es.array.map.js"); require("core-js/modules/es.array.filter.js"); require("core-js/modules/es.object.entries.js"); require("core-js/modules/es.array.index-of.js"); var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const client_1 = __importDefault(require("./client")); const context_1 = __importDefault(require("./context")); const publisher_1 = require("./publisher"); const provider_1 = require("./provider"); const utils_1 = require("./utils"); class SDK { constructor(options) { const clientOptions = Object.assign({ agent: "absmartly-javascript-sdk" }, ...Object.entries(options || {}).filter(x => ["application", "agent", "apiKey", "endpoint", "keepalive", "environment", "retries", "timeout"].indexOf(x[0]) !== -1).map(x => ({ [x[0]]: x[1] }))); options = Object.assign({}, options); this._client = options.client || new client_1.default(clientOptions); this._eventLogger = options.eventLogger || SDK.defaultEventLogger; this._publisher = options.publisher || new publisher_1.ContextPublisher(); this._provider = options.provider || new provider_1.ContextDataProvider(); } getContextData(requestOptions) { return this._provider.getContextData(this, requestOptions); } createContext(params, options, requestOptions) { SDK._validateParams(params); const fullOptions = SDK._contextOptions(options); const data = this._provider.getContextData(this, requestOptions); return new context_1.default(this, fullOptions, params, data); } setEventLogger(logger) { this._eventLogger = logger; } getEventLogger() { return this._eventLogger; } setContextPublisher(publisher) { this._publisher = publisher; } getContextPublisher() { return this._publisher; } setContextDataProvider(provider) { this._provider = provider; } getContextDataProvider() { return this._provider; } getClient() { return this._client; } createContextWith(params, data, options) { SDK._validateParams(params); const fullOptions = SDK._contextOptions(options); return new context_1.default(this, fullOptions, params, data); } static _contextOptions(options) { return Object.assign({ publishDelay: (0, utils_1.isLongLivedApp)() ? 100 : -1, refreshPeriod: 0 }, options || {}); } static _validateParams(params) { Object.entries(params.units).forEach(entry => { const type = typeof entry[1]; if (type !== "string" && type !== "number") { throw new Error(`Unit '${entry[0]}' UID is of unsupported type '${type}'. UID must be one of ['string', 'number']`); } if (typeof entry[1] === "string") { if (entry[1].length === 0) { throw new Error(`Unit '${entry[0]}' UID length must be >= 1`); } } }); } } exports.default = SDK; SDK.defaultEventLogger = (_, eventName, data) => { if (eventName === "error") { console.error(data); } };