@lovrabet/dataset-mcp-server 1.3.2-beta.5 → 1.3.2
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/analyzer/dataset-analyzer.js +1 -1
- 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/env.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-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-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-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/sql-parser.js +1 -1
- package/package.json +1 -1
package/dist/types/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a22_0x4d6e(){var _0x24d768=['735156sdEVGP','30ZRWOIF','5210526KUrBTZ','773617KxVJpa','4685247fUksuH','7OAubFM','3171016QRtuNl','5fmVTUe','3050103lmxZbG','2GsjyMh','2205291FHNpFJ'];a22_0x4d6e=function(){return _0x24d768;};return a22_0x4d6e();}(function(_0x43f0da,_0x3eae2c){var _0x969b6c=a22_0x216a,_0x5bde31=_0x43f0da();while(!![]){try{var _0x1ac3bd=-parseInt(_0x969b6c(0x169))/0x1*(parseInt(_0x969b6c(0x164))/0x2)+parseInt(_0x969b6c(0x163))/0x3+-parseInt(_0x969b6c(0x166))/0x4*(-parseInt(_0x969b6c(0x162))/0x5)+parseInt(_0x969b6c(0x168))/0x6+parseInt(_0x969b6c(0x160))/0x7*(parseInt(_0x969b6c(0x161))/0x8)+-parseInt(_0x969b6c(0x15f))/0x9+-parseInt(_0x969b6c(0x167))/0xa*(parseInt(_0x969b6c(0x165))/0xb);if(_0x1ac3bd===_0x3eae2c)break;else _0x5bde31['push'](_0x5bde31['shift']());}catch(_0x31c156){_0x5bde31['push'](_0x5bde31['shift']());}}}(a22_0x4d6e,0x8b12d));function a22_0x216a(_0x681a76,_0x44b5ba){_0x681a76=_0x681a76-0x15f;var _0x4d6e1d=a22_0x4d6e();var _0x216a5c=_0x4d6e1d[_0x681a76];return _0x216a5c;}export{createError,createAuthError,createMissingParamError,createDatasetNotFoundError,createSqlNotFoundError,createSqlValidationError,createStructuredSqlError,fromLovrabetError,SQL_ERROR_TYPE_LABELS}from'./mcp-types.js';
|
package/dist/types/mcp-types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a23_0x4b42(){const _0x582b02=['list_datasets({\x20pageSize:\x20999\x20})','937890zbtMgC','SQL_NOT_FOUND','message','push','类型不匹配','6NWPHOa','88SvKvhf','severity','SQL_EXECUTION_FAILED','确保\x20SELECT\x20语句格式正确,如:\x20SELECT\x20id,\x20name\x20FROM\x20table\x20WHERE\x20status\x20=\x201','list_datasets','type','539964KyRodg','NETWORK_ERROR','location','canAutoFix','description','使用\x20get_dataset_detail\x20工具查看数据集的所有字段','code','status','缺少\x20WHERE\x20条件','login','suggestions','response','AUTH_REQUIRED','需要登录才能访问\x20Lovrabet\x20数据。请先使用\x20login\x20工具进行登录。','13bFFEeR','toISOString','fixedSql','TABLE_NOT_FOUND','typeLabel','suggestedAction','缺少必需参数:\x20','1984829MxuyXb','API_ERROR','fixSteps','get_dataset_detail','使用\x20list_datasets\x20工具查看所有可用的数据集表名','SQL\x20不存在:\x20','查看所有可用的数据集','SYNTAX_ERROR','1771648JLmLnE','获取数据集详情以确认表名和字段名','查看所有可用的\x20SQL\x20查询','8799072sEzDwR','64778mKuZkZ','191514oUuREC','20ETmgtM','数据集不存在:\x20','字段不存在','get_dataset_detail({\x20datasetCode:\x20\x22customer\x22\x20})','PARAMETER_MISSING','表不存在','UNKNOWN_ERROR','6lsBoeq','不安全的查询','list_sql_queries({\x20pageSize:\x20999\x20})','<dataset-code>','字段名歧义','DATASET_NOT_FOUND','error','6rLZSAr'];a23_0x4b42=function(){return _0x582b02;};return a23_0x4b42();}const a23_0x492790=a23_0x4c94;(function(_0x21d828,_0x21d205){const _0x47127d=a23_0x4c94,_0x3e24ba=_0x21d828();while(!![]){try{const _0x1b3bc1=parseInt(_0x47127d(0xa7))/0x1*(-parseInt(_0x47127d(0x9f))/0x2)+parseInt(_0x47127d(0xb5))/0x3*(-parseInt(_0x47127d(0x9a))/0x4)+-parseInt(_0x47127d(0xb0))/0x5*(-parseInt(_0x47127d(0xae))/0x6)+-parseInt(_0x47127d(0x9e))/0x7+-parseInt(_0x47127d(0xb6))/0x8*(-parseInt(_0x47127d(0xbc))/0x9)+-parseInt(_0x47127d(0xa0))/0xa*(-parseInt(_0x47127d(0x92))/0xb)+-parseInt(_0x47127d(0x9d))/0xc*(-parseInt(_0x47127d(0x8b))/0xd);if(_0x1b3bc1===_0x21d205)break;else _0x3e24ba['push'](_0x3e24ba['shift']());}catch(_0x4b8b26){_0x3e24ba['push'](_0x3e24ba['shift']());}}}(a23_0x4b42,0x733f0));export const SQL_ERROR_TYPE_LABELS={'TABLE_NOT_FOUND':a23_0x492790(0xa5),'COLUMN_NOT_FOUND':a23_0x492790(0xa2),'AMBIGUOUS_COLUMN':a23_0x492790(0xab),'SYNTAX_ERROR':'语法错误','TYPE_MISMATCH':a23_0x492790(0xb4),'MISSING_WHERE_CLAUSE':a23_0x492790(0xc4),'UNSAFE_QUERY':a23_0x492790(0xa8)};export function createError(_0x1dfa5f){const _0xc8222b=a23_0x492790;return{'error':!![],'code':_0x1dfa5f['code'],'message':_0x1dfa5f[_0xc8222b(0xb2)],'status':_0x1dfa5f[_0xc8222b(0xc3)],'description':_0x1dfa5f[_0xc8222b(0xc0)],'response':_0x1dfa5f[_0xc8222b(0xc7)],'suggestedAction':_0x1dfa5f[_0xc8222b(0x90)],'recoverable':_0x1dfa5f['recoverable']??!![],'timestamp':new Date()[_0xc8222b(0x8c)]()};}export function createAuthError(){const _0x5a1947=a23_0x492790;return createError({'code':'AUTH_REQUIRED','message':_0x5a1947(0x8a),'suggestedAction':{'tool':_0x5a1947(0xc5),'description':'登录到\x20Lovrabet\x20平台','example':'login({\x20env:\x20\x22online\x22\x20})'},'recoverable':!![]});}export function createMissingParamError(_0x9c09db,_0x202401){const _0x41b706=a23_0x492790;return createError({'code':_0x41b706(0xa4),'message':_0x41b706(0x91)+_0x9c09db+(_0x202401?'\x20('+_0x202401+')':''),'recoverable':!![]});}export function createDatasetNotFoundError(_0x2d4050){const _0x1342c6=a23_0x492790;return createError({'code':_0x1342c6(0xac),'message':_0x1342c6(0xa1)+_0x2d4050,'suggestedAction':{'tool':_0x1342c6(0xba),'description':_0x1342c6(0x98),'example':_0x1342c6(0xaf)},'recoverable':!![]});}export function createSqlNotFoundError(_0x2c68f4){const _0x8fbf96=a23_0x492790;return createError({'code':_0x8fbf96(0xb1),'message':_0x8fbf96(0x97)+_0x2c68f4,'suggestedAction':{'tool':'list_sql_queries','description':_0x8fbf96(0x9c),'example':_0x8fbf96(0xa9)},'recoverable':!![]});}function a23_0x4c94(_0x44c7a4,_0x14f63b){_0x44c7a4=_0x44c7a4-0x89;const _0x4b421a=a23_0x4b42();let _0x4c94cf=_0x4b421a[_0x44c7a4];return _0x4c94cf;}export function createSqlValidationError(_0x2185e9){const _0x50a9bd=a23_0x492790,_0x58cf8d=_0x2185e9[_0x50a9bd(0x94)]['length']>0x0,_0x3cd93d=_0x58cf8d?_0x2185e9['fixSteps'][0x0]:undefined,_0x49e657={'type':_0x2185e9['type'],'typeLabel':_0x2185e9['typeLabel'],'location':_0x2185e9[_0x50a9bd(0xbe)],'severity':_0x2185e9[_0x50a9bd(0xb7)],'fixSteps':_0x2185e9[_0x50a9bd(0x94)],'suggestions':_0x2185e9[_0x50a9bd(0xc6)],'canAutoFix':_0x2185e9['canAutoFix'],'fixedSql':_0x2185e9[_0x50a9bd(0x8d)]};return createError({'code':'SQL_VALIDATION_FAILED','message':_0x2185e9[_0x50a9bd(0x8f)]+':\x20'+_0x2185e9[_0x50a9bd(0xb2)],'status':_0x2185e9[_0x50a9bd(0xc3)],'description':_0x49e657,'response':_0x2185e9[_0x50a9bd(0xc7)],'suggestedAction':_0x3cd93d?{'tool':_0x3cd93d['tool'],'description':_0x3cd93d[_0x50a9bd(0xc0)],'params':_0x3cd93d['toolParams'],'example':_0x3cd93d['example']}:{'tool':_0x50a9bd(0x95),'description':_0x50a9bd(0x9b),'params':{'datasetCode':_0x50a9bd(0xaa)}},'recoverable':_0x2185e9[_0x50a9bd(0xb7)]!=='error'});}export function createStructuredSqlError(_0x5d2b02){const _0x111a86=a23_0x492790,_0x5b7494=SQL_ERROR_TYPE_LABELS[_0x5d2b02[_0x111a86(0xbb)]],_0x5c9ec7=_0x5d2b02[_0x111a86(0xb7)]??_0x111a86(0xad),_0x10e5c7=[];if(_0x5d2b02['type']===_0x111a86(0x8e))_0x10e5c7['push']({'description':_0x111a86(0x96),'tool':_0x111a86(0xba),'toolParams':{'pageSize':0x3e7},'example':_0x111a86(0xaf)});else{if(_0x5d2b02[_0x111a86(0xbb)]==='COLUMN_NOT_FOUND')_0x10e5c7[_0x111a86(0xb3)]({'description':_0x111a86(0xc1),'tool':_0x111a86(0x95),'toolParams':{'datasetCode':_0x111a86(0xaa)},'example':_0x111a86(0xa3)});else _0x5d2b02['type']===_0x111a86(0x99)&&_0x10e5c7[_0x111a86(0xb3)]({'description':'检查\x20SQL\x20语法,确保关键字拼写正确、括号匹配','example':_0x111a86(0xb9)});}return{'type':_0x5d2b02[_0x111a86(0xbb)],'typeLabel':_0x5b7494,'location':_0x5d2b02[_0x111a86(0xbe)],'message':_0x5d2b02['message'],'severity':_0x5c9ec7,'fixSteps':_0x5d2b02[_0x111a86(0x94)]??_0x10e5c7,'suggestions':_0x5d2b02[_0x111a86(0xc6)],'canAutoFix':_0x5d2b02[_0x111a86(0xbf)],'fixedSql':_0x5d2b02[_0x111a86(0x8d)],'status':_0x5d2b02[_0x111a86(0xc3)],'response':_0x5d2b02['response']};}export function fromLovrabetError(_0x294e2d,_0x474bcd){const _0x43119f=a23_0x492790;return createError({'code':mapSdkCodeToMcpCode(_0x294e2d[_0x43119f(0xc2)]),'message':_0x294e2d[_0x43119f(0xb2)],'status':_0x294e2d[_0x43119f(0xc3)],'description':_0x294e2d[_0x43119f(0xc0)],'response':_0x294e2d[_0x43119f(0xc7)],'suggestedAction':_0x474bcd,'recoverable':_0x294e2d['status']?_0x294e2d[_0x43119f(0xc3)]<0x1f4:!![]});}function mapSdkCodeToMcpCode(_0x13e87b){const _0x16ad22=a23_0x492790;if(!_0x13e87b)return'UNKNOWN_ERROR';const _0x390939={'AUTH_REQUIRED':_0x16ad22(0x89),'AUTH_FAILED':_0x16ad22(0x89),'UNAUTHORIZED':_0x16ad22(0x89),'DATASET_NOT_FOUND':_0x16ad22(0xac),'NOT_FOUND':'DATASET_NOT_FOUND','INVALID_PARAMETER':'PARAMETER_INVALID','MISSING_PARAMETER':_0x16ad22(0xa4),'SQL_ERROR':_0x16ad22(0xb8),'NETWORK_ERROR':_0x16ad22(0xbd),'API_ERROR':_0x16ad22(0x93)};return _0x390939[_0x13e87b]||_0x16ad22(0xa6);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const a24_0x5a6ab1=a24_0x52fb;function a24_0x52fb(_0x3cbc44,_0x1fe32d){_0x3cbc44=_0x3cbc44-0xf4;const _0x1a82ec=a24_0x1a82();let _0x52fbb0=_0x1a82ec[_0x3cbc44];return _0x52fbb0;}(function(_0x4d7a88,_0x2adc68){const _0x45c43e=a24_0x52fb,_0x3e5fd1=_0x4d7a88();while(!![]){try{const _0x56c04e=-parseInt(_0x45c43e(0xfc))/0x1+parseInt(_0x45c43e(0x109))/0x2+-parseInt(_0x45c43e(0xfa))/0x3+parseInt(_0x45c43e(0x100))/0x4+-parseInt(_0x45c43e(0xf7))/0x5*(parseInt(_0x45c43e(0x102))/0x6)+-parseInt(_0x45c43e(0x104))/0x7+parseInt(_0x45c43e(0xf4))/0x8*(parseInt(_0x45c43e(0x10a))/0x9);if(_0x56c04e===_0x2adc68)break;else _0x3e5fd1['push'](_0x3e5fd1['shift']());}catch(_0x368318){_0x3e5fd1['push'](_0x3e5fd1['shift']());}}}(a24_0x1a82,0x3e89f));export class RateLimiter{[a24_0x5a6ab1(0xfd)]=0x0;[a24_0x5a6ab1(0x106)]=[];[a24_0x5a6ab1(0xf8)]=![];[a24_0x5a6ab1(0xf6)];constructor(_0x17f6bc={}){const _0x4240d2=a24_0x5a6ab1;this['options']={'maxOperations':_0x17f6bc[_0x4240d2(0xf9)]??Infinity,'windowMs':_0x17f6bc['windowMs']??0x3e8,'delayMs':_0x17f6bc[_0x4240d2(0xfe)]??0x7d0};}async['throttle'](_0x472189){return new Promise((_0x5d8f32,_0x2582b7)=>{const _0x500c33=a24_0x52fb;this[_0x500c33(0x106)]['push']({'fn':_0x472189,'resolve':_0x5d8f32,'reject':_0x2582b7}),this[_0x500c33(0x101)]();});}async[a24_0x5a6ab1(0x101)](){const _0x2ab61a=a24_0x5a6ab1;if(this['processing']||this[_0x2ab61a(0x106)][_0x2ab61a(0x10d)]===0x0)return;this[_0x2ab61a(0xf8)]=!![];while(this['queue'][_0x2ab61a(0x10d)]>0x0){const _0x148cab=Date['now'](),_0x275065=_0x148cab-this[_0x2ab61a(0xfd)];if(this[_0x2ab61a(0xfd)]>0x0&&_0x275065<this['options'][_0x2ab61a(0xfe)]){const _0xca8f68=this[_0x2ab61a(0xf6)][_0x2ab61a(0xfe)]-_0x275065;await this['sleep'](_0xca8f68);}const _0x48ca54=this[_0x2ab61a(0x106)][_0x2ab61a(0x108)]();if(!_0x48ca54)break;try{const _0x500422=await _0x48ca54['fn']();_0x48ca54[_0x2ab61a(0x10c)](_0x500422);}catch(_0x34dcad){_0x48ca54[_0x2ab61a(0x103)](_0x34dcad);}this[_0x2ab61a(0xfd)]=Date[_0x2ab61a(0x107)]();}this[_0x2ab61a(0xf8)]=![];}[a24_0x5a6ab1(0x105)](_0x5f23cc){return new Promise(_0x4d39dd=>setTimeout(_0x4d39dd,_0x5f23cc));}[a24_0x5a6ab1(0xfb)](){const _0x4969f5=a24_0x5a6ab1;this[_0x4969f5(0xfd)]=0x0,this[_0x4969f5(0x106)]=[],this[_0x4969f5(0xf8)]=![];}[a24_0x5a6ab1(0xf5)](){const _0x450266=a24_0x5a6ab1;return this[_0x450266(0x106)][_0x450266(0x10d)];}}function a24_0x1a82(){const _0x146a1e=['lastExecutionTime','delayMs','has','981728BWrlft','processQueue','347262SFcmlE','reject','3273536NxWujx','sleep','queue','now','shift','970380Oikrex','34659lxSDEq','get','resolve','length','864ZvYkAe','getQueueLength','options','5FRbWHH','processing','maxOperations','122145yGKnHv','reset','324131pAWlvd'];a24_0x1a82=function(){return _0x146a1e;};return a24_0x1a82();}const globalLimiters=new Map();export function getRateLimiter(_0xe14bf5,_0x452ce3){const _0x3e5046=a24_0x5a6ab1;return!globalLimiters[_0x3e5046(0xff)](_0xe14bf5)&&globalLimiters['set'](_0xe14bf5,new RateLimiter(_0x452ce3)),globalLimiters[_0x3e5046(0x10b)](_0xe14bf5);}export const rateLimiters={'sqlSave':new RateLimiter({'delayMs':0x3e8}),'api':new RateLimiter({'delayMs':0x1f4}),'fast':new RateLimiter({'delayMs':0xc8})};
|
package/dist/utils/sql-parser.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function a25_0x2ae9(){const _0xe8f0a4=['test','price','DDL','\x22\x20在数据库\x20schema\x20中不存在','error','字段\x20\x22','join','name','amount','limit','reason','value','REVOKE','size','Contains\x20data\x20modification\x20keywords','SELECT\x20query','97401ZhPcUt','search','slice','INSERT','matchAll','includes','38583LUdDdH','replace','push','SELECT','DROP','3341046SRjIAL','count','trim','num','TRUNCATE','4796925faaUxK','TABLE_NOT_FOUND','SQL\x20content\x20is\x20empty','1992YrdHyQ','Joins:\x20','parameters','time','table','CREATE','toUpperCase','has','INSERT\x20statement\x20modifies\x20data','\x20|\x20','DELETE\x20statement\x20modifies\x20data','add','GRANT','filter','match','column','startsWith','keyword','date','string','UNKNOWN','split','76cfPGCt','Params:\x20','toLowerCase','1702356gstkxi','tables','length','isSelectOnly','from','joins','get','columns','number','2024-01-01','map','keys','example','\x22\x20在表\x20\x22','2154584SdHTTE','ALTER','5052020OmEAsf'];a25_0x2ae9=function(){return _0xe8f0a4;};return a25_0x2ae9();}(function(_0x43aa85,_0x57ad36){const _0x3d097b=a25_0x2ad3,_0x53b4d6=_0x43aa85();while(!![]){try{const _0x5a093b=-parseInt(_0x3d097b(0xd1))/0x1+parseInt(_0x3d097b(0xce))/0x2*(-parseInt(_0x3d097b(0xa5))/0x3)+parseInt(_0x3d097b(0x92))/0x4+parseInt(_0x3d097b(0x94))/0x5+parseInt(_0x3d097b(0xb0))/0x6+parseInt(_0x3d097b(0xb5))/0x7+-parseInt(_0x3d097b(0xb8))/0x8*(-parseInt(_0x3d097b(0xab))/0x9);if(_0x5a093b===_0x57ad36)break;else _0x53b4d6['push'](_0x53b4d6['shift']());}catch(_0x2b0406){_0x53b4d6['push'](_0x53b4d6['shift']());}}}(a25_0x2ae9,0xe139f));import{createStructuredSqlError}from'../types/mcp-types.js';export function parseSqlStructure(_0x292901){const _0x16a3a1=a25_0x2ad3,_0x4d88c1={'tables':[],'columns':[],'parameters':[],'joins':[]};if(!_0x292901||typeof _0x292901!==_0x16a3a1(0xcb))return _0x4d88c1;const _0xedc756=_0x292901['replace'](/#\{[^}]*\}/g,'?')[_0x16a3a1(0xac)](/\$\{[^}]*\}/g,'?')[_0x16a3a1(0xac)](/'[^']*'/g,'\x27\x27')[_0x16a3a1(0xac)](/--.*$/gm,'')[_0x16a3a1(0xac)](/\/\*[\s\S]*?\*\//g,''),_0x583972=_0xedc756[_0x16a3a1(0xc6)](/FROM\s+([^\s,)(]+)/i);if(_0x583972){const _0x4a58ea=_0x583972[0x1][_0x16a3a1(0xac)](/[`"]/g,'');_0x4d88c1[_0x16a3a1(0xd2)][_0x16a3a1(0xad)](_0x4a58ea);}const _0x52bc05=_0xedc756[_0x16a3a1(0xa9)](/(?:INNER|LEFT|RIGHT|FULL|CROSS)?\s*JOIN\s+([^\s,)(]+)/gi);for(const _0xbbb9ed of _0x52bc05){const _0x13ea74=_0xbbb9ed[0x1][_0x16a3a1(0xac)](/[`"]/g,'');_0x13ea74&&!_0x4d88c1[_0x16a3a1(0xd2)]['includes'](_0x13ea74)&&_0x4d88c1['tables'][_0x16a3a1(0xad)](_0x13ea74);}const _0x174349=_0xedc756[_0x16a3a1(0xc6)](/SELECT\s+([\s\S]+?)\s+FROM/i);if(_0x174349){const _0x12e497=_0x174349[0x1]['trim']();if(_0x12e497!=='*'){const _0xb695e5=splitSqlColumns(_0x12e497);for(const _0x5561f0 of _0xb695e5){const _0x11abe4=_0x5561f0[_0x16a3a1(0xb2)]();if(_0x11abe4&&!_0x11abe4[_0x16a3a1(0xc6)](/^\d+$/)){const _0x547429=_0x11abe4['split'](/\s+AS\s+/i),_0x41fff6=_0x547429[0x0][_0x16a3a1(0xb2)](),_0x59feb1=_0x547429[0x1]?.[_0x16a3a1(0xb2)]();if(_0x41fff6[_0x16a3a1(0xaa)]('.')){const [_0x30380f,_0xec81a1]=_0x41fff6[_0x16a3a1(0xcd)]('.');_0x4d88c1['columns']['push']({'table':_0x30380f[_0x16a3a1(0xb2)](),'column':_0xec81a1[_0x16a3a1(0xac)](/[`"]/g,'')[_0x16a3a1(0xb2)](),'alias':_0x59feb1});}else!_0x41fff6[_0x16a3a1(0xaa)]('(')&&_0x4d88c1['columns'][_0x16a3a1(0xad)]({'table':'','column':_0x41fff6[_0x16a3a1(0xac)](/[`"]/g,''),'alias':_0x59feb1});}}}}const _0x40ee4c=_0xedc756[_0x16a3a1(0xa9)](/JOIN\s+(\w+)\s+(?:AS\s+)?(\w+)?\s+ON\s+([\w.]+)\s*=\s*([\w.]+)/gi);for(const _0x2cb2f8 of _0x40ee4c){const [,,,_0x43175c,_0x22ac21]=_0x2cb2f8;if(_0x43175c&&_0x22ac21){const [_0x5e47dd,_0x1cfed7]=_0x43175c[_0x16a3a1(0xaa)]('.')?_0x43175c[_0x16a3a1(0xcd)]('.'):['',_0x43175c],[_0x267921,_0x46cb39]=_0x22ac21['includes']('.')?_0x22ac21[_0x16a3a1(0xcd)]('.'):['',_0x22ac21];_0x4d88c1['joins']?.['push']({'leftTable':_0x5e47dd,'leftColumn':_0x1cfed7,'rightTable':_0x267921,'rightColumn':_0x46cb39});}}const _0x1ca87a=_0x292901[_0x16a3a1(0xa9)](/[#\$]\{(\w+)\}/g),_0x552d45=new Set();for(const _0xc4f93 of _0x1ca87a){const _0x2ea778=_0xc4f93[0x1];!_0x552d45[_0x16a3a1(0xbf)](_0x2ea778)&&(_0x552d45[_0x16a3a1(0xc3)](_0x2ea778),_0x4d88c1[_0x16a3a1(0xba)][_0x16a3a1(0xad)]({'name':_0x2ea778,'type':inferParamType(_0x2ea778),'example':getExampleValue(_0x2ea778)}));}return _0x4d88c1;}function splitSqlColumns(_0x3612c6){const _0xb235ee=a25_0x2ad3,_0x54a07b=[];let _0x600fd9='',_0x5d8d21=0x0;for(let _0x4d0143=0x0;_0x4d0143<_0x3612c6[_0xb235ee(0xd3)];_0x4d0143++){const _0x41703c=_0x3612c6[_0x4d0143];if(_0x41703c==='(')_0x5d8d21++,_0x600fd9+=_0x41703c;else{if(_0x41703c===')')_0x5d8d21--,_0x600fd9+=_0x41703c;else _0x41703c===','&&_0x5d8d21===0x0?(_0x54a07b['push'](_0x600fd9),_0x600fd9=''):_0x600fd9+=_0x41703c;}}return _0x600fd9&&_0x54a07b[_0xb235ee(0xad)](_0x600fd9),_0x54a07b;}function inferParamType(_0x424827){const _0x24f66c=a25_0x2ad3,_0x377621=_0x424827[_0x24f66c(0xd0)]();if(_0x377621[_0x24f66c(0xaa)]('id')||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0xb1))||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0x9e))||_0x377621[_0x24f66c(0xaa)]('size')||_0x377621['includes']('page')||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0xb3))||_0x377621['includes'](_0x24f66c(0x9d))||_0x377621[_0x24f66c(0xaa)](_0x24f66c(0x96)))return _0x24f66c(0xd9);return'string';}function getExampleValue(_0x9551be){const _0x27050e=a25_0x2ad3,_0x6c429=_0x9551be[_0x27050e(0xd0)](),_0x28dcf6=inferParamType(_0x6c429);if(_0x28dcf6===_0x27050e(0xd9)){if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0x9e))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0xb1))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0xa2)))return 0xa;if(_0x6c429[_0x27050e(0xaa)]('page'))return 0x1;return 0x7b;}if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0xca))||_0x6c429['includes'](_0x27050e(0xbb)))return _0x27050e(0xda);if(_0x6c429[_0x27050e(0xaa)]('status'))return'1';if(_0x6c429[_0x27050e(0xaa)](_0x27050e(0xc9))||_0x6c429['includes'](_0x27050e(0xa6))||_0x6c429[_0x27050e(0xaa)](_0x27050e(0x9c)))return _0x27050e(0x90);return _0x27050e(0xa0);}export function detectSqlType(_0x13f1af){const _0x4ff95f=a25_0x2ad3;if(!_0x13f1af||typeof _0x13f1af!==_0x4ff95f(0xcb))return{'type':_0x4ff95f(0xcc),'isSelectOnly':![],'isDangerous':![],'reason':_0x4ff95f(0xb7)};const _0x2d5246=_0x13f1af['replace'](/#\{[^}]*\}/g,'?')[_0x4ff95f(0xac)](/\$\{[^}]*\}/g,'?')[_0x4ff95f(0xac)](/@[^(\s]+(\([^)]*\))?/g,''),_0x11b8c6=_0x2d5246['trim'](),_0x1b76cc=_0x11b8c6[_0x4ff95f(0xcd)]('\x0a');let _0x1ce94d='';for(const _0x5d5eee of _0x1b76cc){const _0xbaabe4=_0x5d5eee['trim']();if(!_0xbaabe4||_0xbaabe4[_0x4ff95f(0xc8)]('--')||_0xbaabe4['startsWith']('/*'))continue;_0x1ce94d=_0xbaabe4;break;}const _0x7501b4=_0x1ce94d[_0x4ff95f(0xbe)](),_0x51c042=_0x11b8c6[_0x4ff95f(0xbe)]();if(/^WITH\b/[_0x4ff95f(0x95)](_0x7501b4)&&/\bSELECT\b/i[_0x4ff95f(0x95)](_0x51c042)){const _0x43abd2=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0x2a7762 of _0x43abd2){if(_0x2a7762['test'](_0x51c042))return{'type':_0x4ff95f(0xae),'isSelectOnly':![],'isDangerous':!![],'reason':'CTE\x20contains\x20data\x20modification\x20keywords'};}return{'type':'SELECT','isSelectOnly':!![],'isDangerous':![]};}if(/^SELECT\b/[_0x4ff95f(0x95)](_0x7501b4)){const _0x427904=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0xa3d6a0 of _0x427904){if(_0xa3d6a0[_0x4ff95f(0x95)](_0x51c042))return{'type':_0x4ff95f(0xae),'isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xa3)};}return{'type':'SELECT','isSelectOnly':!![],'isDangerous':![]};}if(/^INSERT\s+INTO\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':_0x4ff95f(0xa8),'isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xc0)};if(/^UPDATE\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':'UPDATE','isSelectOnly':![],'isDangerous':!![],'reason':'UPDATE\x20statement\x20modifies\x20data'};if(/^DELETE\s+FROM\b/[_0x4ff95f(0x95)](_0x7501b4))return{'type':'DELETE','isSelectOnly':![],'isDangerous':!![],'reason':_0x4ff95f(0xc2)};const _0x360209=[_0x4ff95f(0xaf),_0x4ff95f(0x93),_0x4ff95f(0xbd),_0x4ff95f(0xb4),_0x4ff95f(0xc4),_0x4ff95f(0xa1)];for(const _0x5d4aff of _0x360209){if(_0x7501b4[_0x4ff95f(0xc8)](_0x5d4aff))return{'type':_0x4ff95f(0x97),'isSelectOnly':![],'isDangerous':!![],'reason':_0x5d4aff+'\x20statement\x20modifies\x20schema'};}return{'type':'UNKNOWN','isSelectOnly':![],'isDangerous':![],'reason':'Unknown\x20SQL\x20type'};}export function validateIsSelectOnly(_0x28f228){const _0xfcc1f8=a25_0x2ad3,_0x1f871e=detectSqlType(_0x28f228);return{'valid':_0x1f871e['isSelectOnly'],'reason':_0x1f871e[_0xfcc1f8(0xd4)]?undefined:_0x1f871e[_0xfcc1f8(0x9f)]};}export function extractTableNames(_0x288cd6){const _0x338c12=a25_0x2ad3,_0x499892=parseSqlStructure(_0x288cd6);return _0x499892[_0x338c12(0xd2)];}export function extractColumnNames(_0x531d28){const _0x95dd6d=a25_0x2ad3,_0x3c10dd=parseSqlStructure(_0x531d28);return _0x3c10dd['columns']['map'](_0x29e5ed=>({'table':_0x29e5ed[_0x95dd6d(0xbc)],'column':_0x29e5ed['column']}));}export function extractParameters(_0x17a128){const _0x57f818=a25_0x2ad3,_0x32c142=parseSqlStructure(_0x17a128);return _0x32c142[_0x57f818(0xba)];}function a25_0x2ad3(_0x1c4c2a,_0x2f4830){_0x1c4c2a=_0x1c4c2a-0x8f;const _0x2ae91a=a25_0x2ae9();let _0x2ad3e0=_0x2ae91a[_0x1c4c2a];return _0x2ad3e0;}export function validateSqlContent(_0x99ac8f,_0x3a033c){const _0x51b743=a25_0x2ad3,_0x1a38bd=detectSqlType(_0x99ac8f),_0x436b9c=parseSqlStructure(_0x99ac8f),_0x259b3a=[];if(_0x3a033c){const _0x3f3179=new Map(_0x3a033c[_0x51b743(0xd2)][_0x51b743(0xdb)](_0x25d9bd=>[_0x25d9bd['tableName'][_0x51b743(0xd0)](),_0x25d9bd[_0x51b743(0xd8)][_0x51b743(0xdb)](_0x51eca6=>_0x51eca6[_0x51b743(0xd0)]())]));for(const _0x4a9349 of _0x436b9c[_0x51b743(0xd2)]){const _0x458c55=_0x4a9349[_0x51b743(0xd0)]();if(!_0x3f3179[_0x51b743(0xbf)](_0x458c55)){const _0x282860=Array[_0x51b743(0xd5)](_0x3f3179['keys']())['filter'](_0x5007fe=>_0x5007fe[_0x51b743(0xaa)](_0x458c55)||_0x458c55[_0x51b743(0xaa)](_0x5007fe));_0x259b3a[_0x51b743(0xad)](createStructuredSqlError({'type':_0x51b743(0xb6),'location':_0x4a9349,'message':'表\x20\x22'+_0x4a9349+_0x51b743(0x98),'severity':_0x51b743(0x99),'suggestions':_0x282860['length']>0x0?_0x282860:Array[_0x51b743(0xd5)](_0x3f3179[_0x51b743(0x8f)]())}));}}for(const _0x1bec14 of _0x436b9c[_0x51b743(0xd8)]){if(_0x1bec14[_0x51b743(0xbc)]){const _0x4a8324=_0x1bec14[_0x51b743(0xbc)]['toLowerCase'](),_0x1f4d24=_0x3f3179[_0x51b743(0xd7)](_0x4a8324);if(_0x1f4d24){const _0x1369ac=_0x1bec14[_0x51b743(0xc7)]['toLowerCase']();if(!_0x1f4d24[_0x51b743(0xaa)](_0x1369ac)&&!_0x1bec14[_0x51b743(0xc7)]['includes']('*')){const _0x3b6eb3=_0x1f4d24[_0x51b743(0xc5)](_0x4f46f4=>_0x4f46f4['includes'](_0x1369ac)||_0x1369ac[_0x51b743(0xaa)](_0x4f46f4));_0x259b3a['push'](createStructuredSqlError({'type':'COLUMN_NOT_FOUND','location':_0x1bec14[_0x51b743(0xbc)]+'.'+_0x1bec14[_0x51b743(0xc7)],'message':_0x51b743(0x9a)+_0x1bec14[_0x51b743(0xc7)]+_0x51b743(0x91)+_0x1bec14['table']+'\x22\x20中不存在','severity':_0x51b743(0x99),'suggestions':_0x3b6eb3[_0x51b743(0xd3)]>0x0?_0x3b6eb3:_0x1f4d24[_0x51b743(0xa7)](0x0,0xa)}));}}}}}return{'valid':_0x259b3a[_0x51b743(0xd3)]===0x0,'isSelectOnly':_0x1a38bd['isSelectOnly'],'parsedStructure':_0x436b9c,'errors':_0x259b3a[_0x51b743(0xd3)]>0x0?_0x259b3a:undefined};}export function generateSqlSummary(_0x49ec4d){const _0x198490=a25_0x2ad3,_0x25b4e8=parseSqlStructure(_0x49ec4d),_0x1ffa6d=[];return _0x25b4e8[_0x198490(0xd2)]['length']>0x0&&_0x1ffa6d[_0x198490(0xad)]('Tables:\x20'+_0x25b4e8[_0x198490(0xd2)][_0x198490(0x9b)](',\x20')),_0x25b4e8[_0x198490(0xba)][_0x198490(0xd3)]>0x0&&_0x1ffa6d[_0x198490(0xad)](_0x198490(0xcf)+_0x25b4e8[_0x198490(0xba)]['map'](_0x179d8d=>_0x179d8d[_0x198490(0x9c)])[_0x198490(0x9b)](',\x20')),_0x25b4e8['joins']&&_0x25b4e8[_0x198490(0xd6)][_0x198490(0xd3)]>0x0&&_0x1ffa6d[_0x198490(0xad)](_0x198490(0xb9)+_0x25b4e8['joins'][_0x198490(0xd3)]),_0x1ffa6d['length']>0x0?_0x1ffa6d[_0x198490(0x9b)](_0x198490(0xc1)):_0x198490(0xa4);}
|
|
1
|
+
(function(_0x4eeaa6,_0x1a6616){const _0x39a498=a25_0x1a3d,_0x1a8c49=_0x4eeaa6();while(!![]){try{const _0x2ae155=parseInt(_0x39a498(0xdc))/0x1*(-parseInt(_0x39a498(0xdf))/0x2)+-parseInt(_0x39a498(0xe7))/0x3+-parseInt(_0x39a498(0x105))/0x4*(parseInt(_0x39a498(0xf8))/0x5)+-parseInt(_0x39a498(0xe6))/0x6+-parseInt(_0x39a498(0x121))/0x7+parseInt(_0x39a498(0xe8))/0x8+parseInt(_0x39a498(0x11c))/0x9;if(_0x2ae155===_0x1a6616)break;else _0x1a8c49['push'](_0x1a8c49['shift']());}catch(_0x35b837){_0x1a8c49['push'](_0x1a8c49['shift']());}}}(a25_0x55dd,0xa1f3a));import{createStructuredSqlError}from'../types/mcp-types.js';export function parseSqlStructure(_0x15e265){const _0x24310b=a25_0x1a3d,_0x5eb030={'tables':[],'columns':[],'parameters':[],'joins':[]};if(!_0x15e265||typeof _0x15e265!==_0x24310b(0xd1))return _0x5eb030;const _0x3747d3=_0x15e265[_0x24310b(0xee)](/#\{[^}]*\}/g,'?')[_0x24310b(0xee)](/\$\{[^}]*\}/g,'?')['replace'](/'[^']*'/g,'\x27\x27')[_0x24310b(0xee)](/--.*$/gm,'')[_0x24310b(0xee)](/\/\*[\s\S]*?\*\//g,''),_0x53aa38=_0x3747d3[_0x24310b(0xfb)](/FROM\s+([^\s,)(]+)/i);if(_0x53aa38){const _0x363d0d=_0x53aa38[0x1][_0x24310b(0xee)](/[`"]/g,'');_0x5eb030['tables'][_0x24310b(0x11f)](_0x363d0d);}const _0x1d4188=_0x3747d3[_0x24310b(0x100)](/(?:INNER|LEFT|RIGHT|FULL|CROSS)?\s*JOIN\s+([^\s,)(]+)/gi);for(const _0x2405a4 of _0x1d4188){const _0x5d3b7b=_0x2405a4[0x1][_0x24310b(0xee)](/[`"]/g,'');_0x5d3b7b&&!_0x5eb030['tables'][_0x24310b(0xfe)](_0x5d3b7b)&&_0x5eb030[_0x24310b(0xde)][_0x24310b(0x11f)](_0x5d3b7b);}const _0x1b9d69=_0x3747d3['match'](/SELECT\s+([\s\S]+?)\s+FROM/i);if(_0x1b9d69){const _0xb7b568=_0x1b9d69[0x1]['trim']();if(_0xb7b568!=='*'){const _0x2bf209=splitSqlColumns(_0xb7b568);for(const _0x5b132f of _0x2bf209){const _0x58521b=_0x5b132f['trim']();if(_0x58521b&&!_0x58521b[_0x24310b(0xfb)](/^\d+$/)){const _0x2cce7c=_0x58521b[_0x24310b(0x116)](/\s+AS\s+/i),_0x3a3d35=_0x2cce7c[0x0]['trim'](),_0x721031=_0x2cce7c[0x1]?.[_0x24310b(0xd4)]();if(_0x3a3d35['includes']('.')){const [_0x4e4806,_0x763f6a]=_0x3a3d35[_0x24310b(0x116)]('.');_0x5eb030[_0x24310b(0xdb)][_0x24310b(0x11f)]({'table':_0x4e4806[_0x24310b(0xd4)](),'column':_0x763f6a['replace'](/[`"]/g,'')[_0x24310b(0xd4)](),'alias':_0x721031});}else!_0x3a3d35[_0x24310b(0xfe)]('(')&&_0x5eb030[_0x24310b(0xdb)][_0x24310b(0x11f)]({'table':'','column':_0x3a3d35['replace'](/[`"]/g,''),'alias':_0x721031});}}}}const _0x87b397=_0x3747d3[_0x24310b(0x100)](/JOIN\s+(\w+)\s+(?:AS\s+)?(\w+)?\s+ON\s+([\w.]+)\s*=\s*([\w.]+)/gi);for(const _0x4c86f7 of _0x87b397){const [,,,_0x59f17c,_0x4ff6c5]=_0x4c86f7;if(_0x59f17c&&_0x4ff6c5){const [_0x5c34eb,_0x5e31db]=_0x59f17c[_0x24310b(0xfe)]('.')?_0x59f17c[_0x24310b(0x116)]('.'):['',_0x59f17c],[_0x23c46c,_0x24acfc]=_0x4ff6c5[_0x24310b(0xfe)]('.')?_0x4ff6c5[_0x24310b(0x116)]('.'):['',_0x4ff6c5];_0x5eb030[_0x24310b(0xff)]?.['push']({'leftTable':_0x5c34eb,'leftColumn':_0x5e31db,'rightTable':_0x23c46c,'rightColumn':_0x24acfc});}}const _0x593c68=_0x15e265['matchAll'](/[#\$]\{(\w+)\}/g),_0x4a756c=new Set();for(const _0x2defbd of _0x593c68){const _0x2b5af8=_0x2defbd[0x1];!_0x4a756c['has'](_0x2b5af8)&&(_0x4a756c[_0x24310b(0xf6)](_0x2b5af8),_0x5eb030[_0x24310b(0xf1)][_0x24310b(0x11f)]({'name':_0x2b5af8,'type':inferParamType(_0x2b5af8),'example':getExampleValue(_0x2b5af8)}));}return _0x5eb030;}function a25_0x1a3d(_0x344087,_0x3bfb03){_0x344087=_0x344087-0xd1;const _0x55dde6=a25_0x55dd();let _0x1a3dcc=_0x55dde6[_0x344087];return _0x1a3dcc;}function splitSqlColumns(_0x14c371){const _0x419b9d=a25_0x1a3d,_0x25c0a4=[];let _0x4c5146='',_0x33fce7=0x0;for(let _0x2b18a9=0x0;_0x2b18a9<_0x14c371['length'];_0x2b18a9++){const _0x5753d4=_0x14c371[_0x2b18a9];if(_0x5753d4==='(')_0x33fce7++,_0x4c5146+=_0x5753d4;else{if(_0x5753d4===')')_0x33fce7--,_0x4c5146+=_0x5753d4;else _0x5753d4===','&&_0x33fce7===0x0?(_0x25c0a4[_0x419b9d(0x11f)](_0x4c5146),_0x4c5146=''):_0x4c5146+=_0x5753d4;}}return _0x4c5146&&_0x25c0a4[_0x419b9d(0x11f)](_0x4c5146),_0x25c0a4;}function inferParamType(_0x3cf1a1){const _0x2791ce=a25_0x1a3d,_0x3dadf7=_0x3cf1a1[_0x2791ce(0xf5)]();if(_0x3dadf7[_0x2791ce(0xfe)]('id')||_0x3dadf7[_0x2791ce(0xfe)](_0x2791ce(0x115))||_0x3dadf7[_0x2791ce(0xfe)](_0x2791ce(0x10a))||_0x3dadf7['includes'](_0x2791ce(0xfd))||_0x3dadf7['includes'](_0x2791ce(0x111))||_0x3dadf7[_0x2791ce(0xfe)](_0x2791ce(0x118))||_0x3dadf7[_0x2791ce(0xfe)](_0x2791ce(0xfc))||_0x3dadf7['includes'](_0x2791ce(0x122)))return'number';return _0x2791ce(0xd1);}function getExampleValue(_0x28d7cb){const _0xd3bf1f=a25_0x1a3d,_0x1c8114=_0x28d7cb[_0xd3bf1f(0xf5)](),_0x1df450=inferParamType(_0x1c8114);if(_0x1df450===_0xd3bf1f(0x110)){if(_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0x10a))||_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0x115))||_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0xfd)))return 0xa;if(_0x1c8114['includes'](_0xd3bf1f(0x111)))return 0x1;return 0x7b;}if(_0x1c8114['includes']('date')||_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0x10b)))return _0xd3bf1f(0xf0);if(_0x1c8114['includes'](_0xd3bf1f(0xe0)))return'1';if(_0x1c8114['includes']('keyword')||_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0xda))||_0x1c8114[_0xd3bf1f(0xfe)](_0xd3bf1f(0x10e)))return _0xd3bf1f(0x106);return _0xd3bf1f(0x108);}export function detectSqlType(_0x200e6b){const _0x39229d=a25_0x1a3d;if(!_0x200e6b||typeof _0x200e6b!==_0x39229d(0xd1))return{'type':_0x39229d(0xe3),'isSelectOnly':![],'isDangerous':![],'reason':_0x39229d(0x119)};const _0x176a1f=_0x200e6b['replace'](/#\{[^}]*\}/g,'?')['replace'](/\$\{[^}]*\}/g,'?')['replace'](/@[^(\s]+(\([^)]*\))?/g,''),_0x43df9c=_0x176a1f[_0x39229d(0xd4)](),_0x57df24=_0x43df9c[_0x39229d(0x116)]('\x0a');let _0x1918e8='';for(const _0x22ea07 of _0x57df24){const _0x5c4259=_0x22ea07[_0x39229d(0xd4)]();if(!_0x5c4259||_0x5c4259['startsWith']('--')||_0x5c4259[_0x39229d(0xe5)]('/*'))continue;_0x1918e8=_0x5c4259;break;}const _0x48e523=_0x1918e8[_0x39229d(0xe2)](),_0x4cbff6=_0x43df9c[_0x39229d(0xe2)]();if(/^WITH\b/[_0x39229d(0x10f)](_0x48e523)&&/\bSELECT\b/i['test'](_0x4cbff6)){const _0xb06204=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0x218679 of _0xb06204){if(_0x218679[_0x39229d(0x10f)](_0x4cbff6))return{'type':'SELECT','isSelectOnly':![],'isDangerous':!![],'reason':_0x39229d(0xfa)};}return{'type':_0x39229d(0xef),'isSelectOnly':!![],'isDangerous':![]};}if(/^SELECT\b/[_0x39229d(0x10f)](_0x48e523)){const _0x124a20=[/INSERT\s+INTO/i,/UPDATE\s+\w+\s+SET/i,/DELETE\s+FROM/i];for(const _0x9f4a04 of _0x124a20){if(_0x9f4a04[_0x39229d(0x10f)](_0x4cbff6))return{'type':_0x39229d(0xef),'isSelectOnly':![],'isDangerous':!![],'reason':_0x39229d(0x11e)};}return{'type':_0x39229d(0xef),'isSelectOnly':!![],'isDangerous':![]};}if(/^INSERT\s+INTO\b/[_0x39229d(0x10f)](_0x48e523))return{'type':_0x39229d(0x11a),'isSelectOnly':![],'isDangerous':!![],'reason':_0x39229d(0xd8)};if(/^UPDATE\b/[_0x39229d(0x10f)](_0x48e523))return{'type':_0x39229d(0x114),'isSelectOnly':![],'isDangerous':!![],'reason':_0x39229d(0xd7)};if(/^DELETE\s+FROM\b/[_0x39229d(0x10f)](_0x48e523))return{'type':_0x39229d(0xf7),'isSelectOnly':![],'isDangerous':!![],'reason':'DELETE\x20statement\x20modifies\x20data'};const _0x369867=['DROP',_0x39229d(0x103),_0x39229d(0xe9),_0x39229d(0x107),_0x39229d(0x101),_0x39229d(0xed)];for(const _0xb03a53 of _0x369867){if(_0x48e523[_0x39229d(0xe5)](_0xb03a53))return{'type':_0x39229d(0xd9),'isSelectOnly':![],'isDangerous':!![],'reason':_0xb03a53+_0x39229d(0x11d)};}return{'type':'UNKNOWN','isSelectOnly':![],'isDangerous':![],'reason':'Unknown\x20SQL\x20type'};}export function validateIsSelectOnly(_0x3e9ed1){const _0x56bc3e=a25_0x1a3d,_0x264393=detectSqlType(_0x3e9ed1);return{'valid':_0x264393[_0x56bc3e(0xec)],'reason':_0x264393[_0x56bc3e(0xec)]?undefined:_0x264393[_0x56bc3e(0x10c)]};}export function extractTableNames(_0x48dc0e){const _0x56ff36=a25_0x1a3d,_0x31c8a8=parseSqlStructure(_0x48dc0e);return _0x31c8a8[_0x56ff36(0xde)];}export function extractColumnNames(_0x13bd47){const _0x11da18=a25_0x1a3d,_0x3f1b1c=parseSqlStructure(_0x13bd47);return _0x3f1b1c[_0x11da18(0xdb)][_0x11da18(0xeb)](_0x3e8289=>({'table':_0x3e8289[_0x11da18(0x109)],'column':_0x3e8289['column']}));}export function extractParameters(_0x296ae9){const _0x1eaa2a=a25_0x1a3d,_0xef0430=parseSqlStructure(_0x296ae9);return _0xef0430[_0x1eaa2a(0xf1)];}function a25_0x55dd(){const _0x471395=['\x20|\x20','ALTER','join','68VgizxJ','example','TRUNCATE','value','table','limit','time','reason','\x22\x20在表\x20\x22','name','test','number','page','Joins:\x20','column','UPDATE','count','split','COLUMN_NOT_FOUND','num','SQL\x20content\x20is\x20empty','INSERT','TABLE_NOT_FOUND','40447278vNWkjt','\x20statement\x20modifies\x20schema','Contains\x20data\x20modification\x20keywords','push','has','8844731fprqPP','price','string','slice','filter','trim','from','\x22\x20中不存在','UPDATE\x20statement\x20modifies\x20data','INSERT\x20statement\x20modifies\x20data','DDL','search','columns','7537DTgEFE','tableName','tables','202MuREun','status','keys','toUpperCase','UNKNOWN','字段\x20\x22','startsWith','5976552ntbKxl','1249758BxyiCA','3323616zxmbpB','CREATE','Tables:\x20','map','isSelectOnly','REVOKE','replace','SELECT','2024-01-01','parameters','error','\x22\x20在数据库\x20schema\x20中不存在','Params:\x20','toLowerCase','add','DELETE','237880cFDlfL','length','CTE\x20contains\x20data\x20modification\x20keywords','match','amount','size','includes','joins','matchAll','GRANT'];a25_0x55dd=function(){return _0x471395;};return a25_0x55dd();}export function validateSqlContent(_0x2e273d,_0xa66ad2){const _0x37a872=a25_0x1a3d,_0x2bfae2=detectSqlType(_0x2e273d),_0x4f8b4c=parseSqlStructure(_0x2e273d),_0x2f834b=[];if(_0xa66ad2){const _0x311ae8=new Map(_0xa66ad2['tables'][_0x37a872(0xeb)](_0x5e419f=>[_0x5e419f[_0x37a872(0xdd)][_0x37a872(0xf5)](),_0x5e419f[_0x37a872(0xdb)]['map'](_0x3ab33c=>_0x3ab33c[_0x37a872(0xf5)]())]));for(const _0x2240af of _0x4f8b4c[_0x37a872(0xde)]){const _0x139e4b=_0x2240af['toLowerCase']();if(!_0x311ae8[_0x37a872(0x120)](_0x139e4b)){const _0x272511=Array[_0x37a872(0xd5)](_0x311ae8[_0x37a872(0xe1)]())[_0x37a872(0xd3)](_0x30dd6c=>_0x30dd6c[_0x37a872(0xfe)](_0x139e4b)||_0x139e4b[_0x37a872(0xfe)](_0x30dd6c));_0x2f834b[_0x37a872(0x11f)](createStructuredSqlError({'type':_0x37a872(0x11b),'location':_0x2240af,'message':'表\x20\x22'+_0x2240af+_0x37a872(0xf3),'severity':_0x37a872(0xf2),'suggestions':_0x272511['length']>0x0?_0x272511:Array[_0x37a872(0xd5)](_0x311ae8[_0x37a872(0xe1)]())}));}}for(const _0x194665 of _0x4f8b4c['columns']){if(_0x194665[_0x37a872(0x109)]){const _0x415ef3=_0x194665[_0x37a872(0x109)]['toLowerCase'](),_0x5ce48f=_0x311ae8['get'](_0x415ef3);if(_0x5ce48f){const _0x31c416=_0x194665[_0x37a872(0x113)][_0x37a872(0xf5)]();if(!_0x5ce48f[_0x37a872(0xfe)](_0x31c416)&&!_0x194665[_0x37a872(0x113)][_0x37a872(0xfe)]('*')){const _0x43662c=_0x5ce48f[_0x37a872(0xd3)](_0x476cb0=>_0x476cb0[_0x37a872(0xfe)](_0x31c416)||_0x31c416[_0x37a872(0xfe)](_0x476cb0));_0x2f834b['push'](createStructuredSqlError({'type':_0x37a872(0x117),'location':_0x194665[_0x37a872(0x109)]+'.'+_0x194665[_0x37a872(0x113)],'message':_0x37a872(0xe4)+_0x194665['column']+_0x37a872(0x10d)+_0x194665[_0x37a872(0x109)]+_0x37a872(0xd6),'severity':_0x37a872(0xf2),'suggestions':_0x43662c[_0x37a872(0xf9)]>0x0?_0x43662c:_0x5ce48f[_0x37a872(0xd2)](0x0,0xa)}));}}}}}return{'valid':_0x2f834b[_0x37a872(0xf9)]===0x0,'isSelectOnly':_0x2bfae2[_0x37a872(0xec)],'parsedStructure':_0x4f8b4c,'errors':_0x2f834b['length']>0x0?_0x2f834b:undefined};}export function generateSqlSummary(_0x52d818){const _0x1962f7=a25_0x1a3d,_0x1607e7=parseSqlStructure(_0x52d818),_0x9d23d4=[];return _0x1607e7[_0x1962f7(0xde)][_0x1962f7(0xf9)]>0x0&&_0x9d23d4['push'](_0x1962f7(0xea)+_0x1607e7[_0x1962f7(0xde)][_0x1962f7(0x104)](',\x20')),_0x1607e7['parameters'][_0x1962f7(0xf9)]>0x0&&_0x9d23d4[_0x1962f7(0x11f)](_0x1962f7(0xf4)+_0x1607e7[_0x1962f7(0xf1)][_0x1962f7(0xeb)](_0x35b1e9=>_0x35b1e9[_0x1962f7(0x10e)])[_0x1962f7(0x104)](',\x20')),_0x1607e7[_0x1962f7(0xff)]&&_0x1607e7[_0x1962f7(0xff)][_0x1962f7(0xf9)]>0x0&&_0x9d23d4[_0x1962f7(0x11f)](_0x1962f7(0x112)+_0x1607e7['joins'][_0x1962f7(0xf9)]),_0x9d23d4[_0x1962f7(0xf9)]>0x0?_0x9d23d4[_0x1962f7(0x104)](_0x1962f7(0x102)):'SELECT\x20query';}
|