UNPKG

@jschneller/nestjs-feature-flag-manager

Version:

Feature flag manager library in Nestjs

52 lines 3.35 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeatureFlagManager = void 0; const common_1 = require("@nestjs/common"); const feature_flag_manager_tokens_1 = require("./feature-flag-manager.tokens"); const application_environment_enum_1 = require("./application-environment.enum"); const nestjs_unleash_1 = require("@jschneller/nestjs-unleash"); let FeatureFlagManager = class FeatureFlagManager { constructor(featureFlagMap, applicationEnvironment, unleashClient) { this.featureFlagMap = featureFlagMap; this.applicationEnvironment = applicationEnvironment; this.unleashClient = unleashClient; } async isEnabled(featureFlagName, unleashContext) { const mappedFeatureFlag = this.featureFlagMap.get(featureFlagName); if (mappedFeatureFlag === undefined) { throw new Error(`Feature flag "${featureFlagName}" is not present in the feature flag map of the manager module.`); } if (this.applicationEnvironment === application_environment_enum_1.ApplicationEnvironmentEnum.LOCALHOST) { let environmentVariableFeatureFlagValue = process.env[mappedFeatureFlag.envVariableKey]; if (environmentVariableFeatureFlagValue === undefined) { throw new Error(`Feature flag "${featureFlagName}" is not present in environment variables under key "${mappedFeatureFlag.envVariableKey}"`); } environmentVariableFeatureFlagValue = String(environmentVariableFeatureFlagValue); if (environmentVariableFeatureFlagValue !== '0' && environmentVariableFeatureFlagValue !== '1') { throw new Error(`Feature flag "${featureFlagName}" in environment variables under key "${mappedFeatureFlag.envVariableKey}" has an incorrect value. Expected 1 or 0.`); } return environmentVariableFeatureFlagValue === '1'; } return this.unleashClient.isEnabled(mappedFeatureFlag.unleashKey, unleashContext); } }; FeatureFlagManager = __decorate([ (0, common_1.Injectable)(), __param(0, (0, feature_flag_manager_tokens_1.injectFeatureFlagMap)()), __param(1, (0, feature_flag_manager_tokens_1.injectApplicationEnvironmentConfig)()), __metadata("design:paramtypes", [Object, String, nestjs_unleash_1.UnleashClient]) ], FeatureFlagManager); exports.FeatureFlagManager = FeatureFlagManager; //# sourceMappingURL=feature-flag.manager.js.map