confab-features
v0.0.2
Published
Runtime feature gating for confab applications
Downloads
3
Readme
confab-features
Feature gates for confab. Declare a list of features that can be toggled on and off:
var confab = require('confab');
var features = require('confab-features');
var config = confab([
features([
'new_ui'
])
]);Run the app with gates set by either a previous transformation or environment overrides:
$ CONFIG_FEATURES_NEW_UI=true \
node app.jsThen, inside the app, retrieve the feature configurations from a processed
confab config:
if (config.features.new_ui) {
renderNewUi();
}
else {
renderLegacyUi();
}The full list of configured features is available by invoking config.features
directly:
config.features().forEach(function (feature) {
console.log(feature.key, feature.description);
});API
confab-features exports:
features(items: Array<Object|String>, opts: Map<String, any>): Map<String, Boolean>Note that items may contain both string keys and simple object with a key
and (optional) description of the feature:
[
'new_ui',
{ key: 'new_campaign', description: 'A switch to flip' }
]opts
Name | Type | Description
----------- | --------- | --------------------------------
configKey | String | The config key for 'features' and environment variables (default: 'features')
validate | Boolean | Throw on undeclared or invalid feature settings (default: true)
Quis configiet ipsos configes?
Development
Clone this repository:
$ git clone [email protected]:rjz/confab-features.git...and copy, fork, customize, and whatever you need to do.
Testing
Lint and run test suite:
$ npm testLicense
MIT
