@weaveui/web 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +12 -12
- package/README.md +4 -6
- package/THIRD_PARTY_NOTICES +2 -2
- package/dist/apm-log.umd.cjs +1 -1
- package/dist/business/apm-log/types.d.ts +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.es.js +118 -118
- package/dist/index.umd.cjs +1 -1
- package/dist/monitor.es.js +14 -14
- package/dist/monitor.umd.cjs +1 -1
- package/dist/permission.umd.cjs +1 -1
- package/dist/upload-cos.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/permission.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(d,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],c):(d=typeof globalThis<"u"?globalThis:d||self,c(d.ElementCustomUIPermission={},d.Vue))})(this,function(d,c){"use strict";var it=Object.defineProperty;var st=(d,c,g)=>c in d?it(d,c,{enumerable:!0,configurable:!0,writable:!0,value:g}):d[c]=g;var l=(d,c,g)=>st(d,typeof c!="symbol"?c+"":c,g);const g="permissionPluginClass";function h(t){return t===void 0?"":String(t).trim()}function y(t){const n=(Array.isArray(t)?t:[t]).flatMap(r=>{if(typeof r=="string")return r.split(",").map(a=>a.trim());if(typeof r=="number")return[String(r)];if(r&&typeof r=="object"&&"pageId"in r){const a=r.pageId;return typeof a=="string"||typeof a=="number"?[String(a).trim()]:[]}return[]});return[...new Set(n.filter(Boolean))]}function P(t){return t===!0||t===1||t==="1"}function p(t){var e;return P((e=t.extraContent)==null?void 0:e.isPsMg)}function f(t){return Array.isArray(t.children)?t.children:[]}function A(t){return{...t??{}}}function w(t){return{...t,extraContent:A(t.extraContent),...t.parentIds?{parentIds:[...t.parentIds]}:{},children:f(t).map(e=>w(e))}}function x(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()){const e=Number(t);return Number.isFinite(e)?e:0}return 0}function E(t){if(!t)return 0;const e=Date.parse(t);return Number.isFinite(e)?e:0}function I(t){return t.sort((e,n)=>{const r=x(e.sort)-x(n.sort);return r!==0?r:E(e.createTime)-E(n.createTime)})}function O(t){const e=[],n=(r,a,i)=>{for(const o of r){const s=w(o),u=h(s.pageId);a.length>0&&(s.parentIds=[...a]),Number(s.type)===2&&i===!1&&(s.extraContent={...s.extraContent,isPsMg:0}),e.push(s),n(f(s),u?[...a,u]:a,p(s))}};return n(t,[],null),e}function L(t){const e=A(t.extraContent);return{...e,path:typeof t.routingAddress=="string"?t.routingAddress:"",name:typeof e.assemblyName=="string"?e.assemblyName:h(t.pageId),component:typeof e.assemblyAddress=="string"?e.assemblyAddress:"",meta:{title:typeof t.pageName=="string"?t.pageName:"",icon:typeof t.icon=="string"?t.icon:""},id:h(t.pageId),eventIdList:Array.isArray(t.eventIdList)?[...t.eventIdList]:[],...t.createTime?{createTime:t.createTime}:{},...t.isShow!==void 0?{isShow:t.isShow}:{},...t.sort!==void 0?{sort:t.sort}:{},...t.type!==void 0?{type:t.type}:{},...t.updateTime?{updateTime:t.updateTime}:{},children:[]}}function S(t){var n;const e=(n=t.extraContent)==null?void 0:n.menuStatus;return e===void 0||P(e)}function R(t,e){var o;if(!p(t))return!0;const n=f(t);if(P((o=t.extraContent)==null?void 0:o.isBigScreen))return e.has(h(t.pageId))&&S(t);if(n.length===0)return!1;const r=n.filter(s=>{var u;return P((u=s.extraContent)==null?void 0:u.isRelateParent)});if(r.length>0)return r.some(s=>!p(s)||e.has(h(s.pageId)))&&S(t);const a=n.every(s=>e.has(h(s.pageId))),i=n.every(s=>!p(s));return(a||i)&&S(t)}function k(t,e){const n=new Set(e),r=a=>{const i=[];for(const o of a){const s=Number(o.type);if(s===0){const u=r(f(o));if(u.length>0){const v=L(o);v.children=u,i.push(v)}continue}s!==1||!R(o,n)||i.push(L(o))}return I(i)};return r(t)}function z(t){const e=n=>{const r=[];for(const a of n){if(!p(a))continue;const i=w(a);i.children=e(f(a)),r.push(i)}return I(r)};return e(t)}function B(t){const e=n=>{const r=n.map(a=>{const i=w(a);return i.children=e(f(a)),i});return I(r)};return e(t)}function M(t){const e=n=>{const r=[];for(const a of n){const i=e(f(a));if(!p(a)||i.length>0){const o=w(a);o.children=i,r.push(o)}}return r};return e(t)}function _(t){const e=[],n=r=>{var a;for(const i of r)Number(i.type)===1&&P(i.isShow)&&P((a=i.extraContent)==null?void 0:a.isCache)&&e.push(w(i)),n(f(i))};return n(t),e}function J(t,e){const n=new Set,r=a=>{for(const i of a){const o=f(i);if(o.length>0){r(o);continue}(!p(i)||e.has(h(i.pageId)))&&y(i.eventIdList).forEach(s=>n.add(s))}};return r(t),[...n]}function N(t){if(typeof t=="boolean")return t;if(typeof t=="function")try{return!!t()}catch{return!1}return y(t).length===0}const U=c.defineComponent({name:"Permission",props:{sign:{type:[String,Number,Boolean,Array,Function],default:""}},setup(t,{slots:e}){const n=c.inject(g,null),r=c.ref(N(t.sign));let a=0;const i=async()=>{const o=++a,s=n?await n.checkPermission(t.sign):N(t.sign);o===a&&(r.value=s)};return c.watch([()=>t.sign,()=>(n==null?void 0:n.revision.value)??0],()=>{i()},{immediate:!0,deep:!0}),()=>{var o,s,u;return c.h("div",r.value?(o=e.default)==null?void 0:o.call(e):((s=e.emptySlot)==null?void 0:s.call(e))??((u=e.fallback)==null?void 0:u.call(e)))}}});function b(t){return typeof t=="object"&&t!==null}function D(t){return JSON.parse(JSON.stringify(t))}function V(){if(typeof window>"u")return null;try{return window.localStorage}catch{return null}}function q(){return typeof window>"u"?null:window.indexedDB??null}function G(t){if(!b(t))return{cfg:{},data:{}};const e=b(t.cfg)?t.cfg:{},n=b(t.data)?t.data:{};return{...t,cfg:Object.fromEntries(Object.entries(e).filter(([,r])=>b(r))),data:Object.fromEntries(Object.entries(n).filter(([,r])=>b(r)))}}function $(t){return new Promise((e,n)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>n(t.error)})}function W(t){return new Promise((e,n)=>{t.oncomplete=()=>e(),t.onerror=()=>n(t.error),t.onabort=()=>n(t.error)})}class H{constructor(e,n={}){l(this,"memoryPayload",{cfg:{},data:{}});l(this,"storage");l(this,"indexedDb");l(this,"dbPromise");this.dbName=e,this.storage=n.storage===void 0?V():n.storage,this.indexedDb=n.indexedDB===void 0?q():n.indexedDB,this.dbPromise=this.openDatabase()}get supportsIndexedDb(){return this.indexedDb!==null}async ready(){await this.dbPromise}async read(e,n){const r=await this.dbPromise;if(r)try{const a=r.transaction(e,"readonly"),i=await $(a.objectStore(e).get(n));if(b(i))return D(i)}catch{}return this.readFallback(e,n)}async write(e,n){const r=await this.dbPromise;if(r)try{const a=r.transaction(e,"readwrite");a.objectStore(e).put(D(n)),await W(a);return}catch{}this.writeFallback(e,n)}async openDatabase(){if(!this.indexedDb)return null;try{return await new Promise(e=>{var r;const n=(r=this.indexedDb)==null?void 0:r.open(this.dbName,1);if(!n){e(null);return}n.onupgradeneeded=()=>{const a=n.result;for(const i of["cfg","data"])a.objectStoreNames.contains(i)||a.createObjectStore(i,{keyPath:"appChannelId"})},n.onsuccess=()=>e(n.result),n.onerror=()=>e(null),n.onblocked=()=>e(null)})}catch{return null}}readFallback(e,n){const a=this.getFallbackPayload()[e][n];return a?D(a):null}writeFallback(e,n){const r=this.getFallbackPayload();if(r[e][n.appChannelId]=D(n),this.memoryPayload.cfg=r.cfg,this.memoryPayload.data=r.data,!!this.storage)try{this.storage.setItem("permissionPluginData",JSON.stringify(r))}catch{}}getFallbackPayload(){if(!this.storage)return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}};try{const e=this.storage.getItem("permissionPluginData");if(!e)return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}};const n=G(JSON.parse(e));return this.memoryPayload.cfg=n.cfg,this.memoryPayload.data=n.data,n}catch{return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}}}}}function m(t){return typeof t=="object"&&t!==null}function j(t){return t==="cfg"?"cfg":"data"}function Y(t){return(Array.isArray(t)?t:t?[t]:[]).filter(n=>!!n&&typeof n.appChannelId=="string"&&typeof n.dataChannelId=="string"&&typeof n.prefixUrl=="string").map(n=>({...n}))}function K(t){var n,r,a;const e=Y(t.apiCfg);return{apiCfg:e,dbName:((n=t.dbName)==null?void 0:n.trim())||"permissionPluginDb",projectAppChannelId:((r=t.projectAppChannelId)==null?void 0:r.trim())||((a=e[0])==null?void 0:a.appChannelId)||""}}function Q(){return typeof window>"u"||typeof window.fetch!="function"?null:window.fetch.bind(window)}function X(t){return`${t.replace(/\/+$/,"")}/getPageTree`}function Z(t){if(Array.isArray(t))return t.filter(m);if(!m(t)||!Array.isArray(t.data))return[];const e=t.code;return e===void 0||e==="00000"||e===0||e===200||e==="200"?t.data.filter(m):[]}function C(t){return m(t)&&"eventIdList"in t?y(t.eventIdList):y(t)}function tt(t,e){return t?e?t[e]??[]:t:[]}class F{constructor(e={}){l(this,"ifSupportIndexDb");l(this,"pluginCfg");l(this,"revision",c.ref(0));l(this,"fetcher");l(this,"storage");l(this,"initialization");this.pluginCfg=K(e),this.storage=new H(this.pluginCfg.dbName,{storage:e.storage,indexedDB:e.indexedDB}),this.ifSupportIndexDb=this.storage.supportsIndexedDb,this.fetcher=e.fetcher??Q(),this.initialization=this.initialize(e.autoSync!==!1).catch(()=>{})}async whenReady(){await this.initialization}async excuteDbLogic(){await this.whenReady()}async excuteLocalStorageLogic(){await this.whenReady()}async loopApiCfgListForGetData(){await Promise.allSettled(this.pluginCfg.apiCfg.map(async e=>{await this.setData(e.appChannelId,"cfg",e),await this.getDataFromApi(e)}))}async getDataFromApi(e){const n=this.fetcher;if(!n)return[];try{const r=await n(X(e.prefixUrl),{method:"POST",headers:{"Content-Type":"application/json","x-app_channel_id":e.appChannelId,"x-data_channel_id":e.dataChannelId},body:JSON.stringify(e)}),a=Z(await r.json());return await this.generateSaveToStorageDataAndSave(e.appChannelId,a),a}catch{return[]}}parseStorage(e){return JSON.parse(e)}async generateSaveToStorageDataAndSave(e,n){await this.setData(e,"data",{pageEventData:[...n],horizontalPageEventData:O(n)})}async getPageEventDataFromApiNew(){await this.loopApiCfgListForGetData()}async getPageEventDataFromApiSync(e){return await this.setData(e.appChannelId,"cfg",e),this.getDataFromApi(e)}async getData(e=this.pluginCfg.projectAppChannelId,n,r=""){await this.storage.ready();const a=await this.storage.read(j(n),e);return tt(a,r)}async setData(e=this.pluginCfg.projectAppChannelId,n,r,a){await this.storage.ready();const i=j(n),s={...await this.storage.read(i,e)??{appChannelId:e},appChannelId:e};a?s[a]=r:m(r)?Object.assign(s,r):s.value=r,await this.storage.write(i,s),i==="data"&&this.bumpRevision()}async getPageEventDataFromDbOrLocal(e=this.pluginCfg.projectAppChannelId){await this.whenReady();const n=await this.getData(e,"data","pageEventData");return Array.isArray(n)?n.filter(m):[]}async getHorizontalPageEventData(e=this.pluginCfg.projectAppChannelId){await this.whenReady();const n=await this.getData(e,"data","horizontalPageEventData");return Array.isArray(n)?n.filter(m):[]}async setEventIdSync(e,n){await this.setData(e,"data",C(n),"eventIdList")}async getNeedCacheRouter(e=this.pluginCfg.projectAppChannelId){return _(await this.getPageEventDataFromDbOrLocal(e))}async generateRouterNew(e=this.pluginCfg.projectAppChannelId){const[n,r]=await Promise.all([this.getPageEventDataFromDbOrLocal(e),this.getData(e,"data","eventIdList")]);return k(n,C(r))}async generatePermissionMgTree(e=this.pluginCfg.projectAppChannelId){return z(await this.getPageEventDataFromDbOrLocal(e))}async generatePermissionMgTreeForShop(e=this.pluginCfg.projectAppChannelId,n){return B(await this.getPageEventDataFromDbOrLocal(e))}async getApiEventList(e=this.pluginCfg.projectAppChannelId,n=[]){const[r,a]=await Promise.all([this.getPageEventDataFromDbOrLocal(e),this.getData(e,"data","eventIdList")]),i=n.length>0?y(n):C(a);return J(r,new Set(i))}async getNoPmPageTree(e=this.pluginCfg.projectAppChannelId){return M(await this.getPageEventDataFromDbOrLocal(e))}async checkPermission(e){if(typeof e=="boolean")return e;if(typeof e=="function")try{return!!e()}catch{return!1}const n=y(e);if(n.length===0)return!0;const r=this.pluginCfg.projectAppChannelId,[a,i]=await Promise.all([this.getData(r,"data","eventIdList"),this.getHorizontalPageEventData(r)]),o=new Set(C(a));return n.some(s=>o.has(s))?!0:i.some(s=>n.includes(h(s.pageId))&&!p(s))}async initialize(e){await this.storage.ready(),await Promise.all(this.pluginCfg.apiCfg.map(n=>this.setData(n.appChannelId,"cfg",n))),e&&await this.getPageEventDataFromApiNew()}bumpRevision(){this.revision.value+=1}}function et(t){if(typeof t=="boolean")return t;if(typeof t=="function")try{return!!t()}catch{return!1}return y(t).length===0}function nt(t){const e=new WeakMap;function n(a){var o,s;return((s=(o=a.instance)==null?void 0:o.$)==null?void 0:s.appContext.provides[g])??t}const r=async(a,i,o)=>{const s=(e.get(a)??0)+1;e.set(a,s);const u=n(o),v=u?await u.checkPermission(i):et(i);s===e.get(a)&&!v&&a.remove()};return{mounted(a,i){r(a,i.value,i)},updated(a,i){r(a,i.value,i)}}}const T=new WeakMap;function rt(t,e={}){const n=T.get(t);if(n)return n;const r=e.permissionPluginClass??new F(e);T.set(t,r),t.provide(g,r),t.component("Permission",U),t.directive("permission",nt(r));const a=t.config.globalProperties;return a.permissionPluginClass=r,r}const at={PermissionPluginClass:F,install(t,e={}){rt(t,e)}};d.default=at,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(d,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],c):(d=typeof globalThis<"u"?globalThis:d||self,c(d.WeaveUIPermission={},d.Vue))})(this,function(d,c){"use strict";var it=Object.defineProperty;var st=(d,c,g)=>c in d?it(d,c,{enumerable:!0,configurable:!0,writable:!0,value:g}):d[c]=g;var l=(d,c,g)=>st(d,typeof c!="symbol"?c+"":c,g);const g="permissionPluginClass";function h(t){return t===void 0?"":String(t).trim()}function y(t){const n=(Array.isArray(t)?t:[t]).flatMap(r=>{if(typeof r=="string")return r.split(",").map(a=>a.trim());if(typeof r=="number")return[String(r)];if(r&&typeof r=="object"&&"pageId"in r){const a=r.pageId;return typeof a=="string"||typeof a=="number"?[String(a).trim()]:[]}return[]});return[...new Set(n.filter(Boolean))]}function P(t){return t===!0||t===1||t==="1"}function p(t){var e;return P((e=t.extraContent)==null?void 0:e.isPsMg)}function f(t){return Array.isArray(t.children)?t.children:[]}function A(t){return{...t??{}}}function w(t){return{...t,extraContent:A(t.extraContent),...t.parentIds?{parentIds:[...t.parentIds]}:{},children:f(t).map(e=>w(e))}}function x(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"&&t.trim()){const e=Number(t);return Number.isFinite(e)?e:0}return 0}function E(t){if(!t)return 0;const e=Date.parse(t);return Number.isFinite(e)?e:0}function I(t){return t.sort((e,n)=>{const r=x(e.sort)-x(n.sort);return r!==0?r:E(e.createTime)-E(n.createTime)})}function O(t){const e=[],n=(r,a,i)=>{for(const o of r){const s=w(o),u=h(s.pageId);a.length>0&&(s.parentIds=[...a]),Number(s.type)===2&&i===!1&&(s.extraContent={...s.extraContent,isPsMg:0}),e.push(s),n(f(s),u?[...a,u]:a,p(s))}};return n(t,[],null),e}function L(t){const e=A(t.extraContent);return{...e,path:typeof t.routingAddress=="string"?t.routingAddress:"",name:typeof e.assemblyName=="string"?e.assemblyName:h(t.pageId),component:typeof e.assemblyAddress=="string"?e.assemblyAddress:"",meta:{title:typeof t.pageName=="string"?t.pageName:"",icon:typeof t.icon=="string"?t.icon:""},id:h(t.pageId),eventIdList:Array.isArray(t.eventIdList)?[...t.eventIdList]:[],...t.createTime?{createTime:t.createTime}:{},...t.isShow!==void 0?{isShow:t.isShow}:{},...t.sort!==void 0?{sort:t.sort}:{},...t.type!==void 0?{type:t.type}:{},...t.updateTime?{updateTime:t.updateTime}:{},children:[]}}function S(t){var n;const e=(n=t.extraContent)==null?void 0:n.menuStatus;return e===void 0||P(e)}function R(t,e){var o;if(!p(t))return!0;const n=f(t);if(P((o=t.extraContent)==null?void 0:o.isBigScreen))return e.has(h(t.pageId))&&S(t);if(n.length===0)return!1;const r=n.filter(s=>{var u;return P((u=s.extraContent)==null?void 0:u.isRelateParent)});if(r.length>0)return r.some(s=>!p(s)||e.has(h(s.pageId)))&&S(t);const a=n.every(s=>e.has(h(s.pageId))),i=n.every(s=>!p(s));return(a||i)&&S(t)}function k(t,e){const n=new Set(e),r=a=>{const i=[];for(const o of a){const s=Number(o.type);if(s===0){const u=r(f(o));if(u.length>0){const v=L(o);v.children=u,i.push(v)}continue}s!==1||!R(o,n)||i.push(L(o))}return I(i)};return r(t)}function z(t){const e=n=>{const r=[];for(const a of n){if(!p(a))continue;const i=w(a);i.children=e(f(a)),r.push(i)}return I(r)};return e(t)}function B(t){const e=n=>{const r=n.map(a=>{const i=w(a);return i.children=e(f(a)),i});return I(r)};return e(t)}function M(t){const e=n=>{const r=[];for(const a of n){const i=e(f(a));if(!p(a)||i.length>0){const o=w(a);o.children=i,r.push(o)}}return r};return e(t)}function _(t){const e=[],n=r=>{var a;for(const i of r)Number(i.type)===1&&P(i.isShow)&&P((a=i.extraContent)==null?void 0:a.isCache)&&e.push(w(i)),n(f(i))};return n(t),e}function J(t,e){const n=new Set,r=a=>{for(const i of a){const o=f(i);if(o.length>0){r(o);continue}(!p(i)||e.has(h(i.pageId)))&&y(i.eventIdList).forEach(s=>n.add(s))}};return r(t),[...n]}function N(t){if(typeof t=="boolean")return t;if(typeof t=="function")try{return!!t()}catch{return!1}return y(t).length===0}const U=c.defineComponent({name:"Permission",props:{sign:{type:[String,Number,Boolean,Array,Function],default:""}},setup(t,{slots:e}){const n=c.inject(g,null),r=c.ref(N(t.sign));let a=0;const i=async()=>{const o=++a,s=n?await n.checkPermission(t.sign):N(t.sign);o===a&&(r.value=s)};return c.watch([()=>t.sign,()=>(n==null?void 0:n.revision.value)??0],()=>{i()},{immediate:!0,deep:!0}),()=>{var o,s,u;return c.h("div",r.value?(o=e.default)==null?void 0:o.call(e):((s=e.emptySlot)==null?void 0:s.call(e))??((u=e.fallback)==null?void 0:u.call(e)))}}});function b(t){return typeof t=="object"&&t!==null}function D(t){return JSON.parse(JSON.stringify(t))}function V(){if(typeof window>"u")return null;try{return window.localStorage}catch{return null}}function q(){return typeof window>"u"?null:window.indexedDB??null}function G(t){if(!b(t))return{cfg:{},data:{}};const e=b(t.cfg)?t.cfg:{},n=b(t.data)?t.data:{};return{...t,cfg:Object.fromEntries(Object.entries(e).filter(([,r])=>b(r))),data:Object.fromEntries(Object.entries(n).filter(([,r])=>b(r)))}}function W(t){return new Promise((e,n)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>n(t.error)})}function $(t){return new Promise((e,n)=>{t.oncomplete=()=>e(),t.onerror=()=>n(t.error),t.onabort=()=>n(t.error)})}class H{constructor(e,n={}){l(this,"memoryPayload",{cfg:{},data:{}});l(this,"storage");l(this,"indexedDb");l(this,"dbPromise");this.dbName=e,this.storage=n.storage===void 0?V():n.storage,this.indexedDb=n.indexedDB===void 0?q():n.indexedDB,this.dbPromise=this.openDatabase()}get supportsIndexedDb(){return this.indexedDb!==null}async ready(){await this.dbPromise}async read(e,n){const r=await this.dbPromise;if(r)try{const a=r.transaction(e,"readonly"),i=await W(a.objectStore(e).get(n));if(b(i))return D(i)}catch{}return this.readFallback(e,n)}async write(e,n){const r=await this.dbPromise;if(r)try{const a=r.transaction(e,"readwrite");a.objectStore(e).put(D(n)),await $(a);return}catch{}this.writeFallback(e,n)}async openDatabase(){if(!this.indexedDb)return null;try{return await new Promise(e=>{var r;const n=(r=this.indexedDb)==null?void 0:r.open(this.dbName,1);if(!n){e(null);return}n.onupgradeneeded=()=>{const a=n.result;for(const i of["cfg","data"])a.objectStoreNames.contains(i)||a.createObjectStore(i,{keyPath:"appChannelId"})},n.onsuccess=()=>e(n.result),n.onerror=()=>e(null),n.onblocked=()=>e(null)})}catch{return null}}readFallback(e,n){const a=this.getFallbackPayload()[e][n];return a?D(a):null}writeFallback(e,n){const r=this.getFallbackPayload();if(r[e][n.appChannelId]=D(n),this.memoryPayload.cfg=r.cfg,this.memoryPayload.data=r.data,!!this.storage)try{this.storage.setItem("permissionPluginData",JSON.stringify(r))}catch{}}getFallbackPayload(){if(!this.storage)return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}};try{const e=this.storage.getItem("permissionPluginData");if(!e)return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}};const n=G(JSON.parse(e));return this.memoryPayload.cfg=n.cfg,this.memoryPayload.data=n.data,n}catch{return{cfg:{...this.memoryPayload.cfg},data:{...this.memoryPayload.data}}}}}function m(t){return typeof t=="object"&&t!==null}function j(t){return t==="cfg"?"cfg":"data"}function Y(t){return(Array.isArray(t)?t:t?[t]:[]).filter(n=>!!n&&typeof n.appChannelId=="string"&&typeof n.dataChannelId=="string"&&typeof n.prefixUrl=="string").map(n=>({...n}))}function K(t){var n,r,a;const e=Y(t.apiCfg);return{apiCfg:e,dbName:((n=t.dbName)==null?void 0:n.trim())||"permissionPluginDb",projectAppChannelId:((r=t.projectAppChannelId)==null?void 0:r.trim())||((a=e[0])==null?void 0:a.appChannelId)||""}}function Q(){return typeof window>"u"||typeof window.fetch!="function"?null:window.fetch.bind(window)}function X(t){return`${t.replace(/\/+$/,"")}/getPageTree`}function Z(t){if(Array.isArray(t))return t.filter(m);if(!m(t)||!Array.isArray(t.data))return[];const e=t.code;return e===void 0||e==="00000"||e===0||e===200||e==="200"?t.data.filter(m):[]}function C(t){return m(t)&&"eventIdList"in t?y(t.eventIdList):y(t)}function tt(t,e){return t?e?t[e]??[]:t:[]}class F{constructor(e={}){l(this,"ifSupportIndexDb");l(this,"pluginCfg");l(this,"revision",c.ref(0));l(this,"fetcher");l(this,"storage");l(this,"initialization");this.pluginCfg=K(e),this.storage=new H(this.pluginCfg.dbName,{storage:e.storage,indexedDB:e.indexedDB}),this.ifSupportIndexDb=this.storage.supportsIndexedDb,this.fetcher=e.fetcher??Q(),this.initialization=this.initialize(e.autoSync!==!1).catch(()=>{})}async whenReady(){await this.initialization}async excuteDbLogic(){await this.whenReady()}async excuteLocalStorageLogic(){await this.whenReady()}async loopApiCfgListForGetData(){await Promise.allSettled(this.pluginCfg.apiCfg.map(async e=>{await this.setData(e.appChannelId,"cfg",e),await this.getDataFromApi(e)}))}async getDataFromApi(e){const n=this.fetcher;if(!n)return[];try{const r=await n(X(e.prefixUrl),{method:"POST",headers:{"Content-Type":"application/json","x-app_channel_id":e.appChannelId,"x-data_channel_id":e.dataChannelId},body:JSON.stringify(e)}),a=Z(await r.json());return await this.generateSaveToStorageDataAndSave(e.appChannelId,a),a}catch{return[]}}parseStorage(e){return JSON.parse(e)}async generateSaveToStorageDataAndSave(e,n){await this.setData(e,"data",{pageEventData:[...n],horizontalPageEventData:O(n)})}async getPageEventDataFromApiNew(){await this.loopApiCfgListForGetData()}async getPageEventDataFromApiSync(e){return await this.setData(e.appChannelId,"cfg",e),this.getDataFromApi(e)}async getData(e=this.pluginCfg.projectAppChannelId,n,r=""){await this.storage.ready();const a=await this.storage.read(j(n),e);return tt(a,r)}async setData(e=this.pluginCfg.projectAppChannelId,n,r,a){await this.storage.ready();const i=j(n),s={...await this.storage.read(i,e)??{appChannelId:e},appChannelId:e};a?s[a]=r:m(r)?Object.assign(s,r):s.value=r,await this.storage.write(i,s),i==="data"&&this.bumpRevision()}async getPageEventDataFromDbOrLocal(e=this.pluginCfg.projectAppChannelId){await this.whenReady();const n=await this.getData(e,"data","pageEventData");return Array.isArray(n)?n.filter(m):[]}async getHorizontalPageEventData(e=this.pluginCfg.projectAppChannelId){await this.whenReady();const n=await this.getData(e,"data","horizontalPageEventData");return Array.isArray(n)?n.filter(m):[]}async setEventIdSync(e,n){await this.setData(e,"data",C(n),"eventIdList")}async getNeedCacheRouter(e=this.pluginCfg.projectAppChannelId){return _(await this.getPageEventDataFromDbOrLocal(e))}async generateRouterNew(e=this.pluginCfg.projectAppChannelId){const[n,r]=await Promise.all([this.getPageEventDataFromDbOrLocal(e),this.getData(e,"data","eventIdList")]);return k(n,C(r))}async generatePermissionMgTree(e=this.pluginCfg.projectAppChannelId){return z(await this.getPageEventDataFromDbOrLocal(e))}async generatePermissionMgTreeForShop(e=this.pluginCfg.projectAppChannelId,n){return B(await this.getPageEventDataFromDbOrLocal(e))}async getApiEventList(e=this.pluginCfg.projectAppChannelId,n=[]){const[r,a]=await Promise.all([this.getPageEventDataFromDbOrLocal(e),this.getData(e,"data","eventIdList")]),i=n.length>0?y(n):C(a);return J(r,new Set(i))}async getNoPmPageTree(e=this.pluginCfg.projectAppChannelId){return M(await this.getPageEventDataFromDbOrLocal(e))}async checkPermission(e){if(typeof e=="boolean")return e;if(typeof e=="function")try{return!!e()}catch{return!1}const n=y(e);if(n.length===0)return!0;const r=this.pluginCfg.projectAppChannelId,[a,i]=await Promise.all([this.getData(r,"data","eventIdList"),this.getHorizontalPageEventData(r)]),o=new Set(C(a));return n.some(s=>o.has(s))?!0:i.some(s=>n.includes(h(s.pageId))&&!p(s))}async initialize(e){await this.storage.ready(),await Promise.all(this.pluginCfg.apiCfg.map(n=>this.setData(n.appChannelId,"cfg",n))),e&&await this.getPageEventDataFromApiNew()}bumpRevision(){this.revision.value+=1}}function et(t){if(typeof t=="boolean")return t;if(typeof t=="function")try{return!!t()}catch{return!1}return y(t).length===0}function nt(t){const e=new WeakMap;function n(a){var o,s;return((s=(o=a.instance)==null?void 0:o.$)==null?void 0:s.appContext.provides[g])??t}const r=async(a,i,o)=>{const s=(e.get(a)??0)+1;e.set(a,s);const u=n(o),v=u?await u.checkPermission(i):et(i);s===e.get(a)&&!v&&a.remove()};return{mounted(a,i){r(a,i.value,i)},updated(a,i){r(a,i.value,i)}}}const T=new WeakMap;function rt(t,e={}){const n=T.get(t);if(n)return n;const r=e.permissionPluginClass??new F(e);T.set(t,r),t.provide(g,r),t.component("Permission",U),t.directive("permission",nt(r));const a=t.config.globalProperties;return a.permissionPluginClass=r,r}const at={PermissionPluginClass:F,install(t,e={}){rt(t,e)}};d.default=at,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/upload-cos.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(d,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(d=typeof globalThis<"u"?globalThis:d||self,a(d.
|
|
1
|
+
(function(d,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(d=typeof globalThis<"u"?globalThis:d||self,a(d.WeaveUIUploadCos={},d.Vue))})(this,function(d,a){"use strict";const _=new WeakMap;function H(r,i){const c=r,s=i;let l=_.get(r);return l||(l=new Set,_.set(r,l),c.install=S=>{l==null||l.forEach(m=>{S.component(m,r)})}),l.add(s),c}function E(){const r=globalThis.crypto;if(typeof(r==null?void 0:r.randomUUID)=="function")return r.randomUUID().replace(/-/g,"");if(typeof(r==null?void 0:r.getRandomValues)=="function"){const i=new Uint32Array(4);return r.getRandomValues(i),Array.from(i,c=>c.toString(16).padStart(8,"0")).join("")}return`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}function J(r){const i=Number.isFinite(r)&&r>0?r:0;return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(2)} KB`:i<1024*1024*1024?`${(i/(1024*1024)).toFixed(2)} MB`:`${(i/(1024*1024*1024)).toFixed(2)} GB`}function G(r){var c;const i=(c=r.split(".").pop())==null?void 0:c.trim().toLowerCase();return!i||i===r.toLowerCase()?"bin":i.replace(/[^a-z0-9]/g,"")||"bin"}function Q(r,i){const c=Y(r,"easy-oil"),s=E(),l=s.slice(0,12);return{fileId:s,fileName:`${c}_${Date.now()}_${l}.${i}`}}function X(r){if(!r)return"";const i=r.trim().replace(/^\/+/,"").replace(/\/{2,}/g,"/");return i&&!i.endsWith("/")?`${i}/`:i}function x(r,i){const c=i.replace(/^\/+/,""),s=r.replace(/\/+$/,"");return s?`${s}/${c}`:`/${c}`}function Y(r,i){return r.trim().replace(/[\\/\u0000-\u001f]+/g,"-").replace(/\s+/g,"-")||i}const Z={class:"wui-upload-cos"},ee=["accept","multiple"],te={key:0,class:"wui-upload-cos__toast",role:"status"},z=H(a.defineComponent({name:"UploadCos",__name:"UploadCos",props:{appChanneId:{default:""},multiple:{type:Boolean,default:!0},accept:{default:""},baseUrl:{default:""},limit:{default:0},overLoaderList:{default:()=>[]},fileType:{default:"file"},appName:{default:"qingyiweb"},isUseCos:{type:Boolean,default:!0},defaultUploadConfig:{default:()=>({})}},emits:["uploadfiles","errorUpLoad","overLimitTips","update:overLoaderList","upload-progress"],setup(r,{expose:i,emit:c}){const s=r,l=c,S=a.ref(),m=a.ref([]),C=a.ref(!1),M=a.ref(""),I=a.ref(!1),g=a.ref({});let h;a.watch(()=>s.overLoaderList,e=>{m.value=Array.from(e??[])},{immediate:!0}),a.onBeforeUnmount(()=>{h&&clearTimeout(h)});function T(e){M.value=e,I.value=!0,h&&clearTimeout(h),h=setTimeout(()=>{I.value=!1,h=void 0},2e3)}function j(){var e;C.value||(e=S.value)==null||e.click()}function ne(e){if(!(!e.url||typeof window>"u"))try{const t=new URL(e.url,window.location.href);if(!["http:","https:","blob:"].includes(t.protocol))return;const n=window.open(t.href,"_blank","noopener,noreferrer");n&&(n.opener=null)}catch{}}async function oe(e){const t=e.target;if(!(t instanceof HTMLInputElement))return;const n=Array.from(t.files??[]);if(!n.length)return;const o=s.limit>0?Math.max(s.limit-m.value.length,0):n.length,u=s.multiple?o:Math.min(o,1),p=n.slice(0,u);if(s.limit>0&&p.length<n.length&&l("overLimitTips"),!!p.length){C.value=!0;try{let U;if(s.isUseCos)try{U=await P()}catch{T("获取上传凭证失败");return}for(const f of p){if(f.size<=0){T(`文件 ${f.name} 无效,大小为 0`);continue}try{U?await B(f,U):await N(f)}catch{}}}finally{t.value="",C.value=!1}}}async function B(e,t){const n=v(e);b(n,e,0);try{const o=t??await P(),u=await re(e,o,n);return b(n,e,100),R(u)}catch(o){throw l("errorUpLoad",o),T("上传失败"),o}finally{K(n)}}async function N(e){const t=v(e),n=o=>b(t,e,o);n(0);try{const o=await le(e,n);return n(100),R(W(o,$(e)))}catch(o){throw l("errorUpLoad",o),T("上传失败"),o}finally{K(t)}}async function P(){if(!s.baseUrl)throw new Error("baseUrl is required.");const e=await k(x(s.baseUrl,"ms-attachment/cos/getAccessInfo"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({_appid:O()})}),t=await D(e,"获取上传凭证失败");if(!F(t,200))throw new Error("获取上传凭证失败");return ue(t.data)}async function re(e,t,n){const o=ce(e),u=G(e.name),{fileId:p,fileName:U}=Q(s.appName,u),f=`${X(t.dir)}${U}`,V=await(await ie(t)).uploadFile({Bucket:t.bucket,Region:t.region,Key:f,Body:e,SliceSize:5*1024*1024,onProgress:({percent:ge})=>{b(n,e,ge*100)}});if(!V.Location)throw new Error("COS 上传未返回文件地址");const q=fe(V.Location),me=await o,he=$(e,{url:q,ext:u,path:`/${f}`,...me});return se({file:e,fileId:p,extension:u,objectKey:f,objectUrl:q,fileData:he})}async function ie(e){const t=await import("cos-js-sdk-v5"),n=ae(t);return new n({SecretId:e.tmpSecretID,SecretKey:e.tmpSecretKey,SecurityToken:e.sessionToken,StartTime:e.startTime,ExpiredTime:e.expiredTime})}function ae(e){const t=w(e)&&"default"in e?e.default:e;if(typeof t!="function")throw new Error("COS SDK 加载失败");return t}async function se(e){if(!s.baseUrl)return e.fileData;const t=await k(x(s.baseUrl,"ms-attachment/cos/object/add"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({_appid:O(),fileMd5:e.fileId,ext:e.extension,size:e.file.size,path:`/${e.objectKey}`,url:e.objectUrl,fileName:e.file.name})}),n=await D(t,"文件元数据保存失败");if(!F(n,200))throw new Error("文件元数据保存失败");const o=L(pe(n.data,"fileURL"));return{...e.fileData,url:o??e.objectUrl,ext:e.extension}}async function le(e,t){const n=s.defaultUploadConfig;if(!de(n))throw new Error("defaultUploadConfig is incomplete.");const o=new FormData;o.append(s.fileType||"file",e);const u=await k(n.uploadUrl,{method:"POST",headers:{token:n.token,yyid:n.yyid,"x-app-channel-id":String(n.appChannelId),"x-data-channel-id":String(n.dataChannelId)},body:o}),p=await D(u,"默认直传失败");if(!F(p,2e4))throw new Error("默认直传失败");return t(100),W(p.data,$(e))}function R(e){const t=[...m.value,e];return m.value=t,l("uploadfiles",e),l("update:overLoaderList",t),e}function b(e,t,n){const o=Math.max(0,Math.min(100,Math.round(n)));g.value={...g.value,[e]:o},l("upload-progress",t,o)}function K(e){const t={...g.value};delete t[e],g.value=t}function v(e){return`${Date.now()}_${e.name}_${E().slice(0,12)}`}function O(){var e;return((e=s.appChanneId)==null?void 0:e.trim())||void 0}function $(e,t={}){return{name:e.name,origin_name:e.name,size:e.size,width:0,height:0,...t}}async function ce(e){if(e.type.startsWith("image/"))return new Promise(t=>{const n=new FileReader;n.onerror=()=>t(void 0),n.onload=()=>{if(typeof n.result!="string"){t(void 0);return}const o=new Image;o.onload=()=>t({width:o.naturalWidth,height:o.naturalHeight}),o.onerror=()=>t(void 0),o.src=n.result},n.readAsDataURL(e)})}async function k(e,t){const n=globalThis.fetch;if(typeof n!="function")throw new Error("浏览器不支持 Fetch。");const o=await n(e,t);if(!o.ok)throw new Error(`上传服务请求失败 (${o.status})`);return o}async function D(e,t){let n;try{n=await e.json()}catch{throw new Error(t)}if(!w(n))throw new Error(t);return n}function F(e,t){const n=e.code;return typeof n!="string"&&typeof n!="number"?!1:String(n)===String(t)}function ue(e){if(!w(e))throw new Error("上传凭证格式无效");return{tmpSecretID:y(e,["tmpSecretID","tmpSecretId","TmpSecretId"]),tmpSecretKey:y(e,["tmpSecretKey","TmpSecretKey"]),sessionToken:y(e,["sessionToken","SessionToken","token","Token"]),bucket:y(e,["bucket","Bucket"]),region:y(e,["region","Region"]),dir:L(e.dir),startTime:A(e.startTime??e.StartTime),expiredTime:A(e.expiredTime??e.ExpiredTime)}}function W(e,t){if(!w(e))throw new Error("上传服务未返回文件信息");return{...t,...e}}function de(e){return!!(e&&e.uploadUrl&&e.token&&e.yyid&&e.appChannelId!==void 0&&e.dataChannelId!==void 0)}function pe(e,t){return w(e)?e[t]:void 0}function L(e){return typeof e=="string"&&e.trim()?e:void 0}function A(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()){const t=Number(e);return Number.isFinite(t)?t:void 0}}function y(e,t){for(const n of t){const o=L(e[n]);if(o)return o}throw new Error("上传凭证缺少必要字段")}function fe(e){return/^https?:\/\//i.test(e)?e:`https://${e.replace(/^\/+/,"")}`}function w(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}return i({triggerUpload:j,handleSingleFileUpload:B,uploadDefault:N,formatFileSize:J}),(e,t)=>(a.openBlock(),a.createElementBlock("div",Z,[a.createElementVNode("input",{ref_key:"fileInput",ref:S,class:"wui-upload-cos__input",type:"file",accept:r.accept,multiple:r.multiple,onChange:oe},null,40,ee),a.renderSlot(e.$slots,"upload-button",{triggerUpload:j,isUploading:C.value}),a.renderSlot(e.$slots,"file-list",{uploadedFiles:m.value,openFile:ne,progressMap:g.value}),I.value?(a.openBlock(),a.createElementBlock("div",te,a.toDisplayString(M.value),1)):a.createCommentVNode("",!0)]))}}),"UploadCos");d.UploadCos=z,d.default=z,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weaveui/web",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.2",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "a Vue 3 component library built on Element Plus.",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"vue",
|
|
9
9
|
"vue3",
|