vome-core 0.0.54 → 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.
Files changed (44) hide show
  1. package/dist/admin/config/plugin-dev.js +1 -1
  2. package/dist/admin/crud/components/vm-tree-select.vue +3 -2
  3. package/dist/admin/crud/config.js +1 -1
  4. package/dist/admin/crud/confirm.js +1 -1
  5. package/dist/admin/crud/dict.js +1 -1
  6. package/dist/admin/crud/index.js +1 -1
  7. package/dist/admin/crud/key.js +1 -1
  8. package/dist/admin/crud/mitt.js +1 -1
  9. package/dist/admin/crud/plugins.js +1 -1
  10. package/dist/admin/crud/span.js +1 -1
  11. package/dist/admin/crud/style.js +1 -1
  12. package/dist/admin/crud/validate.js +1 -1
  13. package/dist/admin/crud/vm-table.vue +30 -4
  14. package/dist/admin/directives/perm.js +1 -1
  15. package/dist/admin/hooks/useUpload.js +1 -1
  16. package/dist/admin/lib/browser.js +1 -1
  17. package/dist/admin/lib/cn.js +1 -1
  18. package/dist/admin/lib/dialog-float.js +1 -1
  19. package/dist/admin/lib/export-excel.js +1 -1
  20. package/dist/admin/lib/file-preview.js +1 -1
  21. package/dist/admin/lib/import-excel.js +1 -1
  22. package/dist/admin/lib/json.js +1 -1
  23. package/dist/admin/lib/menu.js +1 -1
  24. package/dist/admin/lib/tree.js +1 -1
  25. package/dist/admin/lib/upload.js +1 -1
  26. package/dist/admin/lib/video-frame.js +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/server/index.js +1 -1
  29. package/dist/shared/excel.js +1 -1
  30. package/dist/shared/index.js +1 -1
  31. package/dist/shared/tree.js +1 -1
  32. package/dist/src/core/index.d.ts +2 -2
  33. package/dist/src/ext/index.d.ts +5 -1
  34. package/dist/src/ext/market-crypto.d.ts +41 -0
  35. package/dist/src/ext/market-install.test.d.ts +1 -0
  36. package/dist/src/ext/market-package.d.ts +28 -0
  37. package/dist/src/ext/module-install-gate.d.ts +13 -0
  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
  43. package/typings/admin/comm/crud.d.ts +4 -0
  44. package/typings/admin/comm/crud.ts +4 -0
