UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

55 lines 2.53 kB
"use strict"; 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