vome-core 0.0.13 → 0.0.16
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/dist/admin/api/client.js +147 -1
- package/dist/admin/config/plugin-dev.js +1 -1
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/index.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/mitt.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/useCrud.js +59 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/crud/vm-crud.vue +0 -1
- package/dist/admin/crud/vm-search.vue +3 -2
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useBrowser.js +21 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/hooks/useVome.js +11 -1
- package/dist/admin/index.js +54 -1
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/eps.js +33 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/module.js +85 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/router/index.js +68 -1
- package/dist/admin/router/menu-routes.js +113 -1
- package/dist/admin/service/base.js +76 -1
- package/dist/admin/service/index.js +263 -1
- package/dist/admin/stores/app.js +24 -1
- package/dist/admin/stores/tags.js +64 -1
- package/dist/admin/stores/user.js +64 -1
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1,64 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineStore } from "pinia";
|
|
2
|
+
export const useTagsStore = defineStore("tags", {
|
|
3
|
+
state: () => ({
|
|
4
|
+
list: [],
|
|
5
|
+
caches: []
|
|
6
|
+
}),
|
|
7
|
+
actions: {
|
|
8
|
+
add(route) {
|
|
9
|
+
if (route.meta.public || route.path === "/login")
|
|
10
|
+
return;
|
|
11
|
+
const title = String(route.meta.title || route.name || route.path);
|
|
12
|
+
const componentName = typeof route.meta.componentName === "string" ? route.meta.componentName : undefined;
|
|
13
|
+
const keepAlive = route.meta.keepAlive !== false;
|
|
14
|
+
if (componentName && keepAlive) {
|
|
15
|
+
this.addCache(componentName);
|
|
16
|
+
}
|
|
17
|
+
const exists = this.list.find((t) => t.path === route.path);
|
|
18
|
+
if (exists) {
|
|
19
|
+
exists.fullPath = route.fullPath;
|
|
20
|
+
exists.title = title;
|
|
21
|
+
exists.componentName = componentName;
|
|
22
|
+
exists.keepAlive = keepAlive;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.list.push({
|
|
26
|
+
path: route.path,
|
|
27
|
+
fullPath: route.fullPath,
|
|
28
|
+
title,
|
|
29
|
+
name: route.name,
|
|
30
|
+
componentName,
|
|
31
|
+
keepAlive
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
addCache(name) {
|
|
35
|
+
if (!name || this.caches.includes(name))
|
|
36
|
+
return;
|
|
37
|
+
this.caches.push(name);
|
|
38
|
+
},
|
|
39
|
+
removeCache(name) {
|
|
40
|
+
if (!name)
|
|
41
|
+
return;
|
|
42
|
+
this.caches = this.caches.filter((c) => c !== name);
|
|
43
|
+
},
|
|
44
|
+
remove(path) {
|
|
45
|
+
const i = this.list.findIndex((t) => t.path === path);
|
|
46
|
+
if (i < 0)
|
|
47
|
+
return;
|
|
48
|
+
const [tag] = this.list.splice(i, 1);
|
|
49
|
+
const still = tag?.componentName && this.list.some((t) => t.componentName === tag.componentName);
|
|
50
|
+
if (tag?.componentName && !still) {
|
|
51
|
+
this.removeCache(tag.componentName);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
closeOthers(path) {
|
|
55
|
+
const keep = this.list.filter((t) => t.path === path || t.path === "/");
|
|
56
|
+
this.list = keep;
|
|
57
|
+
this.caches = keep.filter((t) => t.keepAlive && t.componentName).map((t) => t.componentName).filter((n, i, arr) => arr.indexOf(n) === i);
|
|
58
|
+
},
|
|
59
|
+
clear() {
|
|
60
|
+
this.list = this.list.filter((t) => t.path === "/");
|
|
61
|
+
this.caches = [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
@@ -1 +1,64 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineStore } from "pinia";
|
|
2
|
+
import { api, clearTokens } from "../api/client";
|
|
3
|
+
import { filterShowMenus } from "../lib/menu";
|
|
4
|
+
import { setServicePerms } from "../service";
|
|
5
|
+
let loadFlight = null;
|
|
6
|
+
export const useUserStore = defineStore("user", {
|
|
7
|
+
state: () => ({
|
|
8
|
+
adminId: 0,
|
|
9
|
+
username: "",
|
|
10
|
+
isSuper: false,
|
|
11
|
+
perms: [],
|
|
12
|
+
menus: [],
|
|
13
|
+
loaded: false
|
|
14
|
+
}),
|
|
15
|
+
getters: {
|
|
16
|
+
navMenus(state) {
|
|
17
|
+
return filterShowMenus(state.menus);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
actions: {
|
|
21
|
+
async load() {
|
|
22
|
+
if (this.loaded)
|
|
23
|
+
return;
|
|
24
|
+
if (loadFlight)
|
|
25
|
+
return loadFlight;
|
|
26
|
+
loadFlight = (async () => {
|
|
27
|
+
try {
|
|
28
|
+
const [me, authz] = await Promise.all([
|
|
29
|
+
api.me({ toast: false }),
|
|
30
|
+
api.perms({ toast: false })
|
|
31
|
+
]);
|
|
32
|
+
this.adminId = me.adminId;
|
|
33
|
+
this.username = me.username || `admin#${me.adminId}`;
|
|
34
|
+
this.isSuper = authz.isSuper;
|
|
35
|
+
this.perms = Array.isArray(authz.perms) ? authz.perms : [];
|
|
36
|
+
this.menus = Array.isArray(authz.menus) ? authz.menus : [];
|
|
37
|
+
this.loaded = true;
|
|
38
|
+
setServicePerms(this.perms, this.isSuper);
|
|
39
|
+
} finally {
|
|
40
|
+
loadFlight = null;
|
|
41
|
+
}
|
|
42
|
+
})();
|
|
43
|
+
return loadFlight;
|
|
44
|
+
},
|
|
45
|
+
async reloadMenus() {
|
|
46
|
+
const authz = await api.perms({ toast: false });
|
|
47
|
+
this.isSuper = authz.isSuper;
|
|
48
|
+
this.perms = Array.isArray(authz.perms) ? authz.perms : [];
|
|
49
|
+
this.menus = Array.isArray(authz.menus) ? authz.menus : [];
|
|
50
|
+
setServicePerms(this.perms, this.isSuper);
|
|
51
|
+
},
|
|
52
|
+
hasPerm(code) {
|
|
53
|
+
if (this.isSuper)
|
|
54
|
+
return true;
|
|
55
|
+
const codes = Array.isArray(code) ? code : [code];
|
|
56
|
+
return codes.some((c) => this.perms.includes(c));
|
|
57
|
+
},
|
|
58
|
+
logout() {
|
|
59
|
+
clearTokens();
|
|
60
|
+
loadFlight = null;
|
|
61
|
+
this.$reset();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x4966fe=_0x6882;(function(_0x4bc565,_0x50d073){const _0x21dedb=_0x6882,_0x377120=_0x4bc565();while(!![]){try{const _0x5ebd89=-parseInt(_0x21dedb(0x117))/0x1*(-parseInt(_0x21dedb(0x124))/0x2)+parseInt(_0x21dedb(0x13f))/0x3+-parseInt(_0x21dedb(0x14c))/0x4+-parseInt(_0x21dedb(0x128))/0x5*(parseInt(_0x21dedb(0x135))/0x6)+parseInt(_0x21dedb(0x11f))/0x7+parseInt(_0x21dedb(0x139))/0x8*(parseInt(_0x21dedb(0x136))/0x9)+-parseInt(_0x21dedb(0x115))/0xa;if(_0x5ebd89===_0x50d073)break;else _0x377120['push'](_0x377120['shift']());}catch(_0x371e51){_0x377120['push'](_0x377120['shift']());}}}(_0x4abf,0x3274e));function merge(_0x475283,_0x51a2f5){const _0x3b6592=_0x6882,_0x4a74ed={..._0x475283};for(const _0x145a24 of Object['keys'](_0x51a2f5)){const _0x293849=_0x4a74ed[_0x145a24],_0x445a32=_0x51a2f5[_0x145a24];if(_0x293849&&_0x445a32&&typeof _0x293849===_0x3b6592(0x145)&&typeof _0x445a32===_0x3b6592(0x145)&&!Array[_0x3b6592(0x138)](_0x293849)&&!Array[_0x3b6592(0x138)](_0x445a32)){_0x4a74ed[_0x145a24]=merge(_0x293849,_0x445a32);continue;}_0x4a74ed[_0x145a24]=_0x445a32;}return _0x4a74ed;}function deepTree(_0x56c521,_0x4a8ffc=_0x4966fe(0x12c)){const _0x4c499d=_0x4966fe,_0x2238c3=new Map();for(const _0x3775b0 of _0x56c521){if(_0x3775b0['id']==null)continue;_0x2238c3['set'](_0x3775b0['id'],{..._0x3775b0,'children':[]});}const _0x1e51c7=[];for(const _0x344a5e of _0x2238c3[_0x4c499d(0x142)]()){const _0x22b02f=_0x344a5e[_0x4c499d(0x14e)];_0x22b02f!=null&&_0x22b02f!==''&&_0x2238c3['has'](_0x22b02f)?_0x2238c3[_0x4c499d(0x10c)](_0x22b02f)[_0x4c499d(0x147)]['push'](_0x344a5e):_0x1e51c7['push'](_0x344a5e);}const _0x496057=_0xd417fd=>{const _0x3c9ddc=_0x4c499d;_0xd417fd[_0x3c9ddc(0x118)]((_0x585b70,_0x36d845)=>{const _0x19b67e=_0x3c9ddc,_0x593b13=_0x585b70[_0x19b67e(0x130)]??0x0,_0x4d2b2e=_0x36d845[_0x19b67e(0x130)]??0x0,_0x3164c3=_0x4a8ffc===_0x19b67e(0x129)?_0x4d2b2e-_0x593b13:_0x593b13-_0x4d2b2e;return _0x3164c3||Number(_0x585b70['id'])-Number(_0x36d845['id']);});for(const _0x5640e8 of _0xd417fd)if(_0x5640e8[_0x3c9ddc(0x147)]?.[_0x3c9ddc(0x144)])_0x496057(_0x5640e8[_0x3c9ddc(0x147)]);};return _0x496057(_0x1e51c7),_0x1e51c7;}function flattenTree(_0x4ffe6a,_0x30592c,_0x1d5bb0=0x0,_0x53fcec=[]){const _0x3c27e3=_0x4966fe;for(const _0x3254f4 of _0x4ffe6a){const _0x1b079d=_0x3254f4[_0x3c27e3(0x147)]||[];_0x53fcec['push']({..._0x3254f4,'depth':_0x1d5bb0,'hasChildren':_0x1b079d[_0x3c27e3(0x144)]>0x0});if(_0x1b079d['length']&&_0x30592c[_0x3c27e3(0x11e)](_0x3254f4['id']))flattenTree(_0x1b079d,_0x30592c,_0x1d5bb0+0x1,_0x53fcec);}return _0x53fcec;}function _0x6882(_0x170a75,_0x184c35){_0x170a75=_0x170a75-0x10c;const _0x4abfb9=_0x4abf();let _0x68828=_0x4abfb9[_0x170a75];if(_0x6882['olQqWL']===undefined){var _0x20d0ad=function(_0x546f65){const _0x30399f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x475283='',_0x51a2f5='';for(let _0x4a74ed=0x0,_0x145a24,_0x293849,_0x445a32=0x0;_0x293849=_0x546f65['charAt'](_0x445a32++);~_0x293849&&(_0x145a24=_0x4a74ed%0x4?_0x145a24*0x40+_0x293849:_0x293849,_0x4a74ed++%0x4)?_0x475283+=String['fromCharCode'](0xff&_0x145a24>>(-0x2*_0x4a74ed&0x6)):0x0){_0x293849=_0x30399f['indexOf'](_0x293849);}for(let _0x56c521=0x0,_0x4a8ffc=_0x475283['length'];_0x56c521<_0x4a8ffc;_0x56c521++){_0x51a2f5+='%'+('00'+_0x475283['charCodeAt'](_0x56c521)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51a2f5);};_0x6882['ZUHiyf']=_0x20d0ad,_0x6882['poxUpt']={},_0x6882['olQqWL']=!![];}const _0x2c2946=_0x4abfb9[0x0],_0x510e4e=_0x170a75+_0x2c2946,_0x58149a=_0x6882['poxUpt'][_0x510e4e];return!_0x58149a?(_0x68828=_0x6882['ZUHiyf'](_0x68828),_0x6882['poxUpt'][_0x510e4e]=_0x68828):_0x68828=_0x58149a,_0x68828;}var TIME_KEY_RE=/(?:Time|Date|At)$/,ISO_RE=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?$/;function formatDateTime(_0x18782e){const _0x1919bd=_0x4966fe,_0xf18d5c=_0x18782e instanceof Date?_0x18782e:new Date(_0x18782e);if(Number['isNaN'](_0xf18d5c[_0x1919bd(0x123)]()))return String(_0x18782e);return new Intl['DateTimeFormat']('sv-SE',{'timeZone':_0x1919bd(0x12f),'year':_0x1919bd(0x137),'month':_0x1919bd(0x14b),'day':_0x1919bd(0x14b),'hour':_0x1919bd(0x14b),'minute':_0x1919bd(0x14b),'second':_0x1919bd(0x14b),'hour12':![]})[_0x1919bd(0x14f)](_0xf18d5c)[_0x1919bd(0x10f)]('T','\x20');}function isTimeKey(_0x94d5a3){return TIME_KEY_RE['test'](_0x94d5a3);}function formatApiDates(_0x2bb001){return walk(_0x2bb001);}function _0x4abf(){const _0xa0749b=['pJ00lJaUma','xJeUnc4Xnq','AgfZ','mte5nZCXnhHltvfRAq','Dg9tDhjPBMC','C3rYAw5N','pJ0WlJuUma','z2v0vgLTzq','nJj4rhLev0e','ChjVDg90ExbL','pJ05lJaUma','xJaUms4Xma','mJm1nJy1DMrJs3rw','zgvZyW','yNvUihj1BIbIDwLSzcaMjIbIDw4GCNvUig9IzNvZy2f0zq','pJ0ZlJuUma','yxnJ','lI9KAxn0l2fKBwLUl3n0EwXLCY9IyxnLlMnZCW','CM0GlxjMigrPC3qGjIyGyNvUihj1BIbIDwLSzdPZzxj2zxiGjIyGyNvUihj1BIbIDwLSzdPHzg1PBG','qxnPys9tAgfUz2HHAq','B3jKzxjoDw0','zgLZDa','yNvUihnJCMLWDhmVyNvPBgqTywrTAw4UDhm','lI9KAxn0l2fKBwLUlYO','zxjYB3i','nLjIB1DNBa','mtK4EujxANP0','BNvTzxjPyW','AxnbCNjHEq','ntq0ntzWu09XrgW','u1vdq0vtuW','tuLu','DM9Tzs1JB3jL','lI9KAxn0l2fKBwLUl2LUzgv4lMqUDhm','rvjst1i','mtaZnteYsfPlCeHq','pJ0YlJaUma','C3jJl3nOyxjLza','DMfSDwvZ','xJeWlJmUmq','BgvUz3rO','B2jQzwn0','pJ0XlJaUma','y2HPBgrYzw4','C3vJy2vZCW','xJuUnc43','xJeZlJeUmW','mI1KAwDPDa','nZy2odi4AK56z0rs','lI9KAxn0l2LUzgv4lMqUDhm','CgfYzw50swq','zM9YBwf0','z2v0','lI9KAxn0l2fKBwLUl2LUzgv4lMPZ','y2fSBa','CMvWBgfJzq','lI9KAxn0l2LUzgv4lMPZ','pJ0WlJmWlJa','DhLWAw5NCY9Hzg1PBG','DgvZDa','xJaUoc4Z','mtC5ndG4mhjHu0vwsW','lI9KAxn0l3nLCNzLCI9PBMrLEc5KlNrZ','ody5ohjkzeLkvW','C29YDa','pJ0ZlJaUma','lI9KAxn0l3nLCNzLCI9PBMrLEc5QCW','Bgf0zxn0'];_0x4abf=function(){return _0xa0749b;};return _0x4abf();}function walk(_0x17382f,_0xc03150){const _0x15f457=_0x4966fe;if(_0x17382f==null)return _0x17382f;if(_0x17382f instanceof Date)return formatDateTime(_0x17382f);if(typeof _0x17382f===_0x15f457(0x121)&&_0xc03150&&isTimeKey(_0xc03150)&&ISO_RE[_0x15f457(0x113)](_0x17382f))return formatDateTime(_0x17382f);if(Array['isArray'](_0x17382f))return _0x17382f['map'](_0x48f6cb=>walk(_0x48f6cb));if(typeof _0x17382f===_0x15f457(0x145)){if(Object[_0x15f457(0x125)][_0x15f457(0x120)][_0x15f457(0x10e)](_0x17382f)!=='[object\x20Object]')return _0x17382f;const _0x3af622={};for(const [_0x40dda9,_0x4b15f2]of Object['entries'](_0x17382f)){_0x3af622[_0x40dda9]=walk(_0x4b15f2,_0x40dda9);}return _0x3af622;}return _0x17382f;}var RES_CODE={'SUCCESS':0x3e8,'ERROR':0x3e9};class BaseController{['ok'](_0x31e097){const _0x4b4b06=_0x4966fe,_0x5940f0=_0x31e097===undefined?null:_0x31e097;return{'code':RES_CODE[_0x4b4b06(0x13a)],'message':_0x4b4b06(0x148),'data':_0x5940f0==null?_0x5940f0:formatApiDates(_0x5940f0)};}['fail'](_0xc7b4d2=_0x4966fe(0x134),_0x3e9004=RES_CODE[_0x4966fe(0x13e)]){return{'code':_0x3e9004,'message':_0xc7b4d2};}}var package_default={'name':_0x4966fe(0x13c),'version':'0.0.16','description':'Vome\x20framework\x20\u2014\x20shared\x20+\x20Bun/Elysia\x20server\x20+\x20Vue\x20admin','license':_0x4966fe(0x13b),'type':'module','files':[_0x4966fe(0x131),_0x4966fe(0x141),_0x4966fe(0x112)],'main':'./dist/index.js','types':_0x4966fe(0x14d),'exports':{'.':{'types':'./dist/index.d.ts','import':_0x4966fe(0x110),'default':_0x4966fe(0x110)},'./server':{'types':_0x4966fe(0x116),'import':'./dist/server/index.js','default':_0x4966fe(0x11a)},'./admin':{'types':_0x4966fe(0x13d),'import':'./dist/admin/index.js','default':_0x4966fe(0x10d)},'./admin/*':_0x4966fe(0x133),'./admin/styles/base.css':_0x4966fe(0x12d),'./typings/*':'./typings/admin/*'},'scripts':{'build:server':'bun\x20build\x20./src/index.ts\x20./src/server/index.ts\x20--outdir\x20./dist\x20--target\x20bun\x20--format\x20esm\x20--external\x20elysia\x20--external\x20reflect-metadata\x20--external\x20drizzle-orm\x20--external\x20drizzle-zod\x20--external\x20@elysiajs/openapi\x20--external\x20@bogeychan/elysia-logger\x20--external\x20pino\x20--external\x20pino-pretty\x20&&\x20tsc\x20-p\x20tsconfig.build.json\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27./src/index\x27\x22\x20>\x20dist/index.d.ts\x20&&\x20mkdir\x20-p\x20dist/server\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27../src/server/index\x27\x22\x20>\x20dist/server/index.d.ts','build:admin':_0x4966fe(0x132),'build':_0x4966fe(0x12e),'obfuscate':'bun\x20scripts/obfuscate.ts','build:obfuscate':_0x4966fe(0x12a),'prepublishOnly':'bun\x20run\x20build:obfuscate'},'peerDependencies':{'elysia':_0x4966fe(0x146),'reflect-metadata':'>=0.2.0','drizzle-orm':_0x4966fe(0x111),'drizzle-zod':_0x4966fe(0x122),'vue':_0x4966fe(0x12b),'vue-router':_0x4966fe(0x11c),'pinia':_0x4966fe(0x140),'vue-sonner':'>=2.0.0','@vueuse/core':'>=10.0.0','clsx':_0x4966fe(0x140),'tailwind-merge':_0x4966fe(0x140),'dompurify':_0x4966fe(0x119),'marked':_0x4966fe(0x126)},'peerDependenciesMeta':{'drizzle-orm':{'optional':!![]},'drizzle-zod':{'optional':!![]},'vue':{'optional':!![]},'vue-router':{'optional':!![]},'pinia':{'optional':!![]},'vue-sonner':{'optional':!![]},'@vueuse/core':{'optional':!![]},'clsx':{'optional':!![]},'tailwind-merge':{'optional':!![]},'dompurify':{'optional':!![]},'marked':{'optional':!![]}},'devDependencies':{'bun-types':'latest','drizzle-orm':_0x4966fe(0x11b),'drizzle-zod':_0x4966fe(0x114),'elysia':_0x4966fe(0x11b),'javascript-obfuscator':_0x4966fe(0x149),'reflect-metadata':'^0.2.2','typescript':_0x4966fe(0x11b)},'dependencies':{'@bogeychan/elysia-logger':_0x4966fe(0x127),'@elysiajs/openapi':_0x4966fe(0x11d),'pino':_0x4966fe(0x143),'pino-pretty':_0x4966fe(0x14a)}},version=package_default['version'];export{version,merge,flattenTree,deepTree,RES_CODE};
|