@@ -33,7 +33,7 @@ class ParseURI extends Operation {
3333 * @returns {string }
3434 */
3535 run ( input , args ) {
36- const uri = url . parse ( input , true ) ;
36+ const uri = url . parse ( input , false ) ;
3737
3838 let output = "" ;
3939
@@ -43,18 +43,31 @@ class ParseURI extends Operation {
4343 if ( uri . port ) output += "Port:\t\t" + uri . port + "\n" ;
4444 if ( uri . pathname ) output += "Path name:\t" + uri . pathname + "\n" ;
4545 if ( uri . query ) {
46- const keys = Object . keys ( uri . query ) ;
46+ const queryObj = Object . create ( null ) ;
47+ for ( const [ key , value ] of new URLSearchParams ( uri . query ) ) {
48+ if ( Object . prototype . hasOwnProperty . call ( queryObj , key ) ) {
49+ if ( Array . isArray ( queryObj [ key ] ) ) {
50+ queryObj [ key ] . push ( value ) ;
51+ } else {
52+ queryObj [ key ] = [ queryObj [ key ] , value ] ;
53+ }
54+ } else {
55+ queryObj [ key ] = value ;
56+ }
57+ }
58+
59+ const keys = Object . keys ( queryObj ) ;
4760 let padding = 0 ;
4861
4962 keys . forEach ( k => {
5063 padding = ( k . length > padding ) ? k . length : padding ;
5164 } ) ;
5265
5366 output += "Arguments:\n" ;
54- for ( const key in uri . query ) {
67+ for ( const key in queryObj ) {
5568 output += "\t" + key . padEnd ( padding , " " ) ;
56- if ( uri . query [ key ] . length ) {
57- output += " = " + uri . query [ key ] + "\n" ;
69+ if ( queryObj [ key ] . length ) {
70+ output += " = " + queryObj [ key ] + "\n" ;
5871 } else {
5972 output += "\n" ;
6073 }
0 commit comments