File tree 2 files changed +26
-2
lines changed
Filter options
2 files changed +26
-2
lines changed
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ var required = require('requires-port')
5
5
, controlOrWhitespace = / ^ [ \x00 - \x20 \u00a0 \u1680 \u2000 - \u200a \u2028 \u2029 \u202f \u205f \u3000 \ufeff ] + /
6
6
, CRHTLF = / [ \n \r \t ] / g
7
7
, slashes = / ^ [ A - Z a - z ] [ A - Z a - z 0 - 9 + - . ] * : \/ \/ /
8
+ , port = / : \d + $ /
8
9
, protocolre = / ^ ( [ a - z ] [ a - z 0 - 9 . + - ] * : ) ? ( \/ \/ ) ? ( [ \\ / ] + ) ? ( [ \S \s ] * ) / i
9
10
, windowsDriveLetter = / ^ [ a - z A - Z ] : / ;
10
11
@@ -452,7 +453,7 @@ function set(part, value, fn) {
452
453
case 'host' :
453
454
url [ part ] = value ;
454
455
455
- if ( / : \d + $ / . test ( value ) ) {
456
+ if ( port . test ( value ) ) {
456
457
value = value . split ( ':' ) ;
457
458
url . port = value . pop ( ) ;
458
459
url . hostname = value . join ( ':' ) ;
@@ -560,7 +561,10 @@ function toString(stringify) {
560
561
// ends with a colon, then add back the trailing colon that was removed. This
561
562
// prevents an invalid URL from being transformed into a valid one.
562
563
//
563
- if ( host [ host . length - 1 ] === ':' ) host += ':' ;
564
+ if ( host [ host . length - 1 ] === ':' || ( port . test ( url . hostname ) && ! url . port ) ) {
565
+ host += ':' ;
566
+ }
567
+
564
568
result += host + url . pathname ;
565
569
566
570
query = 'object' === typeof url . query ? stringify ( url . query ) : url . query ;
Original file line number Diff line number Diff line change @@ -468,6 +468,26 @@ describe('url-parse', function () {
468
468
assume ( parsed . pathname ) . equals ( '/' ) ;
469
469
assume ( parsed . origin ) . equals ( 'http://example.com:' ) ;
470
470
assume ( parsed . href ) . equals ( 'http://example.com::/' ) ;
471
+
472
+ parsed = parse ( 'http://example.com:8080:' ) ;
473
+
474
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
475
+ assume ( parsed . port ) . equals ( '' ) ;
476
+ assume ( parsed . host ) . equals ( 'example.com:8080' ) ;
477
+ assume ( parsed . hostname ) . equals ( 'example.com:8080' ) ;
478
+ assume ( parsed . pathname ) . equals ( '/' ) ;
479
+ assume ( parsed . origin ) . equals ( 'http://example.com:8080' ) ;
480
+ assume ( parsed . href ) . equals ( 'http://example.com:8080:/' ) ;
481
+
482
+ parsed = parse ( 'http://example.com:8000:8080' ) ;
483
+
484
+ assume ( parsed . protocol ) . equals ( 'http:' ) ;
485
+ assume ( parsed . port ) . equals ( '8080' ) ;
486
+ assume ( parsed . host ) . equals ( 'example.com:8000:8080' ) ;
487
+ assume ( parsed . hostname ) . equals ( 'example.com:8000' ) ;
488
+ assume ( parsed . pathname ) . equals ( '/' ) ;
489
+ assume ( parsed . origin ) . equals ( 'http://example.com:8000:8080' ) ;
490
+ assume ( parsed . href ) . equals ( 'http://example.com:8000:8080/' ) ;
471
491
} ) ;
472
492
473
493
describe ( 'origin' , function ( ) {
You can’t perform that action at this time.
0 commit comments