vome-core 0.0.55 → 0.0.57

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.
Files changed (42) hide show
  1. package/dist/admin/config/plugin-dev.js +1 -1
  2. package/dist/admin/crud/config.js +1 -1
  3. package/dist/admin/crud/confirm.js +1 -1
  4. package/dist/admin/crud/dict.js +1 -1
  5. package/dist/admin/crud/index.js +1 -1
  6. package/dist/admin/crud/key.js +1 -1
  7. package/dist/admin/crud/mitt.js +1 -1
  8. package/dist/admin/crud/plugins.js +1 -1
  9. package/dist/admin/crud/span.js +1 -1
  10. package/dist/admin/crud/style.js +1 -1
  11. package/dist/admin/crud/validate.js +1 -1
  12. package/dist/admin/directives/perm.js +1 -1
  13. package/dist/admin/hooks/useUpload.js +1 -1
  14. package/dist/admin/lib/browser.js +1 -1
  15. package/dist/admin/lib/cn.js +1 -1
  16. package/dist/admin/lib/dialog-float.js +1 -1
  17. package/dist/admin/lib/export-excel.js +1 -1
  18. package/dist/admin/lib/file-preview.js +1 -1
  19. package/dist/admin/lib/import-excel.js +1 -1
  20. package/dist/admin/lib/json.js +1 -1
  21. package/dist/admin/lib/menu.js +1 -1
  22. package/dist/admin/lib/tree.js +1 -1
  23. package/dist/admin/lib/upload.js +1 -1
  24. package/dist/admin/lib/video-frame.js +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/server/index.js +1 -1
  27. package/dist/shared/excel.js +1 -1
  28. package/dist/shared/index.js +1 -1
  29. package/dist/shared/tree.js +1 -1
  30. package/dist/src/core/index.d.ts +2 -2
  31. package/dist/src/ext/index.d.ts +7 -1
  32. package/dist/src/ext/market-crypto.d.ts +41 -0
  33. package/dist/src/ext/market-install.test.d.ts +1 -0
  34. package/dist/src/ext/market-package.d.ts +28 -0
  35. package/dist/src/ext/module-install-gate.d.ts +20 -0
  36. package/dist/src/ext/module-install.d.ts +25 -0
  37. package/dist/src/ext/module-registry.d.ts +8 -2
  38. package/dist/src/ext/path.d.ts +6 -0
  39. package/dist/src/server/index.d.ts +2 -2
  40. package/dist/typings/ext/market.d.ts +43 -0
  41. package/dist/typings/ext/module.d.ts +7 -0
  42. package/package.json +3 -1
