UNPKG

feature-toggle-client

Version:

feature-toggle-client

154 lines 11.6 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureToggleInstanceFactory = void 0; var launchdarkly_js_client_sdk_1 = require("launchdarkly-js-client-sdk"); var uuid = require("uuid"); var getApplicationDataLegacy = function (p) { return p.hasCluster ? { kind: 'user', key: p.shortName || 'free', name: p.name || 'free', email: p.shortName ? "".concat(p.shortName, "@msging.net") : 'free@free.com', cluster: p.cluster, tenantId: p.tenantId, group: 'bot', } : { kind: 'user', key: 'free', name: 'free', email: 'free@free.com', group: 'bot', }; }; var getApplicationData = function (p) { var context = { kind: 'bot', key: p.shortName || 'free', name: p.name || 'free', email: p.shortName ? "".concat(p.shortName, "@msging.net") : 'free@free.com', }; if (p.hasCluster && p.cluster) { context.hasCluster = true; context.cluster = p.cluster; } if (p.tenantId) { context.tenantId = p.tenantId; } if (!context.key) { throw new Error('Bot context key is empty or undefined'); } return context; }; var getUserData = function (p) { var context = p.anonymous ? __assign({ kind: 'user', key: uuid.v4(), anonymous: true }, p) : { kind: 'user', key: p.email, name: p.fullName, email: p.email, creationDate: p.creationDate, }; if (!context.key) { throw new Error('User context key is empty or undefined'); } return context; }; var getContractData = function (contract) { var context = { kind: 'contract', key: contract.tenantId, tenantId: contract.tenantId, cluster: contract.cluster, }; if (contract.custom) { context.custom = contract.custom; } if (!context.key) { throw new Error('Contract context key is empty or undefined'); } return context; }; var lowerCaseObject = function (obj) { var result = {}; Object.keys(obj).forEach(function (key) { var value = obj[key]; result[key] = typeof value === 'string' ? value.toLowerCase() : value; }); return result; }; var toLowerCaseContext = function (context) { var result = { kind: context.kind }; if (context.user) { result.user = lowerCaseObject(context.user); } if (context.bot) { result.bot = lowerCaseObject(context.bot); } if (context.contract) { result.contract = lowerCaseObject(context.contract); } return result; }; var getContext = function (user, application, contract) { var contexts = {}; if (user) { contexts.user = getUserData(user); } if (application) { contexts.bot = getApplicationData(application); } if (contract) { contexts.contract = getContractData(contract); } if (Object.keys(contexts).length === 0) { throw new Error('At least one context (user, application, or contract) must be provided. '); } if (Object.keys(contexts).length === 1) { var singleContext = Object.values(contexts)[0]; return lowerCaseObject(singleContext); } var multiContext = __assign({ kind: 'multi' }, contexts); return toLowerCaseContext(multiContext); }; var FeatureToggleInstanceFactory = (function () { function FeatureToggleInstanceFactory(ldclientSdkKey, context, options) { this.defaultOptions = __assign({ bootstrap: 'localStorage' }, (process.env.NODE_ENV !== 'development' && typeof launchdarkly_js_client_sdk_1.basicLogger === 'function' && { logger: (0, launchdarkly_js_client_sdk_1.basicLogger)({ level: 'error' }) })); this.client = (0, launchdarkly_js_client_sdk_1.initialize)(ldclientSdkKey, context, __assign(__assign({}, options), this.defaultOptions)); } FeatureToggleInstanceFactory.prototype.getClient = function () { return this.client; }; FeatureToggleInstanceFactory.createSingleContext = function (payload, ldclientSdkKey, options) { var context = this.getSingleData(payload); return new FeatureToggleInstanceFactory(ldclientSdkKey, context, options); }; FeatureToggleInstanceFactory.createMultiContext = function (ldclientSdkKey, user, application, contract, options) { var context = getContext(user, application, contract); return new FeatureToggleInstanceFactory(ldclientSdkKey, context, options); }; FeatureToggleInstanceFactory.getSingleData = function (payload) { var isUser = function () { return payload.email; }; if (isUser()) { return getUserData(payload); } return getApplicationDataLegacy(payload); }; return FeatureToggleInstanceFactory; }()); exports.FeatureToggleInstanceFactory = FeatureToggleInstanceFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmVhdHVyZVRvZ2dsZUluc3RhbmNlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9GZWF0dXJlVG9nZ2xlSW5zdGFuY2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQXFHO0FBSXJHLDJCQUE2QjtBQVU3QixJQUFNLHdCQUF3QixHQUFHLFVBQUMsQ0FBTTtJQUN0QyxPQUFPLENBQUMsQ0FBQyxVQUFVO1FBQ2pCLENBQUMsQ0FBQztZQUNBLElBQUksRUFBRSxNQUFNO1lBQ1osR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksTUFBTTtZQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNO1lBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFHLENBQUMsQ0FBQyxTQUFTLGdCQUFhLENBQUMsQ0FBQyxDQUFDLGVBQWU7WUFDbEUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtZQUNwQixLQUFLLEVBQUUsS0FBSztTQUNiO1FBQ0QsQ0FBQyxDQUFDO1lBQ0EsSUFBSSxFQUFFLE1BQU07WUFDWixHQUFHLEVBQUUsTUFBTTtZQUNYLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGVBQWU7WUFDdEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBT0YsSUFBTSxrQkFBa0IsR0FBRyxVQUFDLENBQU07SUFDaEMsSUFBTSxPQUFPLEdBQVE7UUFDbkIsSUFBSSxFQUFFLEtBQUs7UUFDWCxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNO1FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU07UUFDdEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQUcsQ0FBQyxDQUFDLFNB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