vome-core 0.0.56 → 0.0.58
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-seat.d.ts +29 -0
- package/dist/src/ext/module-install-gate.d.ts +10 -1
- package/dist/src/ext/module-install.d.ts +25 -0
- package/dist/src/ext/module-registry.d.ts +8 -2
- package/dist/src/server/index.d.ts +2 -2
- package/dist/typings/ext/market-seat.d.ts +39 -0
- package/dist/typings/ext/module.d.ts +7 -0
- package/package.json +1 -1
package/dist/shared/excel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x92388b=_0x105b;(function(_0x474d82,_0x4e72d4){const _0x407a4b=_0x105b,_0x4e2772=_0x474d82();while(!![]){try{const _0x3f5185=-parseInt(_0x407a4b(0x13b))/0x1*(-parseInt(_0x407a4b(0x12b))/0x2)+parseInt(_0x407a4b(0x12f))/0x3+parseInt(_0x407a4b(0x120))/0x4+parseInt(_0x407a4b(0x128))/0x5*(parseInt(_0x407a4b(0x13d))/0x6)+parseInt(_0x407a4b(0x131))/0x7*(-parseInt(_0x407a4b(0x123))/0x8)+-parseInt(_0x407a4b(0x121))/0x9+-parseInt(_0x407a4b(0x132))/0xa;if(_0x3f5185===_0x4e72d4)break;else _0x4e2772['push'](_0x4e2772['shift']());}catch(_0x38988d){_0x4e2772['push'](_0x4e2772['shift']());}}}(_0x47ab,0x3f422));import*as _0x1ea021 from'xlsx';export const IMPORT_SKIP_FIELDS=['id','createTime',_0x92388b(0x12d),'deletedAt',_0x92388b(0x137)];export function isImportSkipField(_0x15059c){const _0x4b0e0e=_0x92388b;return IMPORT_SKIP_FIELDS[_0x4b0e0e(0x12a)](_0x15059c);}export function buildExcelBuffer(_0x1a7347,_0x5bdcff,_0x677d2c){const _0x1a7b9f=_0x92388b,_0x2a18ee=_0x1a7347['map'](_0x764160=>_0x764160[_0x1a7b9f(0x136)]||_0x764160['prop']),_0x50806c=_0x5bdcff['map'](_0x1a3624=>_0x1a7347[_0x1a7b9f(0x13a)](_0x113d5f=>{const _0x4ddd51=_0x1a7b9f;if(_0x677d2c)return _0x677d2c(_0x113d5f[_0x4ddd51(0x12e)],_0x1a3624);const _0xc9bab7=_0x1a3624[_0x113d5f[_0x4ddd51(0x12e)]];if(_0xc9bab7==null)return'';return String(_0xc9bab7);})),_0x47225e=_0x1ea021[_0x1a7b9f(0x135)][_0x1a7b9f(0x134)]([_0x2a18ee,..._0x50806c]),_0x1958e2=_0x1ea021[_0x1a7b9f(0x135)][_0x1a7b9f(0x124)]();return _0x1ea021[_0x1a7b9f(0x135)]['book_append_sheet'](_0x1958e2,_0x47225e,_0x1a7b9f(0x11f)),_0x1ea021[_0x1a7b9f(0x130)](_0x1958e2,{'bookType':'xlsx','type':_0x1a7b9f(0x122)});}export function buildImportTemplateBuffer(_0x5c4cdd){return buildExcelBuffer(_0x5c4cdd,[]);}export function parseExcelBuffer(_0x461a8a,_0x519c83){const _0x1179d9=_0x92388b,_0x2d0219=_0x1ea021['read'](_0x461a8a,{'type':_0x1179d9(0x122),'cellDates':!![]}),_0x1071ac=_0x2d0219[_0x1179d9(0x139)][0x0];if(!_0x1071ac)return[];const _0x5489c4=_0x2d0219[_0x1179d9(0x133)][_0x1071ac];if(!_0x5489c4)return[];const _0xb3f2d8=_0x1ea021['utils']['sheet_to_json'](_0x5489c4,{'header':0x1,'defval':'','raw':![]});if(!_0xb3f2d8[_0x1179d9(0x13e)])return[];const _0x3f1047=(_0xb3f2d8[0x0]||[])['map'](_0x4d9191=>String(_0x4d9191??'')[_0x1179d9(0x127)]()),_0x3b736b=new Map();if(_0x519c83?.[_0x1179d9(0x13e)])for(const _0x3fdb60 of _0x519c83){_0x3b736b[_0x1179d9(0x11e)](_0x3fdb60['label'][_0x1179d9(0x127)](),_0x3fdb60[_0x1179d9(0x12e)]),_0x3b736b[_0x1179d9(0x11e)](_0x3fdb60['prop'],_0x3fdb60[_0x1179d9(0x12e)]);}const _0x203429=_0x3f1047['map'](_0x415241=>{if(!_0x415241)return'';return _0x3b736b['get'](_0x415241)||_0x415241;}),_0x37f976=[];for(let _0x37c426=0x1;_0x37c426<_0xb3f2d8['length'];_0x37c426++){const _0x57ddec=_0xb3f2d8[_0x37c426]||[],_0x13db28={};let _0x3a98b1=!![];for(let _0x2f602c=0x0;_0x2f602c<_0x203429[_0x1179d9(0x13e)];_0x2f602c++){const _0xd042cd=_0x203429[_0x2f602c];if(!_0xd042cd)continue;let _0x3d8d6c=_0x57ddec[_0x2f602c];if(_0x3d8d6c==null||_0x3d8d6c===''){_0x13db28[_0xd042cd]=_0x3d8d6c==null?null:'';continue;}_0x3a98b1=![],typeof _0x3d8d6c===_0x1179d9(0x129)?_0x13db28[_0xd042cd]=_0x3d8d6c[_0x1179d9(0x127)]():_0x13db28[_0xd042cd]=_0x3d8d6c;}if(!_0x3a98b1)_0x37f976[_0x1179d9(0x138)](_0x13db28);}return _0x37f976;}function _0x47ab(){const _0x153f9a=['BgvUz3rO','C2v0','u2HLzxqX','mte5nZu2B09sv3Pz','mti1nZe3ngfKyu1Htq','yxjYyxK','oezItxvKvW','yM9VA19UzxC','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','lNHSC3G','DhjPBq','nwTyEgfSsW','C3rYAw5N','Aw5JBhvKzxm','mtzgCg93zhe','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','DxbKyxrLvgLTzq','ChjVCa','nZe0ndGWC3ztBxnb','D3jPDgu','mtiWodmXmMzHsw5Xwa','ndGZmtqZmhD1AxbABW','u2HLzxrZ','yw9Hx3rVx3nOzwv0','DxrPBhm','BgfIzwW','DgvUyw50swq','ChvZAa','u2HLzxroyw1LCW','BwfW','ntm1otjHv1f5CK8','zw5KC1DPDgG','mJe0nJi5nKj6EgrXra'];_0x47ab=function(){return _0x153f9a;};return _0x47ab();}export function excelFilename(_0x40a235){const _0x2abc96=_0x92388b;return _0x40a235[_0x2abc96(0x13c)](_0x2abc96(0x126))?_0x40a235:_0x40a235+'.xlsx';}function _0x105b(_0x22d2e4,_0x56035c){_0x22d2e4=_0x22d2e4-0x11e;const _0x47ab5a=_0x47ab();let _0x105bdf=_0x47ab5a[_0x22d2e4];if(_0x105b['HxGwIR']===undefined){var _0x26ca7d=function(_0x5a4fb0){const _0x31187d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1ea021='',_0x15059c='';for(let _0x1a7347=0x0,_0x5bdcff,_0x677d2c,_0x2a18ee=0x0;_0x677d2c=_0x5a4fb0['charAt'](_0x2a18ee++);~_0x677d2c&&(_0x5bdcff=_0x1a7347%0x4?_0x5bdcff*0x40+_0x677d2c:_0x677d2c,_0x1a7347++%0x4)?_0x1ea021+=String['fromCharCode'](0xff&_0x5bdcff>>(-0x2*_0x1a7347&0x6)):0x0){_0x677d2c=_0x31187d['indexOf'](_0x677d2c);}for(let _0x50806c=0x0,_0x47225e=_0x1ea021['length'];_0x50806c<_0x47225e;_0x50806c++){_0x15059c+='%'+('00'+_0x1ea021['charCodeAt'](_0x50806c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15059c);};_0x105b['zwJYGr']=_0x26ca7d,_0x105b['LzDHVG']={},_0x105b['HxGwIR']=!![];}const _0x496e75=_0x47ab5a[0x0],_0x166c04=_0x22d2e4+_0x496e75,_0xf45777=_0x105b['LzDHVG'][_0x166c04];return!_0xf45777?(_0x105bdf=_0x105b['zwJYGr'](_0x105bdf),_0x105b['LzDHVG'][_0x166c04]=_0x105bdf):_0x105bdf=_0xf45777,_0x105bdf;}export function excelResponseHeaders(_0x4a5fc5){const _0x4ff6d6=_0x92388b,_0x1b1845=excelFilename(_0x4a5fc5);return{'Content-Type':_0x4ff6d6(0x125),'Content-Disposition':_0x4ff6d6(0x12c)+encodeURIComponent(_0x1b1845)};}
|
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
(function(_0x4ada74,_0x478a23){var _0x776320=_0x1340,_0x46dd50=_0x4ada74();while(!![]){try{var _0x464698=-parseInt(_0x776320(0xd3))/0x1*(parseInt(_0x776320(0xd5))/0x2)+parseInt(_0x776320(0xd9))/0x3*(parseInt(_0x776320(0xd8))/0x4)+-parseInt(_0x776320(0xda))/0x5*(-parseInt(_0x776320(0xcf))/0x6)+-parseInt(_0x776320(0xd6))/0x7*(-parseInt(_0x776320(0xd7))/0x8)+-parseInt(_0x776320(0xd0))/0x9*(-parseInt(_0x776320(0xdb))/0xa)+parseInt(_0x776320(0xd2))/0xb*(-parseInt(_0x776320(0xd1))/0xc)+-parseInt(_0x776320(0xdc))/0xd*(parseInt(_0x776320(0xd4))/0xe);if(_0x464698===_0x478a23)break;else _0x46dd50['push'](_0x46dd50['shift']());}catch(_0x5131c8){_0x46dd50['push'](_0x46dd50['shift']());}}}(_0x5840,0x69e81));export{merge}from'../comm/merge';function _0x5840(){var _0xd5e948=['mJiZmZG0rgLQD3jY','mty2nZG2t2zOtgXA','mJHiCMD1wNK','mZm4mJy0shL3u01Q','mZCZmdKYAffxDK5r','mJfODNfptvm','nxvrDuTHAa','ndKXmteWuhznA2Xo','mZeYqu5WEMPq','mJu2mJCZohnetLHKqW','ndvMAg90sg8','mJy2nZeYAwrkEgDg','mJuZEej6Ehj2','mM9Xz0jHqG'];_0x5840=function(){return _0xd5e948;};return _0x5840();}function _0x1340(_0x3d654b,_0x314056){_0x3d654b=_0x3d654b-0xcf;var _0x5840f5=_0x5840();var _0x1340a1=_0x5840f5[_0x3d654b];if(_0x1340['BrhJih']===undefined){var _0x107c3d=function(_0x1757f9){var _0x24018e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x23603f='',_0x2685c8='';for(var _0x5391da=0x0,_0x472951,_0x38fbb7,_0x3d2ee3=0x0;_0x38fbb7=_0x1757f9['charAt'](_0x3d2ee3++);~_0x38fbb7&&(_0x472951=_0x5391da%0x4?_0x472951*0x40+_0x38fbb7:_0x38fbb7,_0x5391da++%0x4)?_0x23603f+=String['fromCharCode'](0xff&_0x472951>>(-0x2*_0x5391da&0x6)):0x0){_0x38fbb7=_0x24018e['indexOf'](_0x38fbb7);}for(var _0x13985b=0x0,_0x449092=_0x23603f['length'];_0x13985b<_0x449092;_0x13985b++){_0x2685c8+='%'+('00'+_0x23603f['charCodeAt'](_0x13985b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2685c8);};_0x1340['leVFYx']=_0x107c3d,_0x1340['aevKWd']={},_0x1340['BrhJih']=!![];}var _0xa94abf=_0x5840f5[0x0],_0x36de17=_0x3d654b+_0xa94abf,_0x2cd574=_0x1340['aevKWd'][_0x36de17];return!_0x2cd574?(_0x1340a1=_0x1340['leVFYx'](_0x1340a1),_0x1340['aevKWd'][_0x36de17]=_0x1340a1):_0x1340a1=_0x2cd574,_0x1340a1;}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
|
-
|
|
1
|
+
const _0x2e9152=_0x394d;(function(_0x40e5bc,_0x21ed69){const _0x28048a=_0x394d,_0x5f4bfe=_0x40e5bc();while(!![]){try{const _0x20c367=parseInt(_0x28048a(0xcb))/0x1*(parseInt(_0x28048a(0xce))/0x2)+parseInt(_0x28048a(0xd8))/0x3*(parseInt(_0x28048a(0xd4))/0x4)+-parseInt(_0x28048a(0xca))/0x5+-parseInt(_0x28048a(0xc9))/0x6+-parseInt(_0x28048a(0xd6))/0x7*(-parseInt(_0x28048a(0xd5))/0x8)+-parseInt(_0x28048a(0xd9))/0x9+parseInt(_0x28048a(0xcc))/0xa;if(_0x20c367===_0x21ed69)break;else _0x5f4bfe['push'](_0x5f4bfe['shift']());}catch(_0x256e2a){_0x5f4bfe['push'](_0x5f4bfe['shift']());}}}(_0xfcfc,0x2055f));export function deepTree(_0xf0d72b,_0x38d156=_0x2e9152(0xcf)){const _0x490fc8=_0x2e9152,_0x4ec77c=new Map();for(const _0x3411d4 of _0xf0d72b){if(_0x3411d4['id']==null)continue;_0x4ec77c[_0x490fc8(0xd7)](_0x3411d4['id'],{..._0x3411d4,'children':[]});}const _0x37db49=[];for(const _0x201e49 of _0x4ec77c['values']()){const _0x1c9129=_0x201e49[_0x490fc8(0xdb)];_0x1c9129!=null&&_0x1c9129!==''&&_0x4ec77c[_0x490fc8(0xda)](_0x1c9129)?_0x4ec77c[_0x490fc8(0xd3)](_0x1c9129)[_0x490fc8(0xdc)][_0x490fc8(0xd0)](_0x201e49):_0x37db49['push'](_0x201e49);}const _0x5d1e4b=_0x32918f=>{const _0x2d909f=_0x490fc8;_0x32918f['sort']((_0x3f4846,_0x416273)=>{const _0x13db0c=_0x394d,_0x331b26=_0x3f4846[_0x13db0c(0xd2)]??0x0,_0x5835ac=_0x416273[_0x13db0c(0xd2)]??0x0,_0x5a7e53=_0x38d156===_0x13db0c(0xd1)?_0x5835ac-_0x331b26:_0x331b26-_0x5835ac;return _0x5a7e53||Number(_0x3f4846['id'])-Number(_0x416273['id']);});for(const _0x450453 of _0x32918f)if(_0x450453[_0x2d909f(0xdc)]?.['length'])_0x5d1e4b(_0x450453[_0x2d909f(0xdc)]);};return _0x5d1e4b(_0x37db49),_0x37db49;}export function flattenTree(_0x3e8ef1,_0x56b50e,_0x28e7fa=0x0,_0x3b7a97=[]){const _0xbe57d8=_0x2e9152;for(const _0x2a00b8 of _0x3e8ef1){const _0xc1bf70=_0x2a00b8[_0xbe57d8(0xdc)]||[];_0x3b7a97[_0xbe57d8(0xd0)]({..._0x2a00b8,'depth':_0x28e7fa,'hasChildren':_0xc1bf70[_0xbe57d8(0xcd)]>0x0});if(_0xc1bf70[_0xbe57d8(0xcd)]&&_0x56b50e[_0xbe57d8(0xda)](_0x2a00b8['id']))flattenTree(_0xc1bf70,_0x56b50e,_0x28e7fa+0x1,_0x3b7a97);}return _0x3b7a97;}function _0x394d(_0x5c7e88,_0x43e9c6){_0x5c7e88=_0x5c7e88-0xc9;const _0xfcfc49=_0xfcfc();let _0x394d6b=_0xfcfc49[_0x5c7e88];if(_0x394d['TuUbDC']===undefined){var _0x43acd3=function(_0x3ba136){const _0x5e2381='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xf0d72b='',_0x38d156='';for(let _0x4ec77c=0x0,_0x37db49,_0x5d1e4b,_0x3411d4=0x0;_0x5d1e4b=_0x3ba136['charAt'](_0x3411d4++);~_0x5d1e4b&&(_0x37db49=_0x4ec77c%0x4?_0x37db49*0x40+_0x5d1e4b:_0x5d1e4b,_0x4ec77c++%0x4)?_0xf0d72b+=String['fromCharCode'](0xff&_0x37db49>>(-0x2*_0x4ec77c&0x6)):0x0){_0x5d1e4b=_0x5e2381['indexOf'](_0x5d1e4b);}for(let _0x201e49=0x0,_0x1c9129=_0xf0d72b['length'];_0x201e49<_0x1c9129;_0x201e49++){_0x38d156+='%'+('00'+_0xf0d72b['charCodeAt'](_0x201e49)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x38d156);};_0x394d['ASimyi']=_0x43acd3,_0x394d['YPffAT']={},_0x394d['TuUbDC']=!![];}const _0x222f63=_0xfcfc49[0x0],_0x1b0dc0=_0x5c7e88+_0x222f63,_0x2a5600=_0x394d['YPffAT'][_0x1b0dc0];return!_0x2a5600?(_0x394d6b=_0x394d['ASimyi'](_0x394d6b),_0x394d['YPffAT'][_0x1b0dc0]=_0x394d6b):_0x394d6b=_0x2a5600,_0x394d6b;}function _0xfcfc(){const _0x24d8ff=['mtqZmte3mxPIqNn5yW','AgfZ','CgfYzw50swq','y2HPBgrYzw4','mtm5mJCZmNL0CeDhrW','mta3mtC3nwfPv3bUsa','nJjnyuvPC00','ndC5otK1mg92EhHNAa','BgvUz3rO','nJaYmhzwr1bpqG','yxnJ','ChvZAa','zgvZyW','B3jKzxjoDw0','z2v0','ngXeB1r6tW','ohbfwKD0Aq','mZe1mte5uLLuAxrZ','C2v0','nZG5mZnfAKnNzgy'];_0xfcfc=function(){return _0x24d8ff;};return _0xfcfc();}
|
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, 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';
|
|
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, MARKET_SEAT_DEFAULTS, ensureSiteId, syncModuleSeat, syncAllModuleSeats, getModuleSeatStatus, listModuleSeatStatuses, isModuleSeatBlocked, assertModuleSeatActive, formatSeatDisplay, startMarketSeatHeartbeat, stopMarketSeatHeartbeat, bootstrapInstalledModules, } from '../ext';
|
|
19
|
+
export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, InstallModuleOptions, InstallModuleResult, MarketSeatStatus, MarketSeatTicketPayload, MarketSeatTicket, } from '../ext';
|
|
20
20
|
export { defineAuthMacro } from '../auth';
|
package/dist/src/ext/index.d.ts
CHANGED
|
@@ -13,7 +13,11 @@ export { microApps } from './micro-apps';
|
|
|
13
13
|
export { createModuleGateway } from './module-gateway';
|
|
14
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
15
|
export { hashZipEntries, readZipManifest, readMarketSig, sealVomeBuffer, verifySealedVome, } from './market-package';
|
|
16
|
-
export { assertModuleInstallAllowed, peekMarketPackage, } from './module-install-gate';
|
|
16
|
+
export { assertModuleInstallAllowed, assertModuleDirAllowed, peekMarketPackage, readDirMarketSig, } from './module-install-gate';
|
|
17
|
+
export { installModuleFromZip, uninstallModuleFiles, } from './module-install';
|
|
18
|
+
export type { InstallModuleOptions, InstallModuleResult, } from './module-install';
|
|
19
|
+
export { MARKET_SEAT_DEFAULTS, ensureSiteId, syncModuleSeat, syncAllModuleSeats, getModuleSeatStatus, listModuleSeatStatuses, isModuleSeatBlocked, assertModuleSeatActive, formatSeatDisplay, startMarketSeatHeartbeat, stopMarketSeatHeartbeat, bootstrapInstalledModules, } from './market-seat';
|
|
20
|
+
export type { MarketSeatStatus, MarketSeatTicketPayload, MarketSeatTicket, } from '../../typings/ext/market-seat';
|
|
17
21
|
export type { PluginManifest, PluginInfo, PluginPayload, PluginCheckResult, } from '../../typings/ext/plugin';
|
|
18
22
|
export type { ModuleRouteDef, ModuleMenuDef, ModuleManifest, ModuleHandlerCtx, ModuleHandler, ModuleInstalled, } from '../../typings/ext/module';
|
|
19
23
|
export type { MarketPricing, MarketSigPayload, MarketLicensePayload, MarketLicenseFile, InstallGateKind, InstallGateResult, AssertModuleInstallOptions, } from '../../typings/ext/market';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MarketSeatStatus } from '../../typings/ext/market-seat';
|
|
2
|
+
import { MARKET_SEAT_DEFAULTS } from '../../typings/ext/market-seat';
|
|
3
|
+
/** 站点终身 ID(service 根目录 site.id,不绑 IP) */
|
|
4
|
+
export declare function ensureSiteId(): string;
|
|
5
|
+
/**
|
|
6
|
+
* 向市场登记/续期席位(core)。
|
|
7
|
+
* 免费签发包跳过;付费需本地 license 证明买家身份。
|
|
8
|
+
*/
|
|
9
|
+
export declare function syncModuleSeat(moduleKey: string, opts?: {
|
|
10
|
+
action?: 'occupy' | 'heartbeat' | 'release';
|
|
11
|
+
}): Promise<MarketSeatStatus | null>;
|
|
12
|
+
export declare function syncAllModuleSeats(action?: 'occupy' | 'heartbeat'): Promise<void>;
|
|
13
|
+
export declare function getModuleSeatStatus(moduleKey: string): MarketSeatStatus | null;
|
|
14
|
+
export declare function listModuleSeatStatuses(): Record<string, MarketSeatStatus>;
|
|
15
|
+
/** 超席则禁止使用(路由/钩子调用前检查) */
|
|
16
|
+
export declare function isModuleSeatBlocked(moduleKey: string): boolean;
|
|
17
|
+
export declare function assertModuleSeatActive(moduleKey: string): void;
|
|
18
|
+
/** UI:席位展示,unlimited → seats/used 为 null(前端显示 /) */
|
|
19
|
+
export declare function formatSeatDisplay(st: MarketSeatStatus | null | undefined): {
|
|
20
|
+
seatsLabel: string;
|
|
21
|
+
usedLabel: string;
|
|
22
|
+
blocked: boolean;
|
|
23
|
+
tip?: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function startMarketSeatHeartbeat(): void;
|
|
26
|
+
export declare function stopMarketSeatHeartbeat(): void;
|
|
27
|
+
/** 启动:加载模块 + 席位同步 + 12h 心跳(逻辑在 core) */
|
|
28
|
+
export declare function bootstrapInstalledModules(): Promise<void>;
|
|
29
|
+
export { MARKET_SEAT_DEFAULTS };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AssertModuleInstallOptions, InstallGateResult } from '../../typings/ext/market';
|
|
2
|
+
import type { MarketSigFile } from './market-package';
|
|
2
3
|
/**
|
|
3
4
|
* 安装前强制门禁(写入 core):
|
|
4
5
|
* - 无市场签名 → 自研包,放行
|
|
@@ -6,8 +7,16 @@ import type { AssertModuleInstallOptions, InstallGateResult } from '../../typing
|
|
|
6
7
|
* - 签名 paid → 须本地 .lic 或联网拉取「签名 license」验签通过(不采信 boolean)
|
|
7
8
|
*/
|
|
8
9
|
export declare function assertModuleInstallAllowed(zipPathOrBuffer: string | Buffer, opts?: AssertModuleInstallOptions): Promise<InstallGateResult>;
|
|
10
|
+
declare function readDirMarketSig(dir: string): MarketSigFile | null;
|
|
11
|
+
export { readDirMarketSig };
|
|
12
|
+
/**
|
|
13
|
+
* 启动/热加载时校验已落盘模块(防直接拷贝 modules/ 绕过 install)
|
|
14
|
+
*/
|
|
15
|
+
export declare function assertModuleDirAllowed(dir: string, opts?: {
|
|
16
|
+
marketPublicKey?: string | Uint8Array;
|
|
17
|
+
}): InstallGateResult;
|
|
9
18
|
/** 从 zip 快速探测是否为市场签发包(调试用) */
|
|
10
19
|
export declare function peekMarketPackage(zipPathOrBuffer: string | Buffer): {
|
|
11
20
|
manifest: import(".").ModuleManifest;
|
|
12
|
-
sig:
|
|
21
|
+
sig: MarketSigFile;
|
|
13
22
|
} | 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
|
-
/**
|
|
15
|
-
|
|
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<{
|
|
@@ -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, 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';
|
|
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, MARKET_SEAT_DEFAULTS, ensureSiteId, syncModuleSeat, syncAllModuleSeats, getModuleSeatStatus, listModuleSeatStatuses, isModuleSeatBlocked, assertModuleSeatActive, formatSeatDisplay, startMarketSeatHeartbeat, stopMarketSeatHeartbeat, bootstrapInstalledModules, } 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, 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';
|
|
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, MarketSeatStatus, MarketSeatTicketPayload, MarketSeatTicket, 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,39 @@
|
|
|
1
|
+
/** 席位占用结果(市场签发 ticket 后由 core 解析) */
|
|
2
|
+
export type MarketSeatStatus = {
|
|
3
|
+
marketId: string;
|
|
4
|
+
/** unlimited:作者/免费;ok:已占席;blocked:超席;pending:待联网登记 */
|
|
5
|
+
state: 'unlimited' | 'ok' | 'blocked' | 'pending' | 'unknown';
|
|
6
|
+
/** 展示用:作者/免费为 null → UI 显示 / */
|
|
7
|
+
seats: number | null;
|
|
8
|
+
used: number | null;
|
|
9
|
+
reason?: string;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
};
|
|
12
|
+
export type MarketSeatTicketPayload = {
|
|
13
|
+
v: 1;
|
|
14
|
+
kind: 'seat';
|
|
15
|
+
marketId: string;
|
|
16
|
+
siteId: string;
|
|
17
|
+
unlimited: boolean;
|
|
18
|
+
allowed: boolean;
|
|
19
|
+
seats: number | null;
|
|
20
|
+
used: number | null;
|
|
21
|
+
issuedAt: string;
|
|
22
|
+
expireAt: string;
|
|
23
|
+
reason?: string | null;
|
|
24
|
+
};
|
|
25
|
+
export type MarketSeatTicket = {
|
|
26
|
+
payload: MarketSeatTicketPayload;
|
|
27
|
+
sig: string;
|
|
28
|
+
};
|
|
29
|
+
/** core 内置席位调度默认(宿主可用 VomeConfig.market 覆盖) */
|
|
30
|
+
export declare const MARKET_SEAT_DEFAULTS: {
|
|
31
|
+
/** 付费购买默认席位数 */
|
|
32
|
+
readonly baseSeats: 3;
|
|
33
|
+
/** 运行中心跳间隔 */
|
|
34
|
+
readonly heartbeatIntervalMs: number;
|
|
35
|
+
/** 无心跳自动释放占用(天) */
|
|
36
|
+
readonly staleDays: 30;
|
|
37
|
+
/** 签发 ticket 有效期(短) */
|
|
38
|
+
readonly ticketTtlMs: number;
|
|
39
|
+
};
|
|
@@ -49,4 +49,11 @@ export type ModuleInstalled = ModuleManifest & {
|
|
|
49
49
|
hasServer: boolean;
|
|
50
50
|
hasWeb: boolean;
|
|
51
51
|
hasHook: boolean;
|
|
52
|
+
/** 席位展示(core 注入);作者/免费 seatsLabel/usedLabel 为 / */
|
|
53
|
+
seat?: {
|
|
54
|
+
seatsLabel: string;
|
|
55
|
+
usedLabel: string;
|
|
56
|
+
blocked: boolean;
|
|
57
|
+
tip?: string;
|
|
58
|
+
};
|
|
52
59
|
};
|