@sensorfactdev/draconarius
Advanced tools
Comparing version 1.1.1 to 1.1.2
251
lib/index.js
@@ -1,10 +0,34 @@ | ||
const Pack = require('../package.json'); | ||
const isArrayOfStrings = require('./isArrayOfStrings'); | ||
const isObject = require('./isObject'); | ||
const isValidFlagValue = require('./isValidFlagValue'); | ||
"use strict"; | ||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | ||
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } | ||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } | ||
var Pack = require('../package.json'); | ||
var isArrayOfStrings = require('./isArrayOfStrings'); | ||
var isObject = require('./isObject'); | ||
var isValidFlagValue = require('./isValidFlagValue'); | ||
/** | ||
* @class Draconarius | ||
*/ | ||
class Draconarius { | ||
var Draconarius = | ||
/*#__PURE__*/ | ||
function () { | ||
/** | ||
@@ -15,12 +39,17 @@ * Creates an instance of Draconarius. | ||
*/ | ||
constructor(flags = []) { | ||
function Draconarius() { | ||
var flags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; | ||
_classCallCheck(this, Draconarius); | ||
if (isArrayOfStrings(flags)) { | ||
this.flags = flags.reduce((acc, flag) => Object.assign(acc, { [flag]: true }), {}); | ||
this.flags = flags.reduce(function (acc, flag) { | ||
return Object.assign(acc, _defineProperty({}, flag, true)); | ||
}, {}); | ||
} else if (isObject(flags)) { | ||
this.flags = flags; | ||
} else { | ||
throw new TypeError(`Draconarius constructor expects flags to be an object or an array of strings, but received \`${JSON.stringify(flags)}\``); | ||
throw new TypeError("Draconarius constructor expects flags to be an object or an array of strings, but received `".concat(JSON.stringify(flags), "`")); | ||
} | ||
} | ||
/** | ||
@@ -32,108 +61,140 @@ * version - Checks the version in package.json | ||
*/ | ||
static version() { | ||
return Pack.version; | ||
} | ||
/** | ||
* _checkFlag - Checks if a flag is enabled | ||
* @private | ||
* @param {string} flag Flag which needs to be checked | ||
* @param {array} args Optional arguments to function flags | ||
* @returns {boolean} | ||
* @memberof Draconarius | ||
*/ | ||
_checkFlag(flag, args) { | ||
const currentFlag = this.flags[flag]; | ||
if (typeof currentFlag === 'function') { | ||
return currentFlag(...args); | ||
_createClass(Draconarius, [{ | ||
key: "_checkFlag", | ||
/** | ||
* _checkFlag - Checks if a flag is enabled | ||
* @private | ||
* @param {string} flag Flag which needs to be checked | ||
* @param {array} args Optional arguments to function flags | ||
* @returns {boolean} | ||
* @memberof Draconarius | ||
*/ | ||
value: function _checkFlag(flag, args) { | ||
var currentFlag = this.flags[flag]; | ||
if (typeof currentFlag === 'function') { | ||
return currentFlag.apply(void 0, _toConsumableArray(args)); | ||
} | ||
return currentFlag || false; | ||
} | ||
/** | ||
* _checkMultipleFlags - Reduces multiple flag checks down to one boolean | ||
* @private | ||
* @param {array} flags Flags that need to check | ||
* @param {array} args Optional arguments to function flags | ||
* @returns {boolean} Reduced enabled status of all provided flags | ||
* @memberof Draconarius | ||
*/ | ||
return currentFlag || false; | ||
} | ||
}, { | ||
key: "_checkMultipleFlags", | ||
value: function _checkMultipleFlags(flags, args) { | ||
var _this = this; | ||
/** | ||
* _checkMultipleFlags - Reduces multiple flag checks down to one boolean | ||
* @private | ||
* @param {array} flags Flags that need to check | ||
* @param {array} args Optional arguments to function flags | ||
* @returns {boolean} Reduced enabled status of all provided flags | ||
* @memberof Draconarius | ||
*/ | ||
_checkMultipleFlags(flags, args) { | ||
return flags.reduce((acc, flag) => this._checkFlag(flag, args) || acc, false); | ||
} | ||
return flags.reduce(function (acc, flag) { | ||
return _this._checkFlag(flag, args) || acc; | ||
}, false); | ||
} | ||
/** | ||
* | ||
* _setFlag | ||
* @private | ||
* @param {string} flag | ||
* @param {function|boolean} value | ||
* @memberof Draconarius | ||
*/ | ||
/** | ||
* | ||
* _setFlag | ||
* @private | ||
* @param {string} flag | ||
* @param {function|boolean} value | ||
* @memberof Draconarius | ||
*/ | ||
_setFlag(flag, value) { | ||
if (!flag || typeof flag !== 'string') { | ||
throw new TypeError(`_setFlag expects \`flag\` to be a string but received \`${JSON.stringify(flag)}\``); | ||
}, { | ||
key: "_setFlag", | ||
value: function _setFlag(flag, value) { | ||
if (!flag || typeof flag !== 'string') { | ||
throw new TypeError("_setFlag expects `flag` to be a string but received `".concat(JSON.stringify(flag), "`")); | ||
} | ||
if (!isValidFlagValue(value)) { | ||
throw new TypeError("_setFlag expects `value` to be a boolean or function but received `".concat(JSON.stringify(value), "`")); | ||
} | ||
this.flags[flag] = value; | ||
} | ||
/** | ||
* _setFlags - Update flags of an instance | ||
* @private | ||
* @param {object} flags | ||
* @memberof Draconarius | ||
*/ | ||
if (!isValidFlagValue(value)) { | ||
throw new TypeError(`_setFlag expects \`value\` to be a boolean or function but received \`${JSON.stringify(value)}\``); | ||
}, { | ||
key: "_setFlags", | ||
value: function _setFlags(newFlags) { | ||
var _this2 = this; | ||
Object.keys(newFlags).forEach(function (flag) { | ||
return _this2._setFlag(flag, newFlags[flag]); | ||
}); | ||
} | ||
/** | ||
* isEnabled - To check if a flag is raised(enabled) | ||
* @param {string|array} flag The flag or flags you want to check | ||
* @param {array} args optional arguments to pass to a flag function | ||
* @returns {boolean} A boolean indicating if flag is enabled | ||
* @memberof Draconarius | ||
*/ | ||
this.flags[flag] = value; | ||
} | ||
}, { | ||
key: "isEnabled", | ||
value: function isEnabled(flag) { | ||
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
args[_key - 1] = arguments[_key]; | ||
} | ||
/** | ||
* _setFlags - Update flags of an instance | ||
* @private | ||
* @param {object} flags | ||
* @memberof Draconarius | ||
*/ | ||
_setFlags(newFlags) { | ||
Object.keys(newFlags).forEach(flag => this._setFlag(flag, newFlags[flag])); | ||
} | ||
if (Array.isArray(flag)) { | ||
return this._checkMultipleFlags(flag, args); | ||
} | ||
/** | ||
* isEnabled - To check if a flag is raised(enabled) | ||
* @param {string|array} flag The flag or flags you want to check | ||
* @param {array} args optional arguments to pass to a flag function | ||
* @returns {boolean} A boolean indicating if flag is enabled | ||
* @memberof Draconarius | ||
*/ | ||
isEnabled(flag, ...args) { | ||
if (Array.isArray(flag)) { | ||
return this._checkMultipleFlags(flag, args); | ||
return this._checkFlag(flag, args); | ||
} | ||
/** | ||
* updateFlag - Update flag(s) | ||
* @param {string|array} flag The flag or flags you want to check | ||
* @param {function|boolean} value | ||
* @memberof Draconarius | ||
*/ | ||
return this._checkFlag(flag, args); | ||
} | ||
}, { | ||
key: "updateFlag", | ||
value: function updateFlag(flag, value) { | ||
if (isObject(flag)) { | ||
return this._setFlags(flag); | ||
} | ||
/** | ||
* updateFlag - Update flag(s) | ||
* @param {string|array} flag The flag or flags you want to check | ||
* @param {function|boolean} value | ||
* @memberof Draconarius | ||
*/ | ||
updateFlag(flag, value) { | ||
if (isObject(flag)) { | ||
return this._setFlags(flag); | ||
return this._setFlag(flag, value); | ||
} | ||
/** | ||
* getAllFlags - Get all the flags currently set | ||
* @returns {object} All flags | ||
* @memberof Draconarius | ||
*/ | ||
return this._setFlag(flag, value); | ||
} | ||
}, { | ||
key: "getAllFlags", | ||
value: function getAllFlags() { | ||
return this.flags; | ||
} | ||
}], [{ | ||
key: "version", | ||
value: function version() { | ||
return Pack.version; | ||
} | ||
}]); | ||
/** | ||
* getAllFlags - Get all the flags currently set | ||
* @returns {object} All flags | ||
* @memberof Draconarius | ||
*/ | ||
getAllFlags() { | ||
return this.flags; | ||
} | ||
} | ||
return Draconarius; | ||
}(); | ||
module.exports = { | ||
Draconarius, | ||
Draconarius: Draconarius | ||
}; | ||
{ | ||
"name": "@sensorfactdev/draconarius", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "Manage (feature)flags like a Roman soldier\"", | ||
@@ -12,5 +12,6 @@ "main": "./lib/index.js", | ||
"test": "jest --coverage", | ||
"docs": "jsdoc2md ./lib/index.js > API.md", | ||
"docs": "jsdoc2md ./src/index.js > API.md", | ||
"prepublish": "yarn test; yarn docs;", | ||
"test-travis": "yarn test && cat ./coverage/lcov.info | coveralls" | ||
"test-travis": "yarn test && cat ./coverage/lcov.info | coveralls", | ||
"build": "babel ./src/index.js --out-file ./lib/index.js --presets @babel/preset-env" | ||
}, | ||
@@ -31,2 +32,5 @@ "jest": { | ||
"devDependencies": { | ||
"@babel/cli": "^7.0.0", | ||
"@babel/core": "^7.0.0", | ||
"@babel/preset-env": "^7.0.0", | ||
"coveralls": "^3.0.1", | ||
@@ -33,0 +37,0 @@ "eslint": "^4.19.1", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
185153
163
12
8