@@ -6,31 +6,34 @@ export const parseArguments = (query: string, parameters?: CFXParameters): [stri
6
6
7
7
if ( convertNamedPlaceholders && parameters && typeof parameters === 'object' && ! Array . isArray ( parameters ) )
8
8
if ( query . includes ( ':' ) || query . includes ( '@' ) ) {
9
- const placeholders = convertNamedPlaceholders ( query , parameters ) ;
10
- query = placeholders [ 0 ] ;
11
- parameters = placeholders [ 1 ] ;
9
+ [ query , parameters ] = convertNamedPlaceholders ( query , parameters ) ;
12
10
}
13
11
14
12
if ( ! parameters || typeof parameters === 'function' ) parameters = [ ] ;
15
13
14
+ const placeholders = query . match ( / \? (? ! \? ) / g) ?. length ?? 0 ;
15
+
16
16
if ( parameters && ! Array . isArray ( parameters ) ) {
17
17
let arr : unknown [ ] = [ ] ;
18
- Object . entries ( parameters ) . forEach ( ( entry ) => ( arr [ parseInt ( entry [ 0 ] ) - 1 ] = entry [ 1 ] ) ) ;
18
+
19
+ for ( let i = 0 ; i < placeholders ; i ++ ) {
20
+ arr [ i ] = parameters [ i + 1 ] ?? null ;
21
+ }
22
+
19
23
parameters = arr ;
20
24
} else {
21
- const queryParams = query . match ( / \? (? ! \? ) / g) ;
22
-
23
- if ( queryParams !== null ) {
25
+ if ( placeholders ) {
24
26
if ( parameters . length === 0 ) {
25
- for ( let i = 0 ; i < queryParams . length ; i ++ ) parameters [ i ] = null ;
27
+ for ( let i = 0 ; i < placeholders ; i ++ ) parameters [ i ] = null ;
26
28
return [ query , parameters ] ;
27
29
}
28
- const diff = queryParams . length - parameters . length ;
30
+
31
+ const diff = placeholders - parameters . length ;
29
32
30
33
if ( diff > 0 ) {
31
- for ( let i = 0 ; i < diff ; i ++ ) parameters [ queryParams . length + i ] = null ;
34
+ for ( let i = 0 ; i < diff ; i ++ ) parameters [ placeholders + i ] = null ;
32
35
} else if ( diff < 0 ) {
33
- throw new Error ( `Expected ${ queryParams . length } parameters, but received ${ parameters . length } .` ) ;
36
+ throw new Error ( `Expected ${ placeholders } parameters, but received ${ parameters . length } .` ) ;
34
37
}
35
38
}
36
39
}
0 commit comments