@lovrabet/dataset-mcp-server 1.4.3 → 1.4.4
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/api/cache.js +1 -1
- package/dist/api/dev-api-client.js +1 -1
- package/dist/auth/constants.js +1 -1
- package/dist/auth/cookie-manager.js +1 -1
- package/dist/auth/session-validator.js +1 -1
- package/dist/config/api-url-resolver.js +1 -1
- package/dist/config/env.js +1 -1
- package/dist/config/lovrabet-config.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server.js +1 -1
- package/dist/tools/execute-custom-sql.js +1 -1
- package/dist/tools/generate-sdk-code.js +1 -1
- package/dist/tools/generate-sql-code.js +1 -1
- package/dist/tools/get-bff-script-info.js +1 -1
- package/dist/tools/get-dataset-detail.js +1 -1
- package/dist/tools/get-operation-detail.js +1 -1
- package/dist/tools/get-operations.js +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/list-bff-scripts.js +1 -1
- package/dist/tools/list-datasets.js +1 -1
- package/dist/tools/list-sql-queries.js +1 -1
- package/dist/tools/login.js +1 -1
- package/dist/tools/save-or-update-bff-script.js +1 -1
- package/dist/tools/save-or-update-custom-sql.js +1 -1
- package/dist/tools/search-datasets.js +1 -1
- package/dist/tools/validate-sql-content.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/mcp-types.js +1 -1
- package/dist/utils/rate-limiter.js +1 -1
- package/dist/utils/relations.js +1 -1
- package/dist/utils/sql-meta.js +1 -1
- package/dist/utils/sql-parser.js +1 -1
- package/package.json +1 -1
package/dist/api/cache.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x3d5bdb=a0_0x5745;function a0_0x4605(){const _0x4b818f=['6706myMuyW','getStats','now','size','keys','clear','9nTYxSZ','14837352UzzcpG','6FqSjUP','2uVzXFo','1878936WiIymA','242322qtznTO','120810jhUadN','from','10689096IcRKlX','2464aPqbgd','3896142lvoJCT','5uXRxxA','set','floor','get','defaultTTL','cache'];a0_0x4605=function(){return _0x4b818f;};return a0_0x4605();}function a0_0x5745(_0x2c87c7,_0x48e9a3){_0x2c87c7=_0x2c87c7-0x19e;const _0x4605ba=a0_0x4605();let _0x574521=_0x4605ba[_0x2c87c7];return _0x574521;}(function(_0x2a2b8e,_0x5cfa30){const _0x50d914=a0_0x5745,_0x526233=_0x2a2b8e();while(!![]){try{const _0x140287=parseInt(_0x50d914(0x1a7))/0x1*(-parseInt(_0x50d914(0x1a9))/0x2)+parseInt(_0x50d914(0x1a6))/0x3*(-parseInt(_0x50d914(0x1a8))/0x4)+parseInt(_0x50d914(0x1af))/0x5*(-parseInt(_0x50d914(0x1ae))/0x6)+-parseInt(_0x50d914(0x19e))/0x7*(-parseInt(_0x50d914(0x1ad))/0x8)+-parseInt(_0x50d914(0x1a4))/0x9*(parseInt(_0x50d914(0x1aa))/0xa)+parseInt(_0x50d914(0x1ac))/0xb+parseInt(_0x50d914(0x1a5))/0xc;if(_0x140287===_0x5cfa30)break;else _0x526233['push'](_0x526233['shift']());}catch(_0x2f577d){_0x526233['push'](_0x526233['shift']());}}}(a0_0x4605,0xa1232));export class SimpleCache{[a0_0x3d5bdb(0x1b4)]=new Map();['defaultTTL'];constructor(_0x488aac=0x5){const _0x4694d6=a0_0x3d5bdb;this[_0x4694d6(0x1b3)]=_0x488aac*0x3c*0x3e8;}[a0_0x3d5bdb(0x1b2)](_0x1c69bc){const _0x16ecdb=a0_0x3d5bdb,_0x1267a4=this['cache'][_0x16ecdb(0x1b2)](_0x1c69bc);if(!_0x1267a4)return null;const _0x3c1f49=Date[_0x16ecdb(0x1a0)](),_0x18b982=_0x3c1f49-_0x1267a4['timestamp'];if(_0x18b982>this[_0x16ecdb(0x1b3)])return this[_0x16ecdb(0x1b4)]['delete'](_0x1c69bc),null;const _0x50969e=Math[_0x16ecdb(0x1b1)](_0x18b982/0x3e8);return _0x1267a4['data'];}[a0_0x3d5bdb(0x1b0)](_0xe7fafb,_0x44858d){const _0x5230b5=a0_0x3d5bdb;this[_0x5230b5(0x1b4)]['set'](_0xe7fafb,{'data':_0x44858d,'timestamp':Date[_0x5230b5(0x1a0)]()});}[a0_0x3d5bdb(0x1a3)](_0x58621b){const _0x478844=a0_0x3d5bdb;_0x58621b?this[_0x478844(0x1b4)]['delete'](_0x58621b):this[_0x478844(0x1b4)][_0x478844(0x1a3)]();}[a0_0x3d5bdb(0x19f)](){const _0x55ec66=a0_0x3d5bdb;return{'size':this[_0x55ec66(0x1b4)][_0x55ec66(0x1a1)],'ttlMinutes':this[_0x55ec66(0x1b3)]/0xea60,'entries':Array[_0x55ec66(0x1ab)](this['cache'][_0x55ec66(0x1a2)]())};}}export const apiCache=new SimpleCache(0x5);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a1_0x394d39=a1_0x58f3;function a1_0x58f3(_0x17f4b8,_0x15d355){_0x17f4b8=_0x17f4b8-0xe2;const _0xaa0e25=a1_0xaa0e();let _0x58f325=_0xaa0e25[_0x17f4b8];return _0x58f325;}function a1_0xaa0e(){const _0x2bfc5f=['Failed\x20to\x20get\x20ER\x20config\x20for\x20dbId\x20','add','save-bff','warn','getDatasetDetail','clearBffScriptCache','API\x20request\x20failed:\x20HTTP\x20','save-sql','joinType','DEFAULT_TIMEOUT','Network\x20error:\x20Unable\x20to\x20connect\x20to\x20the\x20server.\x20Please\x20check\x20your\x20network\x20connection\x20or\x20the\x20server\x20may\x20be\x20down.\x0aURL:\x20','process','68755gfnFxu','with-relations','errorMsg','get','scriptContent','saveCustomSqlViaToolbox','2631555eNncqh','sqlName','toDatasetName','modelCode','forceRefresh','fromField','/smartapi/custom/saveUserCustomSql','tableData','test','abort','cookie','/api/node-toolbox/bff/save','getAllErConfigs','resolveToolboxUrl','er-config:','&type=ENDPOINT','code','No\x20authentication\x20cookie\x20found.\x20Please\x20login\x20first.','sqlCode','saveBffScriptViaToolbox','dbtableConfig','runtimeDomain','toDataset','getErConfig','tableName','/smartapi/dataset/get-dataset-list','doVersion','sqlContent','toolboxBaseUrlOverride','includes','26517aZnUQx','description','493500nacPLu','saveUserCustomSql','set','message','99876BWYYzi','/api/management/library/scripts/list?appCode=','pageSize','getDatasetRelations','find','API\x20request\x20timeout\x20after\x20','datasetCode','/smartapi/custom/queryUserCustomSqlList','API\x20error:\x20','/api/management/library/scripts/info?id=','status','relations','datasets','data','env','/api/node-toolbox/sql/save','569336swJWuT','saveBffScript','appCode','\x0aURL:\x20','POST','870384enktxW','getBffScriptList','name','stringify','datasetName','isArray','params','text','apiBaseUrl','[getDatasetDetail]\x20Failed\x20to\x20fetch\x20relations\x20for\x20','postRequest','no-relations','push','_request','getDatasetList','108TOuvqk','/api/custom/executeSql','Authentication\x20failed.\x20Please\x20login\x20again.','/smartapi/custom/updateUserCustomSql','Content-Type','object','toField','getBffScriptInfo','er-configs-all:','scriptType','dbId','dataset-list:','toolboxBaseUrl','length','/smartapi/dataset/get-driven-data?','2jsuOZH','application/json','toLowerCase','success','LOVRABET_ENV','apiDomain','request'];a1_0xaa0e=function(){return _0x2bfc5f;};return a1_0xaa0e();}(function(_0x122b66,_0x5d4ac7){const _0x106ac7=a1_0x58f3,_0x49768b=_0x122b66();while(!![]){try{const _0x49d862=parseInt(_0x106ac7(0x106))/0x1*(-parseInt(_0x106ac7(0x13f))/0x2)+parseInt(_0x106ac7(0x121))/0x3+-parseInt(_0x106ac7(0x130))/0x4*(-parseInt(_0x106ac7(0xe2))/0x5)+parseInt(_0x106ac7(0x10c))/0x6+-parseInt(_0x106ac7(0x108))/0x7+-parseInt(_0x106ac7(0x11c))/0x8+-parseInt(_0x106ac7(0xe8))/0x9;if(_0x49d862===_0x5d4ac7)break;else _0x49768b['push'](_0x49768b['shift']());}catch(_0xd94200){_0x49768b['push'](_0x49768b['shift']());}}}(a1_0xaa0e,0x35180));import{getCookie}from'../auth/cookie-manager.js';import{getEffectiveApiDomain,getEffectiveRuntimeDomain,resolveApiBaseUrl}from'../auth/constants.js';import{apiCache}from'./cache.js';export class DevApiClient{['appCode'];[a1_0x394d39(0x11a)];[a1_0x394d39(0xf2)];[a1_0x394d39(0x144)];[a1_0x394d39(0xfd)];[a1_0x394d39(0x104)];constructor(_0x5414f7){const _0x52e0fa=a1_0x394d39;this['appCode']=_0x5414f7['appCode'],this[_0x52e0fa(0x11a)]=globalThis[_0x52e0fa(0x151)]?.[_0x52e0fa(0x11a)]?.[_0x52e0fa(0x143)]||'online',this[_0x52e0fa(0xf2)]=_0x5414f7['cookie']||getCookie(),this[_0x52e0fa(0x144)]=_0x5414f7[_0x52e0fa(0x129)]||getEffectiveApiDomain(),this[_0x52e0fa(0xfd)]=_0x5414f7['runtimeBaseUrl']||getEffectiveRuntimeDomain(),this['toolboxBaseUrlOverride']=_0x5414f7[_0x52e0fa(0x13c)];if(!this['cookie'])throw new Error(_0x52e0fa(0xf9));}['resolveToolboxUrl'](_0x686c77,_0x4e1e4c){const _0x19e583=a1_0x394d39,_0x9c559e=resolveApiBaseUrl(_0x686c77),_0x353e39=this[_0x19e583(0x104)]&&_0x9c559e===getEffectiveApiDomain()?this[_0x19e583(0x104)]:_0x9c559e;try{const _0x39c669=new URL(_0x353e39);if(_0x39c669['pathname']!=='/')return _0x353e39;}catch{}return''+_0x353e39+_0x4e1e4c;}static [a1_0x394d39(0x14f)]=0x7530;async[a1_0x394d39(0x12e)](_0xa49a51,_0x1c463c={},_0x22e800=DevApiClient[a1_0x394d39(0x14f)]){const _0x197afb=a1_0x394d39,{method:method='GET',body:_0x361722,extraHeaders:_0x25d7af}=_0x1c463c,_0x23f671=new AbortController(),_0x53441e=setTimeout(()=>_0x23f671[_0x197afb(0xf1)](),_0x22e800),_0x337129={'Cookie':this[_0x197afb(0xf2)],'X-Invoke-Source':'mcp:vibe',..._0x25d7af};method==='POST'&&(_0x337129[_0x197afb(0x134)]=_0x197afb(0x140));try{const _0x2ac562=await fetch(_0xa49a51,{'method':method,'headers':_0x337129,..._0x361722!==undefined&&{'body':JSON[_0x197afb(0x124)](_0x361722)},'signal':_0x23f671['signal']});clearTimeout(_0x53441e);if(!_0x2ac562['ok']){if(_0x2ac562[_0x197afb(0x116)]===0x191)throw new Error(_0x197afb(0x132));let _0x946ea2='';try{_0x946ea2=await _0x2ac562[_0x197afb(0x128)]();}catch{}throw new Error(_0x197afb(0x14c)+_0x2ac562[_0x197afb(0x116)]+_0x197afb(0x11f)+_0xa49a51+(_0x946ea2?'\x0a'+_0x946ea2:''));}const _0x5bb900=await _0x2ac562['json']();if(_0x5bb900&&typeof _0x5bb900===_0x197afb(0x135)&&_0x197afb(0x142)in _0x5bb900&&!_0x5bb900['success']){const _0x13f706=_0x5bb900;throw new Error(_0x197afb(0x114)+(_0x13f706[_0x197afb(0x10b)]||_0x13f706[_0x197afb(0xe4)]||'Unknown\x20error'));}return _0x5bb900;}catch(_0x2fe2f2){if(_0x2fe2f2 instanceof Error&&_0x2fe2f2[_0x197afb(0x123)]==='AbortError')throw new Error(_0x197afb(0x111)+_0x22e800+'ms.\x20The\x20server\x20may\x20be\x20down\x20or\x20unreachable.\x0aURL:\x20'+_0xa49a51);if(_0x2fe2f2 instanceof TypeError)throw new Error(_0x197afb(0x150)+_0xa49a51);throw _0x2fe2f2;}}async[a1_0x394d39(0x145)](_0x3d01f2,_0xff59b1){const _0x3ab2b7=a1_0x394d39;return this[_0x3ab2b7(0x12e)](_0x3d01f2,{'method':'GET'},_0xff59b1);}async['postRequest'](_0x890527,_0x1db7f0,_0x1c9a9b,_0x910c29){const _0x372390=a1_0x394d39;return this['_request'](_0x890527,{'method':_0x372390(0x120),'body':_0x1db7f0,'extraHeaders':_0x910c29},_0x1c9a9b);}async[a1_0x394d39(0x12f)](_0x2f5fb9){const _0x1572fb=a1_0x394d39,_0x13bd25=_0x2f5fb9?.[_0x1572fb(0xec)]||![],_0x3c6185=_0x1572fb(0x13b)+this['appCode']+':'+this['env'];if(!_0x13bd25){const _0x16bb03=apiCache[_0x1572fb(0xe5)](_0x3c6185);if(_0x16bb03)return _0x16bb03;}const _0x217c43=this[_0x1572fb(0x144)]+_0x1572fb(0x101),_0x20301f=await this[_0x1572fb(0x12b)](_0x217c43,{'appCode':this[_0x1572fb(0x11e)]});return apiCache[_0x1572fb(0x10a)](_0x3c6185,_0x20301f),_0x20301f;}async[a1_0x394d39(0x14a)](_0x125572,_0x9dcd14=![],_0x453282=![]){const _0x574b55=a1_0x394d39,_0x3b3c11='dataset-detail:'+this[_0x574b55(0x11e)]+':'+this['env']+':'+_0x125572+':'+(_0x453282?_0x574b55(0xe3):_0x574b55(0x12c));if(!_0x9dcd14){const _0x1aebe8=apiCache[_0x574b55(0xe5)](_0x3b3c11);if(_0x1aebe8)return _0x1aebe8;}const _0x392907=/^\d+$/[_0x574b55(0xf0)](_0x125572),_0x146e94=_0x392907?'id':_0x574b55(0xf8),_0x3c0c59=this[_0x574b55(0x144)]+_0x574b55(0x13e)+_0x146e94+'='+_0x125572,_0x29286b=await this[_0x574b55(0x145)](_0x3c0c59);if(_0x453282&&_0x29286b['data']?.[_0x574b55(0xeb)]){const _0x1c0244=_0x29286b[_0x574b55(0x119)][_0x574b55(0x102)]==='v2',_0x4871ad=Array['isArray'](_0x29286b[_0x574b55(0x119)]['relations']);if(!_0x1c0244||!_0x4871ad)try{const _0x4c520c=await this[_0x574b55(0x10f)](_0x29286b[_0x574b55(0x119)][_0x574b55(0xeb)],_0x9dcd14);_0x29286b['data']['relations']=_0x4c520c;}catch(_0x5bf21b){process[_0x574b55(0x11a)]['NODE_ENV']!=='test'&&console[_0x574b55(0x149)](_0x574b55(0x12a)+_0x125572+':',_0x5bf21b);}}return apiCache[_0x574b55(0x10a)](_0x3b3c11,_0x29286b),_0x29286b;}async['searchDatasets'](_0x2a7b9a){const _0xeea08e=a1_0x394d39,_0x269784=await this[_0xeea08e(0x12f)](),_0x1e095a=Array[_0xeea08e(0x126)](_0x269784[_0xeea08e(0x119)])?_0x269784[_0xeea08e(0x119)]:_0x269784['data']?.[_0xeea08e(0xef)]||[];if(!_0x269784[_0xeea08e(0x142)])return{'success':!![],'data':{'tableData':[]}};const _0x145a61=_0x1e095a['filter'](_0xb9685f=>{const _0x1d606f=_0xeea08e,_0x453d2c=_0x2a7b9a[_0x1d606f(0x141)]();return _0xb9685f[_0x1d606f(0x123)]?.['toLowerCase']()['includes'](_0x453d2c)||_0xb9685f[_0x1d606f(0xf8)]?.[_0x1d606f(0x141)]()[_0x1d606f(0x105)](_0x453d2c)||_0xb9685f[_0x1d606f(0xfc)]?.[_0x1d606f(0x100)]?.[_0x1d606f(0x141)]()[_0x1d606f(0x105)](_0x453d2c)||_0xb9685f[_0x1d606f(0x107)]?.['toLowerCase']()[_0x1d606f(0x105)](_0x453d2c);});return{'success':!![],'data':{'tableData':_0x145a61,'paging':{'totalCount':_0x145a61[_0xeea08e(0x13d)],'currentPage':0x1,'pageSize':_0x145a61[_0xeea08e(0x13d)]}}};}async['getCustomSqlList'](_0x8b606e){const _0xbb0039=a1_0x394d39,_0x497e14=_0x8b606e?.['currentPage']||0x1,_0x405b9f=_0x8b606e?.[_0xbb0039(0x10e)]||0x3e7,_0x4ef189=this[_0xbb0039(0x144)]+_0xbb0039(0x113),_0x5e5f62={'appCode':this[_0xbb0039(0x11e)],'currentPage':_0x497e14,'pageSize':_0x405b9f,..._0x8b606e?.[_0xbb0039(0xfa)]&&{'sqlCode':_0x8b606e['sqlCode']},..._0x8b606e?.['sqlName']&&{'sqlName':_0x8b606e['sqlName']}},_0x539596=await this['postRequest'](_0x4ef189,_0x5e5f62);return _0x539596;}async['executeSql'](_0x6d1131){const _0x48ad7b=a1_0x394d39,_0x18c776=this[_0x48ad7b(0xfd)]+_0x48ad7b(0x131),_0x46eed4={'appCode':this['appCode'],'sqlCode':_0x6d1131[_0x48ad7b(0xfa)],..._0x6d1131['params']&&{'params':_0x6d1131[_0x48ad7b(0x127)]}};return await this[_0x48ad7b(0x12b)](_0x18c776,_0x46eed4);}async[a1_0x394d39(0x109)](_0x3aa179){const _0x427e60=a1_0x394d39,_0x46567e=this[_0x427e60(0x144)]+_0x427e60(0xee),_0x39e7fc={'sqlName':_0x3aa179['sqlName'],'dbId':_0x3aa179[_0x427e60(0x13a)],'sqlContent':_0x3aa179[_0x427e60(0x103)],'appCode':this[_0x427e60(0x11e)]};return await this[_0x427e60(0x12b)](_0x46567e,_0x39e7fc);}async['updateUserCustomSql'](_0x14514d){const _0x421e7a=a1_0x394d39,_0x9ff3e=this[_0x421e7a(0x144)]+_0x421e7a(0x133),_0x362116={'id':_0x14514d['id'],'dbId':_0x14514d[_0x421e7a(0x13a)],'sqlName':_0x14514d[_0x421e7a(0xe9)],'appCode':this[_0x421e7a(0x11e)],'sqlContent':_0x14514d[_0x421e7a(0x103)]};return await this['postRequest'](_0x9ff3e,_0x362116);}async[a1_0x394d39(0xff)](_0x55a618,_0x3b33d2=![]){const _0x23dfe6=a1_0x394d39,_0x21e0b2=_0x23dfe6(0xf6)+this[_0x23dfe6(0x11e)]+':'+this[_0x23dfe6(0x11a)]+':'+_0x55a618;if(!_0x3b33d2){const _0x5b0137=apiCache[_0x23dfe6(0xe5)](_0x21e0b2);if(_0x5b0137)return _0x5b0137;}const _0x51bd7e=this[_0x23dfe6(0x144)]+'/smartapi/question/er-config',_0x195f27=await this[_0x23dfe6(0x12b)](_0x51bd7e,{'dblinkId':_0x55a618,'appCode':this[_0x23dfe6(0x11e)]});if(!_0x195f27[_0x23dfe6(0x142)]||!_0x195f27[_0x23dfe6(0x119)])throw new Error('Failed\x20to\x20get\x20ER\x20config\x20for\x20dblinkId:\x20'+_0x55a618);const _0x31c46a={'meta':_0x195f27[_0x23dfe6(0x119)]['meta'],'datasets':_0x195f27['data'][_0x23dfe6(0x118)]};return apiCache[_0x23dfe6(0x10a)](_0x21e0b2,_0x31c46a),_0x31c46a;}async['getUniqueDbIds'](_0x3d7984=![]){const _0x322585=a1_0x394d39,_0xbf972a=await this[_0x322585(0x12f)]({'forceRefresh':_0x3d7984}),_0xadbc89=Array[_0x322585(0x126)](_0xbf972a[_0x322585(0x119)])?_0xbf972a['data']:_0xbf972a['data']?.[_0x322585(0xef)]||[],_0x19c7b2=new Set();for(const _0x32f040 of _0xadbc89){_0x32f040[_0x322585(0xfc)]?.[_0x322585(0x13a)]&&_0x19c7b2[_0x322585(0x147)](_0x32f040[_0x322585(0xfc)][_0x322585(0x13a)]);}return Array['from'](_0x19c7b2)['sort']((_0x212981,_0x5c62f8)=>_0x212981-_0x5c62f8);}async['getAllErConfigs'](_0x26ad7e=![]){const _0x24fc60=a1_0x394d39,_0xaadce3=_0x24fc60(0x138)+this[_0x24fc60(0x11e)]+':'+this[_0x24fc60(0x11a)];if(!_0x26ad7e){const _0x2bb942=apiCache[_0x24fc60(0xe5)](_0xaadce3);if(_0x2bb942)return _0x2bb942;}const _0x11c33c=await this['getUniqueDbIds'](_0x26ad7e),_0x29dc43=new Map();for(const _0x4e8489 of _0x11c33c){try{const _0x9a5060=await this[_0x24fc60(0xff)](_0x4e8489,_0x26ad7e);_0x29dc43[_0x24fc60(0x10a)](_0x4e8489,_0x9a5060);}catch(_0x220b77){console[_0x24fc60(0x149)](_0x24fc60(0x146)+_0x4e8489+':',_0x220b77);}}return apiCache[_0x24fc60(0x10a)](_0xaadce3,_0x29dc43),_0x29dc43;}async[a1_0x394d39(0x10f)](_0x5ae463,_0x10924e=![]){const _0x550084=a1_0x394d39,_0x4ee975=await this[_0x550084(0xf4)](_0x10924e),_0x25d3d0=[],_0x47ecf1=[];for(const [,_0xfbfb41]of _0x4ee975){const _0x553388=_0xfbfb41[_0x550084(0x118)][_0x550084(0x110)](_0x32a5d1=>_0x32a5d1[_0x550084(0x112)]===_0x5ae463);if(_0x553388)for(const _0x1e6a1c of _0x553388['relations']||[]){_0x25d3d0['push']({'toDataset':_0x1e6a1c[_0x550084(0xfe)],'toDatasetName':_0x1e6a1c[_0x550084(0xea)],'toField':_0x1e6a1c['toField'],'fromField':_0x1e6a1c[_0x550084(0xed)],'joinType':_0x1e6a1c[_0x550084(0x14e)]});}for(const _0x884e3c of _0xfbfb41['datasets']){if(_0x884e3c[_0x550084(0x112)]===_0x5ae463)continue;for(const _0x3270fd of _0x884e3c[_0x550084(0x117)]||[]){_0x3270fd[_0x550084(0xfe)]===_0x5ae463&&_0x47ecf1[_0x550084(0x12d)]({'fromDataset':_0x884e3c['datasetCode'],'fromDatasetName':_0x884e3c[_0x550084(0x125)],'fromField':_0x3270fd['fromField'],'toField':_0x3270fd[_0x550084(0x136)],'joinType':_0x3270fd[_0x550084(0x14e)]});}}}return{'outgoing':_0x25d3d0,'incoming':_0x47ecf1};}async[a1_0x394d39(0x122)](){const _0x57308a=a1_0x394d39,_0xb3febb=this[_0x57308a(0x144)]+_0x57308a(0x10d)+encodeURIComponent(this[_0x57308a(0x11e)])+_0x57308a(0xf7);return await this['request'](_0xb3febb);}async[a1_0x394d39(0x137)](_0xceaa9a){const _0x9fcb84=a1_0x394d39,_0x4f9c01=this[_0x9fcb84(0x144)]+_0x9fcb84(0x115)+_0xceaa9a;return await this[_0x9fcb84(0x145)](_0x4f9c01);}async[a1_0x394d39(0x11d)](_0x414a4d){const _0x2f9f4a=a1_0x394d39,_0x2c1bc2=this['apiDomain']+'/api/management/library/scripts/save',_0x34ad71={'id':_0x414a4d['id']??null,'appCode':_0x414a4d[_0x2f9f4a(0x11e)],'description':_0x414a4d[_0x2f9f4a(0x107)],'scriptContent':_0x414a4d[_0x2f9f4a(0xe6)],'scriptType':_0x414a4d[_0x2f9f4a(0x139)]};return await this[_0x2f9f4a(0x12b)](_0x2c1bc2,_0x34ad71);}async[a1_0x394d39(0x14b)](){const _0x3dd1d8=a1_0x394d39,_0x253082=this['runtimeDomain']+'/api/management/script/cache/clear';return await this[_0x3dd1d8(0x12b)](_0x253082,{});}async[a1_0x394d39(0xe7)](_0x1e4b5c){const _0x30758e=a1_0x394d39,_0x1afb96=this[_0x30758e(0xf5)](_0x30758e(0x14d),_0x30758e(0x11b)),_0x48dc28=await this['postRequest'](_0x1afb96,_0x1e4b5c);return _0x48dc28['data'];}async[a1_0x394d39(0xfb)](_0x2ceef7){const _0x3f10b5=a1_0x394d39,_0x171991=this[_0x3f10b5(0xf5)](_0x3f10b5(0x148),_0x3f10b5(0xf3)),_0xd06f6b=await this[_0x3f10b5(0x12b)](_0x171991,_0x2ceef7);return _0xd06f6b['data'];}}
|
|
1
|
+
function a1_0x5a0c(){const _0x25b32a=['toolboxBaseUrlOverride','saveBffScriptViaToolbox','toolboxBaseUrl','toDataset','stringify','Unknown\x20error','API\x20request\x20failed:\x20HTTP\x20','fromField','relations','ENDPOINT','ms.\x20The\x20server\x20may\x20be\x20down\x20or\x20unreachable.\x0aURL:\x20','saveCustomSqlViaToolbox','toLowerCase','getDatasetDetail','472671KixRtY','push','runtimeDomain','json','params','getDatasetList','includes','/smartapi/question/er-config','doVersion','resolveToolboxUrl','filter','add','joinType','datasetName','description','datasets','success','1130164qHuyDT','set','request','env','POST','2703189yAOAtc','getCustomSqlList','scriptContent','/smartapi/custom/queryUserCustomSqlList','/api/management/script/cache/clear','datasetCode','No\x20authentication\x20cookie\x20found.\x20Please\x20login\x20first.','find','dbtableConfig','mcp:vibe','getBffScriptInfo','488646qryLYU','Content-Type','Failed\x20to\x20get\x20ER\x20config\x20for\x20dblinkId:\x20','tableData','scriptName','with-relations','length','name','pageSize','forceRefresh','/api/management/library/scripts/info?id=','sqlName','\x0aURL:\x20','dataset-list:','status','get','text','er-configs-all:','apiBaseUrl','/smartapi/custom/updateUserCustomSql','DEFAULT_TIMEOUT','object','API\x20request\x20timeout\x20after\x20','searchDatasets','cookie','Network\x20error:\x20Unable\x20to\x20connect\x20to\x20the\x20server.\x20Please\x20check\x20your\x20network\x20connection\x20or\x20the\x20server\x20may\x20be\x20down.\x0aURL:\x20','getDatasetRelations','/api/custom/executeSql','application/json','postRequest','modelCode','_request','runtimeBaseUrl','15536jeSKur','message','process','/smartapi/dataset/get-dataset-list','sqlCode','/smartapi/custom/saveUserCustomSql','code','meta','toField','getUniqueDbIds','save-bff','/api/management/library/scripts/save','/smartapi/dataset/get-driven-data?','dataset-detail:','updateUserCustomSql','signal','getBffScriptList','apiDomain','test','LOVRABET_ENV','sort','GET','save-sql','online','/api/node-toolbox/sql/save','4487lQdwOq','functionName','warn','7846200YFnKxK','233195IdpqIJ','data','toDatasetName','saveUserCustomSql','tableName','sqlContent','no-relations','scriptType','er-config:','AbortError','84jdawdj','errorMsg','from','dbId','appCode','executeSql','&type=','clearBffScriptCache'];a1_0x5a0c=function(){return _0x25b32a;};return a1_0x5a0c();}const a1_0x197679=a1_0x1bfb;function a1_0x1bfb(_0x4c5a76,_0x256e46){_0x4c5a76=_0x4c5a76-0x82;const _0x5a0cf5=a1_0x5a0c();let _0x1bfbc5=_0x5a0cf5[_0x4c5a76];return _0x1bfbc5;}(function(_0x2f29ce,_0x3ce59d){const _0x6f425a=a1_0x1bfb,_0x5684c4=_0x2f29ce();while(!![]){try{const _0x331def=parseInt(_0x6f425a(0xdb))/0x1+-parseInt(_0x6f425a(0xfc))/0x2+-parseInt(_0x6f425a(0xf1))/0x3+parseInt(_0x6f425a(0xec))/0x4+parseInt(_0x6f425a(0xbb))/0x5*(parseInt(_0x6f425a(0xc5))/0x6)+parseInt(_0x6f425a(0xb7))/0x7*(parseInt(_0x6f425a(0x9e))/0x8)+-parseInt(_0x6f425a(0xba))/0x9;if(_0x331def===_0x3ce59d)break;else _0x5684c4['push'](_0x5684c4['shift']());}catch(_0x577d08){_0x5684c4['push'](_0x5684c4['shift']());}}}(a1_0x5a0c,0x9b392));import{getCookie}from'../auth/cookie-manager.js';import{getEffectiveApiDomain,getEffectiveRuntimeDomain,resolveApiBaseUrl}from'../auth/constants.js';import{apiCache}from'./cache.js';export class DevApiClient{[a1_0x197679(0xc9)];['env'];[a1_0x197679(0x95)];['apiDomain'];[a1_0x197679(0xdd)];['toolboxBaseUrlOverride'];constructor(_0xb1a2d8){const _0x749cdf=a1_0x197679;this[_0x749cdf(0xc9)]=_0xb1a2d8[_0x749cdf(0xc9)],this[_0x749cdf(0xef)]=globalThis[_0x749cdf(0xa0)]?.['env']?.[_0x749cdf(0xb1)]||_0x749cdf(0xb5),this[_0x749cdf(0x95)]=_0xb1a2d8[_0x749cdf(0x95)]||getCookie(),this['apiDomain']=_0xb1a2d8[_0x749cdf(0x8f)]||getEffectiveApiDomain(),this[_0x749cdf(0xdd)]=_0xb1a2d8[_0x749cdf(0x9d)]||getEffectiveRuntimeDomain(),this[_0x749cdf(0xcd)]=_0xb1a2d8[_0x749cdf(0xcf)];if(!this[_0x749cdf(0x95)])throw new Error(_0x749cdf(0xf7));}['resolveToolboxUrl'](_0x2b7903,_0x22bbc5){const _0x2a3de1=a1_0x197679,_0x424666=resolveApiBaseUrl(_0x2b7903),_0x326f85=this['toolboxBaseUrlOverride']&&_0x424666===getEffectiveApiDomain()?this[_0x2a3de1(0xcd)]:_0x424666;try{const _0x3c2707=new URL(_0x326f85);if(_0x3c2707['pathname']!=='/')return _0x326f85;}catch{}return''+_0x326f85+_0x22bbc5;}static ['DEFAULT_TIMEOUT']=0x7530;async['_request'](_0x5e989d,_0x18fc00={},_0x2674c8=DevApiClient[a1_0x197679(0x91)]){const _0x19fb80=a1_0x197679,{method:method=_0x19fb80(0xb3),body:_0x562958,extraHeaders:_0x34641a}=_0x18fc00,_0xe0c085=new AbortController(),_0x61523d=setTimeout(()=>_0xe0c085['abort'](),_0x2674c8),_0xc40650={'Cookie':this['cookie'],'X-Invoke-Source':_0x19fb80(0xfa),..._0x34641a};method===_0x19fb80(0xf0)&&(_0xc40650[_0x19fb80(0xfd)]=_0x19fb80(0x99));try{const _0x475212=await fetch(_0x5e989d,{'method':method,'headers':_0xc40650,..._0x562958!==undefined&&{'body':JSON[_0x19fb80(0xd1)](_0x562958)},'signal':_0xe0c085[_0x19fb80(0xad)]});clearTimeout(_0x61523d);if(!_0x475212['ok']){if(_0x475212[_0x19fb80(0x8b)]===0x191)throw new Error('Authentication\x20failed.\x20Please\x20login\x20again.');let _0x4c773d='';try{_0x4c773d=await _0x475212[_0x19fb80(0x8d)]();}catch{}throw new Error(_0x19fb80(0xd3)+_0x475212[_0x19fb80(0x8b)]+_0x19fb80(0x89)+_0x5e989d+(_0x4c773d?'\x0a'+_0x4c773d:''));}const _0x24d35c=await _0x475212[_0x19fb80(0xde)]();if(_0x24d35c&&typeof _0x24d35c===_0x19fb80(0x92)&&_0x19fb80(0xeb)in _0x24d35c&&!_0x24d35c[_0x19fb80(0xeb)]){const _0x7745c7=_0x24d35c;throw new Error('API\x20error:\x20'+(_0x7745c7[_0x19fb80(0x9f)]||_0x7745c7[_0x19fb80(0xc6)]||_0x19fb80(0xd2)));}return _0x24d35c;}catch(_0x351968){if(_0x351968 instanceof Error&&_0x351968[_0x19fb80(0x84)]===_0x19fb80(0xc4))throw new Error(_0x19fb80(0x93)+_0x2674c8+_0x19fb80(0xd7)+_0x5e989d);if(_0x351968 instanceof TypeError)throw new Error(_0x19fb80(0x96)+_0x5e989d);throw _0x351968;}}async['request'](_0x436783,_0x2926f5){return this['_request'](_0x436783,{'method':'GET'},_0x2926f5);}async[a1_0x197679(0x9a)](_0x3004d3,_0x531558,_0xf99e79,_0x4178de){const _0xe1f291=a1_0x197679;return this[_0xe1f291(0x9c)](_0x3004d3,{'method':_0xe1f291(0xf0),'body':_0x531558,'extraHeaders':_0x4178de},_0xf99e79);}async['getDatasetList'](_0x5b5688){const _0x59749e=a1_0x197679,_0x663804=_0x5b5688?.[_0x59749e(0x86)]||![],_0x2a3536=_0x59749e(0x8a)+this['appCode']+':'+this[_0x59749e(0xef)];if(!_0x663804){const _0x36a354=apiCache[_0x59749e(0x8c)](_0x2a3536);if(_0x36a354)return _0x36a354;}const _0xe978fe=this[_0x59749e(0xaf)]+_0x59749e(0xa1),_0x5074c5=await this[_0x59749e(0x9a)](_0xe978fe,{'appCode':this[_0x59749e(0xc9)]});return apiCache[_0x59749e(0xed)](_0x2a3536,_0x5074c5),_0x5074c5;}async[a1_0x197679(0xda)](_0x3cc108,_0x3b8935=![],_0x57eb9f=![]){const _0x51ac21=a1_0x197679,_0x343d26=_0x51ac21(0xab)+this[_0x51ac21(0xc9)]+':'+this[_0x51ac21(0xef)]+':'+_0x3cc108+':'+(_0x57eb9f?_0x51ac21(0x82):_0x51ac21(0xc1));if(!_0x3b8935){const _0x4e477f=apiCache[_0x51ac21(0x8c)](_0x343d26);if(_0x4e477f)return _0x4e477f;}const _0x1247b2=/^\d+$/[_0x51ac21(0xb0)](_0x3cc108),_0xa6a261=_0x1247b2?'id':_0x51ac21(0xa4),_0xcb738e=this[_0x51ac21(0xaf)]+_0x51ac21(0xaa)+_0xa6a261+'='+_0x3cc108,_0x50bb99=await this['request'](_0xcb738e);if(_0x57eb9f&&_0x50bb99[_0x51ac21(0xbc)]?.[_0x51ac21(0x9b)]){const _0x498a41=_0x50bb99[_0x51ac21(0xbc)][_0x51ac21(0xe3)]==='v2',_0x3eaf44=Array['isArray'](_0x50bb99[_0x51ac21(0xbc)][_0x51ac21(0xd5)]);if(!_0x498a41||!_0x3eaf44)try{const _0x45748e=await this[_0x51ac21(0x97)](_0x50bb99['data'][_0x51ac21(0x9b)],_0x3b8935);_0x50bb99['data'][_0x51ac21(0xd5)]=_0x45748e;}catch(_0x25c613){process['env']['NODE_ENV']!=='test'&&console[_0x51ac21(0xb9)]('[getDatasetDetail]\x20Failed\x20to\x20fetch\x20relations\x20for\x20'+_0x3cc108+':',_0x25c613);}}return apiCache[_0x51ac21(0xed)](_0x343d26,_0x50bb99),_0x50bb99;}async[a1_0x197679(0x94)](_0x3d3f4f){const _0x439df4=a1_0x197679,_0x5ee43c=await this[_0x439df4(0xe0)](),_0x349aca=Array['isArray'](_0x5ee43c[_0x439df4(0xbc)])?_0x5ee43c[_0x439df4(0xbc)]:_0x5ee43c[_0x439df4(0xbc)]?.[_0x439df4(0xff)]||[];if(!_0x5ee43c[_0x439df4(0xeb)])return{'success':!![],'data':{'tableData':[]}};const _0x115b64=_0x349aca[_0x439df4(0xe5)](_0x3f5ae9=>{const _0x19eae9=_0x439df4,_0xcbd57a=_0x3d3f4f[_0x19eae9(0xd9)]();return _0x3f5ae9['name']?.[_0x19eae9(0xd9)]()[_0x19eae9(0xe1)](_0xcbd57a)||_0x3f5ae9[_0x19eae9(0xa4)]?.[_0x19eae9(0xd9)]()[_0x19eae9(0xe1)](_0xcbd57a)||_0x3f5ae9[_0x19eae9(0xf9)]?.[_0x19eae9(0xbf)]?.['toLowerCase']()['includes'](_0xcbd57a)||_0x3f5ae9[_0x19eae9(0xe9)]?.[_0x19eae9(0xd9)]()[_0x19eae9(0xe1)](_0xcbd57a);});return{'success':!![],'data':{'tableData':_0x115b64,'paging':{'totalCount':_0x115b64[_0x439df4(0x83)],'currentPage':0x1,'pageSize':_0x115b64[_0x439df4(0x83)]}}};}async[a1_0x197679(0xf2)](_0x4380cb){const _0x475466=a1_0x197679,_0x229009=_0x4380cb?.['currentPage']||0x1,_0x402c07=_0x4380cb?.[_0x475466(0x85)]||0x3e7,_0x3e59c=this[_0x475466(0xaf)]+_0x475466(0xf4),_0x1022cc={'appCode':this['appCode'],'currentPage':_0x229009,'pageSize':_0x402c07,..._0x4380cb?.[_0x475466(0xa2)]&&{'sqlCode':_0x4380cb[_0x475466(0xa2)]},..._0x4380cb?.[_0x475466(0x88)]&&{'sqlName':_0x4380cb[_0x475466(0x88)]}},_0x5d776b=await this[_0x475466(0x9a)](_0x3e59c,_0x1022cc);return _0x5d776b;}async[a1_0x197679(0xca)](_0x3779c5){const _0x499469=a1_0x197679,_0x1e5cb5=this[_0x499469(0xdd)]+_0x499469(0x98),_0x3e234c={'appCode':this[_0x499469(0xc9)],'sqlCode':_0x3779c5['sqlCode'],..._0x3779c5[_0x499469(0xdf)]&&{'params':_0x3779c5[_0x499469(0xdf)]}};return await this[_0x499469(0x9a)](_0x1e5cb5,_0x3e234c);}async[a1_0x197679(0xbe)](_0x3bf14d){const _0x1e832f=a1_0x197679,_0x513d34=this[_0x1e832f(0xaf)]+_0x1e832f(0xa3),_0x239ca7={'sqlName':_0x3bf14d[_0x1e832f(0x88)],'dbId':_0x3bf14d['dbId'],'sqlContent':_0x3bf14d[_0x1e832f(0xc0)],'appCode':this[_0x1e832f(0xc9)]};return await this['postRequest'](_0x513d34,_0x239ca7);}async[a1_0x197679(0xac)](_0x414c8d){const _0x24f09e=a1_0x197679,_0x4bbde8=this[_0x24f09e(0xaf)]+_0x24f09e(0x90),_0x36ebf5={'id':_0x414c8d['id'],'dbId':_0x414c8d[_0x24f09e(0xc8)],'sqlName':_0x414c8d[_0x24f09e(0x88)],'appCode':this['appCode'],'sqlContent':_0x414c8d[_0x24f09e(0xc0)]};return await this['postRequest'](_0x4bbde8,_0x36ebf5);}async['getErConfig'](_0x7cd587,_0x4903bf=![]){const _0x27fe9c=a1_0x197679,_0x552833=_0x27fe9c(0xc3)+this[_0x27fe9c(0xc9)]+':'+this[_0x27fe9c(0xef)]+':'+_0x7cd587;if(!_0x4903bf){const _0x499dbe=apiCache[_0x27fe9c(0x8c)](_0x552833);if(_0x499dbe)return _0x499dbe;}const _0x530768=this[_0x27fe9c(0xaf)]+_0x27fe9c(0xe2),_0x1769c2=await this[_0x27fe9c(0x9a)](_0x530768,{'dblinkId':_0x7cd587,'appCode':this[_0x27fe9c(0xc9)]});if(!_0x1769c2['success']||!_0x1769c2['data'])throw new Error(_0x27fe9c(0xfe)+_0x7cd587);const _0x5db890={'meta':_0x1769c2['data'][_0x27fe9c(0xa5)],'datasets':_0x1769c2[_0x27fe9c(0xbc)][_0x27fe9c(0xea)]};return apiCache[_0x27fe9c(0xed)](_0x552833,_0x5db890),_0x5db890;}async[a1_0x197679(0xa7)](_0x40014e=![]){const _0x17c9ef=a1_0x197679,_0x5481fe=await this['getDatasetList']({'forceRefresh':_0x40014e}),_0x54dedc=Array['isArray'](_0x5481fe['data'])?_0x5481fe[_0x17c9ef(0xbc)]:_0x5481fe['data']?.[_0x17c9ef(0xff)]||[],_0xaf2fb=new Set();for(const _0x3f7b82 of _0x54dedc){_0x3f7b82[_0x17c9ef(0xf9)]?.[_0x17c9ef(0xc8)]&&_0xaf2fb[_0x17c9ef(0xe6)](_0x3f7b82[_0x17c9ef(0xf9)]['dbId']);}return Array[_0x17c9ef(0xc7)](_0xaf2fb)[_0x17c9ef(0xb2)]((_0x7992f,_0x44f9b8)=>_0x7992f-_0x44f9b8);}async['getAllErConfigs'](_0x44b5f2=![]){const _0x5c994b=a1_0x197679,_0x52e2ac=_0x5c994b(0x8e)+this['appCode']+':'+this[_0x5c994b(0xef)];if(!_0x44b5f2){const _0x5b6618=apiCache[_0x5c994b(0x8c)](_0x52e2ac);if(_0x5b6618)return _0x5b6618;}const _0x1cb1bf=await this[_0x5c994b(0xa7)](_0x44b5f2),_0x3dc83b=new Map();for(const _0x1cefea of _0x1cb1bf){try{const _0x395745=await this['getErConfig'](_0x1cefea,_0x44b5f2);_0x3dc83b[_0x5c994b(0xed)](_0x1cefea,_0x395745);}catch(_0x46d6b3){console[_0x5c994b(0xb9)]('Failed\x20to\x20get\x20ER\x20config\x20for\x20dbId\x20'+_0x1cefea+':',_0x46d6b3);}}return apiCache['set'](_0x52e2ac,_0x3dc83b),_0x3dc83b;}async[a1_0x197679(0x97)](_0xba7d1e,_0x48eddd=![]){const _0x53f91a=a1_0x197679,_0x558c44=await this['getAllErConfigs'](_0x48eddd),_0x288d60=[],_0x2070c8=[];for(const [,_0x2022cf]of _0x558c44){const _0x2f2880=_0x2022cf[_0x53f91a(0xea)][_0x53f91a(0xf8)](_0x141c12=>_0x141c12['datasetCode']===_0xba7d1e);if(_0x2f2880)for(const _0x4a00e3 of _0x2f2880[_0x53f91a(0xd5)]||[]){_0x288d60[_0x53f91a(0xdc)]({'toDataset':_0x4a00e3['toDataset'],'toDatasetName':_0x4a00e3[_0x53f91a(0xbd)],'toField':_0x4a00e3[_0x53f91a(0xa6)],'fromField':_0x4a00e3['fromField'],'joinType':_0x4a00e3[_0x53f91a(0xe7)]});}for(const _0x5266f9 of _0x2022cf[_0x53f91a(0xea)]){if(_0x5266f9['datasetCode']===_0xba7d1e)continue;for(const _0x18d701 of _0x5266f9[_0x53f91a(0xd5)]||[]){_0x18d701[_0x53f91a(0xd0)]===_0xba7d1e&&_0x2070c8[_0x53f91a(0xdc)]({'fromDataset':_0x5266f9[_0x53f91a(0xf6)],'fromDatasetName':_0x5266f9[_0x53f91a(0xe8)],'fromField':_0x18d701[_0x53f91a(0xd4)],'toField':_0x18d701[_0x53f91a(0xa6)],'joinType':_0x18d701['joinType']});}}}return{'outgoing':_0x288d60,'incoming':_0x2070c8};}async[a1_0x197679(0xae)](_0x5d8fff=a1_0x197679(0xd6)){const _0xe81934=a1_0x197679,_0x261fe7=this[_0xe81934(0xaf)]+'/api/management/library/scripts/list?appCode='+encodeURIComponent(this[_0xe81934(0xc9)])+_0xe81934(0xcb)+_0x5d8fff;return await this[_0xe81934(0xee)](_0x261fe7);}async[a1_0x197679(0xfb)](_0x2c3285){const _0x107f71=a1_0x197679,_0x4cbd95=this[_0x107f71(0xaf)]+_0x107f71(0x87)+_0x2c3285;return await this[_0x107f71(0xee)](_0x4cbd95);}async['saveBffScript'](_0x553ae8){const _0x563c6e=a1_0x197679,_0x19b48a=this[_0x563c6e(0xaf)]+_0x563c6e(0xa9),_0x3c954c={'id':_0x553ae8['id']??null,'appCode':_0x553ae8[_0x563c6e(0xc9)],'description':_0x553ae8[_0x563c6e(0xe9)],'scriptContent':_0x553ae8['scriptContent'],'scriptType':_0x553ae8[_0x563c6e(0xc2)]};return await this['postRequest'](_0x19b48a,_0x3c954c);}async[a1_0x197679(0xcc)](){const _0x22de9a=a1_0x197679,_0x6bd537=this[_0x22de9a(0xdd)]+_0x22de9a(0xf5);return await this['postRequest'](_0x6bd537,{});}async[a1_0x197679(0xd8)](_0x3a64cc){const _0x3bf2bf=a1_0x197679,_0xec9a01=this[_0x3bf2bf(0xe4)](_0x3bf2bf(0xb4),_0x3bf2bf(0xb6)),_0x59946f=await this[_0x3bf2bf(0x9a)](_0xec9a01,_0x3a64cc);return _0x59946f[_0x3bf2bf(0xbc)];}async[a1_0x197679(0xce)](_0x45377a){const _0x2719fe=a1_0x197679,_0x2639d4=this[_0x2719fe(0xe4)](_0x2719fe(0xa8),'/api/node-toolbox/bff/save'),_0x4783bd={'appCode':_0x45377a[_0x2719fe(0xc9)],'description':_0x45377a[_0x2719fe(0xe9)],'scriptContent':_0x45377a[_0x2719fe(0xf3)],'id':_0x45377a['id'],'scriptType':_0x45377a['scriptType']};_0x45377a[_0x2719fe(0x100)]!=null&&_0x45377a['scriptName']!==''&&(_0x4783bd[_0x2719fe(0x100)]=_0x45377a[_0x2719fe(0x100)],_0x4783bd[_0x2719fe(0xb8)]=_0x45377a['scriptName']);const _0x2ca14e=await this[_0x2719fe(0x9a)](_0x2639d4,_0x4783bd);return _0x2ca14e['data'];}}
|
package/dist/auth/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x34c06c,_0x21f708){var _0x374f82=a2_0x233b,_0x527228=_0x34c06c();while(!![]){try{var _0x2de167=-parseInt(_0x374f82(0xc1))/0x1*(-parseInt(_0x374f82(0xc8))/0x2)+parseInt(_0x374f82(0xbe))/0x3+-parseInt(_0x374f82(0xc0))/0x4*(parseInt(_0x374f82(0xc6))/0x5)+-parseInt(_0x374f82(0xc3))/0x6+-parseInt(_0x374f82(0xbf))/0x7*(-parseInt(_0x374f82(0xc4))/0x8)+parseInt(_0x374f82(0xc7))/0x9*(-parseInt(_0x374f82(0xc2))/0xa)+parseInt(_0x374f82(0xc5))/0xb;if(_0x2de167===_0x21f708)break;else _0x527228['push'](_0x527228['shift']());}catch(_0x15734a){_0x527228['push'](_0x527228['shift']());}}}(a2_0x4106,0x3454c));function a2_0x4106(){var _0x4324df=['113607kyOeDG','3034PcyHZT','1040766UBUBKB','22547jtcXwL','8nqBUrD','39XLmqWK','230eHCoHh','1469706zufvHR','40oceZBM','7860226WPOzoC','967820vjYnWV'];a2_0x4106=function(){return _0x4324df;};return a2_0x4106();}export{getEnvAppCode,getEnvironment,getEnvApiBaseUrl,getEnvRuntimeBaseUrl,getEnvUserBaseUrl,getEnvAuthCookie,configDir,cookieFile,defaultConfig,getEnvAppCodeWithFallback,getApiDomain,getUserDomain,getRuntimeDomain,getEffectiveApiDomain,getEffectiveRuntimeDomain,getEffectiveUserDomain,getEnvToolboxBaseUrl,getEffectiveToolboxDomain}from'../config/env.js';function a2_0x233b(_0x36ac22,_0x25b701){_0x36ac22=_0x36ac22-0xbe;var _0x4106f1=a2_0x4106();var _0x233b28=_0x4106f1[_0x36ac22];return _0x233b28;}export{resolveApiBaseUrl}from'../config/api-url-resolver.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x38524b,_0x550428){const _0x2b5e7b=a3_0x50db,_0x29043b=_0x38524b();while(!![]){try{const _0x473e3b=parseInt(_0x2b5e7b(0x67))/0x1+-parseInt(_0x2b5e7b(0x65))/0x2+parseInt(_0x2b5e7b(0x6b))/0x3+parseInt(_0x2b5e7b(0x64))/0x4+-parseInt(_0x2b5e7b(0x69))/0x5*(-parseInt(_0x2b5e7b(0x68))/0x6)+-parseInt(_0x2b5e7b(0x6c))/0x7+-parseInt(_0x2b5e7b(0x66))/0x8;if(_0x473e3b===_0x550428)break;else _0x29043b['push'](_0x29043b['shift']());}catch(_0x3ec5de){_0x29043b['push'](_0x29043b['shift']());}}}(a3_0x2313,0x9f36b));import{readFileSync,writeFileSync}from'node:fs';import{getEnvAuthCookie,cookieFile}from'../config/env.js';export function getCookie(){const _0x2504b4=getEnvAuthCookie();if(_0x2504b4)return _0x2504b4;try{return readFileSync(cookieFile,'utf-8')['trim']();}catch{return'';}}export function saveCookie(_0x2ee11a){try{writeFileSync(cookieFile,_0x2ee11a,'utf-8');}catch(_0xc597d4){throw new Error('Failed\x20to\x20save\x20cookie\x20to\x20'+cookieFile+':\x20'+_0xc597d4['message']);}}export function hasCookie(){const _0x38b93a=a3_0x50db,_0x18728e=getCookie();return _0x18728e[_0x38b93a(0x6d)]>0x0;}export function clearCookie(){const _0x1ee124=a3_0x50db;try{writeFileSync(cookieFile,'',_0x1ee124(0x6a));}catch{}}function a3_0x50db(_0x445c66,_0x53c888){_0x445c66=_0x445c66-0x64;const _0x2313a8=a3_0x2313();let _0x50db22=_0x2313a8[_0x445c66];return _0x50db22;}function a3_0x2313(){const _0x12e6d9=['1289506sIagDx','6912498oqNaDd','5fCMMhL','utf-8','2730699yTxzsJ','480599lcgCRI','length','3545312CPtgjh','1135872nLekKe','23595344ckcyVR'];a3_0x2313=function(){return _0x12e6d9;};return a3_0x2313();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x157b(){const _0x77f2c2=['json','user','41536365FWPIde','67692FRMEAC','276MTcAND','165212beEWBA','490831QGNHlg','1pEcxHl','846tSKvre','2702RwkAth','/api/auth/get-session','85PNnjVR','22280HUnawH','509758YDuALF','20080IEBbzi','21BOnqws'];a4_0x157b=function(){return _0x77f2c2;};return a4_0x157b();}function a4_0x24d6(_0x1e3733,_0x16fc3e){_0x1e3733=_0x1e3733-0x19c;const _0x157b78=a4_0x157b();let _0x24d6ea=_0x157b78[_0x1e3733];return _0x24d6ea;}(function(_0x69000,_0x471c31){const _0x276196=a4_0x24d6,_0x7a2883=_0x69000();while(!![]){try{const _0x83f9e7=parseInt(_0x276196(0x1a6))/0x1*(parseInt(_0x276196(0x19c))/0x2)+parseInt(_0x276196(0x19e))/0x3*(-parseInt(_0x276196(0x1a4))/0x4)+-parseInt(_0x276196(0x1aa))/0x5*(parseInt(_0x276196(0x1a2))/0x6)+-parseInt(_0x276196(0x1a8))/0x7*(parseInt(_0x276196(0x19d))/0x8)+-parseInt(_0x276196(0x1a7))/0x9*(parseInt(_0x276196(0x1ab))/0xa)+-parseInt(_0x276196(0x1a5))/0xb*(parseInt(_0x276196(0x1a3))/0xc)+parseInt(_0x276196(0x1a1))/0xd;if(_0x83f9e7===_0x471c31)break;else _0x7a2883['push'](_0x7a2883['shift']());}catch(_0x3dbd2e){_0x7a2883['push'](_0x7a2883['shift']());}}}(a4_0x157b,0xbaa4e));import{getCookie}from'./cookie-manager.js';import{getUserDomain}from'../config/env.js';export async function isSessionValid(){const _0x443d04=a4_0x24d6,_0x22b97d=getCookie();if(!_0x22b97d)return![];try{const _0x32799c=await fetch(getUserDomain()+_0x443d04(0x1a9),{'headers':{'cookie':_0x22b97d}});if(!_0x32799c['ok'])return![];const _0x537410=await _0x32799c[_0x443d04(0x19f)]();return!!(_0x537410?.['session']&&_0x537410?.[_0x443d04(0x1a0)]);}catch{return![];}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a5_0x1358(){const _0x1b2863=['1728920kjBLXt','18EgXXar','399223tQcrqc','parse','warn','2508832FZvRBU','1850430GWlERZ','6150040CzyGeR','[MCP]\x20LOVRABET_API_URL_OVERRIDES\x20is\x20not\x20valid\x20JSON,\x20ignoring','28SYlEhn','104366TJSFhk','3eCahPq','env','7qphpqQ','LOVRABET_API_URL_OVERRIDES','871875PofTvZ','90MvZHMF','MCP_DEBUG','348klqGFJ'];a5_0x1358=function(){return _0x1b2863;};return a5_0x1358();}(function(_0x5c2529,_0x52c8f1){const _0x2673f9=a5_0x30bc,_0x5b2c92=_0x5c2529();while(!![]){try{const _0x1801e5=-parseInt(_0x2673f9(0x8c))/0x1*(parseInt(_0x2673f9(0x89))/0x2)+-parseInt(_0x2673f9(0x8a))/0x3*(parseInt(_0x2673f9(0x84))/0x4)+parseInt(_0x2673f9(0x85))/0x5*(parseInt(_0x2673f9(0x80))/0x6)+-parseInt(_0x2673f9(0x88))/0x7*(-parseInt(_0x2673f9(0x7f))/0x8)+-parseInt(_0x2673f9(0x7b))/0x9*(parseInt(_0x2673f9(0x7c))/0xa)+-parseInt(_0x2673f9(0x81))/0xb*(-parseInt(_0x2673f9(0x7e))/0xc)+-parseInt(_0x2673f9(0x86))/0xd;if(_0x1801e5===_0x52c8f1)break;else _0x5b2c92['push'](_0x5b2c92['shift']());}catch(_0x5615cd){_0x5b2c92['push'](_0x5b2c92['shift']());}}}(a5_0x1358,0xa866b));import{getEnvToolboxBaseUrl,getEffectiveApiDomain}from'./env.js';import{getConfigApiUrlOverrides}from'./lovrabet-config.js';function a5_0x30bc(_0x5344cd,_0x41d675){_0x5344cd=_0x5344cd-0x7a;const _0x1358a4=a5_0x1358();let _0x30bc14=_0x1358a4[_0x5344cd];return _0x30bc14;}let _envOverridesCache=null;function getEnvApiUrlOverrides(){const _0x1f9d1e=a5_0x30bc;if(_envOverridesCache!==null)return _envOverridesCache;const _0x5da2dc=process['env'][_0x1f9d1e(0x7a)];if(!_0x5da2dc)return _envOverridesCache={},_envOverridesCache;try{_envOverridesCache=JSON[_0x1f9d1e(0x82)](_0x5da2dc);}catch{process[_0x1f9d1e(0x8b)][_0x1f9d1e(0x7d)]&&console[_0x1f9d1e(0x83)](_0x1f9d1e(0x87)),_envOverridesCache={};}return _envOverridesCache;}export function resolveApiBaseUrl(_0x4068a6){const _0x833a9d=getEnvApiUrlOverrides();if(_0x833a9d[_0x4068a6])return _0x833a9d[_0x4068a6];const _0x4e006d=getConfigApiUrlOverrides();if(_0x4e006d[_0x4068a6])return _0x4e006d[_0x4068a6];return getEnvToolboxBaseUrl()??getEffectiveApiDomain();}export function clearApiUrlOverridesCache(){_envOverridesCache=null;}
|
package/dist/config/env.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a6_0x2c0c70=a6_0x1c4d;(function(_0x7809e3,_0x4e9a09){const _0x44079e=a6_0x1c4d,_0x18b1db=_0x7809e3();while(!![]){try{const _0x4d7dc6=-parseInt(_0x44079e(0x10a))/0x1+-parseInt(_0x44079e(0x107))/0x2+parseInt(_0x44079e(0x120))/0x3+parseInt(_0x44079e(0x104))/0x4+parseInt(_0x44079e(0x110))/0x5*(parseInt(_0x44079e(0x10b))/0x6)+-parseInt(_0x44079e(0x102))/0x7+-parseInt(_0x44079e(0x11e))/0x8*(-parseInt(_0x44079e(0x113))/0x9);if(_0x4d7dc6===_0x4e9a09)break;else _0x18b1db['push'](_0x18b1db['shift']());}catch(_0x506404){_0x18b1db['push'](_0x18b1db['shift']());}}}(a6_0x165f,0x7eb49));import{mkdirSync}from'node:fs';function a6_0x1c4d(_0x5ad200,_0x198b34){_0x5ad200=_0x5ad200-0x101;const _0x165fc2=a6_0x165f();let _0x1c4d4a=_0x165fc2[_0x5ad200];return _0x1c4d4a;}import{homedir}from'node:os';const ENVIRONMENT_MAPPING={'online':'production','production':a6_0x2c0c70(0x11c),'daily':a6_0x2c0c70(0x11a),'dev':'development','development':a6_0x2c0c70(0x121)};function normalizeEnvironment(_0x50c913){const _0x83d8df=a6_0x2c0c70;if(!_0x50c913)return _0x83d8df(0x11c);const _0x47ece3=_0x50c913[_0x83d8df(0x114)](),_0x23e8cf=ENVIRONMENT_MAPPING[_0x47ece3];if(!_0x23e8cf)return console[_0x83d8df(0x10d)](_0x83d8df(0x115)+_0x50c913+_0x83d8df(0x109)),_0x83d8df(0x11c);return _0x23e8cf!==_0x47ece3&&_0x23e8cf!==_0x50c913&&console['log'](_0x83d8df(0x11f)+_0x50c913+'\x20→\x20'+_0x23e8cf),_0x23e8cf;}export function getEnvAppCode(){const _0x2dad4d=a6_0x2c0c70;return process[_0x2dad4d(0x10f)][_0x2dad4d(0x101)];}export function getEnvironment(){const _0x5c7dd7=a6_0x2c0c70,_0x161926=process[_0x5c7dd7(0x10f)][_0x5c7dd7(0x112)];return normalizeEnvironment(_0x161926);}export function getEnvApiBaseUrl(){const _0x14ed4e=a6_0x2c0c70;return process[_0x14ed4e(0x10f)][_0x14ed4e(0x105)];}export function getEnvRuntimeBaseUrl(){const _0x3401ef=a6_0x2c0c70;return process[_0x3401ef(0x10f)][_0x3401ef(0x11d)];}export function getEnvUserBaseUrl(){const _0x27057c=a6_0x2c0c70;return process[_0x27057c(0x10f)][_0x27057c(0x111)];}export function getEnvAuthCookie(){const _0x3067d6=a6_0x2c0c70;return process['env']['LOVRABET_AUTH_COOKIE']?.[_0x3067d6(0x119)]();}export function isTestEnv(){const _0x17d918=a6_0x2c0c70;return process['env'][_0x17d918(0x116)]==='test';}export function isProductionEnv(){const _0x27d120=a6_0x2c0c70;return process[_0x27d120(0x10f)]['NODE_ENV']===_0x27d120(0x11c);}export function isDevelopmentEnv(){const _0x505433=a6_0x2c0c70;return process[_0x505433(0x10f)][_0x505433(0x116)]===_0x505433(0x121);}export function shouldLog(){const _0x2cd5e8=a6_0x2c0c70,_0x298d0e=process[_0x2cd5e8(0x10f)]['NODE_ENV'];return _0x298d0e==='development'||_0x298d0e===_0x2cd5e8(0x11a);}export const configDir=homedir()+a6_0x2c0c70(0x117);export const cookieFile=configDir+a6_0x2c0c70(0x103);mkdirSync(configDir,{'recursive':!![]});export const defaultConfig={'appCode':getEnvAppCode(),'env':getEnvironment()};export function getEnvAppCodeWithFallback(_0x4e598f){return getEnvAppCode()||_0x4e598f;}export function getApiDomain(){const _0x1c5998=a6_0x2c0c70,_0x3a0250=getEnvironment(),_0x22aca7={'production':'https://api.lovrabet.com','online':_0x1c5998(0x106),'daily':_0x1c5998(0x118),'development':_0x1c5998(0x10e)};return _0x22aca7[_0x3a0250];}export function getUserDomain(){const _0x4ffee3=a6_0x2c0c70,_0x92bfdf=getEnvironment(),_0x2600f6={'production':_0x4ffee3(0x108),'online':_0x4ffee3(0x108),'daily':_0x4ffee3(0x10c),'development':'https://dev.lovrabet.com'};return _0x2600f6[_0x92bfdf];}export function getRuntimeDomain(){const _0x3fc0bf=a6_0x2c0c70,_0x45aa89=getEnvironment(),_0x5c0a7f={'production':'https://runtime.lovrabet.com','online':_0x3fc0bf(0x11b),'daily':'https://daily-runtime.lovrabet.com','development':_0x3fc0bf(0x10e)};return _0x5c0a7f[_0x45aa89];}export function getEffectiveApiDomain(){return getEnvApiBaseUrl()||getApiDomain();}export function getEffectiveRuntimeDomain(){return getEnvRuntimeBaseUrl()||getRuntimeDomain();}export function getEffectiveUserDomain(){return getEnvUserBaseUrl()||getUserDomain();}export function getEnvToolboxBaseUrl(){const _0xf8d477=a6_0x2c0c70;return process[_0xf8d477(0x10f)]['LOVRABET_TOOLBOX_BASEURL'];}export function getEffectiveToolboxDomain(){return getEnvToolboxBaseUrl()||getEffectiveApiDomain();}function a6_0x165f(){const _0x206099=['warn','https://dev.lovrabet.com','env','9155sJSMqT','LOVRABET_USER_BASEURL','LOVRABET_ENV','553572PBvxbm','toLowerCase','[ENV]\x20Unknown\x20environment:\x20','NODE_ENV','/.lovrabet','https://daily-api.lovrabet.com','trim','daily','https://runtime.lovrabet.com','production','LOVRABET_RUNTIME_BASEURL','152jozfif','[ENV]\x20Environment\x20mapping:\x20','2709306EkWGjs','development','LOVRABET_APP_CODE','4617592vOFSja','/cookie','1136036HoRpoT','LOVRABET_API_BASEURL','https://api.lovrabet.com','886240Zpisjt','https://user.lovrabet.com',',\x20using\x20default\x20production','933581HVeaHH','654IPaZpY','https://user-daily.lovrabet.com'];a6_0x165f=function(){return _0x206099;};return a6_0x165f();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x4927f4,_0x2d13f9){const _0x147c20=a7_0x3818,_0x31bbd6=_0x4927f4();while(!![]){try{const _0x48f2c5=parseInt(_0x147c20(0x178))/0x1+-parseInt(_0x147c20(0x17d))/0x2+-parseInt(_0x147c20(0x186))/0x3+parseInt(_0x147c20(0x184))/0x4+-parseInt(_0x147c20(0x17e))/0x5*(parseInt(_0x147c20(0x179))/0x6)+parseInt(_0x147c20(0x17c))/0x7*(-parseInt(_0x147c20(0x180))/0x8)+parseInt(_0x147c20(0x183))/0x9;if(_0x48f2c5===_0x2d13f9)break;else _0x31bbd6['push'](_0x31bbd6['shift']());}catch(_0x2810ca){_0x31bbd6['push'](_0x31bbd6['shift']());}}}(a7_0x5113,0x95f31));import{existsSync,readFileSync}from'node:fs';import{configDir}from'./env.js';let _cache=null;function readConfigFile(){const _0x56356c=a7_0x3818;if(_cache!==null)return _cache;const _0x537ad4=configDir+_0x56356c(0x181);if(!existsSync(_0x537ad4))return _cache={},_cache;try{_cache=JSON[_0x56356c(0x182)](readFileSync(_0x537ad4,_0x56356c(0x185)));}catch{process[_0x56356c(0x187)][_0x56356c(0x17a)]&&console[_0x56356c(0x17b)]('[MCP]\x20Failed\x20to\x20parse\x20'+_0x537ad4+',\x20using\x20empty\x20config'),_cache={};}return _cache;}export function getConfigApiUrlOverrides(){const _0x2a9aa5=a7_0x3818;return readConfigFile()[_0x2a9aa5(0x17f)]??{};}function a7_0x3818(_0x40cdfd,_0x13d88b){_0x40cdfd=_0x40cdfd-0x178;const _0x51131f=a7_0x5113();let _0x3818e7=_0x51131f[_0x40cdfd];return _0x3818e7;}export function clearConfigCache(){_cache=null;}function a7_0x5113(){const _0x71b25=['4504896TpVPjb','utf-8','582411luBFdK','env','884633bwhKRC','6jbXhxB','MCP_DEBUG','warn','82677MCaPSr','1049156BOpxHY','1435345MWkAAq','apiUrlOverrides','672vbQEkO','/config.json','parse','5411196JYCgQy'];a7_0x5113=function(){return _0x71b25;};return a7_0x5113();}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
(function(
|
|
2
|
+
const a8_0x20e815=a8_0x4dc5;(function(_0x56dccc,_0x343723){const _0x418727=a8_0x4dc5,_0x25b02a=_0x56dccc();while(!![]){try{const _0xfb03fa=-parseInt(_0x418727(0xfd))/0x1*(-parseInt(_0x418727(0xfa))/0x2)+parseInt(_0x418727(0xe5))/0x3*(parseInt(_0x418727(0xf8))/0x4)+parseInt(_0x418727(0xed))/0x5*(-parseInt(_0x418727(0xee))/0x6)+-parseInt(_0x418727(0xea))/0x7+parseInt(_0x418727(0xe2))/0x8*(-parseInt(_0x418727(0xf7))/0x9)+parseInt(_0x418727(0xeb))/0xa*(parseInt(_0x418727(0xf3))/0xb)+-parseInt(_0x418727(0xe1))/0xc*(-parseInt(_0x418727(0xf6))/0xd);if(_0xfb03fa===_0x343723)break;else _0x25b02a['push'](_0x25b02a['shift']());}catch(_0x134f30){_0x25b02a['push'](_0x25b02a['shift']());}}}(a8_0x39a5,0x7c8c5));function a8_0x4dc5(_0xaf5fa9,_0x526dc9){_0xaf5fa9=_0xaf5fa9-0xe1;const _0x39a5ed=a8_0x39a5();let _0x4dc58e=_0x39a5ed[_0xaf5fa9];return _0x4dc58e;}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{createServer}from'./server.js';function parseArgs(){const _0x30aaa4=a8_0x4dc5,_0x546961=process[_0x30aaa4(0xe3)][_0x30aaa4(0xe8)](0x2),_0x120686=_0x546961['includes']('--enable-bff-save')||_0x546961[_0x30aaa4(0xe6)]('--dangerously-bff-save');return process[_0x30aaa4(0xf4)][_0x30aaa4(0xf1)]&&_0x546961[_0x30aaa4(0xe6)]('--dangerously-bff-save')&&!_0x546961[_0x30aaa4(0xe6)](_0x30aaa4(0xfe))&&console[_0x30aaa4(0xf9)](_0x30aaa4(0xe7)),{'bffSaveEnabled':_0x120686};}function a8_0x39a5(){const _0x2cc8bd=['SIGINT','40TDZyDI','622914GwRgXS','error','Failed\x20to\x20start\x20Lovrabet\x20Dataset\x20MCP\x20Server:','MCP_DEBUG','catch','9163bRbfkH','env','exit','91afdbSa','22365elZRFd','457076UGcgBM','warn','206azEjTi','logInfo','Shutting\x20down\x20Lovrabet\x20Dataset\x20MCP\x20Server...','5779sAyacb','--enable-bff-save','log','707364nRZMBx','1144yxGMEC','argv','connect','15kFQUPt','includes','[MCP]\x20--dangerously-bff-save\x20is\x20deprecated;\x20use\x20--enable-bff-save\x20(same\x20behavior)','slice','SIGTERM','1841021DWrxEO','4560TMakcJ'];a8_0x39a5=function(){return _0x2cc8bd;};return a8_0x39a5();}async function main(){const _0x3f1a3b=a8_0x4dc5;try{const {bffSaveEnabled:_0x2cfebb}=parseArgs(),_0x332d0=createServer({'bffSaveEnabled':_0x2cfebb}),_0x36834d=new StdioServerTransport();_0x332d0[_0x3f1a3b(0xfb)](),await _0x332d0[_0x3f1a3b(0xe4)](_0x36834d),process['on'](_0x3f1a3b(0xec),async()=>{const _0x18a1d2=_0x3f1a3b;process[_0x18a1d2(0xf4)][_0x18a1d2(0xf1)]&&console[_0x18a1d2(0xff)]('Shutting\x20down\x20Lovrabet\x20Dataset\x20MCP\x20Server...'),process['exit'](0x0);}),process['on'](_0x3f1a3b(0xe9),async()=>{const _0x5a7d7c=_0x3f1a3b;process[_0x5a7d7c(0xf4)]['MCP_DEBUG']&&console[_0x5a7d7c(0xff)](_0x5a7d7c(0xfc)),process[_0x5a7d7c(0xf5)](0x0);});}catch(_0x3ee34f){console[_0x3f1a3b(0xef)](_0x3f1a3b(0xf0),_0x3ee34f),process[_0x3f1a3b(0xf5)](0x1);}}main()[a8_0x20e815(0xf2)](_0x1222f2=>{const _0x13af92=a8_0x20e815;console[_0x13af92(0xef)]('Unhandled\x20error:',_0x1222f2),process['exit'](0x1);});
|
package/dist/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function a9_0x5074(){const _0x36546b=['../package.json','Search\x20keyword','Environment\x20(optional,\x20uses\x20LOVRABET_ENV\x20or\x20defaults\x20to\x20online)','List\x20SQL\x20Queries','Server-side\x20fuzzy\x20match\x20by\x20sqlCode','union','Execute\x20a\x20custom\x20SQL\x20query\x20by\x20sqlCode.\x20Get\x20sqlCode\x20from\x20list_sql_queries\x20first.','24755bUlvmE','List\x20all\x20Backend\x20Function\x20(ENDPOINT\x20type)\x20scripts.','Generate\x20TypeScript\x20SDK\x20code\x20for\x20a\x20dataset\x20operation,\x20including\x20field\x20metadata.\x20Check\x20user\x27s\x20@lovrabet/sdk\x20version\x20in\x20package.json\x20first.','close','Authentication\x20cookie\x20(optional,\x20uses\x20stored\x20cookie\x20from\x20login\x20if\x20not\x20provided)','Include\x20table\x20relations\x20(default:\x20true)','get_bff_script_info','bffSaveEnabled','Known\x20sqlCode\x20—\x20use\x20to\x20directly\x20target\x20the\x20record\x20for\x20update,\x20skipping\x20name\x20lookup','save_or_update_bff_script','Version:\x20','save_or_update_custom_sql','sdk','Generate\x20SQL\x20Code','Unknown\x20error\x20occurred','10kTCvHG','daily','Generate\x20code\x20for\x20a\x20custom\x20SQL\x20query.\x20Validates\x20sqlCode\x20exists\x20first.\x20Use\x20target\x20to\x20switch\x20between\x20Frontend\x20SDK\x20and\x20Backend\x20Function\x20code\x20patterns.','Conflict\x20detection\x20is\x20handled\x20server-side\x20by\x20toolbox','version','enum','48576693UsDRAj','Server-side\x20fuzzy\x20match\x20by\x20sqlName','Login','message','Full\x20JavaScript/TypeScript\x20source\x20code.\x20Pass\x20the\x20complete\x20file\x20content\x20directly\x20as\x20a\x20string\x20—\x20any\x20length\x20is\x20supported.','Get\x20list\x20of\x20all\x20API\x20operations\x20for\x20a\x20dataset.\x20Prefer\x20\x22filter\x22\x20for\x20queries,\x20\x22getOne\x22\x20for\x20single\x20record\x20by\x20ID.','connect','Dataset\x20code/ID','get_operation_detail','Database\x20ID\x20(optional)','list_bff_scripts','lovrabet-dataset-mcp','\x0a-\x20Use\x20list_bff_scripts\x20/\x20get_bff_script_info\x20to\x20browse\x20and\x20read\x20Backend\x20Function\x20scripts\x0a-\x20save_or_update_bff_script\x20saves\x20script\x20via\x20toolbox\x20(server-side\x20submitter\x20check\x20+\x20automatic\x20cache\x20clearing)\x0a-\x20If\x20save\x20returns\x20blocked:\x20true,\x20tell\x20the\x20user\x20to\x20operate\x20manually\x20on\x20the\x20platform,\x20do\x20NOT\x20retry','record','Search\x20datasets\x20by\x20keyword\x20(searches\x20in\x20name,\x20table\x20name,\x20code,\x20and\x20description).','SQL\x20content\x20to\x20validate','Save\x20or\x20update\x20a\x20Backend\x20Function\x20script\x20via\x20toolbox\x20(server-side\x20submitter\x20check\x20+\x20automatic\x20cache\x20clearing).\x20If\x20blocked=true\x20is\x20returned,\x20the\x20last\x20submitter\x20was\x20someone\x20else\x20—\x20tell\x20the\x20user\x20to\x20operate\x20manually,\x20do\x20NOT\x20retry.\x20IMPORTANT:\x20Pass\x20scriptContent\x20as\x20a\x20plain\x20string\x20parameter\x20with\x20the\x20full\x20file\x20content.\x20Do\x20NOT\x20write\x20temp\x20files,\x20do\x20NOT\x20JSON-escape\x20manually,\x20do\x20NOT\x20use\x20shell\x20commands\x20to\x20invoke\x20this\x20tool.','SQL\x20code\x20from\x20list_sql_queries\x20(must\x20exist)','Lovrabet\x20Dataset\x20MCP\x20Server','server','List\x20Datasets','min','registerTool','List\x20all\x20available\x20custom\x20SQL\x20queries\x20with\x20metadata\x20and\x20parameters.','text','Server\x20started\x20successfully','Function\x20description','Get\x20detailed\x20Backend\x20Function\x20script\x20including\x20full\x20source\x20code.','Save\x20or\x20Update\x20Backend\x20Function','log','Backend\x20Function\x20ID\x20(for\x20updating)','Get\x20Operations','string','You\x20are\x20an\x20AI\x20assistant\x20helping\x20developers\x20work\x20with\x20the\x20Lovrabet\x20data\x20platform.\x0a\x0a##\x20Two\x20Runtime\x20Contexts:\x20Frontend\x20SDK\x20vs\x20Backend\x20Function\x20(BFF)\x0a\x0aLovrabet\x20has\x20two\x20code\x20execution\x20contexts\x20with\x20**identical\x20calling\x20methods\x20but\x20different\x20return\x20structures**:\x0a\x0a###\x20Frontend\x20TypeScript\x20SDK\x20(`@lovrabet/sdk`)\x0a-\x20Runs\x20in\x20browser/Node.js,\x20imported\x20via\x20`import\x20{\x20LovrabetClient\x20}\x20from\x20\x27@lovrabet/sdk\x27`\x0a-\x20Model\x20operations\x20return\x20unwrapped\x20data\x20on\x20success,\x20throw\x20LovrabetError\x20on\x20error\x0a-\x20SQL\x20execution\x20returns\x20wrapper:\x20`{\x20execSuccess,\x20execResult\x20}`\x0a\x0a###\x20Backend\x20Function\x20(BFF)\x0a-\x20Runs\x20on\x20Lovrabet\x20server,\x20function\x20signature:\x20`export\x20default\x20async\x20function(params,\x20context)\x20{\x20...\x20}`\x0a-\x20Use\x20`context.client`\x20to\x20access\x20the\x20same\x20SDK\x20methods\x0a-\x20Model\x20operations\x20behave\x20the\x20same\x20as\x20SDK\x0a-\x20**SQL\x20execution\x20returns\x20direct\x20array**\x20`T[]`,\x20errors\x20throw\x20exceptions\x20(no\x20wrapper)\x0a\x0a>\x20**CRITICAL**:\x20Always\x20ask\x20or\x20determine\x20which\x20context\x20the\x20user\x20is\x20working\x20in\x20before\x20generating\x20code.\x0a\x0a##\x20SDK\x20Usage\x20Patterns\x0a\x0a###\x20Model\x20Access\x20(SDK\x20>=\x201.2.0)\x0a-\x20Default:\x20`client.models.dataset_[code].filter()`\x0a-\x20Alias:\x20`client.models.[alias].filter()`\x20(check\x20user\x27s\x20createClient/registerModels\x20config\x20for\x20actual\x20alias)\x0a-\x20For\x20SDK\x20<\x201.2.0:\x20only\x20`client.models.[key]`\x20where\x20key\x20is\x20defined\x20in\x20createClient/registerModels\x0a\x0a###\x20SDK\x20Return\x20Value\x20Behavior\x0a-\x20**On\x20Success**:\x20Returns\x20ONLY\x20the\x20\x27data\x27\x20field\x20content\x20(e.g.,\x20`{\x20id:\x20123,\x20name:\x20\x22...\x22\x20}`)\x0a-\x20**On\x20Error**:\x20Throws\x20LovrabetError\x20with\x20`{\x20message,\x20status,\x20code,\x20data\x20}`\x0a-\x20**Always\x20use\x20try-catch**\x20when\x20calling\x20SDK\x20methods\x0a\x0a###\x20Data\x20Query\x20Best\x20Practices\x0a-\x20**filter**:\x20Most\x20flexible,\x20supports\x20complex\x20WHERE\x20conditions,\x20pagination,\x20sorting\x20—\x20use\x20this\x20for\x20queries\x0a-\x20**getOne**:\x20Single\x20record\x20by\x20primary\x20key\x20ID\x20only\x0a-\x20**getList**:\x20Simple\x20unfiltered\x20listing\x20(rarely\x20needed)\x0a\x0a##\x20Custom\x20SQL\x20Execution\x0a\x0a###\x20Frontend\x20SDK\x0a```typescript\x0aconst\x20data\x20=\x20await\x20client.sql.execute({\x20sqlCode:\x20\x27xxx\x27,\x20params:\x20{\x20key:\x20\x27value\x27\x20}\x20});\x0aif\x20(!data.execSuccess)\x20throw\x20new\x20Error(\x27SQL\x20execution\x20failed\x27);\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];\x0a```\x0a\x0a###\x20Backend\x20Function\x20(BFF)\x0a```javascript\x0a//\x20context.client.sql.execute\x20returns\x20rows\x20directly\x20—\x20NO\x20wrapper\x20object\x0aconst\x20rows\x20=\x20await\x20context.client.sql.execute({\x20sqlCode:\x20\x27xxx\x27,\x20params:\x20{\x20key:\x20\x27value\x27\x20}\x20});\x0a//\x20rows\x20is\x20T[]\x20directly,\x20errors\x20throw\x20exceptions\x0a```\x0a\x0a>\x20Note:\x20`client.api.executeSql()`\x20is\x20deprecated.\x20Use\x20`client.sql.execute()`.\x0a\x0a##\x20MyBatis\x20Dynamic\x20SQL\x0aSQL\x20content\x20supports\x20MyBatis\x20syntax:\x20`#{param}`,\x20`<if\x20test=\x22\x22>`,\x20`<where>`,\x20`<foreach>`.\x0aUse\x20`<\x20>\x20&`\x20for\x20<\x20>\x20&\x20in\x20SQL\x20content\x20(not\x20in\x20`<if\x20test=\x22\x22>`\x20attributes).\x0a\x0a##\x20Workflow\x20Tips\x0a-\x20Use\x20list_datasets\x20to\x20discover\x20available\x20datasets\x0a-\x20Use\x20get_dataset_detail\x20to\x20see\x20fields,\x20operations,\x20and\x20database\x20info\x20(dbId)\x0a-\x20Use\x20generate_sdk_code\x20to\x20get\x20ready-to-use\x20TypeScript\x20code\x0a-\x20Use\x20list_sql_queries\x20to\x20find\x20existing\x20custom\x20SQLs\x20before\x20creating\x20new\x20ones\x0a-\x20validate_sql_content\x20before\x20save_or_update_custom_sql\x0a-\x20save_or_update_custom_sql\x20routes\x20through\x20toolbox;\x20DELETE/DDL\x20are\x20blocked;\x20if\x20blocked=true\x20(last\x20submitter\x20conflict)\x20tell\x20the\x20user\x20to\x20operate\x20manually\x20—\x20do\x20NOT\x20retry\x0a-\x20generate_sql_code\x20supports\x20target=\x27sdk\x27\x20(default)\x20or\x20target=\x27bff\x27\x20for\x20context-appropriate\x20code','Get\x20Dataset\x20Detail','options','9229656PCMpXi','get_dataset_operations','Client-side\x20filter\x20by\x20name/description/content','boolean','SQL\x20code\x20from\x20list_sql_queries\x20->\x20sqlCode','online','1128uiEvtN','Include\x20import\x20statements\x20(default:\x20true)','Get\x20Backend\x20Function\x20Info','optional','describe','SQL\x20content\x20(SELECT/INSERT/UPDATE/WITH\x20auto-saved;\x20DELETE/DDL\x20blocked).\x20Supports\x20MyBatis\x20syntax.','Validate\x20SQL\x20content\x20without\x20saving.\x20Detects\x20SQL\x20type\x20(SELECT/INSERT/UPDATE/DELETE/DDL)\x20and\x20validates\x20table/column\x20existence.\x20Supports\x20MyBatis\x20syntax.','validate_sql_content','list_datasets','MCP_DEBUG','array','617mUMZcJ','stringify','bff','execute_custom_sql','1402sDoRZq','Get\x20list\x20of\x20all\x20datasets\x20with\x20metadata\x20and\x20table\x20relations\x20(ER\x20Config).\x20Use\x20includeRelations:\x20false\x20for\x20faster\x20response.','mcpServer','Login\x20to\x20Lovrabet\x20to\x20authenticate\x20for\x20dataset\x20queries.','1678596xvuCNQ','generate_sql_code','registerAllTools','search_datasets','4349241HaIdiW','Get\x20detailed\x20dataset\x20information\x20including\x20fields,\x20operations,\x20and\x20bidirectional\x20relations\x20(outgoing\x20+\x20incoming).\x20Returns\x20_relations\x20(structured\x20graph\x20edges),\x20_relationsSummary\x20(natural\x20language\x20overview),\x20and\x20_usageHints\x20(actionable\x20advice\x20based\x20on\x20the\x20dataset\x27s\x20position\x20in\x20the\x20relation\x20graph).','generate_sdk_code','Database\x20ID\x20from\x20get_dataset_detail\x20—\x20required\x20when\x20creating\x20new\x20SQL,\x20optional\x20when\x20updating','Operation\x20name\x20(e.g.,\x20filter,\x20getOne,\x20create,\x20update)','Execute\x20Custom\x20SQL','98770hWOGGX','186aZensD','number','Get\x20detailed\x20operation\x20information\x20including\x20request/response\x20examples.','Bypass\x20cache\x20(default:\x20false)','Target\x20context:\x20\x22sdk\x22\x20(Frontend\x20SDK,\x20default)\x20or\x20\x22bff\x22\x20(Backend\x20Function).\x20SDK\x20returns\x20{execSuccess,\x20execResult}\x20wrapper;\x20BFF\x20returns\x20rows\x20directly.','Example\x20parameter\x20values','login'];a9_0x5074=function(){return _0x36546b;};return a9_0x5074();}const a9_0x5dcf25=a9_0x49ac;(function(_0x430421,_0x3b30d1){const _0x1919d9=a9_0x49ac,_0x23e977=_0x430421();while(!![]){try{const _0x223658=-parseInt(_0x1919d9(0xc8))/0x1*(-parseInt(_0x1919d9(0xcc))/0x2)+-parseInt(_0x1919d9(0xd0))/0x3+parseInt(_0x1919d9(0xbd))/0x4*(-parseInt(_0x1919d9(0x7e))/0x5)+parseInt(_0x1919d9(0xdb))/0x6*(-parseInt(_0x1919d9(0xda))/0x7)+-parseInt(_0x1919d9(0xb7))/0x8+-parseInt(_0x1919d9(0xd4))/0x9*(parseInt(_0x1919d9(0x8d))/0xa)+parseInt(_0x1919d9(0x93))/0xb;if(_0x223658===_0x3b30d1)break;else _0x23e977['push'](_0x23e977['shift']());}catch(_0x3d7c5a){_0x23e977['push'](_0x23e977['shift']());}}}(a9_0x5074,0xc7d44));import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{z}from'zod';import{createRequire}from'module';function a9_0x49ac(_0xbeef55,_0x348e5d){_0xbeef55=_0xbeef55-0x7d;const _0x5074e8=a9_0x5074();let _0x49ac49=_0x5074e8[_0xbeef55];return _0x49ac49;}import{login,listDatasets,getDatasetDetail,getDatasetOperations,getOperationDetail,generateSDKCode,searchDatasets,listSqlQueries,saveOrUpdateCustomSql,executeCustomSql,generateSqlCode,validateSqlContent,listBffScripts,getBffScriptInfo,saveOrUpdateBffScript}from'./tools/index.js';const require=createRequire(import.meta.url),packageJson=require(a9_0x5dcf25(0xe2)),authSchema={'appCode':z[a9_0x5dcf25(0xb3)]()[a9_0x5dcf25(0xc0)]()[a9_0x5dcf25(0xc1)]('Application\x20code\x20(optional\x20if\x20LOVRABET_APP_CODE\x20env\x20var\x20is\x20set)'),'cookie':z[a9_0x5dcf25(0xb3)]()['optional']()[a9_0x5dcf25(0xc1)](a9_0x5dcf25(0x82))};function registerToolWithOptions(_0x1915e6,_0x273da0,_0x40b4a4,_0x3d1a8d){const _0x38eb95=a9_0x5dcf25;_0x1915e6[_0x38eb95(0xa9)](_0x273da0,_0x40b4a4,_0x3d1a8d);}function wrapHandler(_0x564661){return async _0x1d0781=>{const _0x1ac81b=a9_0x49ac;try{const _0x37a9bf=await _0x564661(_0x1d0781);return{'content':[{'type':_0x1ac81b(0xab),'text':JSON[_0x1ac81b(0xc9)](_0x37a9bf,null,0x2)}]};}catch(_0x4afe94){return{'content':[{'type':_0x1ac81b(0xab),'text':JSON[_0x1ac81b(0xc9)]({'error':!![],'message':_0x4afe94[_0x1ac81b(0x96)]||_0x1ac81b(0x8c)},null,0x2)}],'isError':!![]};}};}export class LovrabetDatasetMCPServer{['mcpServer'];[a9_0x5dcf25(0xb6)];constructor(_0xdbb69d={}){const _0x290662=a9_0x5dcf25;this[_0x290662(0xb6)]=_0xdbb69d,this[_0x290662(0xce)]=new McpServer({'name':_0x290662(0x9e),'version':packageJson[_0x290662(0x91)]},{'capabilities':{'tools':{}},'instructions':buildInstructions(_0xdbb69d)}),this[_0x290662(0xd2)]();}[a9_0x5dcf25(0xd2)](){const _0x3a4ba0=a9_0x5dcf25;registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xe1),{'title':_0x3a4ba0(0x95),'description':_0x3a4ba0(0xcf),'inputSchema':{'env':z[_0x3a4ba0(0x92)]([_0x3a4ba0(0xbc),_0x3a4ba0(0x8e)])['optional']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xe4))},'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(login)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xc5),{'title':_0x3a4ba0(0xa7),'description':_0x3a4ba0(0xcd),'inputSchema':{...authSchema,'forceRefresh':z[_0x3a4ba0(0xba)]()['optional']()['describe'](_0x3a4ba0(0xde)),'includeRelations':z[_0x3a4ba0(0xba)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0x83))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listDatasets)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xd3),{'title':'Search\x20Datasets','description':_0x3a4ba0(0xa1),'inputSchema':{...authSchema,'keyword':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xe3))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(searchDatasets)),registerToolWithOptions(this[_0x3a4ba0(0xce)],'get_dataset_detail',{'title':_0x3a4ba0(0xb5),'description':_0x3a4ba0(0xd5),'inputSchema':{...authSchema,'datasetCode':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc1)]('Dataset\x20ID\x20(numeric)\x20or\x20code\x20(UUID)'),'forceRefresh':z['boolean']()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xde)),'includeRelations':z['boolean']()['optional']()[_0x3a4ba0(0xc1)]('Include\x20bidirectional\x20relations,\x20summary,\x20and\x20usage\x20hints\x20(default:\x20true)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getDatasetDetail)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xb8),{'title':_0x3a4ba0(0xb2),'description':_0x3a4ba0(0x98),'inputSchema':{...authSchema,'datasetCode':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc1)]('Dataset\x20ID\x20(numeric)\x20or\x20code\x20(UUID)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getDatasetOperations)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0x9b),{'title':'Get\x20Operation\x20Detail','description':_0x3a4ba0(0xdd),'inputSchema':{...authSchema,'datasetCode':z['string']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0x9a)),'operationName':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xd8))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getOperationDetail)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xd6),{'title':'Generate\x20SDK\x20Code','description':_0x3a4ba0(0x80),'inputSchema':{...authSchema,'datasetCode':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0x9a)),'operationName':z['string']()[_0x3a4ba0(0xc1)]('Operation\x20name\x20(e.g.,\x20filter,\x20getOne,\x20create,\x20update)'),'includeImports':z[_0x3a4ba0(0xba)]()['optional']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xbe)),'useAlias':z['boolean']()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('Use\x20camelCase\x20alias\x20instead\x20of\x20dataset_[code]\x20pattern\x20(default:\x20false)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(generateSDKCode)),registerToolWithOptions(this['mcpServer'],'list_sql_queries',{'title':_0x3a4ba0(0xe5),'description':_0x3a4ba0(0xaa),'inputSchema':{...authSchema,'keyword':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xb9)),'category':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('Client-side\x20filter\x20by\x20category'),'sqlCode':z[_0x3a4ba0(0xb3)]()['optional']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xe6)),'sqlName':z[_0x3a4ba0(0xb3)]()['optional']()['describe'](_0x3a4ba0(0x94)),'pageSize':z[_0x3a4ba0(0xdc)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('Items\x20per\x20page\x20(default:\x20999)'),'currentPage':z[_0x3a4ba0(0xdc)]()['optional']()['describe']('Page\x20number\x20(default:\x201)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listSqlQueries)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xcb),{'title':_0x3a4ba0(0xd9),'description':_0x3a4ba0(0x7d),'inputSchema':{...authSchema,'sqlCode':z['string']()[_0x3a4ba0(0xa8)](0x1)['describe'](_0x3a4ba0(0xbb)),'params':z[_0x3a4ba0(0xa0)](z['union']([z['string'](),z[_0x3a4ba0(0xdc)]()]))[_0x3a4ba0(0xc0)]()['describe']('SQL\x20parameters')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(executeCustomSql)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xd1),{'title':_0x3a4ba0(0x8b),'description':_0x3a4ba0(0x8f),'inputSchema':{...authSchema,'sqlCode':z[_0x3a4ba0(0xb3)]()['min'](0x1)[_0x3a4ba0(0xc1)](_0x3a4ba0(0xa4)),'params':z[_0x3a4ba0(0xa0)](z[_0x3a4ba0(0xe7)]([z['string'](),z[_0x3a4ba0(0xdc)]()]))[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xe0)),'includeImports':z['boolean']()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('Include\x20import\x20statements\x20(default:\x20true)'),'target':z[_0x3a4ba0(0x92)]([_0x3a4ba0(0x8a),_0x3a4ba0(0xca)])['optional']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xdf))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(generateSqlCode)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0xc4),{'title':'Validate\x20SQL\x20Content','description':_0x3a4ba0(0xc3),'inputSchema':{...authSchema,'sqlContent':z['string']()[_0x3a4ba0(0xa8)](0x1)[_0x3a4ba0(0xc1)](_0x3a4ba0(0xa2)),'dbId':z[_0x3a4ba0(0xdc)]()['optional']()[_0x3a4ba0(0xc1)](_0x3a4ba0(0x9c)),'validateSchemas':z[_0x3a4ba0(0xc7)](z[_0x3a4ba0(0xb3)]())[_0x3a4ba0(0xc0)]()['describe']('Dataset\x20codes\x20to\x20validate\x20against')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(validateSqlContent)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0x89),{'title':'Save\x20or\x20Update\x20Custom\x20SQL','description':'Save\x20or\x20update\x20a\x20custom\x20SQL\x20query\x20via\x20toolbox.\x20SELECT\x20/\x20INSERT\x20/\x20UPDATE\x20/\x20WITH\x20are\x20auto-saved;\x20DELETE\x20and\x20DDL\x20are\x20blocked\x20for\x20safety.\x20If\x20the\x20last\x20submitter\x20was\x20someone\x20else,\x20returns\x20blocked=true\x20—\x20tell\x20the\x20user\x20to\x20operate\x20manually,\x20do\x20NOT\x20retry.\x20Supports\x20MyBatis\x20syntax.\x20Get\x20dbId\x20from\x20get_dataset_detail.','inputSchema':{...authSchema,'sqlName':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('SQL\x20name/label\x20(optional;\x20MCP\x20auto-extracts\x20from\x20@lovrabet.sqlName\x20comment,\x20or\x20toolbox\x20generates\x20fallback)'),'sqlCode':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0x86)),'dbId':z[_0x3a4ba0(0xdc)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xd7)),'sqlContent':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xa8)](0x1)['describe'](_0x3a4ba0(0xc2)),'id':z[_0x3a4ba0(0xdc)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)]('SQL\x20ID\x20(kept\x20for\x20backward\x20compatibility,\x20not\x20used\x20by\x20toolbox)')},'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![]}},wrapHandler(saveOrUpdateCustomSql)),this[_0x3a4ba0(0xb6)]['bffSaveEnabled']&&(registerToolWithOptions(this['mcpServer'],_0x3a4ba0(0x9d),{'title':'List\x20Backend\x20Functions','description':_0x3a4ba0(0x7f),'inputSchema':{...authSchema},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listBffScripts)),registerToolWithOptions(this[_0x3a4ba0(0xce)],_0x3a4ba0(0x84),{'title':_0x3a4ba0(0xbf),'description':_0x3a4ba0(0xae),'inputSchema':{...authSchema,'id':z[_0x3a4ba0(0xdc)]()[_0x3a4ba0(0xc1)]('Backend\x20Function\x20ID\x20(from\x20list_bff_scripts)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getBffScriptInfo)),registerToolWithOptions(this['mcpServer'],_0x3a4ba0(0x87),{'title':_0x3a4ba0(0xaf),'description':_0x3a4ba0(0xa3),'inputSchema':{...authSchema,'id':z[_0x3a4ba0(0xdc)]()[_0x3a4ba0(0xc0)]()[_0x3a4ba0(0xc1)](_0x3a4ba0(0xb1)),'description':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xa8)](0x1)['describe'](_0x3a4ba0(0xad)),'scriptContent':z[_0x3a4ba0(0xb3)]()[_0x3a4ba0(0xa8)](0x1)['describe'](_0x3a4ba0(0x97))},'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![]}},wrapHandler(saveOrUpdateBffScript)));}get[a9_0x5dcf25(0xa6)](){const _0x5f2686=a9_0x5dcf25;return this[_0x5f2686(0xce)];}async[a9_0x5dcf25(0x99)](_0x1a2dd3){const _0x357fcb=a9_0x5dcf25;await this[_0x357fcb(0xce)][_0x357fcb(0x99)](_0x1a2dd3);}async['close'](){const _0x3438b4=a9_0x5dcf25;await this['mcpServer'][_0x3438b4(0x81)]();}['logInfo'](){const _0xb9a1cb=a9_0x5dcf25;if(!process['env'][_0xb9a1cb(0xc6)])return;console[_0xb9a1cb(0xb0)](_0xb9a1cb(0xa5)),console[_0xb9a1cb(0xb0)](_0xb9a1cb(0x88)+packageJson[_0xb9a1cb(0x91)]),console[_0xb9a1cb(0xb0)](_0xb9a1cb(0xac)),this[_0xb9a1cb(0xb6)][_0xb9a1cb(0x85)]&&(console[_0xb9a1cb(0xb0)]('Backend\x20Function\x20write\x20tools\x20enabled\x20(--enable-bff-save)'),console[_0xb9a1cb(0xb0)](_0xb9a1cb(0x90)));}}function buildInstructions(_0x1e16c6){const _0x1cee2f=a9_0x5dcf25,_0x503e8e=_0x1e16c6[_0x1cee2f(0x85)]===!![],_0xe42fce=_0x503e8e?_0x1cee2f(0x9f):'';return _0x1cee2f(0xb4)+_0xe42fce+'\x0a';}export function createServer(_0x3cbab6){return new LovrabetDatasetMCPServer(_0x3cbab6);}
|
|
1
|
+
const a9_0xcec854=a9_0x5e5f;(function(_0x288fcc,_0x3ee6b3){const _0x53cd9d=a9_0x5e5f,_0xd435ea=_0x288fcc();while(!![]){try{const _0x139b4c=-parseInt(_0x53cd9d(0xbd))/0x1+parseInt(_0x53cd9d(0xf1))/0x2*(parseInt(_0x53cd9d(0xf3))/0x3)+-parseInt(_0x53cd9d(0xf6))/0x4*(parseInt(_0x53cd9d(0xfe))/0x5)+-parseInt(_0x53cd9d(0x9f))/0x6+parseInt(_0x53cd9d(0xbf))/0x7+-parseInt(_0x53cd9d(0xea))/0x8+parseInt(_0x53cd9d(0x92))/0x9*(parseInt(_0x53cd9d(0xcd))/0xa);if(_0x139b4c===_0x3ee6b3)break;else _0xd435ea['push'](_0xd435ea['shift']());}catch(_0x4450a3){_0xd435ea['push'](_0xd435ea['shift']());}}}(a9_0x3878,0x7f3f6));import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{z}from'zod';import{createRequire}from'module';import{login,listDatasets,getDatasetDetail,getDatasetOperations,getOperationDetail,generateSDKCode,searchDatasets,listSqlQueries,saveOrUpdateCustomSql,executeCustomSql,generateSqlCode,validateSqlContent,listBffScripts,getBffScriptInfo,saveOrUpdateBffScript}from'./tools/index.js';function a9_0x5e5f(_0x1fd335,_0x1e7542){_0x1fd335=_0x1fd335-0x8e;const _0x387806=a9_0x3878();let _0x5e5f3a=_0x387806[_0x1fd335];return _0x5e5f3a;}const require=createRequire(import.meta.url),packageJson=require(a9_0xcec854(0x96)),authSchema={'appCode':z['string']()['optional']()['describe'](a9_0xcec854(0xc6)),'cookie':z['string']()['optional']()['describe'](a9_0xcec854(0xc3))};function registerToolWithOptions(_0x2df1a4,_0x406dd0,_0x252a47,_0x26e7ea){const _0x153b3c=a9_0xcec854;_0x2df1a4[_0x153b3c(0xf8)](_0x406dd0,_0x252a47,_0x26e7ea);}function a9_0x3878(){const _0x37f65e=['text','Include\x20bidirectional\x20relations,\x20summary,\x20and\x20usage\x20hints\x20(default:\x20true)','ENDPOINT','Target\x20context:\x20\x22sdk\x22\x20(Frontend\x20SDK,\x20default)\x20or\x20\x22bff\x22\x20(Backend\x20Function).\x20SDK\x20returns\x20{execSuccess,\x20execResult}\x20wrapper;\x20BFF\x20returns\x20rows\x20directly.','close','list_sql_queries','generate_sdk_code','Execute\x20Custom\x20SQL','Server-side\x20fuzzy\x20match\x20by\x20sqlName','\x0a-\x20Use\x20list_bff_scripts\x20to\x20browse\x20scripts:\x20type=ENDPOINT\x20(default)\x20for\x20business\x20endpoints,\x20type=COMMON\x20for\x20shared\x20utility\x20functions\x0a-\x20Use\x20get_bff_script_info\x20to\x20read\x20full\x20source\x20code\x20of\x20a\x20specific\x20script\x0a-\x20save_or_update_bff_script\x20saves\x20script\x20via\x20toolbox\x20(server-side\x20submitter\x20check\x20+\x20automatic\x20cache\x20clearing)\x0a-\x20After\x20a\x20successful\x20save,\x20also\x20write\x20a\x20local\x20copy:\x20ENDPOINT\x20→\x20src/backend-function/endpoint/endpoint_<name>.js,\x20HOOK\x20→\x20src/backend-function/<tableName>/<tableName>_<hookName>.js\x0a-\x20If\x20save\x20returns\x20blocked:\x20true,\x20tell\x20the\x20user\x20to\x20operate\x20manually\x20on\x20the\x20platform,\x20do\x20NOT\x20retry','options','number','Dataset\x20ID\x20(numeric)\x20or\x20code\x20(UUID)','Backend\x20Function\x20write\x20tools\x20enabled\x20(--enable-bff-save)','SQL\x20parameters','env','Generate\x20SDK\x20Code','version','Database\x20ID\x20(optional)','Search\x20Datasets','message','7346608ydQZKi','record','SQL\x20code\x20from\x20list_sql_queries\x20->\x20sqlCode','logInfo','describe','execute_custom_sql','Include\x20table\x20relations\x20(default:\x20true)','22244mkzcGT','array','129EltVFW','login','Generate\x20SQL\x20Code','4RuMWXX','get_dataset_detail','registerTool','Page\x20number\x20(default:\x201)','Include\x20import\x20statements\x20(default:\x20true)','You\x20are\x20an\x20AI\x20assistant\x20helping\x20developers\x20work\x20with\x20the\x20Lovrabet\x20data\x20platform.\x0a\x0a##\x20Two\x20Runtime\x20Contexts:\x20Frontend\x20SDK\x20vs\x20Backend\x20Function\x20(BFF)\x0a\x0aLovrabet\x20has\x20two\x20code\x20execution\x20contexts\x20with\x20**identical\x20calling\x20methods\x20but\x20different\x20return\x20structures**:\x0a\x0a###\x20Frontend\x20TypeScript\x20SDK\x20(`@lovrabet/sdk`)\x0a-\x20Runs\x20in\x20browser/Node.js,\x20imported\x20via\x20`import\x20{\x20LovrabetClient\x20}\x20from\x20\x27@lovrabet/sdk\x27`\x0a-\x20Model\x20operations\x20return\x20unwrapped\x20data\x20on\x20success,\x20throw\x20LovrabetError\x20on\x20error\x0a-\x20SQL\x20execution\x20returns\x20wrapper:\x20`{\x20execSuccess,\x20execResult\x20}`\x0a\x0a###\x20Backend\x20Function\x20(BFF)\x0a-\x20Runs\x20on\x20Lovrabet\x20server,\x20function\x20signature:\x20`export\x20default\x20async\x20function(params,\x20context)\x20{\x20...\x20}`\x0a-\x20Use\x20`context.client`\x20to\x20access\x20the\x20same\x20SDK\x20methods\x0a-\x20Model\x20operations\x20behave\x20the\x20same\x20as\x20SDK\x0a-\x20**SQL\x20execution\x20returns\x20direct\x20array**\x20`T[]`,\x20errors\x20throw\x20exceptions\x20(no\x20wrapper)\x0a\x0a>\x20**CRITICAL**:\x20Always\x20ask\x20or\x20determine\x20which\x20context\x20the\x20user\x20is\x20working\x20in\x20before\x20generating\x20code.\x0a\x0a##\x20SDK\x20Usage\x20Patterns\x0a\x0a###\x20Model\x20Access\x20(SDK\x20>=\x201.2.0)\x0a-\x20Default:\x20`client.models.dataset_[code].filter()`\x0a-\x20Alias:\x20`client.models.[alias].filter()`\x20(check\x20user\x27s\x20createClient/registerModels\x20config\x20for\x20actual\x20alias)\x0a-\x20For\x20SDK\x20<\x201.2.0:\x20only\x20`client.models.[key]`\x20where\x20key\x20is\x20defined\x20in\x20createClient/registerModels\x0a\x0a###\x20SDK\x20Return\x20Value\x20Behavior\x0a-\x20**On\x20Success**:\x20Returns\x20ONLY\x20the\x20\x27data\x27\x20field\x20content\x20(e.g.,\x20`{\x20id:\x20123,\x20name:\x20\x22...\x22\x20}`)\x0a-\x20**On\x20Error**:\x20Throws\x20LovrabetError\x20with\x20`{\x20message,\x20status,\x20code,\x20data\x20}`\x0a-\x20**Always\x20use\x20try-catch**\x20when\x20calling\x20SDK\x20methods\x0a\x0a###\x20Data\x20Query\x20Best\x20Practices\x0a-\x20**filter**:\x20Most\x20flexible,\x20supports\x20complex\x20WHERE\x20conditions,\x20pagination,\x20sorting\x20—\x20use\x20this\x20for\x20queries\x0a-\x20**getOne**:\x20Single\x20record\x20by\x20primary\x20key\x20ID\x20only\x0a-\x20**getList**:\x20Simple\x20unfiltered\x20listing\x20(rarely\x20needed)\x0a\x0a##\x20Custom\x20SQL\x20Execution\x0a\x0a###\x20Frontend\x20SDK\x0a```typescript\x0aconst\x20data\x20=\x20await\x20client.sql.execute({\x20sqlCode:\x20\x27xxx\x27,\x20params:\x20{\x20key:\x20\x27value\x27\x20}\x20});\x0aif\x20(!data.execSuccess)\x20throw\x20new\x20Error(\x27SQL\x20execution\x20failed\x27);\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];\x0a```\x0a\x0a###\x20Backend\x20Function\x20(BFF)\x0a```javascript\x0a//\x20context.client.sql.execute\x20returns\x20rows\x20directly\x20—\x20NO\x20wrapper\x20object\x0aconst\x20rows\x20=\x20await\x20context.client.sql.execute({\x20sqlCode:\x20\x27xxx\x27,\x20params:\x20{\x20key:\x20\x27value\x27\x20}\x20});\x0a//\x20rows\x20is\x20T[]\x20directly,\x20errors\x20throw\x20exceptions\x0a```\x0a\x0a>\x20Note:\x20`client.api.executeSql()`\x20is\x20deprecated.\x20Use\x20`client.sql.execute()`.\x0a\x0a##\x20MyBatis\x20Dynamic\x20SQL\x0aSQL\x20content\x20supports\x20MyBatis\x20syntax:\x20`#{param}`,\x20`<if\x20test=\x22\x22>`,\x20`<where>`,\x20`<foreach>`.\x0aUse\x20`<\x20>\x20&`\x20for\x20<\x20>\x20&\x20in\x20SQL\x20content\x20(not\x20in\x20`<if\x20test=\x22\x22>`\x20attributes).\x0a\x0a##\x20Workflow\x20Tips\x0a-\x20Use\x20list_datasets\x20to\x20discover\x20available\x20datasets\x0a-\x20Use\x20get_dataset_detail\x20to\x20see\x20fields,\x20operations,\x20and\x20database\x20info\x20(dbId)\x0a-\x20Use\x20generate_sdk_code\x20to\x20get\x20ready-to-use\x20TypeScript\x20code\x0a-\x20Use\x20list_sql_queries\x20to\x20find\x20existing\x20custom\x20SQLs\x20before\x20creating\x20new\x20ones\x0a-\x20validate_sql_content\x20before\x20save_or_update_custom_sql\x0a-\x20save_or_update_custom_sql\x20routes\x20through\x20toolbox;\x20DELETE/DDL\x20are\x20blocked;\x20if\x20blocked=true\x20(last\x20submitter\x20conflict)\x20tell\x20the\x20user\x20to\x20operate\x20manually,\x20do\x20NOT\x20retry;\x20after\x20a\x20successful\x20save\x20also\x20write\x20a\x20local\x20copy\x20to\x20src/custom_sql/<sqlName>.sql\x0a-\x20generate_sql_code\x20supports\x20target=\x27sdk\x27\x20(default)\x20or\x20target=\x27bff\x27\x20for\x20context-appropriate\x20code','validate_sql_content','Conflict\x20detection\x20is\x20handled\x20server-side\x20by\x20toolbox','3164220mSvfek','Server\x20started\x20successfully','mcpServer','List\x20Backend\x20Functions','boolean','9810261HfgzXC','Client-side\x20filter\x20by\x20name/description/content','List\x20Datasets','server','../package.json','Dataset\x20code/ID','List\x20all\x20available\x20custom\x20SQL\x20queries\x20with\x20metadata\x20and\x20parameters.','Lovrabet\x20Dataset\x20MCP\x20Server','sdk','SQL\x20ID\x20(kept\x20for\x20backward\x20compatibility,\x20not\x20used\x20by\x20toolbox)','Execute\x20a\x20custom\x20SQL\x20query\x20by\x20sqlCode.\x20Get\x20sqlCode\x20from\x20list_sql_queries\x20first.','Get\x20detailed\x20Backend\x20Function\x20script\x20including\x20full\x20source\x20code.','Known\x20sqlCode\x20—\x20use\x20to\x20directly\x20target\x20the\x20record\x20for\x20update,\x20skipping\x20name\x20lookup','638082YCxdOw','Get\x20list\x20of\x20all\x20API\x20operations\x20for\x20a\x20dataset.\x20Prefer\x20\x22filter\x22\x20for\x20queries,\x20\x22getOne\x22\x20for\x20single\x20record\x20by\x20ID.','Full\x20JavaScript/TypeScript\x20source\x20code.\x20Any\x20length\x20is\x20supported.','Unknown\x20error\x20occurred','optional','Login\x20to\x20Lovrabet\x20to\x20authenticate\x20for\x20dataset\x20queries.','lovrabet-dataset-mcp','Login','enum','generate_sql_code','SQL\x20code\x20from\x20list_sql_queries\x20(must\x20exist)','Validate\x20SQL\x20content\x20without\x20saving.\x20Detects\x20SQL\x20type\x20(SELECT/INSERT/UPDATE/DELETE/DDL)\x20and\x20validates\x20table/column\x20existence.\x20Supports\x20MyBatis\x20syntax.','registerAllTools','min','get_operation_detail','union','Example\x20parameter\x20values','Dataset\x20codes\x20to\x20validate\x20against','Get\x20Dataset\x20Detail','Get\x20Backend\x20Function\x20Info','log','Get\x20detailed\x20operation\x20information\x20including\x20request/response\x20examples.','Script\x20type:\x20ENDPOINT\x20(business\x20API\x20endpoints,\x20default)\x20or\x20COMMON\x20(shared\x20utility\x20functions)','List\x20Backend\x20Function\x20scripts.\x20Use\x20type=ENDPOINT\x20(default)\x20for\x20business\x20API\x20endpoints,\x20type=COMMON\x20for\x20shared/public\x20utility\x20functions\x20that\x20can\x20be\x20imported\x20by\x20other\x20scripts.','Get\x20detailed\x20dataset\x20information\x20including\x20fields,\x20operations,\x20and\x20bidirectional\x20relations\x20(outgoing\x20+\x20incoming).\x20Returns\x20_relations\x20(structured\x20graph\x20edges),\x20_relationsSummary\x20(natural\x20language\x20overview),\x20and\x20_usageHints\x20(actionable\x20advice\x20based\x20on\x20the\x20dataset\x27s\x20position\x20in\x20the\x20relation\x20graph).','Items\x20per\x20page\x20(default:\x20999)','list_datasets','Validate\x20SQL\x20Content','Operation\x20name\x20(e.g.,\x20filter,\x20getOne,\x20create,\x20update)','Save\x20or\x20Update\x20Custom\x20SQL','545510iCxgrI','Save\x20or\x20update\x20a\x20Backend\x20Function\x20script\x20via\x20toolbox\x20(server-side\x20submitter\x20check\x20+\x20automatic\x20cache\x20clearing).\x20On\x20success,\x20also\x20write\x20a\x20local\x20copy:\x20ENDPOINT\x20→\x20src/backend-function/endpoint/endpoint_<name>.js,\x20HOOK\x20→\x20src/backend-function/<tableName>/<tableName>_<hookName>.js,\x20COMMON\x20→\x20src/backend-function/common/common_<name>.js.\x20If\x20blocked=true\x20(last\x20submitter\x20conflict),\x20do\x20NOT\x20retry.\x20Pass\x20scriptContent\x20as\x20a\x20plain\x20string\x20with\x20the\x20complete\x20source\x20code\x20—\x20any\x20length\x20is\x20supported.\x20For\x20COMMON\x20scripts,\x20set\x20scriptType\x20to\x20\x22COMMON\x22.','461503blYiHI','get_bff_script_info','COMMON','Use\x20camelCase\x20alias\x20instead\x20of\x20dataset_[code]\x20pattern\x20(default:\x20false)','Authentication\x20cookie\x20(optional,\x20uses\x20stored\x20cookie\x20from\x20login\x20if\x20not\x20provided)','Search\x20keyword','stringify','Application\x20code\x20(optional\x20if\x20LOVRABET_APP_CODE\x20env\x20var\x20is\x20set)','Backend\x20Function\x20ID\x20(from\x20list_bff_scripts)','get_dataset_operations','search_datasets','Environment\x20(optional,\x20uses\x20LOVRABET_ENV\x20or\x20defaults\x20to\x20online)','string','bffSaveEnabled','20LoNNvF','Exported\x20default\x20function\x20name\x20(e.g.\x20\x22getCompanyList\x22).\x20Parse\x20from\x20scriptContent\x20by\x20matching\x20`export\x20default\x20[async]\x20function\x20<name>`.\x20Required\x20by\x20toolbox\x20—\x20if\x20omitted,\x20toolbox\x20will\x20reject\x20the\x20request.','Search\x20datasets\x20by\x20keyword\x20(searches\x20in\x20name,\x20table\x20name,\x20code,\x20and\x20description).','save_or_update_bff_script','connect','SQL\x20content\x20to\x20validate','bff','MCP_DEBUG'];a9_0x3878=function(){return _0x37f65e;};return a9_0x3878();}function wrapHandler(_0x177cbc){return async _0x5bb6a5=>{const _0x11c094=a9_0x5e5f;try{const _0x2d57b3=await _0x177cbc(_0x5bb6a5);return{'content':[{'type':_0x11c094(0xd5),'text':JSON[_0x11c094(0xc5)](_0x2d57b3,null,0x2)}]};}catch(_0x4bcd3d){return{'content':[{'type':'text','text':JSON['stringify']({'error':!![],'message':_0x4bcd3d[_0x11c094(0xe9)]||_0x11c094(0xa2)},null,0x2)}],'isError':!![]};}};}export class LovrabetDatasetMCPServer{['mcpServer'];['options'];constructor(_0x114e39={}){const _0x17939b=a9_0xcec854;this[_0x17939b(0xdf)]=_0x114e39,this['mcpServer']=new McpServer({'name':_0x17939b(0xa5),'version':packageJson[_0x17939b(0xe6)]},{'capabilities':{'tools':{}},'instructions':buildInstructions(_0x114e39)}),this[_0x17939b(0xab)]();}['registerAllTools'](){const _0x38da10=a9_0xcec854;registerToolWithOptions(this['mcpServer'],_0x38da10(0xf4),{'title':_0x38da10(0xa6),'description':_0x38da10(0xa4),'inputSchema':{'env':z['enum'](['online','daily'])['optional']()[_0x38da10(0xee)](_0x38da10(0xca))},'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(login)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xb9),{'title':_0x38da10(0x94),'description':'Get\x20list\x20of\x20all\x20datasets\x20with\x20metadata\x20and\x20table\x20relations\x20(ER\x20Config).\x20Use\x20includeRelations:\x20false\x20for\x20faster\x20response.','inputSchema':{...authSchema,'forceRefresh':z[_0x38da10(0x91)]()['optional']()[_0x38da10(0xee)]('Bypass\x20cache\x20(default:\x20false)'),'includeRelations':z[_0x38da10(0x91)]()['optional']()[_0x38da10(0xee)](_0x38da10(0xf0))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listDatasets)),registerToolWithOptions(this['mcpServer'],_0x38da10(0xc9),{'title':_0x38da10(0xe8),'description':_0x38da10(0xcf),'inputSchema':{...authSchema,'keyword':z[_0x38da10(0xcb)]()[_0x38da10(0xee)](_0x38da10(0xc4))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(searchDatasets)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xf7),{'title':_0x38da10(0xb1),'description':_0x38da10(0xb7),'inputSchema':{...authSchema,'datasetCode':z['string']()[_0x38da10(0xee)](_0x38da10(0xe1)),'forceRefresh':z[_0x38da10(0x91)]()['optional']()['describe']('Bypass\x20cache\x20(default:\x20false)'),'includeRelations':z['boolean']()[_0x38da10(0xa3)]()[_0x38da10(0xee)](_0x38da10(0xd6))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getDatasetDetail)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xc8),{'title':'Get\x20Operations','description':_0x38da10(0xa0),'inputSchema':{...authSchema,'datasetCode':z[_0x38da10(0xcb)]()[_0x38da10(0xee)](_0x38da10(0xe1))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getDatasetOperations)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xad),{'title':'Get\x20Operation\x20Detail','description':_0x38da10(0xb4),'inputSchema':{...authSchema,'datasetCode':z[_0x38da10(0xcb)]()[_0x38da10(0xee)](_0x38da10(0x97)),'operationName':z['string']()['describe']('Operation\x20name\x20(e.g.,\x20filter,\x20getOne,\x20create,\x20update)')},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getOperationDetail)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xdb),{'title':_0x38da10(0xe5),'description':'Generate\x20TypeScript\x20SDK\x20code\x20for\x20a\x20dataset\x20operation,\x20including\x20field\x20metadata.\x20Check\x20user\x27s\x20@lovrabet/sdk\x20version\x20in\x20package.json\x20first.','inputSchema':{...authSchema,'datasetCode':z[_0x38da10(0xcb)]()[_0x38da10(0xee)]('Dataset\x20code/ID'),'operationName':z[_0x38da10(0xcb)]()['describe'](_0x38da10(0xbb)),'includeImports':z['boolean']()[_0x38da10(0xa3)]()[_0x38da10(0xee)]('Include\x20import\x20statements\x20(default:\x20true)'),'useAlias':z[_0x38da10(0x91)]()[_0x38da10(0xa3)]()[_0x38da10(0xee)](_0x38da10(0xc2))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(generateSDKCode)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xda),{'title':'List\x20SQL\x20Queries','description':_0x38da10(0x98),'inputSchema':{...authSchema,'keyword':z['string']()['optional']()[_0x38da10(0xee)](_0x38da10(0x93)),'category':z['string']()[_0x38da10(0xa3)]()[_0x38da10(0xee)]('Client-side\x20filter\x20by\x20category'),'sqlCode':z['string']()[_0x38da10(0xa3)]()[_0x38da10(0xee)]('Server-side\x20fuzzy\x20match\x20by\x20sqlCode'),'sqlName':z[_0x38da10(0xcb)]()['optional']()[_0x38da10(0xee)](_0x38da10(0xdd)),'pageSize':z[_0x38da10(0xe0)]()[_0x38da10(0xa3)]()['describe'](_0x38da10(0xb8)),'currentPage':z[_0x38da10(0xe0)]()['optional']()[_0x38da10(0xee)](_0x38da10(0xf9))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listSqlQueries)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xef),{'title':_0x38da10(0xdc),'description':_0x38da10(0x9c),'inputSchema':{...authSchema,'sqlCode':z['string']()['min'](0x1)[_0x38da10(0xee)](_0x38da10(0xec)),'params':z[_0x38da10(0xeb)](z[_0x38da10(0xae)]([z[_0x38da10(0xcb)](),z[_0x38da10(0xe0)]()]))[_0x38da10(0xa3)]()['describe'](_0x38da10(0xe3))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(executeCustomSql)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xa8),{'title':_0x38da10(0xf5),'description':'Generate\x20code\x20for\x20a\x20custom\x20SQL\x20query.\x20Validates\x20sqlCode\x20exists\x20first.\x20Use\x20target\x20to\x20switch\x20between\x20Frontend\x20SDK\x20and\x20Backend\x20Function\x20code\x20patterns.','inputSchema':{...authSchema,'sqlCode':z[_0x38da10(0xcb)]()[_0x38da10(0xac)](0x1)[_0x38da10(0xee)](_0x38da10(0xa9)),'params':z[_0x38da10(0xeb)](z[_0x38da10(0xae)]([z['string'](),z[_0x38da10(0xe0)]()]))[_0x38da10(0xa3)]()['describe'](_0x38da10(0xaf)),'includeImports':z[_0x38da10(0x91)]()[_0x38da10(0xa3)]()['describe'](_0x38da10(0xfa)),'target':z['enum']([_0x38da10(0x9a),_0x38da10(0xd3)])[_0x38da10(0xa3)]()['describe'](_0x38da10(0xd8))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(generateSqlCode)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xfc),{'title':_0x38da10(0xba),'description':_0x38da10(0xaa),'inputSchema':{...authSchema,'sqlContent':z[_0x38da10(0xcb)]()[_0x38da10(0xac)](0x1)[_0x38da10(0xee)](_0x38da10(0xd2)),'dbId':z[_0x38da10(0xe0)]()[_0x38da10(0xa3)]()['describe'](_0x38da10(0xe7)),'validateSchemas':z[_0x38da10(0xf2)](z[_0x38da10(0xcb)]())[_0x38da10(0xa3)]()[_0x38da10(0xee)](_0x38da10(0xb0))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(validateSqlContent)),registerToolWithOptions(this[_0x38da10(0x8f)],'save_or_update_custom_sql',{'title':_0x38da10(0xbc),'description':'Save\x20or\x20update\x20a\x20custom\x20SQL\x20query\x20via\x20toolbox.\x20SELECT\x20/\x20INSERT\x20/\x20UPDATE\x20/\x20WITH\x20are\x20auto-saved;\x20DELETE\x20and\x20DDL\x20are\x20blocked\x20—\x20write\x20a\x20local\x20draft\x20file\x20and\x20tell\x20the\x20user\x20to\x20operate\x20manually.\x20If\x20blocked=true\x20(last\x20submitter\x20conflict),\x20do\x20NOT\x20retry.\x20On\x20success,\x20also\x20write\x20a\x20local\x20copy\x20to\x20src/custom_sql/<sqlName>.sql.\x20Supports\x20MyBatis\x20syntax.\x20Get\x20dbId\x20from\x20get_dataset_detail.','inputSchema':{...authSchema,'sqlName':z[_0x38da10(0xcb)]()[_0x38da10(0xa3)]()['describe']('SQL\x20name/label\x20(optional;\x20MCP\x20auto-extracts\x20from\x20@lovrabet.sqlName\x20comment,\x20or\x20toolbox\x20generates\x20fallback)'),'sqlCode':z[_0x38da10(0xcb)]()[_0x38da10(0xa3)]()['describe'](_0x38da10(0x9e)),'dbId':z['number']()['optional']()[_0x38da10(0xee)]('Database\x20ID\x20from\x20get_dataset_detail\x20—\x20required\x20when\x20creating\x20new\x20SQL,\x20optional\x20when\x20updating'),'sqlContent':z['string']()[_0x38da10(0xac)](0x1)[_0x38da10(0xee)]('SQL\x20content\x20(SELECT/INSERT/UPDATE/WITH\x20auto-saved;\x20DELETE/DDL\x20blocked).\x20Supports\x20MyBatis\x20syntax.'),'id':z['number']()['optional']()[_0x38da10(0xee)](_0x38da10(0x9b))},'annotations':{'readOnlyHint':![],'destructiveHint':![],'idempotentHint':![]}},wrapHandler(saveOrUpdateCustomSql)),this[_0x38da10(0xdf)]['bffSaveEnabled']&&(registerToolWithOptions(this['mcpServer'],'list_bff_scripts',{'title':_0x38da10(0x90),'description':_0x38da10(0xb6),'inputSchema':{...authSchema,'type':z[_0x38da10(0xa7)]([_0x38da10(0xd7),'COMMON'])[_0x38da10(0xa3)]()[_0x38da10(0xee)](_0x38da10(0xb5))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(listBffScripts)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xc0),{'title':_0x38da10(0xb2),'description':_0x38da10(0x9d),'inputSchema':{...authSchema,'id':z[_0x38da10(0xe0)]()[_0x38da10(0xee)](_0x38da10(0xc7))},'annotations':{'readOnlyHint':!![],'destructiveHint':![],'idempotentHint':!![]}},wrapHandler(getBffScriptInfo)),registerToolWithOptions(this[_0x38da10(0x8f)],_0x38da10(0xd0),{'title':'Save\x20or\x20Update\x20Backend\x20Function','description':_0x38da10(0xbe),'inputSchema':{...authSchema,'id':z[_0x38da10(0xe0)]()[_0x38da10(0xa3)]()[_0x38da10(0xee)]('Backend\x20Function\x20ID\x20(for\x20updating).\x20Omit\x20when\x20creating\x20new.'),'description':z[_0x38da10(0xcb)]()[_0x38da10(0xac)](0x1)[_0x38da10(0xee)]('Function\x20description'),'scriptName':z[_0x38da10(0xcb)]()['optional']()[_0x38da10(0xee)](_0x38da10(0xce)),'scriptContent':z['string']()[_0x38da10(0xac)](0x1)[_0x38da10(0xee)](_0x38da10(0xa1)),'scriptType':z[_0x38da10(0xa7)]([_0x38da10(0xd7),_0x38da10(0xc1)])[_0x38da10(0xee)]('Script\x20type\x20(required):\x20ENDPOINT\x20for\x20business\x20API\x20endpoints\x20that\x20frontend\x20calls\x20via\x20client.bff.execute(),\x20COMMON\x20for\x20shared\x20utility\x20functions\x20that\x20other\x20BFF\x20scripts\x20import\x20and\x20reuse.\x20Analyze\x20the\x20script\x20purpose\x20carefully\x20before\x20choosing.')},'annotations':{'readOnlyHint':![],'destructiveHint':!![],'idempotentHint':![]}},wrapHandler(saveOrUpdateBffScript)));}get[a9_0xcec854(0x95)](){const _0x2f2a6e=a9_0xcec854;return this[_0x2f2a6e(0x8f)];}async[a9_0xcec854(0xd1)](_0x303c19){await this['mcpServer']['connect'](_0x303c19);}async['close'](){const _0x4c7541=a9_0xcec854;await this[_0x4c7541(0x8f)][_0x4c7541(0xd9)]();}[a9_0xcec854(0xed)](){const _0x5bcf65=a9_0xcec854;if(!process[_0x5bcf65(0xe4)][_0x5bcf65(0xd4)])return;console[_0x5bcf65(0xb3)](_0x5bcf65(0x99)),console[_0x5bcf65(0xb3)]('Version:\x20'+packageJson[_0x5bcf65(0xe6)]),console[_0x5bcf65(0xb3)](_0x5bcf65(0x8e)),this[_0x5bcf65(0xdf)][_0x5bcf65(0xcc)]&&(console[_0x5bcf65(0xb3)](_0x5bcf65(0xe2)),console['log'](_0x5bcf65(0xfd)));}}function buildInstructions(_0x6eb5b9){const _0x10a34a=a9_0xcec854,_0x5e1a2c=_0x6eb5b9[_0x10a34a(0xcc)]===!![],_0x5078f6=_0x5e1a2c?_0x10a34a(0xde):'';return _0x10a34a(0xfb)+_0x5078f6+'\x0a';}export function createServer(_0x4a3f8c){return new LovrabetDatasetMCPServer(_0x4a3f8c);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a10_0x3397(){const _0xb68f06=['SQL\x20executed\x20successfully.\x20Returned\x20','trim','ERR','success','now','executeSql','1378143KhgXwu','10373928YlkQGo','keys','10525bmwxqq','SQL\x20execution\x20failed\x20without\x20error\x20message','errorMsg','isArray','execError','UNKNOWN','SQL\x20execution\x20failed\x20[','length','message','execSuccess','4455312CwPudu','API\x20call\x20failed:\x20','Unknown\x20error','102184fStTAT','302HpMQPD',']:\x20','SQL\x20execution\x20failed:\x20','3782NsseKx','execResult','2228gTtdaq','6325260ZmMFOU','errorCode','854heJCRY','data','33iSIWvA'];a10_0x3397=function(){return _0xb68f06;};return a10_0x3397();}(function(_0x3417ab,_0x13e25e){const _0x5c052f=a10_0x4f1d,_0x4463c8=_0x3417ab();while(!![]){try{const _0x3a7a7c=parseInt(_0x5c052f(0x10f))/0x1*(-parseInt(_0x5c052f(0x10c))/0x2)+parseInt(_0x5c052f(0x108))/0x3+-parseInt(_0x5c052f(0x111))/0x4*(parseInt(_0x5c052f(0x120))/0x5)+parseInt(_0x5c052f(0x11e))/0x6+parseInt(_0x5c052f(0x114))/0x7*(parseInt(_0x5c052f(0x10b))/0x8)+-parseInt(_0x5c052f(0x11d))/0x9+parseInt(_0x5c052f(0x112))/0xa*(-parseInt(_0x5c052f(0x116))/0xb);if(_0x3a7a7c===_0x13e25e)break;else _0x4463c8['push'](_0x4463c8['shift']());}catch(_0x20d094){_0x4463c8['push'](_0x4463c8['shift']());}}}(a10_0x3397,0xeecce));import{DevApiClient}from'../api/dev-api-client.js';import{getEnvAppCode}from'../config/env.js';function a10_0x4f1d(_0x50045c,_0x52cd23){_0x50045c=_0x50045c-0x105;const _0x339781=a10_0x3397();let _0x4f1dfe=_0x339781[_0x50045c];return _0x4f1dfe;}export async function executeCustomSql(_0x5cdae9){const _0x4e1bba=a10_0x4f1d,_0xfea2b7=Date[_0x4e1bba(0x11b)](),{appCode:appCode=getEnvAppCode(),cookie:_0xbcc99b,sqlCode:_0x1dcc10,params:_0x205f76}=_0x5cdae9;if(!appCode)throw new Error('appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.');if(!_0x1dcc10||_0x1dcc10[_0x4e1bba(0x118)]()==='')throw new Error('sqlCode\x20is\x20required.\x20Get\x20it\x20from\x20list_sql_queries\x20->\x20sqlCode');const _0x426c60=new DevApiClient({'appCode':appCode,'cookie':_0xbcc99b}),_0x414b6f=_0x205f76&&Object[_0x4e1bba(0x11f)](_0x205f76)[_0x4e1bba(0x105)]>0x0,_0x2aeb6d=_0x414b6f?Object[_0x4e1bba(0x11f)](_0x205f76):[],_0x2741b4={'sqlCode':_0x1dcc10,'hasParams':_0x414b6f||![],'paramNames':_0x2aeb6d||[]};try{const _0x2fd369=await _0x426c60[_0x4e1bba(0x11c)]({'sqlCode':_0x1dcc10[_0x4e1bba(0x118)](),'params':_0x205f76}),_0xe3ca90=Date[_0x4e1bba(0x11b)]()-_0xfea2b7,_0x3d8920=_0x2fd369[_0x4e1bba(0x11a)]??![],_0x38136b=_0x2fd369[_0x4e1bba(0x113)];if(!_0x3d8920){const _0x4dddd8=_0x2fd369[_0x4e1bba(0x122)]||_0x2fd369['msg']||_0x4e1bba(0x10a);return{'success':![],'execSuccess':![],'execError':_0x4dddd8,'errorCode':_0x38136b||_0x4e1bba(0x125),'message':_0x4e1bba(0x126)+(_0x38136b||_0x4e1bba(0x119))+_0x4e1bba(0x10d)+_0x4dddd8,'executionTime':_0xe3ca90,'sqlInfo':_0x2741b4};}const _0x333cf4=_0x2fd369[_0x4e1bba(0x115)]||_0x2fd369,_0x41de19=_0x333cf4[_0x4e1bba(0x107)]??_0x333cf4['success']??!![],_0x1e7845=_0x333cf4[_0x4e1bba(0x110)]||_0x333cf4[_0x4e1bba(0x115)],_0x17eed5=_0x333cf4[_0x4e1bba(0x124)]||_0x333cf4[_0x4e1bba(0x122)];if(_0x41de19){const _0x3b76ad=Array[_0x4e1bba(0x123)](_0x1e7845)?_0x1e7845[_0x4e1bba(0x105)]:0x0;return{'success':!![],'execSuccess':!![],'execResult':_0x1e7845||[],'rowCount':_0x3b76ad,'message':_0x4e1bba(0x117)+_0x3b76ad+'\x20row(s).','executionTime':_0xe3ca90,'sqlInfo':_0x2741b4};}return{'success':!![],'execSuccess':![],'execError':_0x17eed5||_0x4e1bba(0x121),'message':_0x4e1bba(0x10e)+(_0x17eed5||_0x4e1bba(0x10a)),'executionTime':_0xe3ca90,'sqlInfo':_0x2741b4};}catch(_0x5cdfdb){const _0x23b34b=Date['now']()-_0xfea2b7;return{'success':![],'execSuccess':![],'execError':_0x5cdfdb[_0x4e1bba(0x106)]||_0x4e1bba(0x10a),'message':_0x4e1bba(0x109)+(_0x5cdfdb[_0x4e1bba(0x106)]||_0x4e1bba(0x10a)),'executionTime':_0x23b34b,'sqlInfo':_0x2741b4};}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x2c24f7,_0x487aba){const _0x1bc64e=a11_0x5265,_0x159db9=_0x2c24f7();while(!![]){try{const _0x284840=parseInt(_0x1bc64e(0x12b))/0x1+parseInt(_0x1bc64e(0x129))/0x2*(-parseInt(_0x1bc64e(0x116))/0x3)+-parseInt(_0x1bc64e(0x11f))/0x4+-parseInt(_0x1bc64e(0x121))/0x5*(parseInt(_0x1bc64e(0x120))/0x6)+-parseInt(_0x1bc64e(0x10e))/0x7+-parseInt(_0x1bc64e(0x10f))/0x8*(parseInt(_0x1bc64e(0x113))/0x9)+parseInt(_0x1bc64e(0x10d))/0xa;if(_0x284840===_0x487aba)break;else _0x159db9['push'](_0x159db9['shift']());}catch(_0x1526c3){_0x159db9['push'](_0x159db9['shift']());}}}(a11_0x4193,0xd6187));import{DevApiClient}from'../api/dev-api-client.js';import{DrivenDataDetailPlus}from'@lovrabet/dsparser';import{getEnvAppCode,getEnvironment}from'../config/env.js';import{buildFieldRelationsMap,enrichFieldsWithRelations}from'../utils/relations.js';function a11_0x5265(_0x54f94a,_0x4e29aa){_0x54f94a=_0x54f94a-0x10c;const _0x4193d3=a11_0x4193();let _0x526511=_0x4193d3[_0x54f94a];return _0x526511;}export async function generateSDKCode(_0x5ad098){const _0x535a3c=a11_0x5265,{appCode:appCode=getEnvAppCode(),cookie:_0x2f05c0,datasetCode:_0x1cf2af,operationName:_0x25b447,includeImports:includeImports=!![],useAlias:useAlias=![]}=_0x5ad098;if(!appCode)throw new Error(_0x535a3c(0x10c));if(!_0x1cf2af)throw new Error(_0x535a3c(0x125));if(!_0x25b447)throw new Error('operationName\x20is\x20required');const _0x333b8f=new DevApiClient({'appCode':appCode,'cookie':_0x2f05c0}),_0x480776=getEnvironment(),_0x50cba7=await _0x333b8f[_0x535a3c(0x110)](_0x1cf2af),_0x42a0c3=_0x50cba7[_0x535a3c(0x114)]||_0x50cba7,_0x5b8219=new DrivenDataDetailPlus(_0x42a0c3),_0x472d4d=_0x5b8219[_0x535a3c(0x117)](_0x25b447);if(!_0x472d4d)throw new Error(_0x535a3c(0x112)+_0x25b447+'\x27\x20in\x20dataset\x20\x27'+_0x1cf2af+'\x27');const _0x4975d4=_0x5b8219[_0x535a3c(0x123)](),_0x3476fc=_0x5b8219['getModelAlias'](),_0x256e90=_0x5b8219['getTableKey'](),_0x27f062=_0x5b8219[_0x535a3c(0x11a)](),_0xc07b4=_0x5b8219['name'],_0x4610b1=_0x5b8219[_0x535a3c(0x11e)](),_0x3cd6ef=_0x4610b1?.[_0x535a3c(0x128)]?.()||[],_0x5b61f3=buildFieldRelationsMap(_0x50cba7),_0x477338=enrichFieldsWithRelations(_0x3cd6ef,_0x5b61f3),_0x184d20=_0x5b8219[_0x535a3c(0x11b)](_0x25b447,appCode),_0x1b59f5=_0x5b8219['getOperationAnalysis'](_0x25b447);let _0x5bc707=_0x472d4d['sdkCall'][_0x535a3c(0x122)],_0x529773=_0x184d20||undefined;useAlias&&(_0x5bc707=_0x5bc707[_0x535a3c(0x111)](new RegExp(_0x4975d4,'g'),_0x3476fc),_0x529773&&(_0x529773=_0x529773[_0x535a3c(0x111)](new RegExp(_0x4975d4,'g'),_0x3476fc)));const _0x8ff0a4=_0x535a3c(0x11d)+_0xc07b4+'\x20|\x20数据表:\x20'+_0x27f062+'\x0a',_0x17d34d=_0x8ff0a4+_0x5bc707,_0x1dc7e7=_0x529773?_0x535a3c(0x11d)+_0xc07b4+_0x535a3c(0x119)+_0x27f062+'\x0a'+_0x529773:undefined;return{'appCode':appCode,'env':_0x480776,'datasetName':_0xc07b4,'language':_0x535a3c(0x11c),'code':_0x17d34d,'fullExample':includeImports?_0x1dc7e7:undefined,'sdkCallInfo':{'modelName':_0x3476fc,'tableName':_0x27f062,'tableKey':_0x256e90,'datasetCode':_0x5b8219[_0x535a3c(0x127)],'operationName':_0x25b447},'fields':_0x477338,'requestExample':_0x1b59f5?.[_0x535a3c(0x115)],'responseExample':_0x1b59f5?.[_0x535a3c(0x12a)],'sdkInitCode':_0x5b8219[_0x535a3c(0x118)](_0x256e90),'usageExample':_0x472d4d[_0x535a3c(0x126)],'aliasExplanation':useAlias?_0x5b8219[_0x535a3c(0x124)]():undefined,'aliasHint':{'defaultAlias':_0x3476fc,'datasetSDKKey':_0x4975d4}};}function a11_0x4193(){const _0x3b3120=['generateAliasExplanation','datasetCode\x20is\x20required','usageExample','datasetCode','toJSON','308VtKCzV','responseExample','1671896okKWGR','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','38804850dIGzrw','6673429bHAFDE','3383008UTojPh','getDatasetDetail','replace','Cannot\x20generate\x20SDK\x20code\x20for\x20operation\x20\x27','9YwRywY','data','requestExample','6915MNovzp','getOperationDocMeta','generateSDKInitCode','\x20|\x20数据表:\x20','getTableName','generateFullSDKExample','typescript','//\x20数据集:\x20','getFieldList','5720036RhlJmg','18WOeNOh','2523740sifEfA','code','getDatasetSDKKey'];a11_0x4193=function(){return _0x3b3120;};return a11_0x4193();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x36b02e,_0x49101d){const _0x556696=a12_0x5b15,_0x61e110=_0x36b02e();while(!![]){try{const _0x3b8df0=parseInt(_0x556696(0x1b5))/0x1*(parseInt(_0x556696(0x1a0))/0x2)+-parseInt(_0x556696(0x176))/0x3+parseInt(_0x556696(0x1ac))/0x4+-parseInt(_0x556696(0x179))/0x5*(parseInt(_0x556696(0x1b7))/0x6)+parseInt(_0x556696(0x180))/0x7*(-parseInt(_0x556696(0x1ad))/0x8)+-parseInt(_0x556696(0x1a7))/0x9*(-parseInt(_0x556696(0x1b2))/0xa)+-parseInt(_0x556696(0x187))/0xb;if(_0x3b8df0===_0x49101d)break;else _0x61e110['push'](_0x61e110['shift']());}catch(_0x26bd53){_0x61e110['push'](_0x61e110['shift']());}}}(a12_0x44ba,0x735bc));import{DevApiClient}from'../api/dev-api-client.js';import{getEnvAppCode,getEnvironment}from'../config/env.js';function a12_0x44ba(){const _0x3e6d58=['replace','page','9rkhRrT','//\x20Backend\x20Function:\x20Execute\x20SQL\x20\x22','map','Use\x20list_sql_queries\x20to\x20see\x20all\x20available\x20SQLs.','\x27,\x0a\x20\x20env:\x20\x27','2141396ZGQNaT','792OuZJFF','sql','\x22\x0aexport\x20default\x20async\x20function(params,\x20context)\x20{\x0a\x20\x20const\x20rows\x20=\x20await\x20context.client.sql.execute(','length','Failed\x20to\x20verify\x20SQL\x20code:\x20','4754660NaXeAp','entries','{\x20sqlCode:\x20\x27','3ugCmfm','\x0aconst\x20data\x20=\x20await\x20client.sql.execute(','192rauGGM','date','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','from','\x22\x20exists\x20and\x20is\x20valid.','349935CMHwIx','value','\x22\x20not\x20found\x20in\x20the\x20application.','34535EcKtAd','BFF\x20context.client.sql.execute()\x20returns\x20rows\x20T[]\x20directly\x20—\x20no\x20wrapper\x20object','sdk','Generated\x20',');\x0a\x0a\x20\x20//\x20rows\x20is\x20T[]\x20directly\x20—\x20no\x20wrapper,\x20errors\x20throw\x20exceptions\x0a\x20\x20console.log(`Retrieved\x20${rows.length}\x20rows`);\x0a\x0a\x20\x20return\x20{\x20data:\x20rows\x20};\x0a}','Check\x20the\x20sqlCode\x20from\x20list_sql_queries\x20result\x20and\x20use\x20the\x20exact\x20value.','getCustomSqlList','48454mLorAz','SQL\x20code\x20\x22','\x20code\x20for\x20SQL:\x20','includes','sqlId','Frontend\x20SDK','import\x20{\x20LovrabetClient\x20}\x20from\x20\x27@lovrabet/sdk\x27;\x0a\x0a','3636116VWbshx','keyword',');\x0a\x0a//\x20IMPORTANT:\x20SDK\x20returns\x20wrapper\x20—\x20check\x20execSuccess\x20before\x20using\x20results\x0aif\x20(!data.execSuccess)\x20{\x0a\x20\x20throw\x20new\x20Error(\x27SQL\x20execution\x20failed\x27);\x0a}\x0a\x0a//\x20Process\x20the\x20results\x0aconst\x20results\x20=\x20data.execResult\x20||\x20[];\x0aconsole.log(`Retrieved\x20${results.length}\x20rows`);\x0a\x0a//\x20Use\x20the\x20data\x0aresults.forEach((row:\x20any)\x20=>\x20{\x0a\x20\x20console.log(row);\x0a});','size','\x22\x20does\x20not\x20exist.\x20Use\x20list_sql_queries\x20to\x20find\x20valid\x20SQL\x20codes.','toLowerCase','sqlName','SDK\x20client.sql.execute()\x20returns\x20{\x20execSuccess,\x20execResult\x20}\x20—\x20always\x20check\x20execSuccess','sqlCode\x20is\x20required','data','trim','status','bff','join','\x27,\x0a});\x0a\x0a//\x20Execute\x20SQL:\x20','match','count','name','SQL-','time','find','search','message','Errors\x20throw\x20exceptions\x20—\x20use\x20try-catch','{\x0a\x20\x20sqlCode:\x20\x27','543464SnzxEF','stringify','Note:\x20client.api.executeSql()\x20is\x20deprecated.\x20Use\x20client.sql.execute()\x20instead.','example','sqlCode'];a12_0x44ba=function(){return _0x3e6d58;};return a12_0x44ba();}function a12_0x5b15(_0xd7945a,_0x25c39f){_0xd7945a=_0xd7945a-0x175;const _0x44baf4=a12_0x44ba();let _0x5b15d2=_0x44baf4[_0xd7945a];return _0x5b15d2;}export async function generateSqlCode(_0x235197){const _0xfa0af0=a12_0x5b15,{appCode:appCode=getEnvAppCode(),cookie:_0xc8262d,sqlCode:_0x5c42a9,params:_0x369bc8,includeImports:includeImports=!![],target:target=_0xfa0af0(0x17b)}=_0x235197;if(!appCode)throw new Error(_0xfa0af0(0x1b9));if(!_0x5c42a9||_0x5c42a9[_0xfa0af0(0x191)]()==='')return{'success':![],'sqlCode':'','sqlName':'','sqlExists':![],'code':'','usage':{'description':'','important':[]},'error':_0xfa0af0(0x18f)};const _0x4e0121=_0x5c42a9[_0xfa0af0(0x191)](),_0x427c80=new DevApiClient({'appCode':appCode,'cookie':_0xc8262d}),_0xaaf28f=getEnvironment();try{const _0x29c8a6=await _0x427c80[_0xfa0af0(0x17f)]({'pageSize':0x3e7,'currentPage':0x1,'sqlCode':_0x4e0121}),_0x1240dd=_0x29c8a6[_0xfa0af0(0x190)]?.['tableData']||[],_0x11deaa=_0x1240dd[_0xfa0af0(0x19b)](_0x175718=>_0x175718[_0xfa0af0(0x1a4)]===_0x4e0121||_0x175718[_0xfa0af0(0x1a4)]?.[_0xfa0af0(0x183)](_0x4e0121)||_0x4e0121[_0xfa0af0(0x183)](_0x175718['sqlCode']));if(!_0x11deaa)return{'success':![],'sqlCode':_0x4e0121,'sqlName':'','sqlExists':![],'code':'','usage':{'description':'','important':[_0xfa0af0(0x181)+_0x4e0121+_0xfa0af0(0x178),_0xfa0af0(0x1aa),_0xfa0af0(0x17e)]},'error':_0xfa0af0(0x181)+_0x4e0121+_0xfa0af0(0x18b)};const _0x5e4ac5=_0x11deaa[_0xfa0af0(0x1a4)],_0x371976=_0x11deaa[_0xfa0af0(0x18d)]||_0x11deaa[_0xfa0af0(0x198)]||_0xfa0af0(0x199)+(_0x11deaa[_0xfa0af0(0x184)]||_0x11deaa['id']),_0x439e93=_0x11deaa['sqlContent']||_0x11deaa[_0xfa0af0(0x1ae)]||'',_0x1f7704=_0x439e93[_0xfa0af0(0x196)](/[:$]\{?(\w+)\}?/g);let _0x49938a,_0x12ca3c;if(_0x1f7704){const _0x4bf479=Array[_0xfa0af0(0x1ba)](new Set(_0x1f7704[_0xfa0af0(0x1a9)](_0x4b2d8e=>_0x4b2d8e[_0xfa0af0(0x1a5)](/[:${}]/g,''))));_0x49938a=_0x4bf479[_0xfa0af0(0x1a9)](_0x4e4825=>{const _0x3862e9=_0x369bc8?.[_0x4e4825]??getDefaultExample(_0x4e4825);return{'name':_0x4e4825,'example':_0x3862e9};}),_0x12ca3c=_0x49938a['reduce']((_0x28d59e,_0x27fbcb)=>({..._0x28d59e,[_0x27fbcb[_0xfa0af0(0x198)]]:_0x27fbcb[_0xfa0af0(0x1a3)]}),{});}else _0x369bc8&&(_0x49938a=Object[_0xfa0af0(0x1b3)](_0x369bc8)[_0xfa0af0(0x1a9)](([_0x291a64,_0x32c055])=>({'name':_0x291a64,'example':_0x32c055})),_0x12ca3c=_0x369bc8);const _0x2562d4=_0x49938a&&_0x49938a[_0xfa0af0(0x1b0)]>0x0,_0x3f3be4=_0x2562d4?JSON[_0xfa0af0(0x1a1)](_0x12ca3c,null,0x2):'',_0x559250=_0x2562d4?_0xfa0af0(0x19f)+_0x5e4ac5+'\x27,\x0a\x20\x20params:\x20'+_0x3f3be4+',\x0a}':_0xfa0af0(0x1b4)+_0x5e4ac5+'\x27\x20}';let _0x5ead98;target==='bff'?_0x5ead98=_0xfa0af0(0x1a8)+_0x371976+_0xfa0af0(0x1af)+_0x559250+_0xfa0af0(0x17d):_0x5ead98=(includeImports?_0xfa0af0(0x186):'')+'//\x20Initialize\x20the\x20SDK\x20client\x0aconst\x20client\x20=\x20new\x20LovrabetClient({\x0a\x20\x20appCode:\x20\x27'+appCode+_0xfa0af0(0x1ab)+_0xaaf28f+_0xfa0af0(0x195)+_0x371976+_0xfa0af0(0x1b6)+_0x559250+_0xfa0af0(0x189);const _0x10d0ec=target===_0xfa0af0(0x193);return{'success':!![],'sqlCode':_0x5e4ac5,'sqlName':_0x371976,'sqlExists':!![],'code':_0x5ead98,'parameters':_0x49938a,'usage':{'description':_0xfa0af0(0x17c)+(_0x10d0ec?'Backend\x20Function':_0xfa0af0(0x185))+_0xfa0af0(0x182)+_0x371976,'important':[_0xfa0af0(0x181)+_0x5e4ac5+_0xfa0af0(0x175),_0x10d0ec?_0xfa0af0(0x17a):_0xfa0af0(0x18e),_0x10d0ec?_0xfa0af0(0x19e):'On\x20HTTP\x20error,\x20SDK\x20throws\x20LovrabetError\x20—\x20use\x20try-catch',_0x2562d4?'This\x20SQL\x20requires\x20parameters:\x20'+_0x49938a[_0xfa0af0(0x1a9)](_0x4b5c0b=>_0x4b5c0b[_0xfa0af0(0x198)])[_0xfa0af0(0x194)](',\x20'):'This\x20SQL\x20does\x20not\x20require\x20any\x20parameters',_0xfa0af0(0x1a2)]}};}catch(_0x9f6812){return{'success':![],'sqlCode':_0x4e0121,'sqlName':'','sqlExists':![],'code':'','usage':{'description':'','important':[_0xfa0af0(0x1b1)+_0x9f6812[_0xfa0af0(0x19d)],'Use\x20list_sql_queries\x20to\x20see\x20all\x20available\x20SQLs.']},'error':_0xfa0af0(0x1b1)+_0x9f6812['message']};}}function getDefaultExample(_0x34d469){const _0xee0af4=a12_0x5b15,_0x2c9f7b=_0x34d469[_0xee0af4(0x18c)]();if(_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x1b8))||_0x2c9f7b['includes'](_0xee0af4(0x19a)))return'2024-01-01';if(_0x2c9f7b[_0xee0af4(0x183)]('id'))return 0x7b;if(_0x2c9f7b['includes']('limit')||_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x197))||_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x18a)))return 0xa;if(_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x1a6)))return 0x1;if(_0x2c9f7b['includes'](_0xee0af4(0x188))||_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x19c))||_0x2c9f7b[_0xee0af4(0x183)](_0xee0af4(0x198)))return _0xee0af4(0x1a3);if(_0x2c9f7b['includes'](_0xee0af4(0x192)))return 0x1;return _0xee0af4(0x177);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xc79fa0,_0x154204){const _0x4598ea=a13_0x1923,_0x184a7d=_0xc79fa0();while(!![]){try{const _0x4f9de5=-parseInt(_0x4598ea(0xfe))/0x1*(-parseInt(_0x4598ea(0x109))/0x2)+-parseInt(_0x4598ea(0x105))/0x3*(parseInt(_0x4598ea(0x107))/0x4)+-parseInt(_0x4598ea(0x101))/0x5*(-parseInt(_0x4598ea(0xfd))/0x6)+-parseInt(_0x4598ea(0x102))/0x7+-parseInt(_0x4598ea(0x10b))/0x8*(-parseInt(_0x4598ea(0x103))/0x9)+parseInt(_0x4598ea(0x10a))/0xa+-parseInt(_0x4598ea(0xfc))/0xb*(-parseInt(_0x4598ea(0x104))/0xc);if(_0x4f9de5===_0x154204)break;else _0x184a7d['push'](_0x184a7d['shift']());}catch(_0x2c0e07){_0x184a7d['push'](_0x184a7d['shift']());}}}(a13_0x3598,0xd036c));function a13_0x1923(_0x2538ff,_0x59e7ec){_0x2538ff=_0x2538ff-0xfc;const _0x3598fb=a13_0x3598();let _0x1923d9=_0x3598fb[_0x2538ff];return _0x1923d9;}import{DevApiClient}from'../api/dev-api-client.js';function a13_0x3598(){const _0x15e6c7=['11XGawIT','3170754rdtCsD','517plieDk','data','getBffScriptInfo','10nEGmvK','9181599EXLmdp','8124849JzBLHJ','3317304zDsTPT','248934rKUnLD','appCode\x20is\x20required.\x20Provide\x20it\x20as\x20parameter\x20or\x20set\x20LOVRABET_APP_CODE\x20environment\x20variable.','76OkHeSi','success','686RYuWCS','13276310BBOHRe','8BsLhQj'];a13_0x3598=function(){return _0x15e6c7;};return a13_0x3598();}import{getEnvAppCode}from'../config/env.js';export async function getBffScriptInfo(_0x3c5eb4){const _0x5ddcbc=a13_0x1923,{appCode:appCode=getEnvAppCode(),cookie:_0x429d40,id:_0x71a488}=_0x3c5eb4;if(!appCode)throw new Error(_0x5ddcbc(0x106));if(!_0x71a488||_0x71a488<=0x0)throw new Error('id\x20is\x20required\x20and\x20must\x20be\x20a\x20positive\x20number.\x20Get\x20it\x20from\x20list_bff_scripts.');const _0x510fe9=new DevApiClient({'appCode':appCode,'cookie':_0x429d40}),_0x4b04ed=await _0x510fe9[_0x5ddcbc(0x100)](_0x71a488);if(!_0x4b04ed[_0x5ddcbc(0x108)]||!_0x4b04ed[_0x5ddcbc(0xff)])return{'success':![],'message':'Failed\x20to\x20fetch\x20Backend\x20Function\x20script\x20info\x20for\x20id:\x20'+_0x71a488};return{'success':!![],'script':_0x4b04ed[_0x5ddcbc(0xff)]};}
|