vome-core 0.0.55 → 0.0.56
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/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/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/export-excel.js +1 -1
- package/dist/admin/lib/file-preview.js +1 -1
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- 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/lib/video-frame.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/dist/src/core/index.d.ts +2 -2
- package/dist/src/ext/index.d.ts +5 -1
- package/dist/src/ext/market-crypto.d.ts +41 -0
- package/dist/src/ext/market-install.test.d.ts +1 -0
- package/dist/src/ext/market-package.d.ts +28 -0
- package/dist/src/ext/module-install-gate.d.ts +13 -0
- package/dist/src/ext/path.d.ts +6 -0
- package/dist/src/server/index.d.ts +2 -2
- package/dist/typings/ext/market.d.ts +43 -0
- package/dist/typings/ext/module.d.ts +7 -0
- package/package.json +3 -1
package/dist/shared/excel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x329ba2=_0x27b1;(function(_0x5eef47,_0x190819){const _0x1a1815=_0x27b1,_0x67a1f3=_0x5eef47();while(!![]){try{const _0x47c63d=parseInt(_0x1a1815(0x13c))/0x1*(-parseInt(_0x1a1815(0x14c))/0x2)+parseInt(_0x1a1815(0x12d))/0x3+-parseInt(_0x1a1815(0x133))/0x4*(parseInt(_0x1a1815(0x144))/0x5)+-parseInt(_0x1a1815(0x12b))/0x6*(-parseInt(_0x1a1815(0x130))/0x7)+parseInt(_0x1a1815(0x149))/0x8*(-parseInt(_0x1a1815(0x13a))/0x9)+-parseInt(_0x1a1815(0x141))/0xa*(parseInt(_0x1a1815(0x146))/0xb)+parseInt(_0x1a1815(0x14d))/0xc;if(_0x47c63d===_0x190819)break;else _0x67a1f3['push'](_0x67a1f3['shift']());}catch(_0x3341f8){_0x67a1f3['push'](_0x67a1f3['shift']());}}}(_0x485c,0x6fa8c));function _0x485c(){const _0x20969a=['DxbKyxrLvgLTzq','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','mJm1nta3mfzJq2fmAG','yxjYyxK','yw9Hx3rVx3nOzwv0','ndeWrMrmBNjb','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','mtfmwMX3CLi','ChjVCa','C2v0','mZCWne9pBw1UuW','zw5KC1DPDgG','y3jLyxrLvgLTzq','mZuYmtiWuwnbuvHm','ndaXnJi2ognRD1Lswa','BgfIzwW','C2HLzxrFDg9FANnVBG','CMvHza','otu3ndjlCeLTCNy','Aw5JBhvKzxm','mtu1mJu0nw1gAxHywG','z2v0','BgvUz3rO','mJCZyxbLEe9o','BwfW','u2HLzxqX','mJa3mKfjB1H5wG','DgvUyw50swq','C3rYAw5N','yM9VA19HChbLBMrFC2HLzxq','u2HLzxrZ','lNHSC3G','DhjPBq','nZuYngT5wu9bvq','DxrPBhm','mK1fy1nAwa','EgXZEa','u2HLzxroyw1LCW'];_0x485c=function(){return _0x20969a;};return _0x485c();}import*as _0x1db80e from'xlsx';export const IMPORT_SKIP_FIELDS=['id',_0x329ba2(0x14b),_0x329ba2(0x13f),'deletedAt',_0x329ba2(0x134)];export function isImportSkipField(_0x42d6e7){const _0x33ec28=_0x329ba2;return IMPORT_SKIP_FIELDS[_0x33ec28(0x12c)](_0x42d6e7);}export function buildExcelBuffer(_0x185872,_0x592895,_0x9fb88){const _0x597594=_0x329ba2,_0x374279=_0x185872[_0x597594(0x131)](_0x118cc0=>_0x118cc0['label']||_0x118cc0[_0x597594(0x147)]),_0x3c8b3d=_0x592895[_0x597594(0x131)](_0x4d4c0c=>_0x185872['map'](_0x377b52=>{const _0x52aaeb=_0x597594;if(_0x9fb88)return _0x9fb88(_0x377b52[_0x52aaeb(0x147)],_0x4d4c0c);const _0x1f826e=_0x4d4c0c[_0x377b52[_0x52aaeb(0x147)]];if(_0x1f826e==null)return'';return String(_0x1f826e);})),_0x24824d=_0x1db80e[_0x597594(0x13b)][_0x597594(0x143)]([_0x374279,..._0x3c8b3d]),_0x12c0d2=_0x1db80e[_0x597594(0x13b)]['book_new']();return _0x1db80e['utils'][_0x597594(0x136)](_0x12c0d2,_0x24824d,_0x597594(0x132)),_0x1db80e['write'](_0x12c0d2,{'bookType':_0x597594(0x13d),'type':_0x597594(0x142)});}export function buildImportTemplateBuffer(_0x565fe6){return buildExcelBuffer(_0x565fe6,[]);}export function parseExcelBuffer(_0xd7cd60,_0x3a2df0){const _0x43136b=_0x329ba2,_0x39ed52=_0x1db80e[_0x43136b(0x12a)](_0xd7cd60,{'type':_0x43136b(0x142),'cellDates':!![]}),_0x4341be=_0x39ed52[_0x43136b(0x13e)][0x0];if(!_0x4341be)return[];const _0xfc8069=_0x39ed52[_0x43136b(0x137)][_0x4341be];if(!_0xfc8069)return[];const _0x177d7c=_0x1db80e['utils'][_0x43136b(0x129)](_0xfc8069,{'header':0x1,'defval':'','raw':![]});if(!_0x177d7c[_0x43136b(0x12f)])return[];const _0x3febda=(_0x177d7c[0x0]||[])[_0x43136b(0x131)](_0x57a52a=>String(_0x57a52a??'')[_0x43136b(0x139)]()),_0x409867=new Map();if(_0x3a2df0?.[_0x43136b(0x12f)])for(const _0xac4d78 of _0x3a2df0){_0x409867[_0x43136b(0x148)](_0xac4d78[_0x43136b(0x14e)][_0x43136b(0x139)](),_0xac4d78['prop']),_0x409867[_0x43136b(0x148)](_0xac4d78[_0x43136b(0x147)],_0xac4d78[_0x43136b(0x147)]);}const _0x4442a3=_0x3febda[_0x43136b(0x131)](_0x9aaadc=>{const _0x25267c=_0x43136b;if(!_0x9aaadc)return'';return _0x409867[_0x25267c(0x12e)](_0x9aaadc)||_0x9aaadc;}),_0x38da96=[];for(let _0x55dda4=0x1;_0x55dda4<_0x177d7c[_0x43136b(0x12f)];_0x55dda4++){const _0x5288ca=_0x177d7c[_0x55dda4]||[],_0x575c66={};let _0x100dfe=!![];for(let _0x12ac66=0x0;_0x12ac66<_0x4442a3[_0x43136b(0x12f)];_0x12ac66++){const _0x31ad40=_0x4442a3[_0x12ac66];if(!_0x31ad40)continue;let _0xb54560=_0x5288ca[_0x12ac66];if(_0xb54560==null||_0xb54560===''){_0x575c66[_0x31ad40]=_0xb54560==null?null:'';continue;}_0x100dfe=![],typeof _0xb54560===_0x43136b(0x135)?_0x575c66[_0x31ad40]=_0xb54560[_0x43136b(0x139)]():_0x575c66[_0x31ad40]=_0xb54560;}if(!_0x100dfe)_0x38da96['push'](_0x575c66);}return _0x38da96;}function _0x27b1(_0x2e63fa,_0x46bb79){_0x2e63fa=_0x2e63fa-0x129;const _0x485c58=_0x485c();let _0x27b169=_0x485c58[_0x2e63fa];if(_0x27b1['BmmGuy']===undefined){var _0x33c228=function(_0x27558f){const _0xfe0298='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1db80e='',_0x42d6e7='';for(let _0x185872=0x0,_0x592895,_0x9fb88,_0x374279=0x0;_0x9fb88=_0x27558f['charAt'](_0x374279++);~_0x9fb88&&(_0x592895=_0x185872%0x4?_0x592895*0x40+_0x9fb88:_0x9fb88,_0x185872++%0x4)?_0x1db80e+=String['fromCharCode'](0xff&_0x592895>>(-0x2*_0x185872&0x6)):0x0){_0x9fb88=_0xfe0298['indexOf'](_0x9fb88);}for(let _0x3c8b3d=0x0,_0x24824d=_0x1db80e['length'];_0x3c8b3d<_0x24824d;_0x3c8b3d++){_0x42d6e7+='%'+('00'+_0x1db80e['charCodeAt'](_0x3c8b3d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x42d6e7);};_0x27b1['ooESuO']=_0x33c228,_0x27b1['NEkpMo']={},_0x27b1['BmmGuy']=!![];}const _0x1dcc35=_0x485c58[0x0],_0x47ea0a=_0x2e63fa+_0x1dcc35,_0x4ddbed=_0x27b1['NEkpMo'][_0x47ea0a];return!_0x4ddbed?(_0x27b169=_0x27b1['ooESuO'](_0x27b169),_0x27b1['NEkpMo'][_0x47ea0a]=_0x27b169):_0x27b169=_0x4ddbed,_0x27b169;}export function excelFilename(_0x5cfde9){const _0x5c155f=_0x329ba2;return _0x5cfde9[_0x5c155f(0x14a)](_0x5c155f(0x138))?_0x5cfde9:_0x5cfde9+'.xlsx';}export function excelResponseHeaders(_0x33de3b){const _0x11b6e4=_0x329ba2,_0x5bc7a3=excelFilename(_0x33de3b);return{'Content-Type':_0x11b6e4(0x140),'Content-Disposition':_0x11b6e4(0x145)+encodeURIComponent(_0x5bc7a3)};}
|
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function _0x11fe(){var _0x45dfe0=['ndi5nti3vKPbCLvP','ovnewNHqyW','mta4nJqZnJHVqurhDhC','n0jJAvPsAG','ntaZnJmWChnpAML2','mtGZmdC4mtbfA29HtMu','odK0D0LzDwv5','mJu1BerJvhbc','nJC4ntiXnMPwC2z4qq','mtu0zuLszMv3','nZm4otG0rhrewe1i','ovDHqMrQDa'];_0x11fe=function(){return _0x45dfe0;};return _0x11fe();}function _0x7b41(_0x16102b,_0x2279e9){_0x16102b=_0x16102b-0x1db;var _0x11fec6=_0x11fe();var _0x7b41ed=_0x11fec6[_0x16102b];if(_0x7b41['ZdiBEw']===undefined){var _0x46dbd8=function(_0x42e445){var _0xdb8e01='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x59ee70='',_0x24e520='';for(var _0x42abfe=0x0,_0x510020,_0x2f7f5d,_0x51d07f=0x0;_0x2f7f5d=_0x42e445['charAt'](_0x51d07f++);~_0x2f7f5d&&(_0x510020=_0x42abfe%0x4?_0x510020*0x40+_0x2f7f5d:_0x2f7f5d,_0x42abfe++%0x4)?_0x59ee70+=String['fromCharCode'](0xff&_0x510020>>(-0x2*_0x42abfe&0x6)):0x0){_0x2f7f5d=_0xdb8e01['indexOf'](_0x2f7f5d);}for(var _0x5db195=0x0,_0x196361=_0x59ee70['length'];_0x5db195<_0x196361;_0x5db195++){_0x24e520+='%'+('00'+_0x59ee70['charCodeAt'](_0x5db195)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x24e520);};_0x7b41['dgcOqF']=_0x46dbd8,_0x7b41['xZBGPP']={},_0x7b41['ZdiBEw']=!![];}var _0x132349=_0x11fec6[0x0],_0x479641=_0x16102b+_0x132349,_0x5ab51b=_0x7b41['xZBGPP'][_0x479641];return!_0x5ab51b?(_0x7b41ed=_0x7b41['dgcOqF'](_0x7b41ed),_0x7b41['xZBGPP'][_0x479641]=_0x7b41ed):_0x7b41ed=_0x5ab51b,_0x7b41ed;}(function(_0x45db72,_0x75a5e6){var _0x44a6b1=_0x7b41,_0xd70db0=_0x45db72();while(!![]){try{var _0x15ba21=-parseInt(_0x44a6b1(0x1db))/0x1+-parseInt(_0x44a6b1(0x1df))/0x2*(-parseInt(_0x44a6b1(0x1dc))/0x3)+-parseInt(_0x44a6b1(0x1e3))/0x4+-parseInt(_0x44a6b1(0x1e2))/0x5*(parseInt(_0x44a6b1(0x1e1))/0x6)+parseInt(_0x44a6b1(0x1de))/0x7*(parseInt(_0x44a6b1(0x1dd))/0x8)+-parseInt(_0x44a6b1(0x1e6))/0x9*(-parseInt(_0x44a6b1(0x1e0))/0xa)+-parseInt(_0x44a6b1(0x1e4))/0xb*(parseInt(_0x44a6b1(0x1e5))/0xc);if(_0x15ba21===_0x75a5e6)break;else _0xd70db0['push'](_0xd70db0['shift']());}catch(_0x1d87f6){_0xd70db0['push'](_0xd70db0['shift']());}}}(_0x11fe,0xe79d6));export{merge}from'../comm/merge';export{deepTree,flattenTree}from'./tree';export{RES_CODE}from'../routing/base';export{buildExcelBuffer,buildImportTemplateBuffer,parseExcelBuffer,excelFilename,excelResponseHeaders,IMPORT_SKIP_FIELDS,isImportSkipField}from'./excel';
|
package/dist/shared/tree.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x227d(){const _0x366904=['ntqXndK2vMTkB3jO','yxnJ','mtbNz3PqBu0','mvLjD0rcqW','y2HPBgrYzw4','otHtwhvqsK8','mJaWmJi0otblEwrIC08','oteZnJG5men2C255CW','z2v0','C29YDa','mZCZotiXmKHXwKz6CG','ndy2odC4rwHlC0jV','mJC0ntqXmML3sNfsAq','DMfSDwvZ','CgfYzw50swq','BgvUz3rO','AgfZ','ChvZAa','B3jKzxjoDw0','mti5mJK2mNHQuvz3vq','C2v0'];_0x227d=function(){return _0x366904;};return _0x227d();}const _0x100110=_0xe88b;function _0xe88b(_0x1a00ff,_0xa575d6){_0x1a00ff=_0x1a00ff-0x142;const _0x227d1c=_0x227d();let _0xe88b5f=_0x227d1c[_0x1a00ff];if(_0xe88b['IAdxmP']===undefined){var _0x4b8043=function(_0x50a2c8){const _0x5d71c9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x155626='',_0x93678e='';for(let _0x15447c=0x0,_0x577ff1,_0x1f6641,_0x122df4=0x0;_0x1f6641=_0x50a2c8['charAt'](_0x122df4++);~_0x1f6641&&(_0x577ff1=_0x15447c%0x4?_0x577ff1*0x40+_0x1f6641:_0x1f6641,_0x15447c++%0x4)?_0x155626+=String['fromCharCode'](0xff&_0x577ff1>>(-0x2*_0x15447c&0x6)):0x0){_0x1f6641=_0x5d71c9['indexOf'](_0x1f6641);}for(let _0x52a1d1=0x0,_0x1666d7=_0x155626['length'];_0x52a1d1<_0x1666d7;_0x52a1d1++){_0x93678e+='%'+('00'+_0x155626['charCodeAt'](_0x52a1d1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x93678e);};_0xe88b['jhrUjG']=_0x4b8043,_0xe88b['BZsIyt']={},_0xe88b['IAdxmP']=!![];}const _0x5b922d=_0x227d1c[0x0],_0x37de72=_0x1a00ff+_0x5b922d,_0x498f3b=_0xe88b['BZsIyt'][_0x37de72];return!_0x498f3b?(_0xe88b5f=_0xe88b['jhrUjG'](_0xe88b5f),_0xe88b['BZsIyt'][_0x37de72]=_0xe88b5f):_0xe88b5f=_0x498f3b,_0xe88b5f;}(function(_0x237aaa,_0x5b6b36){const _0x3c7fdd=_0xe88b,_0x4d066d=_0x237aaa();while(!![]){try{const _0x2c9749=parseInt(_0x3c7fdd(0x143))/0x1*(-parseInt(_0x3c7fdd(0x153))/0x2)+-parseInt(_0x3c7fdd(0x14b))/0x3+parseInt(_0x3c7fdd(0x14c))/0x4+parseInt(_0x3c7fdd(0x142))/0x5*(-parseInt(_0x3c7fdd(0x14a))/0x6)+parseInt(_0x3c7fdd(0x145))/0x7*(-parseInt(_0x3c7fdd(0x155))/0x8)+parseInt(_0x3c7fdd(0x147))/0x9+parseInt(_0x3c7fdd(0x146))/0xa;if(_0x2c9749===_0x5b6b36)break;else _0x4d066d['push'](_0x4d066d['shift']());}catch(_0x48a74c){_0x4d066d['push'](_0x4d066d['shift']());}}}(_0x227d,0xacc63));export function deepTree(_0x155626,_0x93678e=_0x100110(0x156)){const _0x4c4156=_0x100110,_0x15447c=new Map();for(const _0x122df4 of _0x155626){if(_0x122df4['id']==null)continue;_0x15447c[_0x4c4156(0x154)](_0x122df4['id'],{..._0x122df4,'children':[]});}const _0x577ff1=[];for(const _0x52a1d1 of _0x15447c[_0x4c4156(0x14d)]()){const _0x1666d7=_0x52a1d1[_0x4c4156(0x14e)];_0x1666d7!=null&&_0x1666d7!==''&&_0x15447c[_0x4c4156(0x150)](_0x1666d7)?_0x15447c[_0x4c4156(0x148)](_0x1666d7)[_0x4c4156(0x144)]['push'](_0x52a1d1):_0x577ff1[_0x4c4156(0x151)](_0x52a1d1);}const _0x1f6641=_0x327bba=>{const _0x3e55e3=_0x4c4156;_0x327bba[_0x3e55e3(0x149)]((_0x5943b3,_0x4056f5)=>{const _0xef5939=_0x3e55e3,_0x508397=_0x5943b3['orderNum']??0x0,_0x56c996=_0x4056f5[_0xef5939(0x152)]??0x0,_0x4bb74e=_0x93678e==='desc'?_0x56c996-_0x508397:_0x508397-_0x56c996;return _0x4bb74e||Number(_0x5943b3['id'])-Number(_0x4056f5['id']);});for(const _0x3c5998 of _0x327bba)if(_0x3c5998[_0x3e55e3(0x144)]?.[_0x3e55e3(0x14f)])_0x1f6641(_0x3c5998['children']);};return _0x1f6641(_0x577ff1),_0x577ff1;}export function flattenTree(_0x22c04f,_0x6144ce,_0x3e99d1=0x0,_0x2f8e9d=[]){const _0x1198c3=_0x100110;for(const _0x519d75 of _0x22c04f){const _0x2e0389=_0x519d75['children']||[];_0x2f8e9d[_0x1198c3(0x151)]({..._0x519d75,'depth':_0x3e99d1,'hasChildren':_0x2e0389[_0x1198c3(0x14f)]>0x0});if(_0x2e0389[_0x1198c3(0x14f)]&&_0x6144ce['has'](_0x519d75['id']))flattenTree(_0x2e0389,_0x6144ce,_0x3e99d1+0x1,_0x2f8e9d);}return _0x2f8e9d;}
|
package/dist/src/core/index.d.ts
CHANGED
|
@@ -15,6 +15,6 @@ export { Eps, isEpsEnabled, BaseController, RES_CODE, Controller, Get, Post, Put
|
|
|
15
15
|
export type { ApiFail, ApiResult, ApiSuccess, ControllerCrudOptions, ControllerMeta, ControllerRouteMeta, ControllerSide, CrudApi, CrudBeforeFn, CrudRegistrar, EpsApiItem, EpsColumn, EpsEntity, EpsModuleMap, HttpMethod, InsertParamFn, QueryExtendFn, QueryExtendQb, QueryFieldRef, QueryJoin, QueryJoinType, QueryOp, QueryOpCtx, QueryWhereFn, QueryWhereResult, ResCode, RouteMiddleware, RouteParamMeta, RouteParamSource, } from '../routing';
|
|
16
16
|
export { DbStore, baseColumns, BASE_COLUMN_COMMENTS, entitySchemas, columnComments, getColumnComments, syncColumnCommentsToPg, readCrudConfig, resolveSoftDelete, resolveUpsert, Repository, getRepository, InjectRepository, BaseService, q, compactWhere, needsAdvancedQuery, buildQueryOp, queryWithOp, attachCrudRoutes, isTenantEnabled, noTenant, normalizeHost, resolveTenantScope, tableHasDepartmentId, resolveDataScope, applyDataScopeWhere, applyRowScopes, noDataScope, } from '../orm';
|
|
17
17
|
export type { CrudUpsertMode, CrudModifyType, CrudWriteOptions, CrudTrashQueryOptions, CrudDeleteOptions, PageQuery, PagePagination, PageResult, } from '../orm';
|
|
18
|
-
export { BasePlugin, loadPluginClass, loadPluginClassFromPath, loadModuleHandlers, loadModuleHandlersFromPath, readPluginScript, resolvePluginServerPath, pDataPath, pPluginPath, pModulesPath, pModulePath, ModuleRegistry, microApps, createModuleGateway, } from '../ext';
|
|
19
|
-
export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, } from '../ext';
|
|
18
|
+
export { BasePlugin, loadPluginClass, loadPluginClassFromPath, loadModuleHandlers, loadModuleHandlersFromPath, readPluginScript, resolvePluginServerPath, pDataPath, pPluginPath, pModulesPath, pModulePath, pLicensesPath, pLicensePath, ModuleRegistry, microApps, createModuleGateway, DEFAULT_MARKET_PUBLIC_KEY_B64, newMarketId, newInstallNonce, stableStringify, resolveMarketPublicKey, resolveMarketPrivateKey, ed25519Sign, ed25519Verify, generateMarketKeyPair, pricingFromPrice, buildMarketSigPayload, signMarketSigPayload, verifyMarketSigPayload, issueLicenseFile, parseLicenseFile, verifyLicenseFile, hashZipEntries, readZipManifest, readMarketSig, sealVomeBuffer, verifySealedVome, assertModuleInstallAllowed, peekMarketPackage, } from '../ext';
|
|
19
|
+
export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, } from '../ext';
|
|
20
20
|
export { defineAuthMacro } from '../auth';
|
package/dist/src/ext/index.d.ts
CHANGED
|
@@ -7,9 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { BasePlugin } from './base-plugin';
|
|
9
9
|
export { loadPluginClass, loadPluginClassFromPath, loadModuleHandlers, loadModuleHandlersFromPath, readPluginScript, resolvePluginServerPath, } from './load-plugin';
|
|
10
|
-
export { pDataPath, pPluginPath, pModulesPath, pModulePath, } from './path';
|
|
10
|
+
export { pDataPath, pPluginPath, pModulesPath, pModulePath, pLicensesPath, pLicensePath, } from './path';
|
|
11
11
|
export { ModuleRegistry, } from './module-registry';
|
|
12
12
|
export { microApps } from './micro-apps';
|
|
13
13
|
export { createModuleGateway } from './module-gateway';
|
|
14
|
+
export { DEFAULT_MARKET_PUBLIC_KEY_B64, newMarketId, newInstallNonce, stableStringify, resolveMarketPublicKey, resolveMarketPrivateKey, ed25519Sign, ed25519Verify, generateMarketKeyPair, pricingFromPrice, buildMarketSigPayload, signMarketSigPayload, verifyMarketSigPayload, issueLicenseFile, parseLicenseFile, verifyLicenseFile, } from './market-crypto';
|
|
15
|
+
export { hashZipEntries, readZipManifest, readMarketSig, sealVomeBuffer, verifySealedVome, } from './market-package';
|
|
16
|
+
export { assertModuleInstallAllowed, peekMarketPackage, } from './module-install-gate';
|
|
14
17
|
export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, } from '../../typings/ext/plugin';
|
|
15
18
|
export type { ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, } from '../../typings/ext/module';
|
|
19
|
+
export type { MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, } from '../../typings/ext/market';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type KeyObject } from 'node:crypto';
|
|
2
|
+
import type { MarketLicenseFile, MarketLicensePayload, MarketPricing, MarketSigPayload } from '../../typings/ext/market';
|
|
3
|
+
/**
|
|
4
|
+
* 官方插件市场 Ed25519 公钥(SPKI DER base64)。
|
|
5
|
+
* 私钥仅保存在插件市场宿主配置 `market.privateKey`,不得打进客户站点 / npm 包对外常量。
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_MARKET_PUBLIC_KEY_B64 = "MCowBQYDK2VwAyEAKAnlQfYBA+ooJQSkjmmYsq+Zx6lTjHLgViX2Yt+gdr0=";
|
|
8
|
+
export declare function newMarketId(): string;
|
|
9
|
+
export declare function newInstallNonce(): string;
|
|
10
|
+
/** 稳定 JSON(键排序),供签名 */
|
|
11
|
+
export declare function stableStringify(value: unknown): string;
|
|
12
|
+
export declare function resolveMarketPublicKey(override?: string | Uint8Array): KeyObject;
|
|
13
|
+
export declare function resolveMarketPrivateKey(privateKey: string | Uint8Array): KeyObject;
|
|
14
|
+
export declare function ed25519Sign(data: string | Buffer, privateKey: string | Uint8Array | KeyObject): string;
|
|
15
|
+
export declare function ed25519Verify(data: string | Buffer, sigB64: string, publicKey?: string | Uint8Array | KeyObject): boolean;
|
|
16
|
+
/** 生成一对 Ed25519(运维轮换密钥用) */
|
|
17
|
+
export declare function generateMarketKeyPair(): {
|
|
18
|
+
publicKey: string;
|
|
19
|
+
privateKey: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function pricingFromPrice(price: number): MarketPricing;
|
|
22
|
+
export declare function buildMarketSigPayload(input: {
|
|
23
|
+
marketId: string;
|
|
24
|
+
pricing: MarketPricing;
|
|
25
|
+
version: string;
|
|
26
|
+
key: string;
|
|
27
|
+
contentHash: string;
|
|
28
|
+
}): MarketSigPayload;
|
|
29
|
+
export declare function signMarketSigPayload(payload: MarketSigPayload, privateKey: string | Uint8Array | KeyObject): string;
|
|
30
|
+
export declare function verifyMarketSigPayload(payload: MarketSigPayload, sigB64: string, publicKey?: string | Uint8Array | KeyObject): boolean;
|
|
31
|
+
export declare function issueLicenseFile(payload: Omit<MarketLicensePayload, 'v'> & {
|
|
32
|
+
v?: 1;
|
|
33
|
+
}, privateKey: string | Uint8Array | KeyObject): MarketLicenseFile;
|
|
34
|
+
export declare function parseLicenseFile(raw: string | MarketLicenseFile | object): MarketLicenseFile | null;
|
|
35
|
+
export declare function verifyLicenseFile(file: MarketLicenseFile, opts?: {
|
|
36
|
+
publicKey?: string | Uint8Array | KeyObject;
|
|
37
|
+
expectMarketId?: string;
|
|
38
|
+
expectNonce?: string | null;
|
|
39
|
+
now?: Date;
|
|
40
|
+
}): boolean;
|
|
41
|
+
export declare function sha256Hex(parts: Buffer[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import AdmZip from 'adm-zip';
|
|
2
|
+
import type { KeyObject } from 'node:crypto';
|
|
3
|
+
import type { ModuleManifest } from '../../typings/ext/module';
|
|
4
|
+
import type { MarketPricing, MarketSigPayload } from '../../typings/ext/market';
|
|
5
|
+
/** 对 zip 内除 market.sig 外的条目做内容指纹 */
|
|
6
|
+
export declare function hashZipEntries(zip: AdmZip): string;
|
|
7
|
+
export declare function readZipManifest(zip: AdmZip): ModuleManifest;
|
|
8
|
+
export type MarketSigFile = {
|
|
9
|
+
payload: MarketSigPayload;
|
|
10
|
+
sig: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function readMarketSig(zip: AdmZip): MarketSigFile | null;
|
|
13
|
+
/**
|
|
14
|
+
* 市场注入 marketId / pricing,写入 market.sig(作者无需手写 marketId)
|
|
15
|
+
*/
|
|
16
|
+
export declare function sealVomeBuffer(input: Buffer, opts: {
|
|
17
|
+
marketId: string;
|
|
18
|
+
pricing: MarketPricing;
|
|
19
|
+
privateKey: string | Uint8Array | KeyObject;
|
|
20
|
+
}): Buffer;
|
|
21
|
+
/**
|
|
22
|
+
* 验签市场包。无 market.sig → 非市场包(null)。
|
|
23
|
+
* 有签但失败 → 抛错。
|
|
24
|
+
*/
|
|
25
|
+
export declare function verifySealedVome(input: Buffer | AdmZip, publicKey?: string | Uint8Array | KeyObject): {
|
|
26
|
+
manifest: ModuleManifest;
|
|
27
|
+
sig: MarketSigFile;
|
|
28
|
+
} | null;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AssertModuleInstallOptions, InstallGateResult } from '../../typings/ext/market';
|
|
2
|
+
/**
|
|
3
|
+
* 安装前强制门禁(写入 core):
|
|
4
|
+
* - 无市场签名 → 自研包,放行
|
|
5
|
+
* - 签名 free → 放行
|
|
6
|
+
* - 签名 paid → 须本地 .lic 或联网拉取「签名 license」验签通过(不采信 boolean)
|
|
7
|
+
*/
|
|
8
|
+
export declare function assertModuleInstallAllowed(zipPathOrBuffer: string | Buffer, opts?: AssertModuleInstallOptions): Promise<InstallGateResult>;
|
|
9
|
+
/** 从 zip 快速探测是否为市场签发包(调试用) */
|
|
10
|
+
export declare function peekMarketPackage(zipPathOrBuffer: string | Buffer): {
|
|
11
|
+
manifest: import(".").ModuleManifest;
|
|
12
|
+
sig: import("./market-package").MarketSigFile;
|
|
13
|
+
} | null;
|
package/dist/src/ext/path.d.ts
CHANGED
|
@@ -6,3 +6,9 @@ export declare function pPluginPath(): string;
|
|
|
6
6
|
export declare function pModulesPath(): string;
|
|
7
7
|
/** 单个业务模块目录 */
|
|
8
8
|
export declare function pModulePath(key: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* 插件市场离线 license 目录:宿主 service 根下 `licenses/`
|
|
11
|
+
*(一插件一文件:`<marketId>.lic`)
|
|
12
|
+
*/
|
|
13
|
+
export declare function pLicensesPath(): string;
|
|
14
|
+
export declare function pLicensePath(marketId: string): string;
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 导入时加载宿主 `src/config`;扫描 / IoC / 路由注册在 `App.start()` 中执行。
|
|
5
5
|
* 宿主须:`import 'reflect-metadata'`,并开启 `experimentalDecorators` + `emitDecoratorMetadata`。
|
|
6
6
|
*/
|
|
7
|
-
export { App, appendInjectMeta, BaseController, Body, CommException, Context, Controller, Delete, Eps, isEpsEnabled, Get, getEnv, Inject, Ioc, isCommException, listControllers, isPublicHttpRoute, listProviders, Logger, Param, Patch, Post, Provide, Public, Perms, IgnorePerms, Put, Query, RES_CODE, scanFiles, ScopeEnum, Use, vome, VomeConfig, DbStore, baseColumns, BASE_COLUMN_COMMENTS, entitySchemas, columnComments, getColumnComments, syncColumnCommentsToPg, Repository, getRepository, InjectRepository, BaseService, q, attachCrudRoutes, isTenantEnabled, noTenant, normalizeHost, resolveTenantScope, tableHasDepartmentId, resolveDataScope, applyDataScopeWhere, applyRowScopes, noDataScope, BasePlugin, loadPluginClass, loadPluginClassFromPath, loadModuleHandlers, loadModuleHandlersFromPath, readPluginScript, resolvePluginServerPath, pDataPath, pPluginPath, pModulesPath, pModulePath, ModuleRegistry, microApps, createModuleGateway, defineAuthMacro, } from '../core';
|
|
7
|
+
export { App, appendInjectMeta, BaseController, Body, CommException, Context, Controller, Delete, Eps, isEpsEnabled, Get, getEnv, Inject, Ioc, isCommException, listControllers, isPublicHttpRoute, listProviders, Logger, Param, Patch, Post, Provide, Public, Perms, IgnorePerms, Put, Query, RES_CODE, scanFiles, ScopeEnum, Use, vome, VomeConfig, DbStore, baseColumns, BASE_COLUMN_COMMENTS, entitySchemas, columnComments, getColumnComments, syncColumnCommentsToPg, Repository, getRepository, InjectRepository, BaseService, q, attachCrudRoutes, isTenantEnabled, noTenant, normalizeHost, resolveTenantScope, tableHasDepartmentId, resolveDataScope, applyDataScopeWhere, applyRowScopes, noDataScope, BasePlugin, loadPluginClass, loadPluginClassFromPath, loadModuleHandlers, loadModuleHandlersFromPath, readPluginScript, resolvePluginServerPath, pDataPath, pPluginPath, pModulesPath, pModulePath, pLicensesPath, pLicensePath, ModuleRegistry, microApps, createModuleGateway, defineAuthMacro, DEFAULT_MARKET_PUBLIC_KEY_B64, newMarketId, newInstallNonce, stableStringify, resolveMarketPublicKey, resolveMarketPrivateKey, ed25519Sign, ed25519Verify, generateMarketKeyPair, pricingFromPrice, buildMarketSigPayload, signMarketSigPayload, verifyMarketSigPayload, issueLicenseFile, parseLicenseFile, verifyLicenseFile, hashZipEntries, readZipManifest, readMarketSig, sealVomeBuffer, verifySealedVome, assertModuleInstallAllowed, peekMarketPackage, } from '../core';
|
|
8
8
|
export { buildExcelBuffer, buildImportTemplateBuffer, parseExcelBuffer, excelFilename, excelResponseHeaders, IMPORT_SKIP_FIELDS, isImportSkipField, } from '../shared/excel';
|
|
9
9
|
export type { ExcelColumn, ExcelFormatCell } from '../shared/excel';
|
|
10
|
-
export type { ApiFail, ApiResult, ApiSuccess, ClassToken, ContextData, ControllerCrudOptions, ControllerMeta, ControllerRouteMeta, ControllerSide, CrudApi, CrudBeforeFn, CrudRegistrar, CrudUpsertMode, CrudModifyType, CrudWriteOptions, CrudTrashQueryOptions, CrudDeleteOptions, PageQuery, PagePagination, PageResult, PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, EpsApiItem, EpsColumn, EpsEntity, EpsModuleMap, HttpMethod, InjectionToken, InjectMeta, InsertParamFn, ProvideOptions, QueryExtendFn, QueryExtendQb, QueryFieldRef, QueryJoin, QueryJoinType, QueryOp, QueryOpCtx, QueryWhereFn, QueryWhereResult, ResCode, RouteMiddleware, RouteParamMeta, RouteParamSource, ScanOptions, } from '../core';
|
|
10
|
+
export type { ApiFail, ApiResult, ApiSuccess, ClassToken, ContextData, ControllerCrudOptions, ControllerMeta, ControllerRouteMeta, ControllerSide, CrudApi, CrudBeforeFn, CrudRegistrar, CrudUpsertMode, CrudModifyType, CrudWriteOptions, CrudTrashQueryOptions, CrudDeleteOptions, PageQuery, PagePagination, PageResult, PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, EpsApiItem, EpsColumn, EpsEntity, EpsModuleMap, HttpMethod, InjectionToken, InjectMeta, InsertParamFn, ProvideOptions, QueryExtendFn, QueryExtendQb, QueryFieldRef, QueryJoin, QueryJoinType, QueryOp, QueryOpCtx, QueryWhereFn, QueryWhereResult, ResCode, RouteMiddleware, RouteParamMeta, RouteParamSource, ScanOptions, } from '../core';
|
|
11
11
|
/** 与 package.json version 同步 */
|
|
12
12
|
export declare const version: string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** 市场签发包定价 */
|
|
2
|
+
export type MarketPricing = 'free' | 'paid';
|
|
3
|
+
/** market.sig 签名载荷(稳定字段,勿随意增删) */
|
|
4
|
+
export type MarketSigPayload = {
|
|
5
|
+
marketId: string;
|
|
6
|
+
pricing: MarketPricing;
|
|
7
|
+
version: string;
|
|
8
|
+
key: string;
|
|
9
|
+
contentHash: string;
|
|
10
|
+
};
|
|
11
|
+
/** 离线 / 联网 license 载荷 */
|
|
12
|
+
export type MarketLicensePayload = {
|
|
13
|
+
v: 1;
|
|
14
|
+
marketId: string;
|
|
15
|
+
buyerId: string;
|
|
16
|
+
issuedAt: string;
|
|
17
|
+
/** null = 永久 */
|
|
18
|
+
expireAt: string | null;
|
|
19
|
+
orderNo?: string | null;
|
|
20
|
+
/** 联网签发时必填,须与请求 nonce 一致 */
|
|
21
|
+
nonce?: string | null;
|
|
22
|
+
pluginName?: string | null;
|
|
23
|
+
};
|
|
24
|
+
/** 磁盘 / 接口中的 license 文件结构 */
|
|
25
|
+
export type MarketLicenseFile = {
|
|
26
|
+
payload: MarketLicensePayload;
|
|
27
|
+
sig: string;
|
|
28
|
+
};
|
|
29
|
+
export type InstallGateKind = 'local' | 'market-free' | 'market-paid';
|
|
30
|
+
export type InstallGateResult = {
|
|
31
|
+
kind: InstallGateKind;
|
|
32
|
+
marketId?: string;
|
|
33
|
+
via?: 'file' | 'network';
|
|
34
|
+
};
|
|
35
|
+
export type AssertModuleInstallOptions = {
|
|
36
|
+
/** 覆盖 core 内置市场公钥(SPKI DER base64 或 PEM) */
|
|
37
|
+
marketPublicKey?: string | Uint8Array;
|
|
38
|
+
/**
|
|
39
|
+
* 联网拉取「签名 license 原文」;core 只验签,不采信 boolean。
|
|
40
|
+
* 返回 null/空 = 无凭证。
|
|
41
|
+
*/
|
|
42
|
+
fetchSignedLicense?: (marketId: string, nonce: string) => Promise<string | MarketLicenseFile | null | undefined>;
|
|
43
|
+
};
|
|
@@ -28,6 +28,13 @@ export type ModuleManifest = {
|
|
|
28
28
|
readme?: string;
|
|
29
29
|
routes?: ModuleRouteDef[];
|
|
30
30
|
menus?: ModuleMenuDef[];
|
|
31
|
+
/**
|
|
32
|
+
* 插件市场终身 ID(仅市场注入,作者勿手写)
|
|
33
|
+
* 无 market.sig 时忽略,按自研包安装
|
|
34
|
+
*/
|
|
35
|
+
marketId?: string;
|
|
36
|
+
/** 市场定价;与 market.sig 一致 */
|
|
37
|
+
pricing?: 'free' | 'paid';
|
|
31
38
|
};
|
|
32
39
|
export type ModuleHandlerCtx = {
|
|
33
40
|
body: unknown;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vome-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.56",
|
|
4
4
|
"description": "Vome framework — shared + Bun/Elysia server + Vue admin",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -136,6 +136,7 @@
|
|
|
136
136
|
}
|
|
137
137
|
},
|
|
138
138
|
"devDependencies": {
|
|
139
|
+
"@types/adm-zip": "^0.5.8",
|
|
139
140
|
"bun-types": "latest",
|
|
140
141
|
"drizzle-orm": "latest",
|
|
141
142
|
"drizzle-zod": "^0.8.3",
|
|
@@ -148,6 +149,7 @@
|
|
|
148
149
|
"dependencies": {
|
|
149
150
|
"@bogeychan/elysia-logger": "^0.1.10",
|
|
150
151
|
"@elysiajs/openapi": "^1.4.15",
|
|
152
|
+
"adm-zip": "^0.6.0",
|
|
151
153
|
"pino": "^10.3.1",
|
|
152
154
|
"pino-pretty": "^13.1.3",
|
|
153
155
|
"xlsx": "^0.18.5"
|