mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 02:00:43 +00:00
40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import { storageGet, storageSet } from './storage-utils';
|
|
|
|
// prefix for all feature flags
|
|
const STORAGE_KEY_PREFIX = 'scope-experimental:';
|
|
|
|
const getKey = key => `${STORAGE_KEY_PREFIX}${key}`;
|
|
|
|
/**
|
|
* Returns true if `feature` is enabled
|
|
*
|
|
* Features can be enabled either via calling `setFeature()` or by setting
|
|
* `localStorage.scope-experimental:featureName = true` in the console.
|
|
* @param {String} feature Feature name, ideally one word or hyphenated
|
|
* @return {Boolean} True if feature is enabled
|
|
*/
|
|
export function featureIsEnabled(feature) {
|
|
return storageGet(getKey(feature));
|
|
}
|
|
|
|
/**
|
|
* Returns true if any of the features given as arguments are enabled.
|
|
*
|
|
* Useful if features are hierarchical, e.g.:
|
|
* `featureIsEnabledAny('superFeature', 'subFeature')`
|
|
* @param {String} args Feature names
|
|
* @return {Boolean} True if any of the features are enabled
|
|
*/
|
|
export function featureIsEnabledAny(...args) {
|
|
return Array.prototype.some.call(args, feature => featureIsEnabled(feature));
|
|
}
|
|
|
|
/**
|
|
* Set true/false if a feature is enabled.
|
|
* @param {String} feature Feature name
|
|
* @param {Boolean} isEnabled true/false
|
|
*/
|
|
export function setFeature(feature, isEnabled) {
|
|
return storageSet(getKey(feature), isEnabled);
|
|
}
|