UNPKG

static-abilities

Version:

Static abilities generator for role based authorization

6 lines (5 loc) 1.01 kB
/** static-abilities - v0.0.1 - 2015-02-11 * Copyright (c) 2015 Vítor Avelino; * Licensed MIT */ !function(a){var b=Object.prototype.toString,c={isArray:Array.isArray,isString:function(a){return"[object String]"===b.call(a)}},d={},e={manage:["read","edit","delete"]},f=function(a,b){var c=[],f=d[this];a=h(a,"can"),a.forEach(function(a){var b=e[a];b?c=c.concat(b):c.push(a)}),c.forEach(function(a){b&&(a=[a,b].join("_")),-1===f.indexOf(a)&&f.push(a)})},g=function(a){var b=d[this];a=h(a,"extend"),a.forEach(function(a){var c=d[a];if(!c)throw'extend: role "'+a+'" not defined to be extended';c.forEach(function(a){-1===b.indexOf(a)&&b.push(a)})})},h=function(a,b){if(!c.isString(a)&&!c.isArray(a))throw b+': expected "'+a+'" to be an array or string';return c.isString(a)&&(a=[a]),a},i={alias:function(a,b){b=h(b),e[a]=b},define:function(a,b){return d[a]=[],b&&b(f.bind(a),g.bind(a)),this},flush:function(){d={}},toJSON:function(){return d}};"object"==typeof exports?module.exports=i:a.Abilities=i}(this);