vome-core 0.0.17 → 0.0.19
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 +2 -0
- package/dist/admin/config/plugin-dev.d.ts +7 -6
- 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/validate.js +1 -1
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/hooks/useVome.d.ts +3 -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.d.ts +2 -11
- package/dist/admin/lib/eps.js +7 -33
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/service/base.d.ts +2 -27
- package/dist/admin/service/base.js +1 -76
- package/dist/admin/service/index.d.ts +10 -16
- package/dist/admin/service/index.js +31 -259
- package/dist/client/base.d.ts +28 -0
- package/dist/client/base.js +77 -0
- package/dist/client/configure.d.ts +9 -0
- package/dist/client/configure.js +10 -0
- package/dist/client/eps.d.ts +12 -0
- package/dist/client/eps.js +42 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.js +22 -0
- package/dist/client/service.d.ts +31 -0
- package/dist/client/service.js +299 -0
- package/dist/client/vite-plugin-eps.d.ts +42 -0
- package/dist/client/vite-plugin-eps.js +266 -0
- 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/dist/src/core/host-infra.d.ts +3 -3
- package/package.json +18 -4
- package/typings/admin/comm/eps.d.ts +48 -0
package/dist/admin/lib/cn.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x43e5(_0x1ded5a,_0x55b591){_0x1ded5a=_0x1ded5a-0x174;var _0x39922d=_0x3992();var _0x43e59a=_0x39922d[_0x1ded5a];if(_0x43e5['oLzMxK']===undefined){var _0x3b0641=function(_0x2b6934){var _0xcc17a0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0xa048cf='',_0x5bb47d='';for(var _0x5b2505=0x0,_0x4b71dd,_0x5eb369,_0x27054c=0x0;_0x5eb369=_0x2b6934['charAt'](_0x27054c++);~_0x5eb369&&(_0x4b71dd=_0x5b2505%0x4?_0x4b71dd*0x40+_0x5eb369:_0x5eb369,_0x5b2505++%0x4)?_0xa048cf+=String['fromCharCode'](0xff&_0x4b71dd>>(-0x2*_0x5b2505&0x6)):0x0){_0x5eb369=_0xcc17a0['indexOf'](_0x5eb369);}for(var _0x3259a2=0x0,_0x2e1af1=_0xa048cf['length'];_0x3259a2<_0x2e1af1;_0x3259a2++){_0x5bb47d+='%'+('00'+_0xa048cf['charCodeAt'](_0x3259a2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5bb47d);};_0x43e5['RnbiEN']=_0x3b0641,_0x43e5['PDwIxj']={},_0x43e5['oLzMxK']=!![];}var _0x56f077=_0x39922d[0x0],_0x5a4e1d=_0x1ded5a+_0x56f077,_0x2e22f0=_0x43e5['PDwIxj'][_0x5a4e1d];return!_0x2e22f0?(_0x43e59a=_0x43e5['RnbiEN'](_0x43e59a),_0x43e5['PDwIxj'][_0x5a4e1d]=_0x43e59a):_0x43e59a=_0x2e22f0,_0x43e59a;}(function(_0x5121e4,_0x12aa3e){var _0x5cbf55=_0x43e5,_0x4e1ca1=_0x5121e4();while(!![]){try{var _0x157ec7=parseInt(_0x5cbf55(0x177))/0x1+-parseInt(_0x5cbf55(0x17b))/0x2*(-parseInt(_0x5cbf55(0x178))/0x3)+-parseInt(_0x5cbf55(0x174))/0x4*(-parseInt(_0x5cbf55(0x175))/0x5)+-parseInt(_0x5cbf55(0x17d))/0x6+-parseInt(_0x5cbf55(0x176))/0x7*(-parseInt(_0x5cbf55(0x17c))/0x8)+-parseInt(_0x5cbf55(0x179))/0x9+-parseInt(_0x5cbf55(0x17a))/0xa;if(_0x157ec7===_0x12aa3e)break;else _0x4e1ca1['push'](_0x4e1ca1['shift']());}catch(_0x4f582f){_0x4e1ca1['push'](_0x4e1ca1['shift']());}}}(_0x3992,0xebb3a));import{clsx}from'clsx';function _0x3992(){var _0x17d9b3=['mtC1otG1nMnVrNHrzW','ovPttxrsEa','ntC3mduZEMHYAvvT','mZuXntaWmtbsBeHzrui','nZq5mZCWEgjSsgDs','mtiWCeT2txDT','mJeWnJeZmNnsAe5WEG','nZyXntq5mKDWBgPRvW','nvjez0Tyta','ntaZmdj2C1DXCMu'];_0x3992=function(){return _0x17d9b3;};return _0x3992();}import{twMerge}from'tailwind-merge';export function cn(..._0xa048cf){return twMerge(clsx(_0xa048cf));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x42792a,_0x3a1827){const _0x546e5f=_0x3b55,_0x4f6b6b=_0x42792a();while(!![]){try{const _0x4a6669=-parseInt(_0x546e5f(0x12e))/0x1*(-parseInt(_0x546e5f(0x12d))/0x2)+parseInt(_0x546e5f(0x125))/0x3+parseInt(_0x546e5f(0x121))/0x4+parseInt(_0x546e5f(0x122))/0x5+-parseInt(_0x546e5f(0x126))/0x6+parseInt(_0x546e5f(0x128))/0x7*(-parseInt(_0x546e5f(0x123))/0x8)+-parseInt(_0x546e5f(0x129))/0x9*(-parseInt(_0x546e5f(0x124))/0xa);if(_0x4a6669===_0x3a1827)break;else _0x4f6b6b['push'](_0x4f6b6b['shift']());}catch(_0x38f4dd){_0x4f6b6b['push'](_0x4f6b6b['shift']());}}}(_0x1e85,0x50042));function _0x3b55(_0x2df2a4,_0x52dfcb){_0x2df2a4=_0x2df2a4-0x120;const _0x1e85c5=_0x1e85();let _0x3b5598=_0x1e85c5[_0x2df2a4];if(_0x3b55['EJwhRo']===undefined){var _0x2580f9=function(_0x54e957){const _0x189e49='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53414b='',_0x303e5d='';for(let _0x33140e=0x0,_0x1c4088,_0x1823d2,_0x4c73ac=0x0;_0x1823d2=_0x54e957['charAt'](_0x4c73ac++);~_0x1823d2&&(_0x1c4088=_0x33140e%0x4?_0x1c4088*0x40+_0x1823d2:_0x1823d2,_0x33140e++%0x4)?_0x53414b+=String['fromCharCode'](0xff&_0x1c4088>>(-0x2*_0x33140e&0x6)):0x0){_0x1823d2=_0x189e49['indexOf'](_0x1823d2);}for(let _0x35b0ad=0x0,_0x45bb71=_0x53414b['length'];_0x35b0ad<_0x45bb71;_0x35b0ad++){_0x303e5d+='%'+('00'+_0x53414b['charCodeAt'](_0x35b0ad)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x303e5d);};_0x3b55['GoaNJc']=_0x2580f9,_0x3b55['RIozqq']={},_0x3b55['EJwhRo']=!![];}const _0x2047e6=_0x1e85c5[0x0],_0x700a77=_0x2df2a4+_0x2047e6,_0x1338a7=_0x3b55['RIozqq'][_0x700a77];return!_0x1338a7?(_0x3b5598=_0x3b55['GoaNJc'](_0x3b5598),_0x3b55['RIozqq'][_0x700a77]=_0x3b5598):_0x3b5598=_0x1338a7,_0x3b5598;}function _0x1e85(){const _0x1ef869=['nZKWodGWwvPZAvzp','mxzZqvjQsq','y2XVC2vZDa','mtiXmJiZmNjJwvDqwa','mZi3ntvUr0vLDgi','odHJt2Lrs20','mty3mhn4rMjvsW','mJq3ntmZz0jdtgL0','mtK3oti5mLrWrhbrua','zgv0ywLS','mZu1mdyXEhnxwffh','mJmWnJD3wuDxALK','CgfYzw50rwXLBwvUDa','DgfYz2v0','B3jPz2LUywXfDMvUDa'];_0x1e85=function(){return _0x1ef869;};return _0x1e85();}export const DIALOG_FLOAT_CLASS='vm-dialog-float';export function isDialogFloatTarget(_0x53414b){const _0x2af407=_0x3b55,_0x303e5d=_0x53414b[_0x2af407(0x127)],_0x33140e=_0x303e5d?.[_0x2af407(0x12c)]?.['target']??_0x53414b[_0x2af407(0x12b)];if(!_0x33140e)return![];const _0x1c4088=_0x33140e instanceof Element?_0x33140e:_0x33140e[_0x2af407(0x12a)];return Boolean(_0x1c4088?.[_0x2af407(0x120)]('.'+DIALOG_FLOAT_CLASS));}
|
package/dist/admin/lib/eps.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
export type EpsSide
|
|
2
|
-
|
|
3
|
-
export declare function loadEps(force?: boolean, side?: EpsSide): Promise<any>;
|
|
4
|
-
/** 并行拉取 admin + app */
|
|
5
|
-
export declare function loadAllEps(force?: boolean): Promise<{
|
|
6
|
-
admin: any;
|
|
7
|
-
app: any;
|
|
8
|
-
}>;
|
|
9
|
-
export declare function getEps(side?: EpsSide): any;
|
|
10
|
-
/** 按 prefix 找实体描述,如 /admin/base/user */
|
|
11
|
-
export declare function findEpsEntity(prefix: string, side?: EpsSide): any;
|
|
1
|
+
export { loadEps, loadAllEps, getEps, findEpsEntity, type EpsSide, } from '../../client';
|
|
2
|
+
import '../api/client';
|
package/dist/admin/lib/eps.js
CHANGED
|
@@ -1,33 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
app: null
|
|
9
|
-
};
|
|
10
|
-
export async function loadEps(force = false, side = "admin") {
|
|
11
|
-
if (cache[side] && !force)
|
|
12
|
-
return cache[side];
|
|
13
|
-
cache[side] = await request(EPS_URL[side], { toast: false }) || {};
|
|
14
|
-
return cache[side];
|
|
15
|
-
}
|
|
16
|
-
export async function loadAllEps(force = false) {
|
|
17
|
-
await Promise.all([loadEps(force, "admin"), loadEps(force, "app")]);
|
|
18
|
-
return { admin: cache.admin, app: cache.app };
|
|
19
|
-
}
|
|
20
|
-
export function getEps(side = "admin") {
|
|
21
|
-
return cache[side];
|
|
22
|
-
}
|
|
23
|
-
export function findEpsEntity(prefix, side = "admin") {
|
|
24
|
-
const map = cache[side];
|
|
25
|
-
if (!map)
|
|
26
|
-
return;
|
|
27
|
-
for (const list of Object.values(map)) {
|
|
28
|
-
const hit = list.find((e) => e.prefix === prefix || e.prefix === prefix.replace(/\/$/, ""));
|
|
29
|
-
if (hit)
|
|
30
|
-
return hit;
|
|
31
|
-
}
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
1
|
+
export {
|
|
2
|
+
loadEps,
|
|
3
|
+
loadAllEps,
|
|
4
|
+
getEps,
|
|
5
|
+
findEpsEntity
|
|
6
|
+
} from "../../client";
|
|
7
|
+
import"../api/client";
|
package/dist/admin/lib/menu.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xbf81f6,_0x144e6f){const _0x1fd1fb=_0x21dc,_0x559e89=_0xbf81f6();while(!![]){try{const _0x1a2d4f=parseInt(_0x1fd1fb(0xa6))/0x1*(-parseInt(_0x1fd1fb(0x99))/0x2)+parseInt(_0x1fd1fb(0x9c))/0x3+parseInt(_0x1fd1fb(0xa2))/0x4+-parseInt(_0x1fd1fb(0x9f))/0x5*(-parseInt(_0x1fd1fb(0x97))/0x6)+parseInt(_0x1fd1fb(0x9a))/0x7*(parseInt(_0x1fd1fb(0x9d))/0x8)+parseInt(_0x1fd1fb(0xa3))/0x9*(parseInt(_0x1fd1fb(0xa4))/0xa)+-parseInt(_0x1fd1fb(0x98))/0xb;if(_0x1a2d4f===_0x144e6f)break;else _0x559e89['push'](_0x559e89['shift']());}catch(_0x36e256){_0x559e89['push'](_0x559e89['shift']());}}}(_0x3a06,0xc278e));function _0x21dc(_0x48c3c5,_0x53ab08){_0x48c3c5=_0x48c3c5-0x97;const _0x3a0689=_0x3a06();let _0x21dc4d=_0x3a0689[_0x48c3c5];if(_0x21dc['JiOsjg']===undefined){var _0x25aff5=function(_0x8c87d){const _0x100a3d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x36f031='',_0x8447b6='';for(let _0x256f78=0x0,_0x2e9d29,_0x42ad15,_0x49cfe0=0x0;_0x42ad15=_0x8c87d['charAt'](_0x49cfe0++);~_0x42ad15&&(_0x2e9d29=_0x256f78%0x4?_0x2e9d29*0x40+_0x42ad15:_0x42ad15,_0x256f78++%0x4)?_0x36f031+=String['fromCharCode'](0xff&_0x2e9d29>>(-0x2*_0x256f78&0x6)):0x0){_0x42ad15=_0x100a3d['indexOf'](_0x42ad15);}for(let _0x9b914a=0x0,_0x50cb8f=_0x36f031['length'];_0x9b914a<_0x50cb8f;_0x9b914a++){_0x8447b6+='%'+('00'+_0x36f031['charCodeAt'](_0x9b914a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x8447b6);};_0x21dc['mGDjxR']=_0x25aff5,_0x21dc['DBlmWy']={},_0x21dc['JiOsjg']=!![];}const _0xde1bb8=_0x3a0689[0x0],_0xc7556b=_0x48c3c5+_0xde1bb8,_0x5d1a1c=_0x21dc['DBlmWy'][_0xc7556b];return!_0x5d1a1c?(_0x21dc4d=_0x21dc['mGDjxR'](_0x21dc4d),_0x21dc['DBlmWy'][_0xc7556b]=_0x21dc4d):_0x21dc4d=_0x5d1a1c,_0x21dc4d;}export function filterShowMenus(_0x36f031){const _0xf96889=_0x21dc;if(!Array[_0xf96889(0x9b)](_0x36f031)||!_0x36f031[_0xf96889(0xa5)])return[];return _0x36f031[_0xf96889(0xa0)](_0x8447b6=>_0x8447b6&&_0x8447b6['isShow']!==![])['map'](_0x256f78=>({..._0x256f78,'children':_0x256f78[_0xf96889(0xa1)]?.[_0xf96889(0xa5)]?filterShowMenus(_0x256f78[_0xf96889(0xa1)]):undefined}))['filter'](_0x2e9d29=>{const _0x22e451=_0xf96889,_0x42ad15=Number(_0x2e9d29[_0x22e451(0x9e)]);return _0x42ad15===0x0||_0x42ad15===0x1&&_0x2e9d29['router']||(_0x2e9d29['children']?.['length']??0x0)>0x0;});}function _0x3a06(){const _0x306d3e=['mZqXnJe3odDct2zSsgu','mJqXnfPIEKL1Bq','odG2odCZnfjQqxnwqG','AxnbCNjHEq','mZmXodyYmvzuB1rqsW','ogrSsMnyva','DhLWzq','mte1odvIs015AM0','zMLSDgvY','y2HPBgrYzw4','mZu2odGWogTdrxDfCq','mJu3mtKZuxfkEwn1','mJiWwNLzqur3','BgvUz3rO','mta1mvzzC0vxuW','mZmWnM53swrjCW'];_0x3a06=function(){return _0x306d3e;};return _0x3a06();}
|
package/dist/admin/lib/tree.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x2108(){var _0x43b48f=['mJC4mtnSDw92BNi','nM1kyKrRCG','mtG2nZmWDLPAyNnQ','mtuZndmWntzqwg5xwfe','oti2ntbKD2jqDMK','mZG1swTsCND1','mta4mtq0BuXqEK5N','mJi4mtu1DfbjtwP3','mJG0uwf6tu1h','mtf1seTtDuG','nZy4ANHSALzp','nJy4nZi4mLrdrNHnwG'];_0x2108=function(){return _0x43b48f;};return _0x2108();}(function(_0x3f40b7,_0x356402){var _0x479b5a=_0x5a9a,_0x38e616=_0x3f40b7();while(!![]){try{var _0x330713=-parseInt(_0x479b5a(0xd8))/0x1*(-parseInt(_0x479b5a(0xdf))/0x2)+parseInt(_0x479b5a(0xdb))/0x3*(parseInt(_0x479b5a(0xd7))/0x4)+-parseInt(_0x479b5a(0xd6))/0x5*(-parseInt(_0x479b5a(0xdc))/0x6)+-parseInt(_0x479b5a(0xda))/0x7+parseInt(_0x479b5a(0xd9))/0x8*(parseInt(_0x479b5a(0xd5))/0x9)+-parseInt(_0x479b5a(0xdd))/0xa*(-parseInt(_0x479b5a(0xe0))/0xb)+-parseInt(_0x479b5a(0xde))/0xc;if(_0x330713===_0x356402)break;else _0x38e616['push'](_0x38e616['shift']());}catch(_0x3c255e){_0x38e616['push'](_0x38e616['shift']());}}}(_0x2108,0xc00c0));function _0x5a9a(_0x229a6d,_0x1196d7){_0x229a6d=_0x229a6d-0xd5;var _0x2108ee=_0x2108();var _0x5a9aca=_0x2108ee[_0x229a6d];if(_0x5a9a['nbcMBx']===undefined){var _0x5949c0=function(_0x4c6fb1){var _0x2739de='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x48c271='',_0x3f21b7='';for(var _0x43a31d=0x0,_0x311245,_0x12bc80,_0x52a5c9=0x0;_0x12bc80=_0x4c6fb1['charAt'](_0x52a5c9++);~_0x12bc80&&(_0x311245=_0x43a31d%0x4?_0x311245*0x40+_0x12bc80:_0x12bc80,_0x43a31d++%0x4)?_0x48c271+=String['fromCharCode'](0xff&_0x311245>>(-0x2*_0x43a31d&0x6)):0x0){_0x12bc80=_0x2739de['indexOf'](_0x12bc80);}for(var _0x437ec3=0x0,_0x4301a6=_0x48c271['length'];_0x437ec3<_0x4301a6;_0x437ec3++){_0x3f21b7+='%'+('00'+_0x48c271['charCodeAt'](_0x437ec3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3f21b7);};_0x5a9a['RGdfpJ']=_0x5949c0,_0x5a9a['ahQqYx']={},_0x5a9a['nbcMBx']=!![];}var _0x4cb66b=_0x2108ee[0x0],_0x4f0b07=_0x229a6d+_0x4cb66b,_0x4120a5=_0x5a9a['ahQqYx'][_0x4f0b07];return!_0x4120a5?(_0x5a9aca=_0x5a9a['RGdfpJ'](_0x5a9aca),_0x5a9a['ahQqYx'][_0x4f0b07]=_0x5a9aca):_0x5a9aca=_0x4120a5,_0x5a9aca;}export{deepTree,flattenTree}from'../../shared/tree';
|
package/dist/admin/lib/upload.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x54d517=_0x5ac3;(function(_0x2c833e,_0x14d1ba){const _0x654e4d=_0x5ac3,_0x4674b2=_0x2c833e();while(!![]){try{const _0xb98f3c=parseInt(_0x654e4d(0xc4))/0x1*(-parseInt(_0x654e4d(0xd1))/0x2)+parseInt(_0x654e4d(0xe8))/0x3+-parseInt(_0x654e4d(0xdd))/0x4+parseInt(_0x654e4d(0xfa))/0x5+parseInt(_0x654e4d(0xc9))/0x6+-parseInt(_0x654e4d(0x100))/0x7*(-parseInt(_0x654e4d(0xfd))/0x8)+-parseInt(_0x654e4d(0xc1))/0x9;if(_0xb98f3c===_0x14d1ba)break;else _0x4674b2['push'](_0x4674b2['shift']());}catch(_0x3f7ae1){_0x4674b2['push'](_0x4674b2['shift']());}}}(_0xdfe6,0x65bb4));function _0xdfe6(){const _0x85b0f6=['DgLM','yxzP','iZuZrdm5qW','zg9JEa','Dg9mB3DLCKnHC2u','BwLKAq','zg90','C3DM','DgfY','Cg90Ea','Chb0Bq','EgX0','iZy3qZiZqq','D2f2','iZHMmZuWma','mZq5nJqXnwXlDKjyEq','ChbZEa','CMfY','mJy3mZCXmMTQs2POsW','zMLSDgvY','C2XPy2u','mtrHvML1wgi','zxHJzwW','CMfT','EMLW','yM1W','BxbLzW','CgrM','zMXHyW','ywfJ','Chb0Ea','EgXZ','zMLUza','C3bSAxq','mtaYmZGWnZzwqMv3DMq','zMLSzq','BwfW','mxztBfHUBW','CMvWBgfJzq','D21H','yxbL','DxjS','mZe2nZm0nMvnveDeAa','BgvUz3rO','iZGYnMfLyW','ANbLzW','i0y1nKm2qW','BxaZ','yxvKAw8','AM9PBG','mZe4odm2Ag5yuLDy','iZuZqJDgna','Bwf0y2G','BxbN','EgX0Ea','Cg9W','EgX0Bq','ANbN','zg9J','Bw92','zg90Ea','D212','mJu5mdK5nLvzA2jruG','zhbZ','EgXZBq','BxaY','Dg9tDhjPBMC','Chb0','Aw1Hz2u','CMfUzg9T','5y6l57YP5yYf','i0zgqZC1nW','D29Yza','mtm5nZq2m2zIww1xBW','DMLKzw8','DhLWzq'];_0xdfe6=function(){return _0x85b0f6;};return _0xdfe6();}export const DEFAULT_UPLOAD_RULES=[{'name':'图片','type':_0x54d517(0xe3),'color':_0x54d517(0xf7),'exts':[_0x54d517(0xb8),_0x54d517(0xd8),_0x54d517(0xcc),'png',_0x54d517(0xeb),'gif','svg','webp']},{'name':'视频','type':_0x54d517(0xe9),'color':_0x54d517(0xcb),'exts':[_0x54d517(0xec),_0x54d517(0xdc),_0x54d517(0xd4),_0x54d517(0xb9),_0x54d517(0xda),'rm',_0x54d517(0x102),_0x54d517(0xf2),'flv','mp4','3gp']},{'name':'音频','type':_0x54d517(0xcf),'color':_0x54d517(0xcb),'exts':[_0x54d517(0xce),_0x54d517(0xf8),_0x54d517(0xc6),_0x54d517(0xe0),_0x54d517(0xbb),_0x54d517(0xf0),'ra',_0x54d517(0xc7),_0x54d517(0xbc),'cda']},{'name':'文档','type':_0x54d517(0xe7),'color':_0x54d517(0xd2),'exts':[_0x54d517(0xd9),_0x54d517(0xee),'docm',_0x54d517(0xf1),_0x54d517(0xdb),'dotm']},{'name':'表格','type':_0x54d517(0x101),'color':_0x54d517(0xed),'exts':[_0x54d517(0xbe),'xlsx',_0x54d517(0xdf),_0x54d517(0xf6),_0x54d517(0xd5),_0x54d517(0xd7)]},{'name':'演示','type':'ppt','color':_0x54d517(0xcd),'exts':[_0x54d517(0xe2),_0x54d517(0xbd),_0x54d517(0xf5),_0x54d517(0xfb),'ppsm','pps',_0x54d517(0xf4),'potm','dpt',_0x54d517(0xde)]},{'name':'PDF','type':_0x54d517(0xba),'color':_0x54d517(0xf9),'exts':[_0x54d517(0xba)]},{'name':_0x54d517(0xe5),'type':_0x54d517(0xfc),'color':_0x54d517(0xe6),'exts':[_0x54d517(0xfc),_0x54d517(0xb7),'7z',_0x54d517(0xf3),'gz']},{'name':'文件','type':_0x54d517(0xc2),'color':'#909399','exts':[]}];export function extname(_0xb5cecc=''){const _0x36ccf4=_0x54d517,_0x171965=String(_0xb5cecc)[_0x36ccf4(0xc0)]('?')[0x0]?.[_0x36ccf4(0xd3)](/\.([^.]+)$/);return _0x171965?_0x171965[0x1][_0x36ccf4(0xef)]():'';}export function filename(_0xea572d=''){const _0x472e0e=_0x54d517,_0x1b5fea=String(_0xea572d)[_0x472e0e(0xc0)]('?')[0x0]?.['split']('/')[_0x472e0e(0xd6)]()||'',_0x37d939=extname(_0x1b5fea);return _0x37d939?_0x1b5fea['slice'](0x0,-(_0x37d939[_0x472e0e(0xca)]+0x1)):_0x1b5fea;}export function fileRule(_0x1ea112,_0xd6b7ef=DEFAULT_UPLOAD_RULES){const _0x4b077e=_0x54d517;if(_0x1ea112?.['includes']('data:image/'))return _0xd6b7ef['find'](_0x96fd3b=>_0x96fd3b['type']===_0x4b077e(0xe3));const _0x2d07b7=extname(_0x1ea112||''),_0x402a1c=_0xd6b7ef[_0x4b077e(0xbf)](_0x67eea0=>_0x67eea0['exts']['includes'](_0x2d07b7));return _0x402a1c||_0xd6b7ef[_0x4b077e(0xbf)](_0x4a29bc=>_0x4a29bc[_0x4b077e(0xea)]===_0x4b077e(0xc2));}export function getFileType(_0xb61617,_0x2e583d=DEFAULT_UPLOAD_RULES){return fileRule(_0xb61617,_0x2e583d)['type'];}function _0x5ac3(_0x306ec5,_0x5bb2d4){_0x306ec5=_0x306ec5-0xb7;const _0xdfe610=_0xdfe6();let _0x5ac32d=_0xdfe610[_0x306ec5];if(_0x5ac3['GQlSUQ']===undefined){var _0x2ec7b3=function(_0xe6f71a){const _0x33df54='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb5cecc='',_0x171965='';for(let _0xea572d=0x0,_0x1b5fea,_0x37d939,_0x1ea112=0x0;_0x37d939=_0xe6f71a['charAt'](_0x1ea112++);~_0x37d939&&(_0x1b5fea=_0xea572d%0x4?_0x1b5fea*0x40+_0x37d939:_0x37d939,_0xea572d++%0x4)?_0xb5cecc+=String['fromCharCode'](0xff&_0x1b5fea>>(-0x2*_0xea572d&0x6)):0x0){_0x37d939=_0x33df54['indexOf'](_0x37d939);}for(let _0xd6b7ef=0x0,_0x2d07b7=_0xb5cecc['length'];_0xd6b7ef<_0x2d07b7;_0xd6b7ef++){_0x171965+='%'+('00'+_0xb5cecc['charCodeAt'](_0xd6b7ef)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x171965);};_0x5ac3['SDoIRh']=_0x2ec7b3,_0x5ac3['wMejDA']={},_0x5ac3['GQlSUQ']=!![];}const _0x4cc2be=_0xdfe610[0x0],_0x1b6f94=_0x306ec5+_0x4cc2be,_0x140302=_0x5ac3['wMejDA'][_0x1b6f94];return!_0x140302?(_0x5ac32d=_0x5ac3['SDoIRh'](_0x5ac32d),_0x5ac3['wMejDA'][_0x1b6f94]=_0x5ac32d):_0x5ac32d=_0x140302,_0x5ac32d;}export function getUploadRule(_0x2df438,_0x23ca6e=DEFAULT_UPLOAD_RULES){const _0x1326b8=_0x54d517;return _0x23ca6e[_0x1326b8(0xbf)](_0x495dff=>_0x495dff[_0x1326b8(0xea)]===_0x2df438)||_0x23ca6e[_0x23ca6e[_0x1326b8(0xca)]-0x1];}export function getUrls(_0x3a607f){const _0x375192=_0x54d517;return _0x3a607f['map'](_0x3822fd=>String(_0x3822fd[_0x375192(0xc8)]||'')[_0x375192(0xc5)](/,/g,encodeURIComponent(',')));}export function pathJoin(..._0x940c51){const _0x27d743=_0x54d517;return _0x940c51[_0x27d743(0xc3)](_0x3e8cd4=>_0x3e8cd4[_0x27d743(0xc5)](/(^\/+|\/+$)/g,''))[_0x27d743(0xfe)](Boolean)[_0x27d743(0xd0)]('/');}export function uploadUid(){const _0x3b146c=_0x54d517;return Date['now']()+'_'+Math[_0x3b146c(0xe4)]()[_0x3b146c(0xe1)](0x24)[_0x3b146c(0xff)](0x2,0x9);}
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export
|
|
3
|
-
namespace?: string;
|
|
4
|
-
constructor(namespace?: string);
|
|
5
|
-
request(options?: ServiceRequestOptions): Promise<unknown>;
|
|
6
|
-
page(data?: Record<string, unknown>): Promise<{
|
|
7
|
-
list: Record<string, unknown>[];
|
|
8
|
-
pagination: {
|
|
9
|
-
page: number;
|
|
10
|
-
size: number;
|
|
11
|
-
total: number;
|
|
12
|
-
};
|
|
13
|
-
}>;
|
|
14
|
-
list(data?: Record<string, unknown>): Promise<Record<string, unknown>[]>;
|
|
15
|
-
info(params: {
|
|
16
|
-
id: number | string;
|
|
17
|
-
}): Promise<Record<string, unknown>>;
|
|
18
|
-
add(data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown>;
|
|
19
|
-
update(data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown>;
|
|
20
|
-
delete(data: {
|
|
21
|
-
ids: Array<number | string>;
|
|
22
|
-
force?: boolean;
|
|
23
|
-
} | Array<number | string> | Array<Record<string, unknown>>): Promise<unknown>;
|
|
24
|
-
restore(data: {
|
|
25
|
-
ids: Array<number | string>;
|
|
26
|
-
}): Promise<unknown>;
|
|
27
|
-
}
|
|
1
|
+
/** @deprecated 请从 vome-core/client 或本目录 index 使用 BaseService */
|
|
2
|
+
export { BaseService } from '../../client';
|
|
@@ -1,76 +1 @@
|
|
|
1
|
-
|
|
2
|
-
function stripTimeMeta(data) {
|
|
3
|
-
if (Array.isArray(data))
|
|
4
|
-
return data.map((item) => stripTimeMeta(item));
|
|
5
|
-
if (data && typeof data === "object") {
|
|
6
|
-
const out = { ...data };
|
|
7
|
-
delete out.createTime;
|
|
8
|
-
delete out.updateTime;
|
|
9
|
-
return out;
|
|
10
|
-
}
|
|
11
|
-
return data;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export class BaseService {
|
|
15
|
-
namespace;
|
|
16
|
-
constructor(namespace) {
|
|
17
|
-
if (namespace)
|
|
18
|
-
this.namespace = namespace.replace(/^\//, "");
|
|
19
|
-
}
|
|
20
|
-
async request(options = {}) {
|
|
21
|
-
let url = options.url || "";
|
|
22
|
-
if (url && !/^https?:\/\//.test(url)) {
|
|
23
|
-
if (this.namespace) {
|
|
24
|
-
const ns = this.namespace.startsWith("/") ? this.namespace : `/${this.namespace}`;
|
|
25
|
-
url = url.startsWith("/") ? `${ns}${url}` : `${ns}/${url}`;
|
|
26
|
-
}
|
|
27
|
-
if (!url.startsWith("/"))
|
|
28
|
-
url = `/${url}`;
|
|
29
|
-
}
|
|
30
|
-
const method = (options.method || "GET").toUpperCase();
|
|
31
|
-
if (method === "GET") {
|
|
32
|
-
const params = options.params || {};
|
|
33
|
-
const q = new URLSearchParams;
|
|
34
|
-
for (const [k, v] of Object.entries(params)) {
|
|
35
|
-
if (v == null)
|
|
36
|
-
continue;
|
|
37
|
-
q.set(k, String(v));
|
|
38
|
-
}
|
|
39
|
-
const qs = q.toString();
|
|
40
|
-
return request(qs ? `${url}?${qs}` : url);
|
|
41
|
-
}
|
|
42
|
-
return request(url, {
|
|
43
|
-
method,
|
|
44
|
-
body: JSON.stringify(stripTimeMeta(options.data ?? {}))
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
page(data = {}) {
|
|
48
|
-
return this.request({ url: "/page", method: "POST", data });
|
|
49
|
-
}
|
|
50
|
-
list(data = {}) {
|
|
51
|
-
return this.request({
|
|
52
|
-
url: "/list",
|
|
53
|
-
method: "POST",
|
|
54
|
-
data
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
info(params) {
|
|
58
|
-
return this.request({
|
|
59
|
-
url: "/info",
|
|
60
|
-
method: "GET",
|
|
61
|
-
params
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
add(data) {
|
|
65
|
-
return this.request({ url: "/add", method: "POST", data });
|
|
66
|
-
}
|
|
67
|
-
update(data) {
|
|
68
|
-
return this.request({ url: "/update", method: "POST", data });
|
|
69
|
-
}
|
|
70
|
-
delete(data) {
|
|
71
|
-
return this.request({ url: "/delete", method: "POST", data });
|
|
72
|
-
}
|
|
73
|
-
restore(data) {
|
|
74
|
-
return this.request({ url: "/restore", method: "POST", data });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
export { BaseService } from "../../client";
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import { BaseService } from '
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { BaseService, createEpsService, resolveService, serviceOf, type CreateEpsOptions, type ServiceLeaf, type ServiceTree } from '../../client';
|
|
2
|
+
/** 与历史一致:默认挂在 admin 侧 */
|
|
3
|
+
export declare const service: ServiceTree & {
|
|
4
|
+
request: BaseService["request"];
|
|
4
5
|
};
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare const service: ServiceRoot;
|
|
10
|
-
/** 从 EPS 全量重建 service 树(无写死业务路由) */
|
|
11
|
-
export declare function createEps(force?: boolean): Promise<any>;
|
|
6
|
+
/** 兼容 createEps() / createEps(true) */
|
|
7
|
+
export declare function createEps(forceOrOpts?: boolean | CreateEpsOptions): Promise<ServiceTree & {
|
|
8
|
+
request: BaseService["request"];
|
|
9
|
+
}>;
|
|
12
10
|
export declare function setServicePerms(perms: string[], isSuper?: boolean): void;
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
/** @deprecated 请用 service.base.xxx */
|
|
16
|
-
export declare function createEpsService(prefix: string): ServiceLeaf;
|
|
17
|
-
export { BaseService };
|
|
18
|
-
export type { ServiceLeaf, ServiceTree } from '../../../typings/admin/comm/service';
|
|
11
|
+
export { BaseService, createEpsService, resolveService, serviceOf, };
|
|
12
|
+
export type { ServiceLeaf, ServiceTree, CreateEpsOptions };
|
|
@@ -1,263 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { request } from "../api/client";
|
|
2
|
+
import {
|
|
3
|
+
BaseService,
|
|
4
|
+
bindEpsHotReload,
|
|
5
|
+
configureClient,
|
|
6
|
+
createEps as createEpsClient,
|
|
7
|
+
createEpsService,
|
|
8
|
+
getService,
|
|
9
|
+
resolveService,
|
|
10
|
+
serviceOf,
|
|
11
|
+
setServicePerms as setServicePermsClient
|
|
12
|
+
} from "../../client";
|
|
13
|
+
configureClient({ request });
|
|
14
|
+
bindEpsHotReload("admin");
|
|
15
|
+
export const service = getService("admin");
|
|
16
|
+
export async function createEps(forceOrOpts = false) {
|
|
17
|
+
if (typeof forceOrOpts === "boolean") {
|
|
18
|
+
return createEpsClient({ force: forceOrOpts, side: "admin", requireRoot: "base" });
|
|
19
|
+
}
|
|
20
|
+
return createEpsClient({
|
|
21
|
+
side: "admin",
|
|
22
|
+
requireRoot: "base",
|
|
23
|
+
...forceOrOpts
|
|
24
|
+
});
|
|
6
25
|
}
|
|
7
|
-
function methodName(path) {
|
|
8
|
-
return path.replace(/^\//, "").replace(/[:,\s/-]/g, "");
|
|
9
|
-
}
|
|
10
|
-
function isValidName(name) {
|
|
11
|
-
return Boolean(name) && !["{", "}", ":"].some((c) => name.includes(c));
|
|
12
|
-
}
|
|
13
|
-
function resolvePermCode(prefix, action) {
|
|
14
|
-
const parts = prefix.replace(/^\//, "").split("/").filter(Boolean);
|
|
15
|
-
const module = parts[1] || parts[0] || "base";
|
|
16
|
-
let resource = parts.slice(2).join(":");
|
|
17
|
-
if (resource === module) {
|
|
18
|
-
resource = module;
|
|
19
|
-
} else if (resource.startsWith(`${module}:`)) {
|
|
20
|
-
resource = resource.slice(module.length + 1);
|
|
21
|
-
}
|
|
22
|
-
const head = `${module}-`;
|
|
23
|
-
if (resource.startsWith(head))
|
|
24
|
-
resource = resource.slice(head.length);
|
|
25
|
-
resource = resource.replace(/-/g, ":");
|
|
26
|
-
if (!resource)
|
|
27
|
-
resource = module;
|
|
28
|
-
return `${module}:${resource}:${action}`;
|
|
29
|
-
}
|
|
30
|
-
function prefixToParts(prefix) {
|
|
31
|
-
const raw = prefix.replace(/^\//, "");
|
|
32
|
-
return raw.replace(new RegExp(`^${SIDE_ID}/?`), "").split("/").filter(Boolean).map(toCamel);
|
|
33
|
-
}
|
|
34
|
-
function bindCrud(leaf, base) {
|
|
35
|
-
const proto = BaseService.prototype;
|
|
36
|
-
for (const name of [
|
|
37
|
-
"request",
|
|
38
|
-
"page",
|
|
39
|
-
"list",
|
|
40
|
-
"info",
|
|
41
|
-
"add",
|
|
42
|
-
"update",
|
|
43
|
-
"delete",
|
|
44
|
-
"restore"
|
|
45
|
-
]) {
|
|
46
|
-
const fn = proto[name];
|
|
47
|
-
if (typeof fn === "function") {
|
|
48
|
-
leaf[name] = fn.bind(base);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function bindApis(leaf, base, apis) {
|
|
53
|
-
leaf.permission ||= {};
|
|
54
|
-
for (const api of apis) {
|
|
55
|
-
const name = methodName(api.path);
|
|
56
|
-
if (!isValidName(name) || /[-:]/g.test(name))
|
|
57
|
-
continue;
|
|
58
|
-
const method = (api.method || "get").toLowerCase();
|
|
59
|
-
leaf[name] = function(data) {
|
|
60
|
-
return this.request({
|
|
61
|
-
url: api.path.startsWith("/") ? api.path : `/${api.path}`,
|
|
62
|
-
method,
|
|
63
|
-
[method === "post" ? "data" : "params"]: data
|
|
64
|
-
});
|
|
65
|
-
}.bind(base);
|
|
66
|
-
leaf.permission[name] = api.perms?.[0] || resolvePermCode(`/${leaf.namespace}`, name);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
function createLeaf(namespace, apis = []) {
|
|
70
|
-
const ns = namespace.replace(/^\//, "");
|
|
71
|
-
const base = new BaseService(ns);
|
|
72
|
-
const leaf = base;
|
|
73
|
-
leaf.namespace = ns;
|
|
74
|
-
leaf.permission = {};
|
|
75
|
-
leaf._permission = {};
|
|
76
|
-
bindCrud(leaf, base);
|
|
77
|
-
bindApis(leaf, base, apis);
|
|
78
|
-
return leaf;
|
|
79
|
-
}
|
|
80
|
-
function attachLeaf(tree, prefix, apis = []) {
|
|
81
|
-
const raw = prefix.replace(/^\//, "");
|
|
82
|
-
const arr = prefixToParts(prefix);
|
|
83
|
-
if (!arr.length)
|
|
84
|
-
return;
|
|
85
|
-
let node = tree;
|
|
86
|
-
for (let i = 0;i < arr.length; i++) {
|
|
87
|
-
const key = arr[i];
|
|
88
|
-
const isLast = i === arr.length - 1;
|
|
89
|
-
if (!isLast) {
|
|
90
|
-
const cur = node[key];
|
|
91
|
-
if (!cur || typeof cur !== "object" || "namespace" in cur) {
|
|
92
|
-
node[key] = {};
|
|
93
|
-
}
|
|
94
|
-
node = node[key];
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
const leaf = createLeaf(raw, apis);
|
|
98
|
-
node[key] = leaf;
|
|
99
|
-
return leaf;
|
|
100
|
-
}
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
function buildFromEps(map) {
|
|
104
|
-
const root = getOrCreateRoot();
|
|
105
|
-
const list = Object.values(map).flat();
|
|
106
|
-
for (const e of list) {
|
|
107
|
-
if (!e?.prefix)
|
|
108
|
-
continue;
|
|
109
|
-
const leaf = attachLeaf(root, e.prefix, e.api || []);
|
|
110
|
-
if (leaf) {
|
|
111
|
-
const op = e.pageQueryOp;
|
|
112
|
-
if (op) {
|
|
113
|
-
leaf.search = {
|
|
114
|
-
fieldEq: op.fieldEq,
|
|
115
|
-
fieldLike: op.fieldLike,
|
|
116
|
-
fieldArray: op.fieldArray,
|
|
117
|
-
fieldRange: op.fieldRange,
|
|
118
|
-
keyWordLikeFields: op.keyWordLikeFields
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function normalizeEpsMap(input) {
|
|
125
|
-
if (!input || typeof input !== "object")
|
|
126
|
-
return {};
|
|
127
|
-
const m = input;
|
|
128
|
-
if ("code" in m && "data" in m && m.data && typeof m.data === "object" && !Array.isArray(m.data)) {
|
|
129
|
-
return m.data;
|
|
130
|
-
}
|
|
131
|
-
return input;
|
|
132
|
-
}
|
|
133
|
-
function countPrefixedEntities(map) {
|
|
134
|
-
return Object.values(map).flat().filter((e) => e && typeof e === "object" && Boolean(e.prefix)).length;
|
|
135
|
-
}
|
|
136
|
-
const SERVICE_ROOT_KEY = Symbol.for("vome.admin.service.root");
|
|
137
|
-
const EPS_PROMISE_KEY = Symbol.for("vome.admin.service.eps");
|
|
138
|
-
function createServiceRoot() {
|
|
139
|
-
const root = new BaseService;
|
|
140
|
-
return {
|
|
141
|
-
request: root.request.bind(root)
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
function getOrCreateRoot() {
|
|
145
|
-
const g = globalThis;
|
|
146
|
-
if (!g[SERVICE_ROOT_KEY]) {
|
|
147
|
-
g[SERVICE_ROOT_KEY] = createServiceRoot();
|
|
148
|
-
}
|
|
149
|
-
return g[SERVICE_ROOT_KEY];
|
|
150
|
-
}
|
|
151
|
-
function resetServiceModules() {
|
|
152
|
-
const root = getOrCreateRoot();
|
|
153
|
-
for (const key of Object.keys(root)) {
|
|
154
|
-
if (key === "request")
|
|
155
|
-
continue;
|
|
156
|
-
delete root[key];
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
export const service = new Proxy({}, {
|
|
160
|
-
get(_t, prop, _r) {
|
|
161
|
-
const root = getOrCreateRoot();
|
|
162
|
-
const val = Reflect.get(root, prop, root);
|
|
163
|
-
return typeof val === "function" ? val.bind(root) : val;
|
|
164
|
-
},
|
|
165
|
-
set(_t, prop, value) {
|
|
166
|
-
return Reflect.set(getOrCreateRoot(), prop, value);
|
|
167
|
-
},
|
|
168
|
-
has(_t, prop) {
|
|
169
|
-
return Reflect.has(getOrCreateRoot(), prop);
|
|
170
|
-
},
|
|
171
|
-
ownKeys() {
|
|
172
|
-
return Reflect.ownKeys(getOrCreateRoot());
|
|
173
|
-
},
|
|
174
|
-
getOwnPropertyDescriptor(_t, prop) {
|
|
175
|
-
const desc = Reflect.getOwnPropertyDescriptor(getOrCreateRoot(), prop);
|
|
176
|
-
if (desc)
|
|
177
|
-
desc.configurable = true;
|
|
178
|
-
return desc;
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
export async function createEps(force = false) {
|
|
182
|
-
const g = globalThis;
|
|
183
|
-
if (!force && g[EPS_PROMISE_KEY])
|
|
184
|
-
return g[EPS_PROMISE_KEY];
|
|
185
|
-
const run = (async () => {
|
|
186
|
-
const raw = await loadEps(force) || {};
|
|
187
|
-
const map = normalizeEpsMap(raw);
|
|
188
|
-
const n = countPrefixedEntities(map);
|
|
189
|
-
if (!n) {
|
|
190
|
-
throw new Error("[vome-eps] empty or invalid — enable vome.eps and check GET /admin/base/open/eps (expect module map with prefix)");
|
|
191
|
-
}
|
|
192
|
-
resetServiceModules();
|
|
193
|
-
buildFromEps(map);
|
|
194
|
-
const root = getOrCreateRoot();
|
|
195
|
-
const base = root.base;
|
|
196
|
-
if (!base || typeof base !== "object") {
|
|
197
|
-
throw new Error("[vome-eps] mount failed: service.base missing after EPS apply");
|
|
198
|
-
}
|
|
199
|
-
return root;
|
|
200
|
-
})();
|
|
201
|
-
g[EPS_PROMISE_KEY] = run;
|
|
202
|
-
try {
|
|
203
|
-
return await run;
|
|
204
|
-
} catch (e) {
|
|
205
|
-
g[EPS_PROMISE_KEY] = null;
|
|
206
|
-
throw e;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
if (undefined) {}
|
|
210
26
|
export function setServicePerms(perms, isSuper = false) {
|
|
211
|
-
|
|
212
|
-
const root = getOrCreateRoot();
|
|
213
|
-
function deep(d) {
|
|
214
|
-
if (!d || typeof d !== "object")
|
|
215
|
-
return;
|
|
216
|
-
const obj = d;
|
|
217
|
-
if (obj.permission && obj.namespace) {
|
|
218
|
-
obj._permission = {};
|
|
219
|
-
for (const key of Object.keys(obj.permission)) {
|
|
220
|
-
if (isSuper) {
|
|
221
|
-
obj._permission[key] = true;
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
const code = obj.permission[key];
|
|
225
|
-
obj._permission[key] = list.includes(code) || list.some((p) => p.replace(/:/g, "/").includes(`${obj.namespace.replace(/^admin\//, "")}/${key}`));
|
|
226
|
-
}
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
for (const k of Object.keys(obj)) {
|
|
230
|
-
if (k === "request")
|
|
231
|
-
continue;
|
|
232
|
-
deep(obj[k]);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
deep(root);
|
|
236
|
-
}
|
|
237
|
-
export function resolveService(path) {
|
|
238
|
-
const parts = path.replace(/^\//, "").split(".").filter(Boolean);
|
|
239
|
-
let cur = getOrCreateRoot();
|
|
240
|
-
for (const p of parts) {
|
|
241
|
-
if (!cur || typeof cur !== "object")
|
|
242
|
-
return;
|
|
243
|
-
cur = cur[p];
|
|
244
|
-
}
|
|
245
|
-
if (cur && typeof cur === "object" && "namespace" in cur) {
|
|
246
|
-
return cur;
|
|
247
|
-
}
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
export function serviceOf(prefix) {
|
|
251
|
-
const raw = prefix.replace(/\/$/, "");
|
|
252
|
-
const path = prefixToParts(raw).join(".");
|
|
253
|
-
const hit = resolveService(path);
|
|
254
|
-
if (!hit) {
|
|
255
|
-
throw new Error(`[vome-eps] service missing: ${prefix} (await createEps first)`);
|
|
256
|
-
}
|
|
257
|
-
return hit;
|
|
258
|
-
}
|
|
259
|
-
export function createEpsService(prefix) {
|
|
260
|
-
return serviceOf(prefix);
|
|
27
|
+
return setServicePermsClient(perms, isSuper, "admin");
|
|
261
28
|
}
|
|
262
29
|
|
|
263
|
-
export {
|
|
30
|
+
export {
|
|
31
|
+
BaseService,
|
|
32
|
+
createEpsService,
|
|
33
|
+
resolveService,
|
|
34
|
+
serviceOf
|
|
35
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ServiceRequestOptions } from '../../typings/admin/comm/service';
|
|
2
|
+
/** BaseService:namespace + request + 标准 CRUD */
|
|
3
|
+
export declare class BaseService {
|
|
4
|
+
namespace?: string;
|
|
5
|
+
constructor(namespace?: string);
|
|
6
|
+
request(options?: ServiceRequestOptions): Promise<unknown>;
|
|
7
|
+
page(data?: Record<string, unknown>): Promise<{
|
|
8
|
+
list: Record<string, unknown>[];
|
|
9
|
+
pagination: {
|
|
10
|
+
page: number;
|
|
11
|
+
size: number;
|
|
12
|
+
total: number;
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
list(data?: Record<string, unknown>): Promise<Record<string, unknown>[]>;
|
|
16
|
+
info(params: {
|
|
17
|
+
id: number | string;
|
|
18
|
+
}): Promise<Record<string, unknown>>;
|
|
19
|
+
add(data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown>;
|
|
20
|
+
update(data: Record<string, unknown> | Record<string, unknown>[]): Promise<unknown>;
|
|
21
|
+
delete(data: {
|
|
22
|
+
ids: Array<number | string>;
|
|
23
|
+
force?: boolean;
|
|
24
|
+
} | Array<number | string> | Array<Record<string, unknown>>): Promise<unknown>;
|
|
25
|
+
restore(data: {
|
|
26
|
+
ids: Array<number | string>;
|
|
27
|
+
}): Promise<unknown>;
|
|
28
|
+
}
|