Socket
Socket
Sign inDemoInstall

fflip

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fflip - npm Package Compare versions

Comparing version 0.2.4 to 0.3.3

.travis.yml

67

lib/fflip.js
//--------------------------------------------------------------------------
// Private
//--------------------------------------------------------------------------
var features = {},
criteria = {},
getFeatures,
var getFeatures,
getCriteria,
refreshRate = 30*1000,
refreshInterval;
reloadInverval;

@@ -14,7 +11,9 @@ function setCriteria(configVal) {

getCriteria = configVal;
updateCriteria();
} else {
criteria = configVal || criteria;
getCriteria = undefined;
}
updateCriteria();
if(typeof configVal == 'object') {
self._criteria = configVal;
}
}

@@ -25,7 +24,9 @@

getFeatures = configVal;
updateFeatures();
} else {
features = configVal || features;
getFeatures = undefined;
}
updateFeatures();
if(typeof configVal == 'object') {
self._features = configVal;
}
}

@@ -37,3 +38,3 @@

} else if(getCriteria.length === 0) {
criteria = getCriteria() || criteria;
self._criteria = getCriteria() || self._criteria;
return;

@@ -52,3 +53,3 @@ } else if(getCriteria.length === 1) {

} else if(getFeatures.length === 0) {
features = getFeatures() || features;
self._features = getFeatures() || self._features;
return;

@@ -64,6 +65,6 @@ } else if(getFeatures.length === 1) {

function getFeaturesCallback(data) {
features = data || features;
self._features = data || self._features;
}
function getCriteriaCallback(data) {
features = data || features;
self._features = data || self._features;
}

@@ -76,2 +77,8 @@

_features: {},
_criteria: {},
_reloadRate: 30*1000,
config: function(params) {

@@ -83,6 +90,6 @@ // Set Criteria & Features

// Refresh Rate
refreshRate = params.reload*1000 || refreshRate;
clearInterval(refreshInterval);
self._reloadRate = params.reload*1000 || self._reloadRate;
clearInterval(reloadInverval);
if(getCriteria || getFeatures)
refreshInterval = setInterval(self.reload, refreshRate);
reloadInverval = setInterval(self.reload, self._reloadRate);
},

@@ -95,12 +102,10 @@

featuresForUser: function(user) {
var user_features = {};
Object.keys(features).forEach(function(f_name) {
user_features[f_name] = self.userHasFeature(user, f_name);
});
return user_features;
},
userHasFeature: function(user, f_name) {
var featureCriteria = features[f_name];
var featureCriteria = self._features[f_name];
if(typeof featureCriteria == 'undefined') {
return null;
}
if(Object.keys(featureCriteria).length === 0) {
return false;
}
var isEnabled = true;

@@ -111,3 +116,3 @@ Object.keys(featureCriteria).forEach(function(ckey) {

var c_data = featureCriteria[ckey];
var c_func = criteria[c_name];
var c_func = self._criteria[c_name];
isEnabled = c_func(user, c_data);

@@ -117,3 +122,11 @@ }

return isEnabled;
},
featuresForUser: function(user) {
var user_features = {};
Object.keys(self._features).forEach(function(f_name) {
user_features[f_name] = self.userHasFeature(user, f_name);
});
return user_features;
}
}
};

@@ -5,11 +5,29 @@ {

"author": "Fred Schott <fredkschott@gmail.com>",
"version": "0.2.4",
"main":"lib/fflip",
"repository" : {
"type" : "git",
"url" : "http://github.com/FredKSchott/fflip"
"licence": "MIT",
"version": "0.3.3",
"main": "lib/fflip",
"repository": {
"type": "git",
"url": "http://github.com/FredKSchott/fflip"
},
"licence": "MIT",
"keywords": ["feature", "flip", "flipping", "flipper", "togggle", "toggling", "toggler", "criteria"],
"bugs": "https://github.com/FredKSchott/fflip/issues"
"bugs": "https://github.com/FredKSchott/fflip/issues",
"scripts": {
"test": "grunt travis --verbose"
},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-mocha-test": "~0.7.0"
},
"keywords": [
"feature",
"flip",
"flipping",
"flipper",
"togggle",
"toggling",
"toggler",
"criteria",
"continuous integration",
"ci"
]
}

@@ -0,10 +1,7 @@

[![Build Status](https://travis-ci.org/FredKSchott/fflip.png)](https://travis-ci.org/FredKSchott/fflip)
<img src="http://fredkschott.com/images/fflipIcon2.png" /> fflip
============================
============================
Working on an experimental new design? Starting a closed beta? Rolling out a new feature over the next few weeks? Fa-fa-fa-flip it! __fflip__ gives you complete control over releasing new functionality to your users based on thier user id, join date, membership status, and whatever else you can think of. __fflip's__ goal is to be the most extendable and customizable feature flipping/toggling module out there.
```
npm install fflip --save
```
- Describe __custom criteria and features__ using easy-to-read JSON

@@ -15,2 +12,6 @@ - Supports __Syncronous/Asyncronous loading__ of features and criteria

```
npm install fflip --save
```
##Getting Started

@@ -17,0 +18,0 @@ Below is a simple example of using __fflip__ to deliver a closed beta to a fraction of users:

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc