You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							33 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							1.1 KiB
						
					
					
				var fails = require('../internals/fails'); | 
						|
var wellKnownSymbol = require('../internals/well-known-symbol'); | 
						|
var IS_PURE = require('../internals/is-pure'); | 
						|
 | 
						|
var ITERATOR = wellKnownSymbol('iterator'); | 
						|
 | 
						|
module.exports = !fails(function () { | 
						|
  var url = new URL('b?a=1&b=2&c=3', 'http://a'); | 
						|
  var searchParams = url.searchParams; | 
						|
  var result = ''; | 
						|
  url.pathname = 'c%20d'; | 
						|
  searchParams.forEach(function (value, key) { | 
						|
    searchParams['delete']('b'); | 
						|
    result += key + value; | 
						|
  }); | 
						|
  return (IS_PURE && !url.toJSON) | 
						|
    || !searchParams.sort | 
						|
    || url.href !== 'http://a/c%20d?a=1&c=3' | 
						|
    || searchParams.get('c') !== '3' | 
						|
    || String(new URLSearchParams('?a=1')) !== 'a=1' | 
						|
    || !searchParams[ITERATOR] | 
						|
    // throws in Edge | 
						|
    || new URL('https://a@b').username !== 'a' | 
						|
    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b' | 
						|
    // not punycoded in Edge | 
						|
    || new URL('http://тест').host !== 'xn--e1aybc' | 
						|
    // not escaped in Chrome 62- | 
						|
    || new URL('http://a#б').hash !== '#%D0%B1' | 
						|
    // fails in Chrome 66- | 
						|
    || result !== 'a1c3' | 
						|
    // throws in Safari | 
						|
    || new URL('http://x', undefined).host !== 'x'; | 
						|
});
 | 
						|
 |