UNPKG

feature-toggle-package

Version:

A lightweight and flexible feature toggle (feature flag) implementation for JavaScript/TypeScript applications

25 lines (24 loc) 874 B
import { ModuleError, SubmoduleError } from '../types/errors.js'; export class FeatureToggleService { isEnabled(config, moduleName, submoduleName, featureName) { const module = config.modules[moduleName]; if (!module) { throw new ModuleError(`Module "${moduleName}" not found`); } if (!module.enabled) return false; if (!submoduleName) return true; if (!module.submodules) return false; const submodule = module.submodules[submoduleName]; if (!submodule) { throw new SubmoduleError(`Submodule "${submoduleName}" not found in module "${moduleName}"`); } if (!submodule.enabled) return false; if (!featureName) return true; return Boolean(submodule.features?.[featureName] ?? false); } }