UNPKG

role-calc

Version:

library to work with roles, contains calculation of times for the session, validation of required roles

1 lines 1.66 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.calc=calc;exports.time=time;exports.has=has;var _moment=require('moment');var _moment2=_interopRequireDefault(_moment);var _ms=require('ms');var _ms2=_interopRequireDefault(_ms);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function calc(roles,get,format){if(roles.length>0){var array=[];var val=null;roles.forEach(function(role){return role.ttl?array.push(parseInt((0,_ms2.default)(role.ttl||0).toFixed(1))):null;});switch(get){case'max':val=Math.max.apply(null,array);break;case'min':val=Math.min.apply(null,array);break;case'sum':val=array.reduce(function(sum,x){return sum+x;});break;case'average':val=array.reduce(function(sum,x){return sum+x;})/array.length;;break;default:}format=format||'minutes';val=_moment2.default.duration(val,'milliseconds').as(format)+' '+format;return val;}else{return null;}}function time(base,user){user=duplicity(user);var roles=[];user.forEach(function(role){return base.forEach(function(brole){return role===brole.role?roles.push(brole):null;});});return roles;}function has(base,user,filter){var val=null;switch(filter){case'*':val=all(base,user);break;default:val=any(base,user);}return val;}function any(base,user){var found=false;user.forEach(function(_user){return base.includes(_user)?found=true:null;});return found;}function all(base,user){base=duplicity(base);user=duplicity(user);var count=0;user.forEach(function(_user){return base.includes(_user)?count++:null;});return base.length==count;}function duplicity(array){return array.filter(function(elem,index,self){return index==self.indexOf(elem);});}