feature-toggle-client
Version:
feature-toggle-client
154 lines • 11.6 kB
JavaScript
;
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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