@@ -1209,13 +1209,14 @@ https://github.com/Tencent/APIJSON/issues
12091209 }
12101210
12111211 index = item2 . indexOf ( ':' )
1212- if ( index <= 0 ) {
1213- throw new Error ( '请求头 Request Header 输入错误!请按照每行 key: value 的格式输入,不要有多余的换行或空格!'
1212+ var key = index <= 0 ? 'sqlautoVal' + i : StringUtil . trim ( item2 . substring ( 0 , index ) )
1213+ if ( index == 0 ) { // <= 0) {
1214+ throw new Error ( '请求头 Request Header 输入错误!请按照每行 key: value // 对应 ${key} 或 value // 对应 ? 的格式输入,不要有多余的换行或空格!'
12141215 + '\n错误位置: 第 ' + ( i + 1 ) + ' 行'
12151216 + '\n错误文本: ' + item )
12161217 }
12171218
1218- var val = item2 . substring ( index + 1 , item2 . length ) . trim ( ) ;
1219+ var val = index < 0 ? item2 . trim ( ) : item2 . substring ( index + 1 , item2 . length ) . trim ( ) ;
12191220
12201221 // var ind = val.indexOf('(') //一定要有函数是为了避免里面是一个简短单词和 SQLAuto 代码中变量冲突
12211222 // if (ind > 0 && val.indexOf(')') > ind) { //不从 0 开始是为了保证是函数,且不是 (1) 这种单纯限制作用域的括号
@@ -1227,7 +1228,7 @@ https://github.com/Tencent/APIJSON/issues
12271228 }
12281229 // }
12291230
1230- header [ StringUtil . trim ( item2 . substring ( 0 , index ) ) ] = val
1231+ header [ key ] = val
12311232 }
12321233 }
12331234
@@ -7573,6 +7574,8 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
75737574 var lastVarIndex = - 1 ;
75747575
75757576 const q = '`' ; // 只能用反引号,因为很可能有换行,需要 eval return this.getQuote()
7577+ var sqlRest = sql
7578+
75767579 for ( let i = 0 ; i < reqCount ; i ++ ) {
75777580 const which = i ;
75787581 const lineItem = lines [ i ] || '' ;
@@ -7600,14 +7603,17 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
76007603 const index = line . indexOf ( ': ' ) ; //APIJSON Table:alias 前面不会有空格 //致后面就接 { 'a': 1} 报错 Unexpected token ':' lastIndexOf(': '); // indexOf(': '); 可能会有 Comment:to
76017604 const p_k = line . substring ( 0 , index ) ;
76027605
7603- var varIndex = sql . indexOf ( '${' + p_k + '}' )
7604- if ( varIndex <= 0 ) {
7605- throw new Error ( '参数配置第 ' + ( i + 1 ) + ' 行错误! \n' + p_k + ': value 必须对应以上 SQL 中有 ${' + p_k + '} !\n不允许任何多余的空格!\n必须按 SQL 中变量的顺序配置参数,且 SQL 中不允许同名变量!' )
7606- }
7607- if ( varIndex <= lastVarIndex ) {
7608- throw new Error ( '参数配置第 ' + ( i + 1 ) + ' 行位置错误!\n' + p_k + ': value 必须按在 SQL 中变量 ${' + p_k + '} 的位置配置参数,且 SQL 中不允许同名变量!' )
7606+ var hasKey = StringUtil . isNotEmpty ( p_k )
7607+ var varExp = hasKey ? '${' + p_k + '}' : '?'
7608+ var varIndex = sqlRest . indexOf ( varExp )
7609+ if ( varIndex < 0 ) {
7610+ throw new Error ( '参数配置第 ' + ( i + 1 ) + ' 行错误! \n' + p_k + ': value 必须对应以上 SQL 中有 ' + varExp + ' !\n不允许任何多余的空格!\n必须按 SQL 中变量的顺序配置参数,且 SQL 中不允许同名变量!' )
76097611 }
7612+ // if (varIndex <= lastVarIndex) {
7613+ // throw new Error('参数配置第 ' + (i + 1) + ' 行位置错误!\n' + p_k + ': value 必须按在 SQL 中变量 ' + varExp + ' 的位置配置参数,且 SQL 中不允许同名变量!')
7614+ // }
76107615
7616+ sqlRest = sqlRest . substring ( varIndex + varExp . length )
76117617 lastVarIndex = varIndex
76127618
76137619 const bi = - 1 ; //没必要支持,用 before: undefined, after: .. 同样支持替换,反而这样导致不兼容包含空格的 key p_k.indexOf(' ');
@@ -7624,17 +7630,18 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
76247630
76257631 const lastKeyInPath = pathKeys [ pathKeys . length - 1 ]
76267632 const customizeKey = bi > 0 ;
7627- const key = customizeKey ? p_k . substring ( bi + 1 ) : lastKeyInPath ;
7633+ var key = customizeKey ? p_k . substring ( bi + 1 ) : lastKeyInPath ;
76287634 if ( key == null || key . trim ( ) . length <= 0 ) {
7629- throw new Error ( '参数注入 第 ' + ( i + 1 ) + ' 行格式错误!\n字符 ' + key + ' 不是合法的 JSON key!' +
7630- '\n每个随机变量配置都必须按照\n key0/key1/../targetKey replaceKey: value // 注释\n的格式!' +
7631- '\n注意冒号 ": " 左边 0 空格,右边 1 空格!其中 replaceKey 可省略。' +
7632- '\nkey: {} 中最外层常量对象 {} 必须用括号包裹为 ({}),也就是 key: ({}) 这种格式!' +
7633- '\nkey: 多行代码 必须用 function f() { var a = 1; return a; } f() 这种一行代码格式!' ) ;
7635+ // throw new Error('参数注入 第 ' + (i + 1) + ' 行格式错误!\n字符 ' + key + ' 不是合法的 JSON key!' +
7636+ // '\n每个随机变量配置都必须按照\n key0/key1/../targetKey replaceKey: value // 注释\n的格式!' +
7637+ // '\n注意冒号 ": " 左边 0 空格,右边 1 空格!其中 replaceKey 可省略。' +
7638+ // '\nkey: {} 中最外层常量对象 {} 必须用括号包裹为 ({}),也就是 key: ({}) 这种格式!' +
7639+ // '\nkey: 多行代码 必须用 function f() { var a = 1; return a; } f() 这种一行代码格式!');
7640+ key = "sqlautoVar" + i
76347641 }
76357642
76367643 // value RANDOM_DB
7637- const value = line . substring ( index + ': ' . length ) ;
7644+ const value = index < 0 ? line : line . substring ( index + ': ' . length ) ;
76387645
76397646 var invoke = function ( val , which , p_k , pathKeys , key , lastKeyInPath ) {
76407647 try {
0 commit comments