feature-toggle-package
Version:
A lightweight and flexible feature toggle (feature flag) implementation for JavaScript/TypeScript applications
25 lines (24 loc) • 874 B
JavaScript
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);
}
}