vome-core 0.1.15 → 0.1.16
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/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/agent/index.d.ts +3 -1
- package/dist/config/index.d.ts +10 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +1 -1
- package/dist/server/index.d.ts +17 -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/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +7 -5
- package/typings/comm/crud.ts +29 -0
- package/typings/comm/page.ts +18 -0
- package/typings/comm/scan.ts +6 -0
- package/typings/common.ts +4 -0
- package/typings/context/data.ts +10 -0
- package/typings/ext/market-seat.ts +42 -0
- package/typings/ext/market.ts +55 -0
- package/typings/ext/module.ts +64 -0
- package/typings/ext/plugin.ts +38 -0
- package/typings/ioc/metadata.ts +34 -0
- package/typings/logger/config.ts +6 -0
- package/typings/routing/crud.ts +162 -0
- package/typings/routing/eps.ts +72 -0
- package/typings/routing/meta.ts +63 -0
- package/typings/routing/register.ts +21 -0
- package/typings/routing/scan-context.ts +7 -0
- package/dist/ai.d.ts +0 -1
- package/dist/src/admin/config/plugin-dev.d.ts +0 -52
- package/dist/src/agent/index.d.ts +0 -3
- package/dist/src/config/index.d.ts +0 -10
- package/dist/src/index.d.ts +0 -12
- package/dist/src/server/index.d.ts +0 -17
- package/dist/src/shared/excel.d.ts +0 -23
- package/dist/src/shared/tree.d.ts +0 -18
- package/src/shared/excel.d.ts +0 -23
- package/src/shared/excel.ts +0 -123
- package/src/shared/index.ts +0 -30
- package/src/shared/locale-json.ts +0 -79
- package/src/shared/tree.d.ts +0 -18
- package/src/shared/tree.ts +0 -50
- /package/dist/{src/agent → agent}/constants.d.ts +0 -0
- /package/dist/{src/agent → agent}/protocol.d.ts +0 -0
- /package/dist/{src/agent → agent}/types.d.ts +0 -0
- /package/dist/{src/ai → ai}/adapters/anthropic-gemini.d.ts +0 -0
- /package/dist/{src/ai → ai}/adapters/auth-headers.d.ts +0 -0
- /package/dist/{src/ai → ai}/adapters/index.d.ts +0 -0
- /package/dist/{src/ai → ai}/adapters/openai-compatible.d.ts +0 -0
- /package/dist/{src/ai → ai}/call-log-helpers.d.ts +0 -0
- /package/dist/{src/ai → ai}/index.d.ts +0 -0
- /package/dist/{src/ai → ai}/normalize.d.ts +0 -0
- /package/dist/{src/ai → ai}/sse.d.ts +0 -0
- /package/dist/{src/ai → ai}/transport.d.ts +0 -0
- /package/dist/{src/ai → ai}/types.d.ts +0 -0
- /package/dist/{src/auth → auth}/define-macro.d.ts +0 -0
- /package/dist/{src/auth → auth}/index.d.ts +0 -0
- /package/dist/{src/comm → comm}/daily-log.d.ts +0 -0
- /package/dist/{src/comm → comm}/env.d.ts +0 -0
- /package/dist/{src/comm → comm}/format-time.d.ts +0 -0
- /package/dist/{src/comm → comm}/merge.d.ts +0 -0
- /package/dist/{src/comm → comm}/scan.d.ts +0 -0
- /package/dist/{src/comm → comm}/startBanner.d.ts +0 -0
- /package/dist/{src/core → core}/app.d.ts +0 -0
- /package/dist/{src/core → core}/config.d.ts +0 -0
- /package/dist/{src/core → core}/context/index.d.ts +0 -0
- /package/dist/{src/core → core}/host-infra.d.ts +0 -0
- /package/dist/{src/core → core}/index.d.ts +0 -0
- /package/dist/{src/core → core}/plugins/async-context.d.ts +0 -0
- /package/dist/{src/core → core}/plugins/error.d.ts +0 -0
- /package/dist/{src/core → core}/plugins/logging.d.ts +0 -0
- /package/dist/{src/core → core}/plugins/openapi.d.ts +0 -0
- /package/dist/{src/core → core}/vome-config.d.ts +0 -0
- /package/dist/{src/ext → ext}/base-plugin.d.ts +0 -0
- /package/dist/{src/ext → ext}/host-identity.d.ts +0 -0
- /package/dist/{src/ext → ext}/index.d.ts +0 -0
- /package/dist/{src/ext → ext}/load-plugin.d.ts +0 -0
- /package/dist/{src/ext → ext}/market-crypto.d.ts +0 -0
- /package/dist/{src/ext → ext}/market-package.d.ts +0 -0
- /package/dist/{src/ext → ext}/market-runtime.d.ts +0 -0
- /package/dist/{src/ext → ext}/market-seat.d.ts +0 -0
- /package/dist/{src/ext → ext}/micro-apps.d.ts +0 -0
- /package/dist/{src/ext → ext}/module-gateway.d.ts +0 -0
- /package/dist/{src/ext → ext}/module-install-gate.d.ts +0 -0
- /package/dist/{src/ext → ext}/module-install.d.ts +0 -0
- /package/dist/{src/ext → ext}/module-registry.d.ts +0 -0
- /package/dist/{src/ext → ext}/path.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/container.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/decorators.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/host.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/index.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/metadata.d.ts +0 -0
- /package/dist/{src/ioc → ioc}/scope.d.ts +0 -0
- /package/dist/{src/logger → logger}/bootstrap.d.ts +0 -0
- /package/dist/{src/logger → logger}/exception.d.ts +0 -0
- /package/dist/{src/logger → logger}/index.d.ts +0 -0
- /package/dist/{src/logger → logger}/logger.d.ts +0 -0
- /package/dist/{src/logger → logger}/pino.d.ts +0 -0
- /package/dist/{src/orm → orm}/base-columns.d.ts +0 -0
- /package/dist/{src/orm → orm}/column-comments.d.ts +0 -0
- /package/dist/{src/orm → orm}/crud-config.d.ts +0 -0
- /package/dist/{src/orm → orm}/crud-register.d.ts +0 -0
- /package/dist/{src/orm → orm}/data-scope.d.ts +0 -0
- /package/dist/{src/orm → orm}/db-store.d.ts +0 -0
- /package/dist/{src/orm → orm}/declarative-select.d.ts +0 -0
- /package/dist/{src/orm → orm}/entity-schema.d.ts +0 -0
- /package/dist/{src/orm → orm}/field-ref.d.ts +0 -0
- /package/dist/{src/orm → orm}/import-excel.d.ts +0 -0
- /package/dist/{src/orm → orm}/index.d.ts +0 -0
- /package/dist/{src/orm → orm}/join-tables.d.ts +0 -0
- /package/dist/{src/orm → orm}/query-builder.d.ts +0 -0
- /package/dist/{src/orm → orm}/query-op.d.ts +0 -0
- /package/dist/{src/orm → orm}/repository.d.ts +0 -0
- /package/dist/{src/orm → orm}/service.d.ts +0 -0
- /package/dist/{src/orm → orm}/tenant.d.ts +0 -0
- /package/dist/{src/routing → routing}/base.d.ts +0 -0
- /package/dist/{src/routing → routing}/context.d.ts +0 -0
- /package/dist/{src/routing → routing}/crud-summary.d.ts +0 -0
- /package/dist/{src/routing → routing}/decorators.d.ts +0 -0
- /package/dist/{src/routing → routing}/eps.d.ts +0 -0
- /package/dist/{src/routing → routing}/index.d.ts +0 -0
- /package/dist/{src/routing → routing}/metadata.d.ts +0 -0
- /package/dist/{src/routing → routing}/openapi-tags.d.ts +0 -0
- /package/dist/{src/routing → routing}/path-utils.d.ts +0 -0
- /package/dist/{src/routing → routing}/perm.d.ts +0 -0
- /package/dist/{src/routing → routing}/public-routes.d.ts +0 -0
- /package/dist/{src/routing → routing}/register.d.ts +0 -0
- /package/dist/{src/shared → shared}/index.d.ts +0 -0
- /package/dist/{src/shared → shared}/locale-json.d.ts +0 -0
package/dist/shared/excel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0x4dab(_0x105a66,_0x14ccc8){_0x105a66=_0x105a66-0x11a;const _0x3e5a78=_0x3e5a();let _0x4dabde=_0x3e5a78[_0x105a66];if(_0x4dab['XwxxqR']===undefined){var _0x5ca24c=function(_0x1d4bd5){const _0x120311='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xe39907='',_0x18afc1='';for(let _0x13a53d=0x0,_0x5b641f,_0x49472b,_0x5376c8=0x0;_0x49472b=_0x1d4bd5['charAt'](_0x5376c8++);~_0x49472b&&(_0x5b641f=_0x13a53d%0x4?_0x5b641f*0x40+_0x49472b:_0x49472b,_0x13a53d++%0x4)?_0xe39907+=String['fromCharCode'](0xff&_0x5b641f>>(-0x2*_0x13a53d&0x6)):0x0){_0x49472b=_0x120311['indexOf'](_0x49472b);}for(let _0x115fdc=0x0,_0x3d610d=_0xe39907['length'];_0x115fdc<_0x3d610d;_0x115fdc++){_0x18afc1+='%'+('00'+_0xe39907['charCodeAt'](_0x115fdc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x18afc1);};_0x4dab['wqVFfy']=_0x5ca24c,_0x4dab['osYThM']={},_0x4dab['XwxxqR']=!![];}const _0x2d3242=_0x3e5a78[0x0],_0x5865c6=_0x105a66+_0x2d3242,_0x1eda88=_0x4dab['osYThM'][_0x5865c6];return!_0x1eda88?(_0x4dabde=_0x4dab['wqVFfy'](_0x4dabde),_0x4dab['osYThM'][_0x5865c6]=_0x4dabde):_0x4dabde=_0x1eda88,_0x4dabde;}const _0x5f527a=_0x4dab;(function(_0x5b1945,_0x52b9a5){const _0x388b20=_0x4dab,_0x4ead1b=_0x5b1945();while(!![]){try{const _0x22557c=-parseInt(_0x388b20(0x13a))/0x1+-parseInt(_0x388b20(0x122))/0x2*(parseInt(_0x388b20(0x132))/0x3)+-parseInt(_0x388b20(0x136))/0x4+-parseInt(_0x388b20(0x126))/0x5+parseInt(_0x388b20(0x13c))/0x6*(parseInt(_0x388b20(0x12a))/0x7)+parseInt(_0x388b20(0x120))/0x8+-parseInt(_0x388b20(0x12f))/0x9*(-parseInt(_0x388b20(0x13b))/0xa);if(_0x22557c===_0x52b9a5)break;else _0x4ead1b['push'](_0x4ead1b['shift']());}catch(_0x494632){_0x4ead1b['push'](_0x4ead1b['shift']());}}}(_0x3e5a,0x8639b));import*as _0xe39907 from'xlsx';export const IMPORT_SKIP_FIELDS=['id',_0x5f527a(0x129),_0x5f527a(0x11d),'deletedAt',_0x5f527a(0x127)];function _0x3e5a(){const _0x168c35=['yw9Hx3rVx3nOzwv0','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','nZaZmty3ww5Nu0vk','ntiWqLvKEMnW','otaXoentv0ThAW','DhjPBq','lNHSC3G','DxrPBhm','ChjVCa','DxbKyxrLvgLTzq','u2HLzxrZ','z2v0','mJq4nda2ng55q3LMBW','BgfIzwW','nda5mZK2veXks2rM','BgvUz3rO','CMvHza','u2HLzxqX','mtyYnJG5nwvWs1HOrG','DgvUyw50swq','zw5KC1DPDgG','y3jLyxrLvgLTzq','mtm2nvPlDwDuzq','yxjYyxK','yM9VA19HChbLBMrFC2HLzxq','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','ChvZAa','mZm0mJmZD01KAwvS','C2v0','u2HLzxroyw1LCW','mtjMwfjizxK','C2HLzxrFDg9FANnVBG','Aw5JBhvKzxm','BwfW','ntuWmZy4DLzrrxHl','D3jPDgu'];_0x3e5a=function(){return _0x168c35;};return _0x3e5a();}export function isImportSkipField(_0x18afc1){const _0x3eb67b=_0x5f527a;return IMPORT_SKIP_FIELDS[_0x3eb67b(0x134)](_0x18afc1);}export function buildExcelBuffer(_0x13a53d,_0x5b641f,_0x49472b){const _0x57ad0c=_0x5f527a,_0x5376c8=_0x13a53d[_0x57ad0c(0x135)](_0x300dff=>_0x300dff['label']||_0x300dff[_0x57ad0c(0x11c)]),_0x115fdc=_0x5b641f['map'](_0x5183ae=>_0x13a53d[_0x57ad0c(0x135)](_0x4c6a1a=>{const _0x4b3565=_0x57ad0c;if(_0x49472b)return _0x49472b(_0x4c6a1a[_0x4b3565(0x11c)],_0x5183ae);const _0xdf0431=_0x5183ae[_0x4c6a1a[_0x4b3565(0x11c)]];if(_0xdf0431==null)return'';return String(_0xdf0431);})),_0x3d610d=_0xe39907[_0x57ad0c(0x11b)][_0x57ad0c(0x138)]([_0x5376c8,..._0x115fdc]),_0x34dcd5=_0xe39907['utils']['book_new']();return _0xe39907[_0x57ad0c(0x11b)][_0x57ad0c(0x12c)](_0x34dcd5,_0x3d610d,_0x57ad0c(0x125)),_0xe39907[_0x57ad0c(0x137)](_0x34dcd5,{'bookType':'xlsx','type':_0x57ad0c(0x12b)});}export function buildImportTemplateBuffer(_0x19f91b){return buildExcelBuffer(_0x19f91b,[]);}export function parseExcelBuffer(_0x36031d,_0x11af1b){const _0x2e6cc7=_0x5f527a,_0x5da083=_0xe39907[_0x2e6cc7(0x124)](_0x36031d,{'type':'array','cellDates':!![]}),_0x55ec11=_0x5da083[_0x2e6cc7(0x131)][0x0];if(!_0x55ec11)return[];const _0x2e536b=_0x5da083[_0x2e6cc7(0x11e)][_0x55ec11];if(!_0x2e536b)return[];const _0x1f0bd0=_0xe39907[_0x2e6cc7(0x11b)][_0x2e6cc7(0x133)](_0x2e536b,{'header':0x1,'defval':'','raw':![]});if(!_0x1f0bd0['length'])return[];const _0x225d16=(_0x1f0bd0[0x0]||[])[_0x2e6cc7(0x135)](_0x2fc925=>String(_0x2fc925??'')[_0x2e6cc7(0x13d)]()),_0x2d6a7c=new Map();if(_0x11af1b?.[_0x2e6cc7(0x123)])for(const _0x585b84 of _0x11af1b){_0x2d6a7c[_0x2e6cc7(0x130)](_0x585b84[_0x2e6cc7(0x121)]['trim'](),_0x585b84[_0x2e6cc7(0x11c)]),_0x2d6a7c[_0x2e6cc7(0x130)](_0x585b84[_0x2e6cc7(0x11c)],_0x585b84[_0x2e6cc7(0x11c)]);}const _0x329753=_0x225d16[_0x2e6cc7(0x135)](_0x2e4b68=>{const _0x32c1ef=_0x2e6cc7;if(!_0x2e4b68)return'';return _0x2d6a7c[_0x32c1ef(0x11f)](_0x2e4b68)||_0x2e4b68;}),_0x4f359a=[];for(let _0x3ae10d=0x1;_0x3ae10d<_0x1f0bd0['length'];_0x3ae10d++){const _0x190daf=_0x1f0bd0[_0x3ae10d]||[],_0x508ea2={};let _0x48f726=!![];for(let _0xcf524f=0x0;_0xcf524f<_0x329753[_0x2e6cc7(0x123)];_0xcf524f++){const _0x3ba10e=_0x329753[_0xcf524f];if(!_0x3ba10e)continue;let _0x3645b7=_0x190daf[_0xcf524f];if(_0x3645b7==null||_0x3645b7===''){_0x508ea2[_0x3ba10e]=_0x3645b7==null?null:'';continue;}_0x48f726=![],typeof _0x3645b7==='string'?_0x508ea2[_0x3ba10e]=_0x3645b7[_0x2e6cc7(0x13d)]():_0x508ea2[_0x3ba10e]=_0x3645b7;}if(!_0x48f726)_0x4f359a[_0x2e6cc7(0x12e)](_0x508ea2);}return _0x4f359a;}export function excelFilename(_0x509a32){const _0x5f3334=_0x5f527a;return _0x509a32[_0x5f3334(0x128)](_0x5f3334(0x11a))?_0x509a32:_0x509a32+'.xlsx';}export function excelResponseHeaders(_0x54b7cc){const _0x40022a=_0x5f527a,_0x3d523d=excelFilename(_0x54b7cc);return{'Content-Type':_0x40022a(0x139),'Content-Disposition':_0x40022a(0x12d)+encodeURIComponent(_0x3d523d)};}
|
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x283cae,_0x449c15){var _0x42a22f=_0x440e,_0x239a5f=_0x283cae();while(!![]){try{var _0x119477=parseInt(_0x42a22f(0x1de))/0x1+parseInt(_0x42a22f(0x1e1))/0x2*(parseInt(_0x42a22f(0x1dc))/0x3)+-parseInt(_0x42a22f(0x1db))/0x4+-parseInt(_0x42a22f(0x1e0))/0x5+-parseInt(_0x42a22f(0x1d8))/0x6*(-parseInt(_0x42a22f(0x1d7))/0x7)+parseInt(_0x42a22f(0x1d9))/0x8*(-parseInt(_0x42a22f(0x1da))/0x9)+parseInt(_0x42a22f(0x1df))/0xa*(parseInt(_0x42a22f(0x1dd))/0xb);if(_0x119477===_0x449c15)break;else _0x239a5f['push'](_0x239a5f['shift']());}catch(_0x127711){_0x239a5f['push'](_0x239a5f['shift']());}}}(_0x353c,0xe836e));export{merge}from'../comm/merge';function _0x353c(){var _0x421925=['mJmWvKz0ze50','mJaXotC1nvDWC0HbBG','ntHxzgz5CuG','mZqZmta3ogPMufn1rG','nKXvwMDPCq','nZq0mti1nKH1BNDTAq','ou5Wze51ua','mZy5odiWDKThteTr','ntaWnJfJywjqvMm','mtG5otu5rfrhwK5t','mtaWnJq0owDkrg1Qzq'];_0x353c=function(){return _0x421925;};return _0x353c();}export{deepTree,flattenTree}from'./tree';function _0x440e(_0x3da409,_0x3929cc){_0x3da409=_0x3da409-0x1d7;var _0x353c96=_0x353c();var _0x440e12=_0x353c96[_0x3da409];if(_0x440e['dbYcoH']===undefined){var _0x8544e9=function(_0x2c02d3){var _0x23c2cb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5a3108='',_0x48e9f8='';for(var _0x3bd145=0x0,_0x2d5f07,_0x25905d,_0x3bf93e=0x0;_0x25905d=_0x2c02d3['charAt'](_0x3bf93e++);~_0x25905d&&(_0x2d5f07=_0x3bd145%0x4?_0x2d5f07*0x40+_0x25905d:_0x25905d,_0x3bd145++%0x4)?_0x5a3108+=String['fromCharCode'](0xff&_0x2d5f07>>(-0x2*_0x3bd145&0x6)):0x0){_0x25905d=_0x23c2cb['indexOf'](_0x25905d);}for(var _0x18600b=0x0,_0x1cc34d=_0x5a3108['length'];_0x18600b<_0x1cc34d;_0x18600b++){_0x48e9f8+='%'+('00'+_0x5a3108['charCodeAt'](_0x18600b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48e9f8);};_0x440e['iUKGxk']=_0x8544e9,_0x440e['ypxMuS']={},_0x440e['dbYcoH']=!![];}var _0x22e95a=_0x353c96[0x0],_0x34675d=_0x3da409+_0x22e95a,_0x37e8dd=_0x440e['ypxMuS'][_0x34675d];return!_0x37e8dd?(_0x440e12=_0x440e['iUKGxk'](_0x440e12),_0x440e['ypxMuS'][_0x34675d]=_0x440e12):_0x440e12=_0x37e8dd,_0x440e12;}export{RES_CODE}from'../routing/base';export{buildExcelBuffer,buildImportTemplateBuffer,parseExcelBuffer,excelFilename,excelResponseHeaders,IMPORT_SKIP_FIELDS,isImportSkipField}from'./excel';export{flattenLocale,unflattenLocale,hashLocaleJson,extractJsonObject}from'./locale-json';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1ee417,_0x269ed3){const _0x35d458=_0xf911,_0x1b71e0=_0x1ee417();while(!![]){try{const _0x5dba30=parseInt(_0x35d458(0x1b6))/0x1+-parseInt(_0x35d458(0x1bd))/0x2+parseInt(_0x35d458(0x1bc))/0x3+-parseInt(_0x35d458(0x1cb))/0x4*(-parseInt(_0x35d458(0x1c6))/0x5)+parseInt(_0x35d458(0x1ca))/0x6*(parseInt(_0x35d458(0x1c7))/0x7)+parseInt(_0x35d458(0x1b5))/0x8+-parseInt(_0x35d458(0x1ce))/0x9;if(_0x5dba30===_0x269ed3)break;else _0x1b71e0['push'](_0x1b71e0['shift']());}catch(_0x3ce9a4){_0x1b71e0['push'](_0x1b71e0['shift']());}}}(_0x3e73,0xe48ff));import{createHash}from'node:crypto';export function flattenLocale(_0x5e7e2f,_0x20f1f5=''){const _0x3c159f=_0xf911,_0x9dcdb6={};for(const [_0x2f5446,_0x333bbf]of Object['entries'](_0x5e7e2f)){const _0x19af6d=_0x20f1f5?_0x20f1f5+'.'+_0x2f5446:_0x2f5446;if(_0x333bbf!=null&&typeof _0x333bbf===_0x3c159f(0x1c5)&&!Array[_0x3c159f(0x1cc)](_0x333bbf))Object[_0x3c159f(0x1cd)](_0x9dcdb6,flattenLocale(_0x333bbf,_0x19af6d));else{if(typeof _0x333bbf==='string')_0x9dcdb6[_0x19af6d]=_0x333bbf;else _0x333bbf!=null&&(_0x9dcdb6[_0x19af6d]=String(_0x333bbf));}}return _0x9dcdb6;}export function unflattenLocale(_0x442b3d){const _0x47a41f=_0xf911,_0x20d453={};for(const [_0x7b22f8,_0x18aea2]of Object['entries'](_0x442b3d)){const _0xec1cd0=_0x7b22f8[_0x47a41f(0x1ba)]('.')['filter'](Boolean);if(!_0xec1cd0[_0x47a41f(0x1b8)])continue;let _0x3efe19=_0x20d453;for(let _0xf8a9a0=0x0;_0xf8a9a0<_0xec1cd0['length']-0x1;_0xf8a9a0++){const _0x5eb417=_0xec1cd0[_0xf8a9a0],_0x35a245=_0x3efe19[_0x5eb417];(!_0x35a245||typeof _0x35a245!==_0x47a41f(0x1c5)||Array[_0x47a41f(0x1cc)](_0x35a245))&&(_0x3efe19[_0x5eb417]={}),_0x3efe19=_0x3efe19[_0x5eb417];}_0x3efe19[_0xec1cd0[_0xec1cd0[_0x47a41f(0x1b8)]-0x1]]=_0x18aea2;}return _0x20d453;}export function hashLocaleJson(_0x9065ba){const _0x5c73c5=_0xf911,_0x266205=flattenLocale(_0x9065ba),_0x24f01e=Object[_0x5c73c5(0x1b9)](_0x266205)[_0x5c73c5(0x1c9)](),_0x25b227=_0x24f01e[_0x5c73c5(0x1c3)](_0x11607e=>_0x11607e+'='+_0x266205[_0x11607e])['join']('\x0a');return createHash('sha256')['update'](_0x25b227)[_0x5c73c5(0x1c4)](_0x5c73c5(0x1c8))[_0x5c73c5(0x1c2)](0x0,0x20);}export function extractJsonObject(_0x3fcf3a){const _0x372b64=_0xf911,_0x3f7a6e=String(_0x3fcf3a||'')[_0x372b64(0x1bb)]();if(!_0x3f7a6e)throw new Error(_0x372b64(0x1be));try{const _0x4dff10=JSON[_0x372b64(0x1b7)](_0x3f7a6e);if(_0x4dff10&&typeof _0x4dff10===_0x372b64(0x1c5)&&!Array[_0x372b64(0x1cc)](_0x4dff10))return _0x4dff10;}catch{}const _0x15a947=_0x3f7a6e[_0x372b64(0x1bf)](/```(?:json)?\s*([\s\S]*?)```/i);if(_0x15a947?.[0x1]){const _0x190821=JSON[_0x372b64(0x1b7)](_0x15a947[0x1][_0x372b64(0x1bb)]());if(_0x190821&&typeof _0x190821==='object'&&!Array[_0x372b64(0x1cc)](_0x190821))return _0x190821;}const _0x2bbb91=_0x3f7a6e[_0x372b64(0x1c1)]('{'),_0x127c6f=_0x3f7a6e['lastIndexOf']('}');if(_0x2bbb91>=0x0&&_0x127c6f>_0x2bbb91){const _0x4b5d7b=JSON[_0x372b64(0x1b7)](_0x3f7a6e[_0x372b64(0x1c2)](_0x2bbb91,_0x127c6f+0x1));if(_0x4b5d7b&&typeof _0x4b5d7b===_0x372b64(0x1c5)&&!Array[_0x372b64(0x1cc)](_0x4b5d7b))return _0x4b5d7b;}throw new Error(_0x372b64(0x1c0));}function _0xf911(_0x2554e6,_0x315066){_0x2554e6=_0x2554e6-0x1b5;const _0x3e7385=_0x3e73();let _0xf91118=_0x3e7385[_0x2554e6];if(_0xf911['dHoWNI']===undefined){var _0x268e39=function(_0x1a7f97){const _0x2bb1a2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5e7e2f='',_0x20f1f5='';for(let _0x9dcdb6=0x0,_0x2f5446,_0x333bbf,_0x19af6d=0x0;_0x333bbf=_0x1a7f97['charAt'](_0x19af6d++);~_0x333bbf&&(_0x2f5446=_0x9dcdb6%0x4?_0x2f5446*0x40+_0x333bbf:_0x333bbf,_0x9dcdb6++%0x4)?_0x5e7e2f+=String['fromCharCode'](0xff&_0x2f5446>>(-0x2*_0x9dcdb6&0x6)):0x0){_0x333bbf=_0x2bb1a2['indexOf'](_0x333bbf);}for(let _0x442b3d=0x0,_0x20d453=_0x5e7e2f['length'];_0x442b3d<_0x20d453;_0x442b3d++){_0x20f1f5+='%'+('00'+_0x5e7e2f['charCodeAt'](_0x442b3d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x20f1f5);};_0xf911['lQbSct']=_0x268e39,_0xf911['GgmrbV']={},_0xf911['dHoWNI']=!![];}const _0x36cdc8=_0x3e7385[0x0],_0x55e4c3=_0x2554e6+_0x36cdc8,_0x5b03d8=_0xf911['GgmrbV'][_0x55e4c3];return!_0x5b03d8?(_0xf91118=_0xf911['lQbSct'](_0xf91118),_0xf911['GgmrbV'][_0x55e4c3]=_0xf91118):_0xf91118=_0x5b03d8,_0xf91118;}function _0x3e73(){const _0x3fe4eb=['Bwf0y2G','quKG6l+u5zUE5PEG5Rov6kEJ5P6q5lI6iePtt04G5A+56lgH','Aw5KzxHpzG','C2XPy2u','BwfW','zgLNzxn0','B2jQzwn0','nZaYndbqvuXLtNO','n0P4quPJvW','Agv4','C29YDa','mta0nZGYmJzhsMXpsMG','mJyWv05iDNDd','AxnbCNjHEq','yxnZAwDU','mJeXnZCZntf4Ag5jBw8','mti5nde3nZzHrun0rK8','nZmYotzMzLvSBvO','CgfYC2u','BgvUz3rO','A2v5CW','C3bSAxq','DhjPBq','mJa0nJq2nu5xwKjLAG','mZq4nJG2ogf3EKfctW','quKG6l+u5zUE56M65yAf5A65'];_0x3e73=function(){return _0x3fe4eb;};return _0x3e73();}
|
package/dist/shared/tree.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function _0x20c2(_0x30188e,_0x40d91e){_0x30188e=_0x30188e-0x14c;const _0x13c0de=_0x13c0();let _0x20c23e=_0x13c0de[_0x30188e];if(_0x20c2['gowWHF']===undefined){var _0x5aafba=function(_0x1cc287){const _0xd096e7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x17e3bb='',_0x4a9660='';for(let _0x4b9447=0x0,_0x13f78c,_0x5dba39,_0x467b3e=0x0;_0x5dba39=_0x1cc287['charAt'](_0x467b3e++);~_0x5dba39&&(_0x13f78c=_0x4b9447%0x4?_0x13f78c*0x40+_0x5dba39:_0x5dba39,_0x4b9447++%0x4)?_0x17e3bb+=String['fromCharCode'](0xff&_0x13f78c>>(-0x2*_0x4b9447&0x6)):0x0){_0x5dba39=_0xd096e7['indexOf'](_0x5dba39);}for(let _0x3bdb6f=0x0,_0x2631b6=_0x17e3bb['length'];_0x3bdb6f<_0x2631b6;_0x3bdb6f++){_0x4a9660+='%'+('00'+_0x17e3bb['charCodeAt'](_0x3bdb6f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a9660);};_0x20c2['FFHqEP']=_0x5aafba,_0x20c2['RqTAaC']={},_0x20c2['gowWHF']=!![];}const _0x42e172=_0x13c0de[0x0],_0x4b12ca=_0x30188e+_0x42e172,_0x37d0f8=_0x20c2['RqTAaC'][_0x4b12ca];return!_0x37d0f8?(_0x20c23e=_0x20c2['FFHqEP'](_0x20c23e),_0x20c2['RqTAaC'][_0x4b12ca]=_0x20c23e):_0x20c23e=_0x37d0f8,_0x20c23e;}function _0x13c0(){const _0x25fde4=['nda1mtGZme52t3PntG','z2v0','B3jKzxjoDw0','zgvZyW','BgvUz3rO','ntK3mtK2nLvAtxf6wG','DMfSDwvZ','mZa0mtCWwwjiwNbh','otiWodmYthnPwujS','CgfYzw50swq','C2v0','C29YDa','ChvZAa','mZz0veXTDeK','ndu1mta2m3nqtgjtvW','nefuv0fKtW','nvbMrw1TtW','mtK3mJqXnJbuqMvkD2S','y2HPBgrYzw4','mtGXnZyXnNjbveXbBG'];_0x13c0=function(){return _0x25fde4;};return _0x13c0();}(function(_0x509728,_0x3bcc61){const _0x5035e1=_0x20c2,_0x5ba8d3=_0x509728();while(!![]){try{const _0x4c6dcb=-parseInt(_0x5035e1(0x153))/0x1+parseInt(_0x5035e1(0x15f))/0x2+-parseInt(_0x5035e1(0x15a))/0x3*(-parseInt(_0x5035e1(0x15b))/0x4)+-parseInt(_0x5035e1(0x15c))/0x5*(parseInt(_0x5035e1(0x14c))/0x6)+parseInt(_0x5035e1(0x151))/0x7+parseInt(_0x5035e1(0x154))/0x8*(parseInt(_0x5035e1(0x159))/0x9)+-parseInt(_0x5035e1(0x15d))/0xa;if(_0x4c6dcb===_0x3bcc61)break;else _0x5ba8d3['push'](_0x5ba8d3['shift']());}catch(_0x4bfb1d){_0x5ba8d3['push'](_0x5ba8d3['shift']());}}}(_0x13c0,0xc0424));export function deepTree(_0x17e3bb,_0x4a9660='asc'){const _0x2e1047=_0x20c2,_0x4b9447=new Map();for(const _0x467b3e of _0x17e3bb){if(_0x467b3e['id']==null)continue;_0x4b9447[_0x2e1047(0x156)](_0x467b3e['id'],{..._0x467b3e,'children':[]});}const _0x13f78c=[];for(const _0x3bdb6f of _0x4b9447[_0x2e1047(0x152)]()){const _0x2631b6=_0x3bdb6f[_0x2e1047(0x155)];_0x2631b6!=null&&_0x2631b6!==''&&_0x4b9447['has'](_0x2631b6)?_0x4b9447[_0x2e1047(0x14d)](_0x2631b6)[_0x2e1047(0x15e)][_0x2e1047(0x158)](_0x3bdb6f):_0x13f78c['push'](_0x3bdb6f);}const _0x5dba39=_0x18c460=>{const _0x45a4df=_0x2e1047;_0x18c460[_0x45a4df(0x157)]((_0x11ef9c,_0x49c54f)=>{const _0x35c67e=_0x45a4df,_0x582b1b=_0x11ef9c[_0x35c67e(0x14e)]??0x0,_0x1b4d7d=_0x49c54f[_0x35c67e(0x14e)]??0x0,_0x652ce6=_0x4a9660===_0x35c67e(0x14f)?_0x1b4d7d-_0x582b1b:_0x582b1b-_0x1b4d7d;return _0x652ce6||Number(_0x11ef9c['id'])-Number(_0x49c54f['id']);});for(const _0x573432 of _0x18c460)if(_0x573432['children']?.['length'])_0x5dba39(_0x573432['children']);};return _0x5dba39(_0x13f78c),_0x13f78c;}export function flattenTree(_0x165768,_0x4e3a75,_0x23adc7=0x0,_0x578752=[]){const _0x5b67bf=_0x20c2;for(const _0x5c340b of _0x165768){const _0x380508=_0x5c340b['children']||[];_0x578752[_0x5b67bf(0x158)]({..._0x5c340b,'depth':_0x23adc7,'hasChildren':_0x380508[_0x5b67bf(0x150)]>0x0});if(_0x380508[_0x5b67bf(0x150)]&&_0x4e3a75['has'](_0x5c340b['id']))flattenTree(_0x380508,_0x4e3a75,_0x23adc7+0x1,_0x578752);}return _0x578752;}
|
package/package.json
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vome-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Vome framework — shared + Bun/Elysia server + Vue admin",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
|
-
"
|
|
10
|
-
"typings/admin"
|
|
9
|
+
"typings"
|
|
11
10
|
],
|
|
12
11
|
"main": "./dist/index.js",
|
|
13
12
|
"types": "./dist/index.d.ts",
|
|
@@ -28,7 +27,7 @@
|
|
|
28
27
|
"default": "./dist/config/index.js"
|
|
29
28
|
},
|
|
30
29
|
"./ai": {
|
|
31
|
-
"types": "./dist/ai.d.ts",
|
|
30
|
+
"types": "./dist/ai/index.d.ts",
|
|
32
31
|
"import": "./dist/ai/index.js",
|
|
33
32
|
"default": "./dist/ai/index.js"
|
|
34
33
|
},
|
|
@@ -96,6 +95,9 @@
|
|
|
96
95
|
"agent": [
|
|
97
96
|
"./dist/agent/index.d.ts"
|
|
98
97
|
],
|
|
98
|
+
"ai": [
|
|
99
|
+
"./dist/ai/index.d.ts"
|
|
100
|
+
],
|
|
99
101
|
"admin/service": [
|
|
100
102
|
"./dist/admin/service/index.d.ts"
|
|
101
103
|
],
|
|
@@ -124,7 +126,7 @@
|
|
|
124
126
|
}
|
|
125
127
|
},
|
|
126
128
|
"scripts": {
|
|
127
|
-
"build:server": "bun build ./src/index.ts ./src/server/index.ts ./src/config/index.ts ./src/ai/index.ts ./src/agent/index.ts --outdir ./dist --target bun --format esm --external elysia --external reflect-metadata --external drizzle-orm --external drizzle-zod --external @elysiajs/openapi --external @bogeychan/elysia-logger --external pino --external pino-pretty && tsc -p tsconfig.build.json &&
|
|
129
|
+
"build:server": "bun build ./src/index.ts ./src/server/index.ts ./src/config/index.ts ./src/ai/index.ts ./src/agent/index.ts --outdir ./dist --target bun --format esm --external elysia --external reflect-metadata --external drizzle-orm --external drizzle-zod --external @elysiajs/openapi --external @bogeychan/elysia-logger --external pino --external pino-pretty && tsc -p tsconfig.build.json && bun scripts/flatten-server-dts.ts",
|
|
128
130
|
"build:client": "bun scripts/build-client.ts",
|
|
129
131
|
"build:admin": "bun scripts/build-admin.ts",
|
|
130
132
|
"build": "rm -rf dist && bun run build:server && bun run build:client && bun run build:admin",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** save:有 id 则更新;insert:只插入 */
|
|
2
|
+
export type CrudUpsertMode = 'save' | 'insert'
|
|
3
|
+
|
|
4
|
+
/** modifyBefore / modifyAfter 操作类型 */
|
|
5
|
+
export type CrudModifyType = 'add' | 'update' | 'delete'
|
|
6
|
+
|
|
7
|
+
/** add() 可选覆盖 */
|
|
8
|
+
export type CrudWriteOptions = {
|
|
9
|
+
upsert?: CrudUpsertMode
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/** 查询回收站范围 */
|
|
13
|
+
export type CrudTrashQueryOptions = {
|
|
14
|
+
withTrashed?: boolean
|
|
15
|
+
onlyTrashed?: boolean
|
|
16
|
+
softDelete?: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** 删除选项 */
|
|
20
|
+
export type CrudDeleteOptions = {
|
|
21
|
+
force?: boolean
|
|
22
|
+
softDelete?: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** vome.crud 运行时配置 */
|
|
26
|
+
export type CrudConfig = {
|
|
27
|
+
upsert?: CrudUpsertMode
|
|
28
|
+
softDelete?: boolean
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** 分页参数 */
|
|
2
|
+
export type PageQuery = {
|
|
3
|
+
/** 页码,从 1 开始,默认 1 */
|
|
4
|
+
page?: number
|
|
5
|
+
/** 每页条数,默认 20 */
|
|
6
|
+
size?: number
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type PagePagination = {
|
|
10
|
+
page: number
|
|
11
|
+
size: number
|
|
12
|
+
total: number
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type PageResult<T = unknown> = {
|
|
16
|
+
list: T[]
|
|
17
|
+
pagination: PagePagination
|
|
18
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
|
|
13
|
+
export type MarketSeatTicketPayload = {
|
|
14
|
+
v: 1
|
|
15
|
+
kind: 'seat'
|
|
16
|
+
marketId: string
|
|
17
|
+
siteId: string
|
|
18
|
+
unlimited: boolean
|
|
19
|
+
allowed: boolean
|
|
20
|
+
seats: number | null
|
|
21
|
+
used: number | null
|
|
22
|
+
issuedAt: string
|
|
23
|
+
expireAt: string
|
|
24
|
+
reason?: string | null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export type MarketSeatTicket = {
|
|
28
|
+
payload: MarketSeatTicketPayload
|
|
29
|
+
sig: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** core 内置席位调度默认(宿主可用 VomeConfig.market 覆盖) */
|
|
33
|
+
export const MARKET_SEAT_DEFAULTS = {
|
|
34
|
+
/** 付费购买默认席位数 */
|
|
35
|
+
baseSeats: 3,
|
|
36
|
+
/** 运行中心跳间隔 */
|
|
37
|
+
heartbeatIntervalMs: 12 * 60 * 60 * 1000,
|
|
38
|
+
/** 无心跳自动释放占用(天) */
|
|
39
|
+
staleDays: 30,
|
|
40
|
+
/** 签发 ticket 有效期(短) */
|
|
41
|
+
ticketTtlMs: 15 * 60 * 1000,
|
|
42
|
+
} as const
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** 市场签发包定价 */
|
|
2
|
+
export type MarketPricing = 'free' | 'paid'
|
|
3
|
+
|
|
4
|
+
/** market.sig 签名载荷(稳定字段,勿随意增删) */
|
|
5
|
+
export type MarketSigPayload = {
|
|
6
|
+
marketId: string
|
|
7
|
+
pricing: MarketPricing
|
|
8
|
+
version: string
|
|
9
|
+
key: string
|
|
10
|
+
contentHash: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** 离线 / 联网 license 载荷 */
|
|
14
|
+
export type MarketLicensePayload = {
|
|
15
|
+
v: 1
|
|
16
|
+
marketId: string
|
|
17
|
+
buyerId: string
|
|
18
|
+
issuedAt: string
|
|
19
|
+
/** null = 永久 */
|
|
20
|
+
expireAt: string | null
|
|
21
|
+
orderNo?: string | null
|
|
22
|
+
/** 联网签发时必填,须与请求 nonce 一致 */
|
|
23
|
+
nonce?: string | null
|
|
24
|
+
pluginName?: string | null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** 磁盘 / 接口中的 license 文件结构 */
|
|
28
|
+
export type MarketLicenseFile = {
|
|
29
|
+
payload: MarketLicensePayload
|
|
30
|
+
sig: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type InstallGateKind =
|
|
34
|
+
| 'local'
|
|
35
|
+
| 'market-free'
|
|
36
|
+
| 'market-paid'
|
|
37
|
+
|
|
38
|
+
export type InstallGateResult = {
|
|
39
|
+
kind: InstallGateKind
|
|
40
|
+
marketId?: string
|
|
41
|
+
via?: 'file' | 'network'
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type AssertModuleInstallOptions = {
|
|
45
|
+
/** 覆盖 core 内置市场公钥(SPKI DER base64 或 PEM) */
|
|
46
|
+
marketPublicKey?: string | Uint8Array
|
|
47
|
+
/**
|
|
48
|
+
* 联网拉取「签名 license 原文」;core 只验签,不采信 boolean。
|
|
49
|
+
* 返回 null/空 = 无凭证。
|
|
50
|
+
*/
|
|
51
|
+
fetchSignedLicense?: (
|
|
52
|
+
marketId: string,
|
|
53
|
+
nonce: string,
|
|
54
|
+
) => Promise<string | MarketLicenseFile | null | undefined>
|
|
55
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type ModuleRouteDef = {
|
|
2
|
+
method: string
|
|
3
|
+
path: string
|
|
4
|
+
handler: string
|
|
5
|
+
perms?: string
|
|
6
|
+
summary?: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type ModuleMenuDef = {
|
|
10
|
+
name: string
|
|
11
|
+
router?: string
|
|
12
|
+
perms?: string
|
|
13
|
+
type?: number
|
|
14
|
+
icon?: string
|
|
15
|
+
orderNum?: number
|
|
16
|
+
appKey?: string
|
|
17
|
+
isShow?: boolean
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type ModuleManifest = {
|
|
21
|
+
name: string
|
|
22
|
+
key: string
|
|
23
|
+
version: string
|
|
24
|
+
description?: string
|
|
25
|
+
hook?: string
|
|
26
|
+
config?: Record<string, unknown>
|
|
27
|
+
singleton?: boolean
|
|
28
|
+
author?: string
|
|
29
|
+
logo?: string
|
|
30
|
+
readme?: string
|
|
31
|
+
routes?: ModuleRouteDef[]
|
|
32
|
+
menus?: ModuleMenuDef[]
|
|
33
|
+
/**
|
|
34
|
+
* 插件市场终身 ID(仅市场注入,作者勿手写)
|
|
35
|
+
* 无 market.sig 时忽略,按自研包安装
|
|
36
|
+
*/
|
|
37
|
+
marketId?: string
|
|
38
|
+
/** 市场定价;与 market.sig 一致 */
|
|
39
|
+
pricing?: 'free' | 'paid'
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export type ModuleHandlerCtx = {
|
|
43
|
+
body: unknown
|
|
44
|
+
query: Record<string, string>
|
|
45
|
+
params: Record<string, string>
|
|
46
|
+
headers: Headers
|
|
47
|
+
adminId?: number | string
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type ModuleHandler = (ctx: ModuleHandlerCtx) => unknown | Promise<unknown>
|
|
51
|
+
|
|
52
|
+
export type ModuleInstalled = ModuleManifest & {
|
|
53
|
+
path: string
|
|
54
|
+
hasServer: boolean
|
|
55
|
+
hasWeb: boolean
|
|
56
|
+
hasHook: boolean
|
|
57
|
+
/** 席位展示(core 注入);作者/免费 seatsLabel/usedLabel 为 / */
|
|
58
|
+
seat?: {
|
|
59
|
+
seatsLabel: string
|
|
60
|
+
usedLabel: string
|
|
61
|
+
blocked: boolean
|
|
62
|
+
tip?: string
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type PluginManifest = {
|
|
2
|
+
name: string
|
|
3
|
+
key: string
|
|
4
|
+
hook?: string
|
|
5
|
+
singleton?: boolean
|
|
6
|
+
version: string
|
|
7
|
+
description?: string
|
|
8
|
+
author?: string
|
|
9
|
+
logo?: string
|
|
10
|
+
readme?: string
|
|
11
|
+
config?: Record<string, unknown>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type PluginInfo = PluginManifest & {
|
|
15
|
+
config?: Record<string, unknown>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type PluginPayload = {
|
|
19
|
+
content: { type: 'comm' | 'module'; data: string }
|
|
20
|
+
tsContent: { type: 'ts'; data: string }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type PluginCheckResult = {
|
|
24
|
+
type: 0 | 1 | 2 | 3
|
|
25
|
+
message: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type PluginServices = {
|
|
29
|
+
cache?: {
|
|
30
|
+
get: (key: string) => Promise<unknown>
|
|
31
|
+
set: (key: string, value: unknown) => Promise<unknown>
|
|
32
|
+
del: (key: string) => Promise<unknown>
|
|
33
|
+
}
|
|
34
|
+
pluginService?: {
|
|
35
|
+
getInstance: (key: string) => Promise<unknown>
|
|
36
|
+
invoke: (key: string, method: string, ...params: unknown[]) => Promise<unknown>
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** IoC 作用域 */
|
|
2
|
+
export type ScopeValue = 'singleton' | 'request' | 'prototype'
|
|
3
|
+
|
|
4
|
+
/** 可 new 的 Provider 类 */
|
|
5
|
+
export type ClassToken<T = unknown> = abstract new (...args: any[]) => T
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 注入标识:类 / 字符串 id / symbol
|
|
9
|
+
* 字符串 id 用于跨模块按名注入
|
|
10
|
+
*/
|
|
11
|
+
export type InjectionToken<T = unknown> = ClassToken<T> | string | symbol
|
|
12
|
+
|
|
13
|
+
export type InjectMeta = {
|
|
14
|
+
propertyKey: string | symbol
|
|
15
|
+
/** 依赖标识;与 resolve 二选一 */
|
|
16
|
+
token?: InjectionToken
|
|
17
|
+
/** 自定义解析(如 Repository) */
|
|
18
|
+
resolve?: () => unknown
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type ProviderMeta = {
|
|
22
|
+
/** 注册键(类或自定义 id) */
|
|
23
|
+
token: InjectionToken
|
|
24
|
+
/** 实际用来 new 的类 */
|
|
25
|
+
useClass: ClassToken
|
|
26
|
+
scope: ScopeValue
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type ProvideOptions = {
|
|
30
|
+
/** 自定义标识,可用 `@Inject('id')` / `Ioc.get('id')` */
|
|
31
|
+
id?: string | symbol
|
|
32
|
+
/** 作用域,默认 singleton */
|
|
33
|
+
scope?: ScopeValue
|
|
34
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type { ClassToken } from '../ioc/metadata'
|
|
2
|
+
|
|
3
|
+
/** 快速 CRUD 接口名(含回收站) */
|
|
4
|
+
export type CrudApi =
|
|
5
|
+
| 'add'
|
|
6
|
+
| 'delete'
|
|
7
|
+
| 'update'
|
|
8
|
+
| 'info'
|
|
9
|
+
| 'list'
|
|
10
|
+
| 'page'
|
|
11
|
+
| 'restore'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 字段引用(fieldEq / fieldLike / fieldArray / keyWordLikeFields)。
|
|
15
|
+
* - 裸名 `status` → `a.status`,请求参数名 = `status`
|
|
16
|
+
* - `b.providerId` → 参数名 = `providerId`
|
|
17
|
+
* - `e.id as roleId` → 筛 `e.id`,参数名 = `roleId`(短名冲突用 as,不用 requestParam)
|
|
18
|
+
*/
|
|
19
|
+
export type QueryFieldRef =
|
|
20
|
+
| string
|
|
21
|
+
| {
|
|
22
|
+
/** 如 `status` / `b.providerId` / `e.id as roleId` */
|
|
23
|
+
column: string
|
|
24
|
+
/** 筛选项展示名;缺省用实体 columnComments / EPS comment */
|
|
25
|
+
label?: string
|
|
26
|
+
/** 业务字典 type.key;筛选项用其拉 options */
|
|
27
|
+
dict?: string
|
|
28
|
+
/** 有 dict 时默认 true(下拉多选);false 为单选 */
|
|
29
|
+
multiple?: boolean
|
|
30
|
+
/** true:后端仍按本字段筛选,admin 不自动构建筛控件 */
|
|
31
|
+
none?: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** 区间筛选精度 / 数字类型(告诉 admin 用什么控件) */
|
|
35
|
+
export type FieldRangeType =
|
|
36
|
+
| 'int'
|
|
37
|
+
| 'float'
|
|
38
|
+
| 'year'
|
|
39
|
+
| 'month'
|
|
40
|
+
| 'day'
|
|
41
|
+
| 'hour'
|
|
42
|
+
| 'minute'
|
|
43
|
+
| 'second'
|
|
44
|
+
|
|
45
|
+
/** 价格 / 时间等区间;min/max 为请求体参数名 */
|
|
46
|
+
export type QueryFieldRange = {
|
|
47
|
+
column: string
|
|
48
|
+
min: string
|
|
49
|
+
max: string
|
|
50
|
+
type: FieldRangeType
|
|
51
|
+
/** 覆盖实体注释,用于搜索 label / placeholder 前缀 */
|
|
52
|
+
label?: string
|
|
53
|
+
/** true:后端支持区间,admin 不自动出控件 */
|
|
54
|
+
none?: boolean
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** join 类型 */
|
|
58
|
+
export type QueryJoinType = 'join' | 'leftJoin' | 'innerJoin'
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Join 配置(Drizzle pgTable)。
|
|
62
|
+
* - 主表固定别名 `a`
|
|
63
|
+
* - 联表必须显式:`entity` + `alias` + `type` + `condition`
|
|
64
|
+
*/
|
|
65
|
+
export type QueryJoin = {
|
|
66
|
+
/** Drizzle pgTable */
|
|
67
|
+
entity: unknown
|
|
68
|
+
/** 联表别名,如 b / c / f;不可为 a */
|
|
69
|
+
alias: string
|
|
70
|
+
type: QueryJoinType
|
|
71
|
+
/** 等值条件,如 `a.skinId = b.id` */
|
|
72
|
+
condition: string
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** where / extend 上下文 */
|
|
76
|
+
export type QueryOpCtx = {
|
|
77
|
+
body: Record<string, unknown>
|
|
78
|
+
request: Request
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** where 返回:单条 SQL,或列表(undefined/false/null 自动丢弃) */
|
|
82
|
+
export type QueryWhereResult =
|
|
83
|
+
| unknown
|
|
84
|
+
| Array<unknown | undefined | false | null>
|
|
85
|
+
|
|
86
|
+
export type QueryWhereFn = (
|
|
87
|
+
ctx: QueryOpCtx,
|
|
88
|
+
) => QueryWhereResult | Promise<QueryWhereResult>
|
|
89
|
+
|
|
90
|
+
/** extend 可改的查询句柄 */
|
|
91
|
+
export type QueryExtendQb = {
|
|
92
|
+
andWhere: (condition: unknown) => void
|
|
93
|
+
orderBy: (...orders: unknown[]) => void
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type QueryExtendFn = (
|
|
97
|
+
qb: QueryExtendQb,
|
|
98
|
+
ctx: QueryOpCtx,
|
|
99
|
+
) => void | Promise<void>
|
|
100
|
+
|
|
101
|
+
/** page / list 查询配置 */
|
|
102
|
+
export type QueryOp = {
|
|
103
|
+
keyWordLikeFields?: string[]
|
|
104
|
+
fieldEq?: QueryFieldRef[]
|
|
105
|
+
fieldLike?: QueryFieldRef[]
|
|
106
|
+
/** PG 数组列包含查询(body 单值或数组);admin 筛选用输入框 */
|
|
107
|
+
fieldArray?: QueryFieldRef[]
|
|
108
|
+
/** 数字 / 时间区间(与 fieldEq 等并存,勿再在 where 里拆参) */
|
|
109
|
+
fieldRange?: QueryFieldRange[]
|
|
110
|
+
addOrderBy?: Record<string, 'asc' | 'desc'>
|
|
111
|
+
/**
|
|
112
|
+
* 声明式投影(有 join 时建议显式配置)。
|
|
113
|
+
* - `a.*`:主表全部列,结果键 = 驼峰字段名
|
|
114
|
+
* - `b.userName`:结果键 = `userName`(无需 as)
|
|
115
|
+
* - `e.name as roleName`:结果键 = `roleName`
|
|
116
|
+
*/
|
|
117
|
+
select?: string[]
|
|
118
|
+
join?: QueryJoin[]
|
|
119
|
+
where?: QueryWhereFn
|
|
120
|
+
extend?: QueryExtendFn
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export type InsertParamFn = (ctx: {
|
|
124
|
+
body?: unknown
|
|
125
|
+
request?: Request
|
|
126
|
+
}) => Record<string, unknown> | Promise<Record<string, unknown>>
|
|
127
|
+
|
|
128
|
+
/** 写操作前钩子(add / update / delete / restore) */
|
|
129
|
+
export type CrudBeforeFn = (ctx: {
|
|
130
|
+
body: Record<string, unknown>
|
|
131
|
+
request: Request
|
|
132
|
+
api: string
|
|
133
|
+
}) => void | Promise<void>
|
|
134
|
+
|
|
135
|
+
/** 控制器 / 路由中间件(Elysia onBeforeHandle) */
|
|
136
|
+
export type RouteMiddleware = (
|
|
137
|
+
ctx: Record<string, unknown>,
|
|
138
|
+
) => unknown | Promise<unknown>
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @Controller 快速 CRUD 选项(Drizzle 适配)
|
|
142
|
+
*/
|
|
143
|
+
export type ControllerCrudOptions = {
|
|
144
|
+
api?: CrudApi[]
|
|
145
|
+
/** Drizzle pgTable,宿主挂载 Repository */
|
|
146
|
+
entity?: unknown
|
|
147
|
+
/** 业务 Service 类(须 @Provide,建议 extends BaseService) */
|
|
148
|
+
service?: ClassToken
|
|
149
|
+
/** 把 Service 方法挂成 POST /methodName */
|
|
150
|
+
serviceApis?: string[]
|
|
151
|
+
/** 写操作前改 body(add/update/delete/restore) */
|
|
152
|
+
before?: CrudBeforeFn
|
|
153
|
+
pageQueryOp?: QueryOp
|
|
154
|
+
listQueryOp?: QueryOp
|
|
155
|
+
insertParam?: InsertParamFn
|
|
156
|
+
infoIgnoreProperty?: string[]
|
|
157
|
+
/**
|
|
158
|
+
* 导入 upsert 唯一键(字段名数组)。
|
|
159
|
+
* 未配置时自动取实体 uniqueIndex / unique 约束。
|
|
160
|
+
*/
|
|
161
|
+
importUniqueKeys?: string[]
|
|
162
|
+
}
|