UNPKG

feature-management

Version:

Feature Flag Management

32 lines 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureManager = void 0; require("reflect-metadata"); const feature_flag_store_1 = require("./feature-flag.store"); const constants_1 = require("./decorator/constants"); const container_1 = require("./container"); class FeatureManager { constructor(environment) { this.environment = environment; } async isEnabled(feature, context) { const featureName = typeof feature === 'string' ? feature : feature['name']; const featureFlagOptions = feature_flag_store_1.featureFlagStore.get(this.environment, featureName); if (!featureFlagOptions || !featureFlagOptions.enabled) { return false; } const strategies = featureFlagOptions?.strategies || []; for (const strategy of strategies) { const filterHandler = Reflect.getMetadata(constants_1.FEATURE_FILTER_METADATA, strategy.constructor); const filterHandlerInstance = container_1.containerProvider .resolveContainer() .get(filterHandler); const evaluatedResult = await filterHandlerInstance.evaluate(strategy, context); if (evaluatedResult) return true; } return !strategies.length; } } exports.FeatureManager = FeatureManager; //# sourceMappingURL=feature-manager.js.map