web-rabc-permissions-sdk
Version:
后台管理系统RABC通用权限控制规范与规范代码实施js-SDK,包含 节点/按钮/路由 等控制 ,支持hidden,disabled,删除,或则自定义function处理。 通过配置实现RABC的权限控制
1 lines • 11.7 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.webRabcPermissionSdk=t():e.webRabcPermissionSdk=t()}(self,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{ACTION_ORDER:()=>n,PLAN_ENUM:()=>i,getNewPermissionDTO:()=>re,getNewPermissionSimpleDTO:()=>ie,webRabcPermissionSdkOptions:()=>r,webRabcPermisson:()=>te});var r={debugStr:"",permission:{Func:void 0,isRemote:!1,Refresh:0,microLibraryName:void 0},libraryName:"",plan:"",havePermiss:[],noPermiss:[],specialPermiss:[],actionOrder:[]},i={SET_TIMEOUT:"setTimeout",OB_SERVER:"MutationObserver"},n={doNoPermiss:"doNoPermiss",doHavePermiss:"doHavePermiss",doSpecialPermiss:"doSpecialPermiss"},s={routerPath:"",eleIdOrClass:"",child:[],resultType:""},o={routerPath:"",eleIdOrClass:"",resultType:"",showElemType:"",describe:"",callBackFunc:void 0,vueTemplateRoot:""},a="设置权限数据 或 权限执行方案 需要stop 后 再设置,避免多次diff对比,请记得reload";function l(e){switch(e){case"log":return function(e){console.log(e)};case"warn":return function(e){console.warn(e)};case"error":return function(e){console.error(e)}}}var c=l("warn"),u=l("error");function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=new Array(t);r<t;r++)i[r]=e[r];return i}function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}l("log");var y=void 0!==("undefined"==typeof Reflect?"undefined":p(Reflect))?Reflect.toString:Object.toString;function d(e){this.config.havePermiss=h(e)}function v(e){this.config.noPermiss=h(e)}function b(e){this.config.specialPermiss=h(noPermiss)}function w(e){var t=[],r=[],i=[],n=e.havePermiss,s=e.noPermiss,o=e.specialPermiss,a=window.location.href;return Object.keys(s).forEach((function(e){a.indexOf(e)>-1&&r.push.apply(r,h(s[e]))})),Object.keys(n).forEach((function(e){a.indexOf(e)>-1&&t.push.apply(t,h(n[e]))})),Object.keys(o).forEach((function(e){a.indexOf(e)>-1&&i.push.apply(i,h(o[e]))})),{haveElems:t,noPerElems:r,specialElems:i}}function P(e,t){e.forEach((function(e){if(e.callBackFunc)O(e,t);else if(e.eleIdOrClass.startsWith("#")){var r=document.querySelector(e.eleIdOrClass);r&&(e.showElemType?r.style.setProperty("display",e.showElemType,"important"):"none"!=r.style.display&&(r.style.display="none"))}else e.eleIdOrClass.startsWith(".")&&document.querySelectorAll(e.eleIdOrClass).forEach((function(t){e.showElemType?t.style.setProperty("display",e.showElemType,"important"):"none"!=t.style.display&&(t.style.display="none")}))}))}function E(e,t){e.forEach((function(e){if(e.callBackFunc)O(e,t);else if(e.eleIdOrClass.startsWith("#")){var r=document.querySelector(e.eleIdOrClass);r&&(e.showElemType?r.style.setProperty("display",e.showElemType,"important"):"none"==r.style.display&&(r.style.display=""))}else e.eleIdOrClass.startsWith(".")&&document.querySelectorAll(e.eleIdOrClass).forEach((function(t){e.showElemType?t.style.setProperty("display",e.showElemType,"important"):"none"==t.style.display&&(t.style.display="")}))}))}function g(e,t){e.forEach((function(e){if(e.callBackFunc)O(e,t);else if(e.eleIdOrClass.startsWith("#")){var r=document.querySelector(e.eleIdOrClass);r&&e.showElemType&&r.style.setProperty("display",e.showElemType,"important")}else e.eleIdOrClass.startsWith(".")&&document.querySelectorAll(e.eleIdOrClass).forEach((function(t){e.showElemType&&t.style.setProperty("display",e.showElemType,"important")}))}))}function O(e,t){var r,i=t.libraryName,n=e.vueTemplateRoot,s=e.callBackFunc;if("Function"!==I(r=s)||void 0===r.prototype)throw new Error("必須是一個function,而非箭头函数");var o=null,a=void 0,l=null;"vue"===i&&(l=document.querySelector(n),"HTMLDivElement"===y.call(l).slice(8,-1)&&(o=l.__vue__)),o||(o=window),a={$getById:function(e){return document.getElementById(e)},$query:function(e){return document.querySelector(e)},$queryAll:function(e){return document.querySelectorAll(e)},$getTagName:function(e){return document.getElementsByTagName(e)}},s.apply(o,[a]),a=null,l=null,o=null}var S=function(){var e=void 0,t=void 0,r=void 0,i=[],s=(new Date).getTime(),o=null;return function a(l){l.millisec,i=l.actionOrder;var c=(new Date).getTime(),u=l.delay>0?l.delay:l.millisec,f=l.permissionCache;c-s>u?(s=(new Date).getTime(),clearTimeout(o),o=null,queueMicrotask((function(){var s=w(l.permissionDiffResult);e=s.haveElems,t=s.noPerElems,r=s.specialElems,i.forEach((function(i){switch(i){case n.doNoPermiss:P(t,f);break;case n.doHavePermiss:E(e,f);break;case n.doSpecialPermiss:g(r,f)}}))}))):null===o&&(o=setTimeout((function(){a(l)}),u))}}();function T(e,t,r,i){var s=this,o=[],a=w(e),l=a.haveElems,c=a.noPerElems,u=a.specialElems;o=i,s.timer=setTimeout((function(){o.forEach((function(e){switch(e){case n.doNoPermiss:P(c,r);break;case n.doHavePermiss:E(l,r);break;case n.doSpecialPermiss:g(u,r)}})),T.call(s,e,t,r,o)}),t)}function k(){var e,t,r=(f(e={},i.SET_TIMEOUT,!0),f(e,i.OB_SERVER,!1),e);return r[i.OB_SERVER]=(t=i.OB_SERVER,new Function("","return typeof ".concat(t))()!=void 0+""),r}function I(e){return y.call(e).slice(8,-1)}function R(e){return!!function(e){return null!=e}(e)&&"Boolean"===I(e)}function C(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function j(e,t){_(e,t),t.add(e)}function N(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function W(e,t,r){_(e,t),t.set(e,r)}function _(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function A(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,D(e,t,"get"))}function B(e,t,r){return function(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}(e,D(e,t,"set"),r),r}function D(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}var q=new WeakMap,F=new WeakMap,x=new WeakMap,L=new WeakMap,U=new WeakMap,H=new WeakMap,V=new WeakMap,J=new WeakMap,$=new WeakMap,z=new WeakMap,K=new WeakMap,G=new WeakMap,Q=new WeakSet,X=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;C(this,e),j(this,Q),W(this,q,{writable:!0,value:void 0}),N(this,"config",void 0),W(this,F,{writable:!0,value:{havePermiss:{},noPermiss:{}}}),N(this,"timer",0),W(this,x,{writable:!0,value:void 0}),W(this,L,{writable:!0,value:500}),W(this,U,{writable:!0,value:{config:{attributes:!0,childList:!0,subtree:!0,characterData:!1},func:function(e,t,r){S(e)}}}),W(this,H,{writable:!0,value:"app"}),W(this,V,{writable:!0,value:null}),W(this,J,{writable:!0,value:i.SET_TIMEOUT}),W(this,$,{writable:!0,value:null}),W(this,z,{writable:!0,value:"1.1.0"}),W(this,K,{writable:!0,value:!1}),W(this,G,{writable:!0,value:[]}),t&&(this.config=t,B(this,q,t)),B(this,$,k())}var t,r;return t=e,r=[{key:"setPlan",value:function(e){return A(this,K)?(c(a),this):(B(this,J,e),this)}},{key:"setHavePermissData",value:function(e){return A(this,K)?(c(a),this):(d.call(this,e),this)}},{key:"setNoPermissData",value:function(e){return A(this,K)?(c(a),this):(v.call(this,e),this)}},{key:"setSpecialPermissData",value:function(e){return A(this,K)?(c(a),this):(b.call(this,e),this)}},{key:"start",value:function(e){B(this,K,!0),B(this,F,function(e,t){var r;(r=t).havePermiss.constructor===Array?r.noPermiss.constructor===Array?r.specialPermiss.constructor!==Array&&u("specail permission 必须为一个数组"):u("no permission 必须为一个数组"):u("have permission 必须为一个数组");var i=e.havePermiss,n=e.noPermiss,s=e.specialPermiss,o={},a={},l={},c=function(e,t){return e.reduce((function(e,r){return!t||t.call(r,e)?(e[r.routerPath]?e[r.routerPath].push(r):e[r.routerPath]=[r],e):e}),{})};return i.length>0&&n.length>0?(i.forEach((function(e){for(var t=!1,r=0;r<n.length;r++){if(e.routerPath===n[r].routerPath&&e.eleIdOrClass===n[r].eleIdOrClass&&!n[r].isSame){t=!0,n[r].isSame=!0;break}n[r].isSame||(n[r].isSame=!1)}t||(o[e.routerPath]?o[e.routerPath].push(e):o[e.routerPath]=[e])})),a=c(n,(function(e){return!this.isSame}))):(i.length>0&&(o=c(i)),n.length>0&&(a=c(n))),s.length>0&&(l=c(s)),{havePermiss:o,noPermiss:a,specialPermiss:l}}(A(this,q),this.config));try{(function(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r})(this,Q,Y).call(this,e)}catch(e){console.error("err:",e)}return this}},{key:"reload",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return B(this,K,!0),this.start(e||A(this,x)),this}},{key:"stop",value:function(){switch(B(this,K,!1),A(this,J)){case i.SET_TIMEOUT:clearTimeout(this.timer);break;case i.OB_SERVER:A(this,V).disconnect()}return this}},{key:"clear",value:function(){}},{key:"permissionCache",get:function(){return A(this,q)}},{key:"getSdkInfo",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t={version:A(this,z),plan:A(this,J),checkPlan:A(this,$),config:this.config,diffResult:A(this,F),cachePermission:A(this,q)};return e?JSON.stringify(t):t}}],r&&M(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Y(e){B(this,x,e);var t,r=this.config.plan,s=A(this,L),o=this.config.actionOrder.length?this.config.actionOrder:Reflect.ownKeys(n);if(r&&A(this,$)[r]&&B(this,J,r),B(this,G,o),this.config.actionOrder=o,s=e&&e.millisec?e.millisec:s,t=e&&e.obElem?e.obElem:A(this,H),e.obServerConfig){var a=e.obServerConfig;A(this,U).config={attributes:!R(a.attributes)||a.attributes,childList:!R(a.childList)||a.childList,subtree:!R(a.subtree)||a.subtree,characterData:!!R(a.characterData)&&a.characterData}}switch(A(this,J)){case i.OB_SERVER:A(this,V)||B(this,V,new MutationObserver(A(this,U).func.bind(this,{permissionDiffResult:A(this,F),millisec:s,delay:e.delay?e.delay:A(this,L),permissionCache:A(this,q),actionOrder:A(this,G)}))),A(this,V).observe(document.getElementById(t),A(this,U).config);break;case i.SET_TIMEOUT:default:this.timer=T.call(this,A(this,F),s,A(this,q),A(this,G))}}var Z,ee,te=(Z=null,ee=r,function(e){return Z||(ee=Object.assign(ee,e),Z=new X(ee))}),re=function(){return JSON.parse(JSON.stringify(s))},ie=function(){return JSON.parse(JSON.stringify(o))};return t})()));