unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
55 lines • 2.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FeatureEvaluator = exports.Strategy = void 0;
const client_1 = __importDefault(require("./client"));
const repository_1 = __importDefault(require("./repository"));
const strategy_1 = require("./strategy");
Object.defineProperty(exports, "Strategy", { enumerable: true, get: function () { return strategy_1.Strategy; } });
const helpers_1 = require("./helpers");
const bootstrap_provider_1 = require("./repository/bootstrap-provider");
class FeatureEvaluator {
constructor({ appName, environment = 'default', strategies = [], repository, bootstrap = { data: [] }, storageProvider, }) {
this.staticContext = { appName, environment };
const bootstrapProvider = (0, bootstrap_provider_1.resolveBootstrapProvider)(bootstrap);
this.repository =
repository ||
new repository_1.default({
appName,
bootstrapProvider,
storageProvider: storageProvider,
});
// setup client
const supportedStrategies = strategies.concat(strategy_1.defaultStrategies);
this.client = new client_1.default(this.repository, supportedStrategies);
}
async start() {
return this.repository.start();
}
destroy() {
this.repository.stop();
}
isEnabled(name, context = {}, fallback) {
const enhancedContext = { ...this.staticContext, ...context };
const fallbackFunc = (0, helpers_1.createFallbackFunction)(name, enhancedContext, fallback);
return this.client.isEnabled(name, enhancedContext, fallbackFunc);
}
getVariant(name, context = {}, fallbackVariant) {
const enhancedContext = { ...this.staticContext, ...context };
return this.client.getVariant(name, enhancedContext, fallbackVariant);
}
forceGetVariant(name, context = {}, fallbackVariant) {
const enhancedContext = { ...this.staticContext, ...context };
return this.client.forceGetVariant(name, enhancedContext, fallbackVariant);
}
getFeatureToggleDefinition(toggleName) {
return this.repository.getToggle(toggleName);
}
getFeatureToggleDefinitions() {
return this.repository.getToggles();
}
}
exports.FeatureEvaluator = FeatureEvaluator;
//# sourceMappingURL=feature-evaluator.js.map