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.
34 lines
1.2 KiB
34 lines
1.2 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 () { |
|
// eslint-disable-next-line unicorn/relative-url-style -- required for testing |
|
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'; |
|
});
|
|
|