UNPKG

levelheaded

Version:

⚖️ Generate object containing functions deemed operational by level

51 lines (43 loc) 1.85 kB
"use strict"; 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; } /** * Default Levels * @type {String[]} */ var DEFAULT_LEVELS = ['debug', 'verbose', 'info', 'warn', 'error', 'critical']; /** * Generate object containing functions deemed operational by level * @param {String[]} [options.levels=DEFAULT_LEVELS] * @param {Any} [options.minimal=options.levels[0]] * @param {Function} [options.action=console.log] * @param {Object} [options.object={}] * @param {Function} [options.noop=()=>undefined] * @return {Object} */ module.exports = function levelheaded() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref$levels = _ref.levels, levels = _ref$levels === void 0 ? DEFAULT_LEVELS : _ref$levels, _ref$minimal = _ref.minimal, minimal = _ref$minimal === void 0 ? levels[0] : _ref$minimal, _ref$action = _ref.action, action = _ref$action === void 0 ? console.log : _ref$action, _ref$object = _ref.object, object = _ref$object === void 0 ? {} : _ref$object, _ref$noop = _ref.noop, noop = _ref$noop === void 0 ? function noop() {} : _ref$noop; var minimum = levels.indexOf(minimal); var enough = function enough(level) { return levels.indexOf(level) >= minimum; }; return levels.reduce(function (instance, level) { return Object.assign(instance, _defineProperty({}, level, enough(level) ? function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return action.apply({ level: level }, args); } : noop)); }, object); };