@@ -1 +1 @@
1
- const _0x1997dd=_0x9f5d;(function(_0x1bb541,_0x486187){const _0x5ea5a4=_0x9f5d,_0x90c566=_0x1bb541();while(!![]){try{const _0x382d=parseInt(_0x5ea5a4(0xa2))/0x1*(-parseInt(_0x5ea5a4(0x9e))/0x2)+-parseInt(_0x5ea5a4(0x91))/0x3*(-parseInt(_0x5ea5a4(0x97))/0x4)+parseInt(_0x5ea5a4(0x92))/0x5+-parseInt(_0x5ea5a4(0xae))/0x6+-parseInt(_0x5ea5a4(0x90))/0x7+-parseInt(_0x5ea5a4(0xaa))/0x8+parseInt(_0x5ea5a4(0x9d))/0x9;if(_0x382d===_0x486187)break;else _0x90c566['push'](_0x90c566['shift']());}catch(_0x53d60e){_0x90c566['push'](_0x90c566['shift']());}}}(_0x2a31,0xe2c3b));function _0x9f5d(_0xf9b217,_0xdb13f2){_0xf9b217=_0xf9b217-0x8f;const _0x2a3196=_0x2a31();let _0x9f5dc4=_0x2a3196[_0xf9b217];if(_0x9f5d['LWpqwu']===undefined){var _0x5b8836=function(_0x3897b6){const _0x40ac7a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4818b9='',_0x662f60='';for(let _0x216109=0x0,_0x3e22e3,_0x162ef5,_0x3b93da=0x0;_0x162ef5=_0x3897b6['charAt'](_0x3b93da++);~_0x162ef5&&(_0x3e22e3=_0x216109%0x4?_0x3e22e3*0x40+_0x162ef5:_0x162ef5,_0x216109++%0x4)?_0x4818b9+=String['fromCharCode'](0xff&_0x3e22e3>>(-0x2*_0x216109&0x6)):0x0){_0x162ef5=_0x40ac7a['indexOf'](_0x162ef5);}for(let _0x123797=0x0,_0x44189a=_0x4818b9['length'];_0x123797<_0x44189a;_0x123797++){_0x662f60+='%'+('00'+_0x4818b9['charCodeAt'](_0x123797)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x662f60);};_0x9f5d['QyRqzW']=_0x5b8836,_0x9f5d['uziWWi']={},_0x9f5d['LWpqwu']=!![];}const _0x156ce8=_0x2a3196[0x0],_0x39516f=_0xf9b217+_0x156ce8,_0xe0fbe2=_0x9f5d['uziWWi'][_0x39516f];return!_0xe0fbe2?(_0x9f5dc4=_0x9f5d['QyRqzW'](_0x9f5dc4),_0x9f5d['uziWWi'][_0x39516f]=_0x9f5dc4):_0x9f5dc4=_0xe0fbe2,_0x9f5dc4;}import*as _0x4818b9 from'xlsx';export const IMPORT_SKIP_FIELDS=['id','createTime',_0x1997dd(0xa8),_0x1997dd(0x94),'tenantId'];export function isImportSkipField(_0x662f60){const _0x3f3f28=_0x1997dd;return IMPORT_SKIP_FIELDS[_0x3f3f28(0xa6)](_0x662f60);}export function buildExcelBuffer(_0x216109,_0x3e22e3,_0x162ef5){const _0x13027b=_0x1997dd,_0x3b93da=_0x216109[_0x13027b(0x9c)](_0x23d0eb=>_0x23d0eb['label']||_0x23d0eb[_0x13027b(0xa0)]),_0x123797=_0x3e22e3[_0x13027b(0x9c)](_0x558b17=>_0x216109[_0x13027b(0x9c)](_0xf956f2=>{const _0x2d8fa2=_0x13027b;if(_0x162ef5)return _0x162ef5(_0xf956f2[_0x2d8fa2(0xa0)],_0x558b17);const _0x325297=_0x558b17[_0xf956f2[_0x2d8fa2(0xa0)]];if(_0x325297==null)return'';return String(_0x325297);})),_0x44189a=_0x4818b9[_0x13027b(0x96)][_0x13027b(0x93)]([_0x3b93da,..._0x123797]),_0x2c0638=_0x4818b9[_0x13027b(0x96)][_0x13027b(0xaf)]();return _0x4818b9[_0x13027b(0x96)][_0x13027b(0xab)](_0x2c0638,_0x44189a,_0x13027b(0xa5)),_0x4818b9[_0x13027b(0xa7)](_0x2c0638,{'bookType':_0x13027b(0x9f),'type':'array'});}export function buildImportTemplateBuffer(_0x74f746){return buildExcelBuffer(_0x74f746,[]);}export function parseExcelBuffer(_0x1e3fbb,_0x56a655){const _0x552618=_0x1997dd,_0x306ff7=_0x4818b9[_0x552618(0x98)](_0x1e3fbb,{'type':_0x552618(0xad),'cellDates':!![]}),_0x32eb9b=_0x306ff7[_0x552618(0xa1)][0x0];if(!_0x32eb9b)return[];const _0x2ca921=_0x306ff7['Sheets'][_0x32eb9b];if(!_0x2ca921)return[];const _0x125918=_0x4818b9[_0x552618(0x96)]['sheet_to_json'](_0x2ca921,{'header':0x1,'defval':'','raw':![]});if(!_0x125918[_0x552618(0x95)])return[];const _0x285c13=(_0x125918[0x0]||[])['map'](_0x4bfb90=>String(_0x4bfb90??'')[_0x552618(0x99)]()),_0x1299ea=new Map();if(_0x56a655?.[_0x552618(0x95)])for(const _0x920158 of _0x56a655){_0x1299ea[_0x552618(0xa4)](_0x920158[_0x552618(0xa9)][_0x552618(0x99)](),_0x920158['prop']),_0x1299ea[_0x552618(0xa4)](_0x920158['prop'],_0x920158[_0x552618(0xa0)]);}const _0x7fccc0=_0x285c13[_0x552618(0x9c)](_0x5ecd5e=>{const _0x38d7e9=_0x552618;if(!_0x5ecd5e)return'';return _0x1299ea[_0x38d7e9(0x8f)](_0x5ecd5e)||_0x5ecd5e;}),_0xd8f639=[];for(let _0x40acaa=0x1;_0x40acaa<_0x125918['length'];_0x40acaa++){const _0x4609ad=_0x125918[_0x40acaa]||[],_0x423346={};let _0x74a187=!![];for(let _0x3cc36c=0x0;_0x3cc36c<_0x7fccc0[_0x552618(0x95)];_0x3cc36c++){const _0x53189d=_0x7fccc0[_0x3cc36c];if(!_0x53189d)continue;let _0x52b933=_0x4609ad[_0x3cc36c];if(_0x52b933==null||_0x52b933===''){_0x423346[_0x53189d]=_0x52b933==null?null:'';continue;}_0x74a187=![],typeof _0x52b933===_0x552618(0xac)?_0x423346[_0x53189d]=_0x52b933['trim']():_0x423346[_0x53189d]=_0x52b933;}if(!_0x74a187)_0xd8f639[_0x552618(0x9a)](_0x423346);}return _0xd8f639;}export function excelFilename(_0x5b12e5){const _0x4c61f7=_0x1997dd;return _0x5b12e5['endsWith'](_0x4c61f7(0x9b))?_0x5b12e5:_0x5b12e5+_0x4c61f7(0x9b);}export function excelResponseHeaders(_0x3026ac){const _0x51fb67=_0x1997dd,_0x355204=excelFilename(_0x3026ac);return{'Content-Type':_0x51fb67(0xa3),'Content-Disposition':'attachment;\x20filename*=UTF-8\x27\x27'+encodeURIComponent(_0x355204)};}function _0x2a31(){const _0x3fa55c=['nK94v2jxvq','EgXZEa','ChjVCa','u2HLzxroyw1LCW','mJmZnJLVvuTSsvu','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','C2v0','u2HLzxqX','Aw5JBhvKzxm','D3jPDgu','DxbKyxrLvgLTzq','BgfIzwW','ntm4mJiZmKLot2noAG','yM9VA19HChbLBMrFC2HLzxq','C3rYAw5N','yxjYyxK','ndy2nZiYnM12uM9Lvq','yM9VA19UzxC','z2v0','odeXote2n2Trswz1CW','mtq2nJDgtePnA3a','mZq3ndKZnuzUwwThqW','yw9Hx3rVx3nOzwv0','zgvSzxrLzef0','BgvUz3rO','DxrPBhm','mZu2whvluKjw','CMvHza','DhjPBq','ChvZAa','lNHSC3G','BwfW','mJiZmtqYmtndtwvZt0W'];_0x2a31=function(){return _0x3fa55c;};return _0x2a31();}
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)};}
@@ -1 +1 @@
1
- function _0x4b2d(_0x4a92ce,_0x38a39b){_0x4a92ce=_0x4a92ce-0x18f;var _0x25aab2=_0x25aa();var _0x4b2de0=_0x25aab2[_0x4a92ce];if(_0x4b2d['SGmOpw']===undefined){var _0x1b3d26=function(_0x2ec3d5){var _0x2bf53b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x323187='',_0x1e9f26='';for(var _0x28660a=0x0,_0x34a60b,_0xe86cd8,_0x3e585c=0x0;_0xe86cd8=_0x2ec3d5['charAt'](_0x3e585c++);~_0xe86cd8&&(_0x34a60b=_0x28660a%0x4?_0x34a60b*0x40+_0xe86cd8:_0xe86cd8,_0x28660a++%0x4)?_0x323187+=String['fromCharCode'](0xff&_0x34a60b>>(-0x2*_0x28660a&0x6)):0x0){_0xe86cd8=_0x2bf53b['indexOf'](_0xe86cd8);}for(var _0x17f2d6=0x0,_0x538469=_0x323187['length'];_0x17f2d6<_0x538469;_0x17f2d6++){_0x1e9f26+='%'+('00'+_0x323187['charCodeAt'](_0x17f2d6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e9f26);};_0x4b2d['hmswlh']=_0x1b3d26,_0x4b2d['YzEwkA']={},_0x4b2d['SGmOpw']=!![];}var _0x44b24d=_0x25aab2[0x0],_0x30d0f3=_0x4a92ce+_0x44b24d,_0x3d4d26=_0x4b2d['YzEwkA'][_0x30d0f3];return!_0x3d4d26?(_0x4b2de0=_0x4b2d['hmswlh'](_0x4b2de0),_0x4b2d['YzEwkA'][_0x30d0f3]=_0x4b2de0):_0x4b2de0=_0x3d4d26,_0x4b2de0;}(function(_0xb47faf,_0x29bb36){var _0xf0747=_0x4b2d,_0x28b8eb=_0xb47faf();while(!![]){try{var _0x1ede5e=-parseInt(_0xf0747(0x194))/0x1*(parseInt(_0xf0747(0x198))/0x2)+-parseInt(_0xf0747(0x197))/0x3*(parseInt(_0xf0747(0x196))/0x4)+parseInt(_0xf0747(0x18f))/0x5+-parseInt(_0xf0747(0x193))/0x6+parseInt(_0xf0747(0x190))/0x7+-parseInt(_0xf0747(0x195))/0x8+-parseInt(_0xf0747(0x192))/0x9*(-parseInt(_0xf0747(0x191))/0xa);if(_0x1ede5e===_0x29bb36)break;else _0x28b8eb['push'](_0x28b8eb['shift']());}catch(_0x32d694){_0x28b8eb['push'](_0x28b8eb['shift']());}}}(_0x25aa,0x8c0ca));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';function _0x25aa(){var _0x63521f=['ndC4nZC5mevNtfz5DW','mZCZrMHTwhDV','ndu2otK2og5UDvnuqW','nZaXnJu2AKzYvNzt','m0jzvgHcyW','mJiWmKvLCKLUCq','ntK2nZCWCKjSv09e','mJq2odC1m2zlvKrxCq','mtbsEwXOC1u','mtG1mtiXnJnPBLf4z3u'];_0x25aa=function(){return _0x63521f;};return _0x25aa();}
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';
@@ -1 +1 @@
1
- function _0x2bc4(){const _0x2657ba=['nta2otveDxrHCuW','mJu3mhbyC0H0uG','y2HPBgrYzw4','mtmYmJa3ngDyA05lDa','mJKXmJyXnMrNzurlsG','ChvZAa','C2v0','CgfYzw50swq','BgvUz3rO','DMfSDwvZ','yxnJ','nZC1mZK4nhDbtNnQuq','z2v0','AgfZ','mZzNDK1juMm','B3jKzxjoDw0','C29YDa','m0rPEvLPyW','mtqXnZy4mhPJwuPisa','mJu2nJiYq3bvuKLA','mJuZnJjXtxPKqNy','zgvZyW'];_0x2bc4=function(){return _0x2657ba;};return _0x2bc4();}function _0x575e(_0x3f8b4a,_0x472319){_0x3f8b4a=_0x3f8b4a-0x17b;const _0x2bc4b5=_0x2bc4();let _0x575ead=_0x2bc4b5[_0x3f8b4a];if(_0x575e['KBXrsX']===undefined){var _0xed7fbf=function(_0x472ff8){const _0x4da36f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x256958='',_0x5052e9='';for(let _0x1d64c3=0x0,_0x3fb33e,_0x44e51d,_0x4632cb=0x0;_0x44e51d=_0x472ff8['charAt'](_0x4632cb++);~_0x44e51d&&(_0x3fb33e=_0x1d64c3%0x4?_0x3fb33e*0x40+_0x44e51d:_0x44e51d,_0x1d64c3++%0x4)?_0x256958+=String['fromCharCode'](0xff&_0x3fb33e>>(-0x2*_0x1d64c3&0x6)):0x0){_0x44e51d=_0x4da36f['indexOf'](_0x44e51d);}for(let _0x2775a3=0x0,_0x1ddbfd=_0x256958['length'];_0x2775a3<_0x1ddbfd;_0x2775a3++){_0x5052e9+='%'+('00'+_0x256958['charCodeAt'](_0x2775a3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5052e9);};_0x575e['DhdtaF']=_0xed7fbf,_0x575e['DqVwrW']={},_0x575e['KBXrsX']=!![];}const _0x528c2d=_0x2bc4b5[0x0],_0x42d851=_0x3f8b4a+_0x528c2d,_0x56197d=_0x575e['DqVwrW'][_0x42d851];return!_0x56197d?(_0x575ead=_0x575e['DhdtaF'](_0x575ead),_0x575e['DqVwrW'][_0x42d851]=_0x575ead):_0x575ead=_0x56197d,_0x575ead;}const _0x220e72=_0x575e;(function(_0x1ff730,_0x2c7948){const _0x50dabb=_0x575e,_0x1b49bb=_0x1ff730();while(!![]){try{const _0x35041d=parseInt(_0x50dabb(0x189))/0x1+-parseInt(_0x50dabb(0x183))/0x2*(parseInt(_0x50dabb(0x181))/0x3)+-parseInt(_0x50dabb(0x182))/0x4+-parseInt(_0x50dabb(0x186))/0x5*(-parseInt(_0x50dabb(0x17e))/0x6)+-parseInt(_0x50dabb(0x18a))/0x7+parseInt(_0x50dabb(0x17b))/0x8+-parseInt(_0x50dabb(0x184))/0x9*(parseInt(_0x50dabb(0x187))/0xa);if(_0x35041d===_0x2c7948)break;else _0x1b49bb['push'](_0x1b49bb['shift']());}catch(_0x47aafb){_0x1b49bb['push'](_0x1b49bb['shift']());}}}(_0x2bc4,0xb2017));export function deepTree(_0x256958,_0x5052e9=_0x220e72(0x190)){const _0x1c6681=_0x220e72,_0x1d64c3=new Map();for(const _0x4632cb of _0x256958){if(_0x4632cb['id']==null)continue;_0x1d64c3[_0x1c6681(0x18c)](_0x4632cb['id'],{..._0x4632cb,'children':[]});}const _0x3fb33e=[];for(const _0x2775a3 of _0x1d64c3[_0x1c6681(0x18f)]()){const _0x1ddbfd=_0x2775a3[_0x1c6681(0x18d)];_0x1ddbfd!=null&&_0x1ddbfd!==''&&_0x1d64c3[_0x1c6681(0x17d)](_0x1ddbfd)?_0x1d64c3[_0x1c6681(0x17c)](_0x1ddbfd)[_0x1c6681(0x188)][_0x1c6681(0x18b)](_0x2775a3):_0x3fb33e['push'](_0x2775a3);}const _0x44e51d=_0x3443f4=>{const _0x2a843b=_0x1c6681;_0x3443f4[_0x2a843b(0x180)]((_0x5557c9,_0x224670)=>{const _0x302a20=_0x2a843b,_0x54ce12=_0x5557c9[_0x302a20(0x17f)]??0x0,_0x2931e3=_0x224670['orderNum']??0x0,_0x3f2cdb=_0x5052e9===_0x302a20(0x185)?_0x2931e3-_0x54ce12:_0x54ce12-_0x2931e3;return _0x3f2cdb||Number(_0x5557c9['id'])-Number(_0x224670['id']);});for(const _0x1c8489 of _0x3443f4)if(_0x1c8489[_0x2a843b(0x188)]?.['length'])_0x44e51d(_0x1c8489[_0x2a843b(0x188)]);};return _0x44e51d(_0x3fb33e),_0x3fb33e;}export function flattenTree(_0x397e59,_0x348ee6,_0x52b852=0x0,_0x153edb=[]){const _0x24b5b9=_0x220e72;for(const _0x5deb17 of _0x397e59){const _0x2cbf7d=_0x5deb17[_0x24b5b9(0x188)]||[];_0x153edb[_0x24b5b9(0x18b)]({..._0x5deb17,'depth':_0x52b852,'hasChildren':_0x2cbf7d[_0x24b5b9(0x18e)]>0x0});if(_0x2cbf7d['length']&&_0x348ee6[_0x24b5b9(0x17d)](_0x5deb17['id']))flattenTree(_0x2cbf7d,_0x348ee6,_0x52b852+0x1,_0x153edb);}return _0x153edb;}
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;}
@@ -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';
@@ -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;
@@ -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.54",
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"
@@ -211,6 +211,10 @@ export type CrudTableOptions = {
211
211
  /** 树表:list 含 children 时缩进展开 */
212
212
  tree?: boolean;
213
213
  treeLazy?: boolean;
214
+ /** 树表默认全部展开(为 true 时忽略 defaultExpandLevel) */
215
+ defaultExpandAll?: boolean;
216
+ /** 树表默认展开到第几级(1=仅根、不展开;默认 1) */
217
+ defaultExpandLevel?: number;
214
218
  /** 默认排序;请求键由 dict.sort 决定 */
215
219
  defaultSort?: {
216
220
  prop: string;
@@ -217,6 +217,10 @@ export type CrudTableOptions = {
217
217
  /** 树表:list 含 children 时缩进展开 */
218
218
  tree?: boolean
219
219
  treeLazy?: boolean
220
+ /** 树表默认全部展开(为 true 时忽略 defaultExpandLevel) */
221
+ defaultExpandAll?: boolean
222
+ /** 树表默认展开到第几级(1=仅根、不展开;默认 1) */
223
+ defaultExpandLevel?: number
220
224
  /** 默认排序;请求键由 dict.sort 决定 */
221
225
  defaultSort?: {
222
226
  prop: string