@@ -1 +1 @@
1
- const _0x2fbca8=_0x14d3;(function(_0x413415,_0x325c1f){const _0x227e54=_0x14d3,_0x5542b2=_0x413415();while(!![]){try{const _0x3949c6=-parseInt(_0x227e54(0x175))/0x1*(-parseInt(_0x227e54(0x176))/0x2)+-parseInt(_0x227e54(0x17a))/0x3+parseInt(_0x227e54(0x161))/0x4+parseInt(_0x227e54(0x167))/0x5*(parseInt(_0x227e54(0x169))/0x6)+parseInt(_0x227e54(0x179))/0x7+parseInt(_0x227e54(0x15c))/0x8*(parseInt(_0x227e54(0x174))/0x9)+-parseInt(_0x227e54(0x168))/0xa;if(_0x3949c6===_0x325c1f)break;else _0x5542b2['push'](_0x5542b2['shift']());}catch(_0x57a8ac){_0x5542b2['push'](_0x5542b2['shift']());}}}(_0x1e55,0x6a8ae));function _0x1e55(){const _0xb63162=['yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','BgvUz3rO','zw5KC1DPDgG','ChvZAa','BwfW','nZa4ntK1s2rgwNjX','mtKWmZCWodb1C1vJEwq','mZz1y2Xetva','u2HLzxroyw1LCW','C2HLzxrFDg9FANnVBG','D3jPDgu','C2v0','u2HLzxqX','CMvHza','lNHSC3G','zgvSzxrLzef0','C3rYAw5N','Aw5JBhvKzxm','mJDkse5Qrxy','m295ugTryW','mtaYmda4rLnWDeTY','u2HLzxrZ','yM9VA19HChbLBMrFC2HLzxq','ndq3mdK2m3z0Eej2CG','mZe2odi3ChPKqvLZ','yw9Hx3rVx3nOzwv0','yM9VA19UzxC','ChjVCa','DxbKyxrLvgLTzq','z2v0','mta5mJiYngvnwLjlsG','DxrPBhm','yxjYyxK','BgfIzwW','DhjPBq','mtu3nJm4nejkyvvICq'];_0x1e55=function(){return _0xb63162;};return _0x1e55();}import*as _0x57c742 from'xlsx';export const IMPORT_SKIP_FIELDS=['id','createTime',_0x2fbca8(0x15a),_0x2fbca8(0x171),'tenantId'];export function isImportSkipField(_0x98da7d){const _0x870228=_0x2fbca8;return IMPORT_SKIP_FIELDS[_0x870228(0x173)](_0x98da7d);}export function buildExcelBuffer(_0x255a28,_0x1476d6,_0x4929fd){const _0x2078e3=_0x2fbca8,_0x19be96=_0x255a28['map'](_0x2d2f71=>_0x2d2f71[_0x2078e3(0x15f)]||_0x2d2f71[_0x2078e3(0x159)]),_0x36ff9f=_0x1476d6[_0x2078e3(0x166)](_0x505e62=>_0x255a28[_0x2078e3(0x166)](_0x570bb7=>{const _0x350b3e=_0x2078e3;if(_0x4929fd)return _0x4929fd(_0x570bb7[_0x350b3e(0x159)],_0x505e62);const _0x11c416=_0x505e62[_0x570bb7[_0x350b3e(0x159)]];if(_0x11c416==null)return'';return String(_0x11c416);})),_0x101f5b=_0x57c742['utils'][_0x2078e3(0x17b)]([_0x19be96,..._0x36ff9f]),_0x1c9bee=_0x57c742[_0x2078e3(0x15d)][_0x2078e3(0x17c)]();return _0x57c742[_0x2078e3(0x15d)][_0x2078e3(0x178)](_0x1c9bee,_0x101f5b,_0x2078e3(0x16e)),_0x57c742[_0x2078e3(0x16c)](_0x1c9bee,{'bookType':'xlsx','type':'array'});}export function buildImportTemplateBuffer(_0x3df795){return buildExcelBuffer(_0x3df795,[]);}function _0x14d3(_0x1587b2,_0x352447){_0x1587b2=_0x1587b2-0x159;const _0x1e55d3=_0x1e55();let _0x14d377=_0x1e55d3[_0x1587b2];if(_0x14d3['OQnysF']===undefined){var _0x32f0fc=function(_0x574839){const _0x15fa79='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x57c742='',_0x98da7d='';for(let _0x255a28=0x0,_0x1476d6,_0x4929fd,_0x19be96=0x0;_0x4929fd=_0x574839['charAt'](_0x19be96++);~_0x4929fd&&(_0x1476d6=_0x255a28%0x4?_0x1476d6*0x40+_0x4929fd:_0x4929fd,_0x255a28++%0x4)?_0x57c742+=String['fromCharCode'](0xff&_0x1476d6>>(-0x2*_0x255a28&0x6)):0x0){_0x4929fd=_0x15fa79['indexOf'](_0x4929fd);}for(let _0x36ff9f=0x0,_0x101f5b=_0x57c742['length'];_0x36ff9f<_0x101f5b;_0x36ff9f++){_0x98da7d+='%'+('00'+_0x57c742['charCodeAt'](_0x36ff9f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x98da7d);};_0x14d3['crClvA']=_0x32f0fc,_0x14d3['akAmfc']={},_0x14d3['OQnysF']=!![];}const _0x1444c5=_0x1e55d3[0x0],_0x575efd=_0x1587b2+_0x1444c5,_0x538cf6=_0x14d3['akAmfc'][_0x575efd];return!_0x538cf6?(_0x14d377=_0x14d3['crClvA'](_0x14d377),_0x14d3['akAmfc'][_0x575efd]=_0x14d377):_0x14d377=_0x538cf6,_0x14d377;}export function parseExcelBuffer(_0x387464,_0x3d51dc){const _0x33666d=_0x2fbca8,_0x181c12=_0x57c742[_0x33666d(0x16f)](_0x387464,{'type':_0x33666d(0x15e),'cellDates':!![]}),_0x38040c=_0x181c12[_0x33666d(0x16a)][0x0];if(!_0x38040c)return[];const _0xbbf009=_0x181c12[_0x33666d(0x177)][_0x38040c];if(!_0xbbf009)return[];const _0x30b8c7=_0x57c742[_0x33666d(0x15d)][_0x33666d(0x16b)](_0xbbf009,{'header':0x1,'defval':'','raw':![]});if(!_0x30b8c7[_0x33666d(0x163)])return[];const _0x322986=(_0x30b8c7[0x0]||[])[_0x33666d(0x166)](_0x5f1de8=>String(_0x5f1de8??'')[_0x33666d(0x160)]()),_0x11129a=new Map();if(_0x3d51dc?.[_0x33666d(0x163)])for(const _0x379eb2 of _0x3d51dc){_0x11129a[_0x33666d(0x16d)](_0x379eb2[_0x33666d(0x15f)][_0x33666d(0x160)](),_0x379eb2[_0x33666d(0x159)]),_0x11129a[_0x33666d(0x16d)](_0x379eb2[_0x33666d(0x159)],_0x379eb2['prop']);}const _0xd9949f=_0x322986[_0x33666d(0x166)](_0x36e076=>{const _0x1a4431=_0x33666d;if(!_0x36e076)return'';return _0x11129a[_0x1a4431(0x15b)](_0x36e076)||_0x36e076;}),_0x5ea947=[];for(let _0x52ae66=0x1;_0x52ae66<_0x30b8c7[_0x33666d(0x163)];_0x52ae66++){const _0x50cc9d=_0x30b8c7[_0x52ae66]||[],_0x539ed8={};let _0x34ac17=!![];for(let _0x365d56=0x0;_0x365d56<_0xd9949f[_0x33666d(0x163)];_0x365d56++){const _0x575582=_0xd9949f[_0x365d56];if(!_0x575582)continue;let _0xb439fc=_0x50cc9d[_0x365d56];if(_0xb439fc==null||_0xb439fc===''){_0x539ed8[_0x575582]=_0xb439fc==null?null:'';continue;}_0x34ac17=![],typeof _0xb439fc===_0x33666d(0x172)?_0x539ed8[_0x575582]=_0xb439fc[_0x33666d(0x160)]():_0x539ed8[_0x575582]=_0xb439fc;}if(!_0x34ac17)_0x5ea947[_0x33666d(0x165)](_0x539ed8);}return _0x5ea947;}export function excelFilename(_0x3af210){const _0x2afcd6=_0x2fbca8;return _0x3af210[_0x2afcd6(0x164)](_0x2afcd6(0x170))?_0x3af210:_0x3af210+'.xlsx';}export function excelResponseHeaders(_0x18a3af){const _0xbb3c32=_0x2fbca8,_0x5a7459=excelFilename(_0x18a3af);return{'Content-Type':_0xbb3c32(0x162),'Content-Disposition':'attachment;\x20filename*=UTF-8\x27\x27'+encodeURIComponent(_0x5a7459)};}
1
+ const _0x16fc69=_0x1e4d;(function(_0x426491,_0x800203){const _0x3f6839=_0x1e4d,_0x4e6f88=_0x426491();while(!![]){try{const _0x56044a=-parseInt(_0x3f6839(0x116))/0x1+-parseInt(_0x3f6839(0x124))/0x2*(-parseInt(_0x3f6839(0x123))/0x3)+parseInt(_0x3f6839(0x11d))/0x4*(parseInt(_0x3f6839(0x110))/0x5)+parseInt(_0x3f6839(0x10d))/0x6+parseInt(_0x3f6839(0x115))/0x7*(parseInt(_0x3f6839(0x11b))/0x8)+-parseInt(_0x3f6839(0x129))/0x9+-parseInt(_0x3f6839(0x112))/0xa*(-parseInt(_0x3f6839(0x122))/0xb);if(_0x56044a===_0x800203)break;else _0x4e6f88['push'](_0x4e6f88['shift']());}catch(_0x502ded){_0x4e6f88['push'](_0x4e6f88['shift']());}}}(_0x1031,0x549d2));import*as _0x55a6e6 from'xlsx';export const IMPORT_SKIP_FIELDS=['id',_0x16fc69(0x113),_0x16fc69(0x10f),_0x16fc69(0x11c),_0x16fc69(0x117)];export function isImportSkipField(_0x4a678c){const _0x3222a8=_0x16fc69;return IMPORT_SKIP_FIELDS[_0x3222a8(0x11a)](_0x4a678c);}export function buildExcelBuffer(_0x36f0d6,_0x330638,_0x4e797e){const _0x1c5006=_0x16fc69,_0x1a1273=_0x36f0d6[_0x1c5006(0x128)](_0x4391b8=>_0x4391b8['label']||_0x4391b8[_0x1c5006(0x119)]),_0x29b328=_0x330638[_0x1c5006(0x128)](_0x324f05=>_0x36f0d6['map'](_0x4d37fa=>{const _0x56887e=_0x1c5006;if(_0x4e797e)return _0x4e797e(_0x4d37fa[_0x56887e(0x119)],_0x324f05);const _0x53ce76=_0x324f05[_0x4d37fa[_0x56887e(0x119)]];if(_0x53ce76==null)return'';return String(_0x53ce76);})),_0x24b8a6=_0x55a6e6[_0x1c5006(0x126)][_0x1c5006(0x11f)]([_0x1a1273,..._0x29b328]),_0x9d25f3=_0x55a6e6[_0x1c5006(0x126)]['book_new']();return _0x55a6e6[_0x1c5006(0x126)]['book_append_sheet'](_0x9d25f3,_0x24b8a6,'Sheet1'),_0x55a6e6[_0x1c5006(0x111)](_0x9d25f3,{'bookType':_0x1c5006(0x12b),'type':'array'});}export function buildImportTemplateBuffer(_0x4e8d0a){return buildExcelBuffer(_0x4e8d0a,[]);}export function parseExcelBuffer(_0x53a9e2,_0x8767a7){const _0x49b6c6=_0x16fc69,_0x4ab2b4=_0x55a6e6[_0x49b6c6(0x10e)](_0x53a9e2,{'type':_0x49b6c6(0x11e),'cellDates':!![]}),_0x825d5d=_0x4ab2b4['SheetNames'][0x0];if(!_0x825d5d)return[];const _0x2c8d9b=_0x4ab2b4['Sheets'][_0x825d5d];if(!_0x2c8d9b)return[];const _0x3be857=_0x55a6e6['utils']['sheet_to_json'](_0x2c8d9b,{'header':0x1,'defval':'','raw':![]});if(!_0x3be857[_0x49b6c6(0x125)])return[];const _0x189623=(_0x3be857[0x0]||[])['map'](_0x1ff4b1=>String(_0x1ff4b1??'')['trim']()),_0x2d9891=new Map();if(_0x8767a7?.[_0x49b6c6(0x125)])for(const _0x21d5ab of _0x8767a7){_0x2d9891[_0x49b6c6(0x114)](_0x21d5ab[_0x49b6c6(0x120)][_0x49b6c6(0x121)](),_0x21d5ab[_0x49b6c6(0x119)]),_0x2d9891['set'](_0x21d5ab[_0x49b6c6(0x119)],_0x21d5ab[_0x49b6c6(0x119)]);}const _0x224c87=_0x189623[_0x49b6c6(0x128)](_0x41dd43=>{if(!_0x41dd43)return'';return _0x2d9891['get'](_0x41dd43)||_0x41dd43;}),_0x113ba9=[];for(let _0x49187a=0x1;_0x49187a<_0x3be857[_0x49b6c6(0x125)];_0x49187a++){const _0x94a72a=_0x3be857[_0x49187a]||[],_0x37db36={};let _0x25c65b=!![];for(let _0x132641=0x0;_0x132641<_0x224c87[_0x49b6c6(0x125)];_0x132641++){const _0x1515ea=_0x224c87[_0x132641];if(!_0x1515ea)continue;let _0x296aff=_0x94a72a[_0x132641];if(_0x296aff==null||_0x296aff===''){_0x37db36[_0x1515ea]=_0x296aff==null?null:'';continue;}_0x25c65b=![],typeof _0x296aff==='string'?_0x37db36[_0x1515ea]=_0x296aff[_0x49b6c6(0x121)]():_0x37db36[_0x1515ea]=_0x296aff;}if(!_0x25c65b)_0x113ba9[_0x49b6c6(0x12c)](_0x37db36);}return _0x113ba9;}export function excelFilename(_0x101f32){const _0x4fc742=_0x16fc69;return _0x101f32[_0x4fc742(0x118)]('.xlsx')?_0x101f32:_0x101f32+'.xlsx';}function _0x1e4d(_0x376893,_0x58a6b9){_0x376893=_0x376893-0x10d;const _0x103108=_0x1031();let _0x1e4d04=_0x103108[_0x376893];if(_0x1e4d['SCmoQZ']===undefined){var _0x311ca7=function(_0x3d8c0e){const _0x423fac='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x55a6e6='',_0x4a678c='';for(let _0x36f0d6=0x0,_0x330638,_0x4e797e,_0x1a1273=0x0;_0x4e797e=_0x3d8c0e['charAt'](_0x1a1273++);~_0x4e797e&&(_0x330638=_0x36f0d6%0x4?_0x330638*0x40+_0x4e797e:_0x4e797e,_0x36f0d6++%0x4)?_0x55a6e6+=String['fromCharCode'](0xff&_0x330638>>(-0x2*_0x36f0d6&0x6)):0x0){_0x4e797e=_0x423fac['indexOf'](_0x4e797e);}for(let _0x29b328=0x0,_0x24b8a6=_0x55a6e6['length'];_0x29b328<_0x24b8a6;_0x29b328++){_0x4a678c+='%'+('00'+_0x55a6e6['charCodeAt'](_0x29b328)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a678c);};_0x1e4d['QXpJvl']=_0x311ca7,_0x1e4d['twsrGp']={},_0x1e4d['SCmoQZ']=!![];}const _0xf5fbfb=_0x103108[0x0],_0x289df5=_0x376893+_0xf5fbfb,_0x3188b2=_0x1e4d['twsrGp'][_0x289df5];return!_0x3188b2?(_0x1e4d04=_0x1e4d['QXpJvl'](_0x1e4d04),_0x1e4d['twsrGp'][_0x289df5]=_0x1e4d04):_0x1e4d04=_0x3188b2,_0x1e4d04;}function _0x1031(){const _0x262529=['DxbKyxrLvgLTzq','mJviyK1fDeK','D3jPDgu','mtiWuwXhrezz','y3jLyxrLvgLTzq','C2v0','mJmXBe1xs1jH','mZCWnZKWtMXlr2TR','DgvUyw50swq','zw5KC1DPDgG','ChjVCa','Aw5JBhvKzxm','nZm2mePjAKfWtW','zgvSzxrLzef0','nti5nMP5ug1rAa','yxjYyxK','yw9Hx3rVx3nOzwv0','BgfIzwW','DhjPBq','mtG5mZK4C3zMCxvm','m093DuzrBG','nJaYntqYEhjYuwLR','BgvUz3rO','DxrPBhm','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','BwfW','ndqYodC0n3DSrvrUzW','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','EgXZEa','ChvZAa','mZK4nZuWngvPzMrrvW','CMvHza'];_0x1031=function(){return _0x262529;};return _0x1031();}export function excelResponseHeaders(_0x3658a4){const _0x56697c=_0x16fc69,_0x5b82a5=excelFilename(_0x3658a4);return{'Content-Type':_0x56697c(0x127),'Content-Disposition':_0x56697c(0x12a)+encodeURIComponent(_0x5b82a5)};}
@@ -1 +1 @@
1
- (function(_0x205082,_0x33ea9d){var _0x3225d0=_0x13f5,_0x38a2bd=_0x205082();while(!![]){try{var _0x5b5d54=-parseInt(_0x3225d0(0xc1))/0x1*(parseInt(_0x3225d0(0xc0))/0x2)+parseInt(_0x3225d0(0xc4))/0x3+parseInt(_0x3225d0(0xc6))/0x4+-parseInt(_0x3225d0(0xbf))/0x5+-parseInt(_0x3225d0(0xc3))/0x6+-parseInt(_0x3225d0(0xbe))/0x7+parseInt(_0x3225d0(0xc5))/0x8*(parseInt(_0x3225d0(0xc2))/0x9);if(_0x5b5d54===_0x33ea9d)break;else _0x38a2bd['push'](_0x38a2bd['shift']());}catch(_0x268397){_0x38a2bd['push'](_0x38a2bd['shift']());}}}(_0x5bf7,0xe1b1a));function _0x13f5(_0x231b2e,_0x17b99e){_0x231b2e=_0x231b2e-0xbe;var _0x5bf7fd=_0x5bf7();var _0x13f563=_0x5bf7fd[_0x231b2e];if(_0x13f5['HEOzcg']===undefined){var _0x5c6f80=function(_0x2ec073){var _0x42c012='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x575ca0='',_0x18b530='';for(var _0x4006cf=0x0,_0x5a9638,_0x790d3b,_0x2077bf=0x0;_0x790d3b=_0x2ec073['charAt'](_0x2077bf++);~_0x790d3b&&(_0x5a9638=_0x4006cf%0x4?_0x5a9638*0x40+_0x790d3b:_0x790d3b,_0x4006cf++%0x4)?_0x575ca0+=String['fromCharCode'](0xff&_0x5a9638>>(-0x2*_0x4006cf&0x6)):0x0){_0x790d3b=_0x42c012['indexOf'](_0x790d3b);}for(var _0x15cf48=0x0,_0x461dcd=_0x575ca0['length'];_0x15cf48<_0x461dcd;_0x15cf48++){_0x18b530+='%'+('00'+_0x575ca0['charCodeAt'](_0x15cf48)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x18b530);};_0x13f5['NPhogv']=_0x5c6f80,_0x13f5['SfJJdV']={},_0x13f5['HEOzcg']=!![];}var _0x32d90d=_0x5bf7fd[0x0],_0x9357d=_0x231b2e+_0x32d90d,_0x21dbbf=_0x13f5['SfJJdV'][_0x9357d];return!_0x21dbbf?(_0x13f563=_0x13f5['NPhogv'](_0x13f563),_0x13f5['SfJJdV'][_0x9357d]=_0x13f563):_0x13f563=_0x21dbbf,_0x13f563;}function _0x5bf7(){var _0x4b76eb=['mJeZnduXnJbLu0jNAgC','nJy1ndaWogTvBK1SCW','nZaYndy1nfHhu1zLBG','nZC3otm2me9rBNfpAG','nJe0ntH0q0PotKS','mJLeA3LrEhi','ow5kDM90CW','mZu0mtm1nKztugLXDW','mtKWmdy2ogrytKzcrq'];_0x5bf7=function(){return _0x4b76eb;};return _0x5bf7();}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';
1
+ function _0x2029(){var _0xcda00e=['mtvpAeL2BNC','nJn4qMrWBKe','mtGXswHfCxzp','ntGYnK96AxrkuW','mJqWotmZnMPKrunNAG','nZDiwgLKrhG','ndCYmZe1nxjjyxL2AG','nZKZmJC3ofHYCgXjAq','nZuYodiWAKDoAKTQ','mJGWndHXDu1Psfi','nfjRvwjhuq','mtu0mdy2otbyC2XSC2m'];_0x2029=function(){return _0xcda00e;};return _0x2029();}function _0x426e(_0x46fad8,_0x2a4a65){_0x46fad8=_0x46fad8-0x18c;var _0x2029ea=_0x2029();var _0x426e78=_0x2029ea[_0x46fad8];if(_0x426e['uGobyE']===undefined){var _0x537641=function(_0x2587e8){var _0x1718b9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5d337a='',_0x3c8530='';for(var _0x95f61b=0x0,_0x4d01ad,_0x141bc0,_0x2f1759=0x0;_0x141bc0=_0x2587e8['charAt'](_0x2f1759++);~_0x141bc0&&(_0x4d01ad=_0x95f61b%0x4?_0x4d01ad*0x40+_0x141bc0:_0x141bc0,_0x95f61b++%0x4)?_0x5d337a+=String['fromCharCode'](0xff&_0x4d01ad>>(-0x2*_0x95f61b&0x6)):0x0){_0x141bc0=_0x1718b9['indexOf'](_0x141bc0);}for(var _0x552f10=0x0,_0x5e64ca=_0x5d337a['length'];_0x552f10<_0x5e64ca;_0x552f10++){_0x3c8530+='%'+('00'+_0x5d337a['charCodeAt'](_0x552f10)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3c8530);};_0x426e['wBNoyo']=_0x537641,_0x426e['LydlDd']={},_0x426e['uGobyE']=!![];}var _0x1745f2=_0x2029ea[0x0],_0x403502=_0x46fad8+_0x1745f2,_0x4aaf1b=_0x426e['LydlDd'][_0x403502];return!_0x4aaf1b?(_0x426e78=_0x426e['wBNoyo'](_0x426e78),_0x426e['LydlDd'][_0x403502]=_0x426e78):_0x426e78=_0x4aaf1b,_0x426e78;}(function(_0x150255,_0x3154ce){var _0x1f6e6c=_0x426e,_0x593c59=_0x150255();while(!![]){try{var _0x59903e=parseInt(_0x1f6e6c(0x18c))/0x1*(parseInt(_0x1f6e6c(0x18d))/0x2)+-parseInt(_0x1f6e6c(0x190))/0x3*(parseInt(_0x1f6e6c(0x194))/0x4)+parseInt(_0x1f6e6c(0x196))/0x5*(parseInt(_0x1f6e6c(0x18e))/0x6)+-parseInt(_0x1f6e6c(0x191))/0x7+parseInt(_0x1f6e6c(0x193))/0x8*(-parseInt(_0x1f6e6c(0x197))/0x9)+parseInt(_0x1f6e6c(0x195))/0xa+-parseInt(_0x1f6e6c(0x18f))/0xb*(-parseInt(_0x1f6e6c(0x192))/0xc);if(_0x59903e===_0x3154ce)break;else _0x593c59['push'](_0x593c59['shift']());}catch(_0x4bf2d8){_0x593c59['push'](_0x593c59['shift']());}}}(_0x2029,0xef262));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';
@@ -1 +1 @@
1
- function _0x4a6f(_0x4a7694,_0x34957c){_0x4a7694=_0x4a7694-0x1ec;const _0x3868ac=_0x3868();let _0x4a6f09=_0x3868ac[_0x4a7694];if(_0x4a6f['ZoRepL']===undefined){var _0x4fb20b=function(_0x444bb0){const _0x39338d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xd79dd='',_0x24874f='';for(let _0x4ec421=0x0,_0x532a87,_0x2aca0d,_0x5e9de5=0x0;_0x2aca0d=_0x444bb0['charAt'](_0x5e9de5++);~_0x2aca0d&&(_0x532a87=_0x4ec421%0x4?_0x532a87*0x40+_0x2aca0d:_0x2aca0d,_0x4ec421++%0x4)?_0xd79dd+=String['fromCharCode'](0xff&_0x532a87>>(-0x2*_0x4ec421&0x6)):0x0){_0x2aca0d=_0x39338d['indexOf'](_0x2aca0d);}for(let _0x1b78b4=0x0,_0x554836=_0xd79dd['length'];_0x1b78b4<_0x554836;_0x1b78b4++){_0x24874f+='%'+('00'+_0xd79dd['charCodeAt'](_0x1b78b4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x24874f);};_0x4a6f['sKeNbk']=_0x4fb20b,_0x4a6f['MTyvIo']={},_0x4a6f['ZoRepL']=!![];}const _0x2dd1c8=_0x3868ac[0x0],_0x83c9a6=_0x4a7694+_0x2dd1c8,_0x4d27c6=_0x4a6f['MTyvIo'][_0x83c9a6];return!_0x4d27c6?(_0x4a6f09=_0x4a6f['sKeNbk'](_0x4a6f09),_0x4a6f['MTyvIo'][_0x83c9a6]=_0x4a6f09):_0x4a6f09=_0x4d27c6,_0x4a6f09;}function _0x3868(){const _0x128a9b=['z2v0','y2HPBgrYzw4','oduYndiZD0fkvwL4','mJmWndeZnenfuhP2Aa','ndbJqKXPr3q','C2v0','mteYugzTwNDv','ChvZAa','mty3ntv1EhLvEMy','otG1ndaXCMznugTl','mtaXnJC1mJbevw93Bvi','zgvZyW','C29YDa','BgvUz3rO','mZy1nZnVDu1Lrha','B3jKzxjoDw0','mZbmsgjXwwm','DMfSDwvZ','CgfYzw50swq','mtiZodu2mKzoCKHcEG'];_0x3868=function(){return _0x128a9b;};return _0x3868();}(function(_0x142cbf,_0x5e1e83){const _0x5c70e8=_0x4a6f,_0x1b9f89=_0x142cbf();while(!![]){try{const _0x5c9c72=parseInt(_0x5c70e8(0x1fa))/0x1*(parseInt(_0x5c70e8(0x1fc))/0x2)+-parseInt(_0x5c70e8(0x1ee))/0x3+-parseInt(_0x5c70e8(0x1f2))/0x4*(-parseInt(_0x5c70e8(0x1f4))/0x5)+-parseInt(_0x5c70e8(0x1ff))/0x6+-parseInt(_0x5c70e8(0x1ef))/0x7+-parseInt(_0x5c70e8(0x1f0))/0x8*(parseInt(_0x5c70e8(0x1f5))/0x9)+parseInt(_0x5c70e8(0x1f6))/0xa;if(_0x5c9c72===_0x5e1e83)break;else _0x1b9f89['push'](_0x1b9f89['shift']());}catch(_0x32b7cb){_0x1b9f89['push'](_0x1b9f89['shift']());}}}(_0x3868,0x474a0));export function deepTree(_0xd79dd,_0x24874f='asc'){const _0x3b6a5f=_0x4a6f,_0x4ec421=new Map();for(const _0x5e9de5 of _0xd79dd){if(_0x5e9de5['id']==null)continue;_0x4ec421[_0x3b6a5f(0x1f1)](_0x5e9de5['id'],{..._0x5e9de5,'children':[]});}const _0x532a87=[];for(const _0x1b78b4 of _0x4ec421[_0x3b6a5f(0x1fd)]()){const _0x554836=_0x1b78b4[_0x3b6a5f(0x1fe)];_0x554836!=null&&_0x554836!==''&&_0x4ec421['has'](_0x554836)?_0x4ec421[_0x3b6a5f(0x1ec)](_0x554836)[_0x3b6a5f(0x1ed)][_0x3b6a5f(0x1f3)](_0x1b78b4):_0x532a87['push'](_0x1b78b4);}const _0x2aca0d=_0x3a1b4c=>{const _0x40dae1=_0x3b6a5f;_0x3a1b4c[_0x40dae1(0x1f8)]((_0x1ce807,_0x1c608f)=>{const _0x357e61=_0x40dae1,_0x148fed=_0x1ce807[_0x357e61(0x1fb)]??0x0,_0x444f80=_0x1c608f['orderNum']??0x0,_0x39dad6=_0x24874f===_0x357e61(0x1f7)?_0x444f80-_0x148fed:_0x148fed-_0x444f80;return _0x39dad6||Number(_0x1ce807['id'])-Number(_0x1c608f['id']);});for(const _0x4a07c2 of _0x3a1b4c)if(_0x4a07c2[_0x40dae1(0x1ed)]?.[_0x40dae1(0x1f9)])_0x2aca0d(_0x4a07c2['children']);};return _0x2aca0d(_0x532a87),_0x532a87;}export function flattenTree(_0x2566a6,_0x36702e,_0x31688e=0x0,_0x17f399=[]){const _0x2028a5=_0x4a6f;for(const _0x213946 of _0x2566a6){const _0x2d60fb=_0x213946[_0x2028a5(0x1ed)]||[];_0x17f399[_0x2028a5(0x1f3)]({..._0x213946,'depth':_0x31688e,'hasChildren':_0x2d60fb[_0x2028a5(0x1f9)]>0x0});if(_0x2d60fb[_0x2028a5(0x1f9)]&&_0x36702e['has'](_0x213946['id']))flattenTree(_0x2d60fb,_0x36702e,_0x31688e+0x1,_0x17f399);}return _0x17f399;}
1
+ (function(_0x22fe2d,_0x251fcf){const _0x3c0f3f=_0x218b,_0x3fd5de=_0x22fe2d();while(!![]){try{const _0x2ae1a4=-parseInt(_0x3c0f3f(0x1d0))/0x1+parseInt(_0x3c0f3f(0x1d6))/0x2+parseInt(_0x3c0f3f(0x1de))/0x3*(parseInt(_0x3c0f3f(0x1dc))/0x4)+-parseInt(_0x3c0f3f(0x1d2))/0x5*(parseInt(_0x3c0f3f(0x1df))/0x6)+parseInt(_0x3c0f3f(0x1d4))/0x7+parseInt(_0x3c0f3f(0x1d9))/0x8+-parseInt(_0x3c0f3f(0x1d1))/0x9;if(_0x2ae1a4===_0x251fcf)break;else _0x3fd5de['push'](_0x3fd5de['shift']());}catch(_0x1bd300){_0x3fd5de['push'](_0x3fd5de['shift']());}}}(_0xa181,0x3dedb));function _0x218b(_0xd08245,_0x31e99e){_0xd08245=_0xd08245-0x1cd;const _0xa181c3=_0xa181();let _0x218b54=_0xa181c3[_0xd08245];if(_0x218b['xinbwK']===undefined){var _0x455d3a=function(_0xdec2a9){const _0x3d9f1f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x8aec3c='',_0x12e533='';for(let _0x46766f=0x0,_0x22c1cb,_0x22d1bf,_0x31ba9e=0x0;_0x22d1bf=_0xdec2a9['charAt'](_0x31ba9e++);~_0x22d1bf&&(_0x22c1cb=_0x46766f%0x4?_0x22c1cb*0x40+_0x22d1bf:_0x22d1bf,_0x46766f++%0x4)?_0x8aec3c+=String['fromCharCode'](0xff&_0x22c1cb>>(-0x2*_0x46766f&0x6)):0x0){_0x22d1bf=_0x3d9f1f['indexOf'](_0x22d1bf);}for(let _0xac23ea=0x0,_0x34cacd=_0x8aec3c['length'];_0xac23ea<_0x34cacd;_0xac23ea++){_0x12e533+='%'+('00'+_0x8aec3c['charCodeAt'](_0xac23ea)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x12e533);};_0x218b['ttGCXZ']=_0x455d3a,_0x218b['clshfR']={},_0x218b['xinbwK']=!![];}const _0x4928e1=_0xa181c3[0x0],_0xff7fb=_0xd08245+_0x4928e1,_0x1e65d3=_0x218b['clshfR'][_0xff7fb];return!_0x1e65d3?(_0x218b54=_0x218b['ttGCXZ'](_0x218b54),_0x218b['clshfR'][_0xff7fb]=_0x218b54):_0x218b54=_0x1e65d3,_0x218b54;}export function deepTree(_0x8aec3c,_0x12e533='asc'){const _0x4edf99=_0x218b,_0x46766f=new Map();for(const _0x31ba9e of _0x8aec3c){if(_0x31ba9e['id']==null)continue;_0x46766f[_0x4edf99(0x1dd)](_0x31ba9e['id'],{..._0x31ba9e,'children':[]});}const _0x22c1cb=[];for(const _0xac23ea of _0x46766f[_0x4edf99(0x1db)]()){const _0x34cacd=_0xac23ea[_0x4edf99(0x1da)];_0x34cacd!=null&&_0x34cacd!==''&&_0x46766f[_0x4edf99(0x1cd)](_0x34cacd)?_0x46766f[_0x4edf99(0x1cf)](_0x34cacd)[_0x4edf99(0x1ce)][_0x4edf99(0x1d8)](_0xac23ea):_0x22c1cb['push'](_0xac23ea);}const _0x22d1bf=_0x496c4c=>{const _0x1d4df9=_0x4edf99;_0x496c4c['sort']((_0x183468,_0x21c172)=>{const _0x43ba7d=_0x218b,_0x508623=_0x183468[_0x43ba7d(0x1d3)]??0x0,_0x3f852d=_0x21c172[_0x43ba7d(0x1d3)]??0x0,_0x5d4ef3=_0x12e533===_0x43ba7d(0x1d5)?_0x3f852d-_0x508623:_0x508623-_0x3f852d;return _0x5d4ef3||Number(_0x183468['id'])-Number(_0x21c172['id']);});for(const _0xb90320 of _0x496c4c)if(_0xb90320[_0x1d4df9(0x1ce)]?.[_0x1d4df9(0x1d7)])_0x22d1bf(_0xb90320[_0x1d4df9(0x1ce)]);};return _0x22d1bf(_0x22c1cb),_0x22c1cb;}export function flattenTree(_0x42f83c,_0x22be8c,_0x53c0f5=0x0,_0x30f866=[]){const _0x3ec0db=_0x218b;for(const _0x4f0e11 of _0x42f83c){const _0x1e6e8f=_0x4f0e11[_0x3ec0db(0x1ce)]||[];_0x30f866[_0x3ec0db(0x1d8)]({..._0x4f0e11,'depth':_0x53c0f5,'hasChildren':_0x1e6e8f[_0x3ec0db(0x1d7)]>0x0});if(_0x1e6e8f[_0x3ec0db(0x1d7)]&&_0x22be8c[_0x3ec0db(0x1cd)](_0x4f0e11['id']))flattenTree(_0x1e6e8f,_0x22be8c,_0x53c0f5+0x1,_0x30f866);}return _0x30f866;}function _0xa181(){const _0x2879c1=['mJaXnZbVwgDvEfu','B3jKzxjoDw0','mta2mJGXmhzWwK1wrq','zgvZyW','odKWnJK0A2LetNPQ','BgvUz3rO','ChvZAa','odaZoteYu0PNuvbh','CgfYzw50swq','DMfSDwvZ','nejPv05hAG','C2v0','nJy2mZm5z2v3yuLy','ndq0vgXlAKvg','AgfZ','y2HPBgrYzw4','z2v0','mZeWode2ywHOywTb','nteXmdKYy21tDK1z'];_0xa181=function(){return _0x2879c1;};return _0xa181();}
@@ -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, assertModuleDirAllowed, peekMarketPackage, installModuleFromZip, uninstallModuleFiles, } from '../ext';
19
+ export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, InstallModuleOptions, InstallModuleResult, } from '../ext';
20
20
  export { defineAuthMacro } from '../auth';
@@ -7,9 +7,15 @@
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, assertModuleDirAllowed, peekMarketPackage, } from './module-install-gate';
17
+ export { installModuleFromZip, uninstallModuleFiles, } from './module-install';
18
+ export type { InstallModuleOptions, InstallModuleResult, } from './module-install';
14
19
  export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, } from '../../typings/ext/plugin';
15
20
  export type { ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, } from '../../typings/ext/module';
21
+ 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,20 @@
1
+ import type { AssertModuleInstallOptions, InstallGateResult } from '../../typings/ext/market';
2
+ import type { MarketSigFile } from './market-package';
3
+ /**
4
+ * 安装前强制门禁(写入 core):
5
+ * - 无市场签名 → 自研包,放行
6
+ * - 签名 free → 放行
7
+ * - 签名 paid → 须本地 .lic 或联网拉取「签名 license」验签通过(不采信 boolean)
8
+ */
9
+ export declare function assertModuleInstallAllowed(zipPathOrBuffer: string | Buffer, opts?: AssertModuleInstallOptions): Promise<InstallGateResult>;
10
+ /**
11
+ * 启动/热加载时校验已落盘模块(防直接拷贝 modules/ 绕过 install)
12
+ */
13
+ export declare function assertModuleDirAllowed(dir: string, opts?: {
14
+ marketPublicKey?: string | Uint8Array;
15
+ }): InstallGateResult;
16
+ /** 从 zip 快速探测是否为市场签发包(调试用) */
17
+ export declare function peekMarketPackage(zipPathOrBuffer: string | Buffer): {
18
+ manifest: import(".").ModuleManifest;
19
+ sig: MarketSigFile;
20
+ } | null;
@@ -0,0 +1,25 @@
1
+ import type { AssertModuleInstallOptions, InstallGateResult } from '../../typings/ext/market';
2
+ import type { ModuleManifest } from '../../typings/ext/module';
3
+ export type InstallModuleOptions = AssertModuleInstallOptions & {
4
+ /** 覆盖落盘前:宿主注销钩子等 */
5
+ beforeReplace?: (key: string, manifest: ModuleManifest) => void | Promise<void>;
6
+ };
7
+ export type InstallModuleResult = {
8
+ manifest: ModuleManifest;
9
+ path: string;
10
+ hasServer: boolean;
11
+ hasWeb: boolean;
12
+ hasHook: boolean;
13
+ entryUrl?: string;
14
+ gate: InstallGateResult;
15
+ };
16
+ /**
17
+ * 安装闭环(仅 core):验签门禁 → 解压落盘 → ModuleRegistry.load
18
+ * 宿主不得自行 AdmZip 解压;菜单/钩子由宿主在返回后处理。
19
+ */
20
+ export declare function installModuleFromZip(filePath: string, opts?: InstallModuleOptions): Promise<InstallModuleResult>;
21
+ /** 仅卸盘(菜单/钩子由宿主处理) */
22
+ export declare function uninstallModuleFiles(key: string): {
23
+ ok: true;
24
+ path: string;
25
+ };
@@ -11,8 +11,14 @@ export declare const ModuleRegistry: {
11
11
  manifest: ModuleManifest;
12
12
  routes: ModuleRouteDef[];
13
13
  }[];
14
- /** 加载已落盘模块到内存;无 routes 时可无 handlers(纯页面 / 仅钩子) */
15
- load(key: string): LoadedModule;
14
+ /**
15
+ * 加载已落盘模块到内存;无 routes 时可无 handlers(纯页面 / 仅钩子)
16
+ * 加载前强制目录验签/license(防直接拷贝 modules/)
17
+ */
18
+ load(key: string, opts?: {
19
+ marketPublicKey?: string | Uint8Array;
20
+ skipMarketCheck?: boolean;
21
+ }): LoadedModule;
16
22
  unload(key: string): void;
17
23
  /** 匹配 method + 子路径,调用对应 handler */
18
24
  dispatch(key: string, method: string, subPath: string, ctx: ModuleHandlerCtx): Promise<{
@@ -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, assertModuleDirAllowed, peekMarketPackage, installModuleFromZip, uninstallModuleFiles, } 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, InstallModuleOptions, InstallModuleResult, 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.55",
3
+ "version": "0.0.57",
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"