Revert "url: fix treatment of some values as non-empty"
This reverts commit 66877216bd833face753d9a5d573ad477895d880. It was agreed that this change contained too much potential ecosystem breakage, particularly around the inability to `delete` properties off a `Url` object. It may be re-introduced for a later release, along with better work on ecosystem compatibility. PR-URL: #1602 Reviewed-By: Mikeal Rogers <mikeal.rogers@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Forrest L Norvell <forrest@npmjs.com> Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com> Reviewed-By: Isaac Z. Schlueter <i@izs.me> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
This commit is contained in:
parent
66877216bd
commit
0f39ef4ca1
24
lib/url.js
24
lib/url.js
@ -879,7 +879,7 @@ Object.defineProperty(Url.prototype, 'port', {
|
|||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._port = -1;
|
this._port = -1;
|
||||||
if (this._host)
|
if (this._host)
|
||||||
this._host = null;
|
this._host = null;
|
||||||
@ -941,7 +941,7 @@ Object.defineProperty(Url.prototype, 'path', {
|
|||||||
return (p == null && s) ? ('/' + s) : null;
|
return (p == null && s) ? ('/' + s) : null;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._pathname = this._search = null;
|
this._pathname = this._search = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -973,7 +973,7 @@ Object.defineProperty(Url.prototype, 'protocol', {
|
|||||||
return proto;
|
return proto;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._protocol = null;
|
this._protocol = null;
|
||||||
} else {
|
} else {
|
||||||
var proto = '' + v;
|
var proto = '' + v;
|
||||||
@ -1001,7 +1001,7 @@ Object.defineProperty(Url.prototype, 'href', {
|
|||||||
var parsesQueryStrings = this._parsesQueryStrings;
|
var parsesQueryStrings = this._parsesQueryStrings;
|
||||||
// Reset properties.
|
// Reset properties.
|
||||||
Url.call(this);
|
Url.call(this);
|
||||||
if (!isConsideredEmpty(v))
|
if (v !== null && v !== '')
|
||||||
this.parse('' + v, parsesQueryStrings, false);
|
this.parse('' + v, parsesQueryStrings, false);
|
||||||
},
|
},
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
@ -1013,7 +1013,7 @@ Object.defineProperty(Url.prototype, 'auth', {
|
|||||||
return this._auth;
|
return this._auth;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
this._auth = isConsideredEmpty(v) ? null : '' + v;
|
this._auth = v === null ? null : '' + v;
|
||||||
this._href = '';
|
this._href = '';
|
||||||
},
|
},
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
@ -1026,7 +1026,7 @@ Object.defineProperty(Url.prototype, 'host', {
|
|||||||
return this._host;
|
return this._host;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._port = -1;
|
this._port = -1;
|
||||||
this._hostname = this._host = null;
|
this._hostname = this._host = null;
|
||||||
} else {
|
} else {
|
||||||
@ -1053,7 +1053,7 @@ Object.defineProperty(Url.prototype, 'hostname', {
|
|||||||
return this._hostname;
|
return this._hostname;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._hostname = null;
|
this._hostname = null;
|
||||||
|
|
||||||
if (this._hasValidPort())
|
if (this._hasValidPort())
|
||||||
@ -1080,7 +1080,7 @@ Object.defineProperty(Url.prototype, 'hash', {
|
|||||||
return this._hash;
|
return this._hash;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v) || v === '#') {
|
if (v === null) {
|
||||||
this._hash = null;
|
this._hash = null;
|
||||||
} else {
|
} else {
|
||||||
var hash = '' + v;
|
var hash = '' + v;
|
||||||
@ -1100,7 +1100,7 @@ Object.defineProperty(Url.prototype, 'search', {
|
|||||||
return this._search;
|
return this._search;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v) || v === '?') {
|
if (v === null) {
|
||||||
this._search = this._query = null;
|
this._search = this._query = null;
|
||||||
} else {
|
} else {
|
||||||
var search = escapeSearch('' + v);
|
var search = escapeSearch('' + v);
|
||||||
@ -1125,7 +1125,7 @@ Object.defineProperty(Url.prototype, 'pathname', {
|
|||||||
return this._pathname;
|
return this._pathname;
|
||||||
},
|
},
|
||||||
set: function(v) {
|
set: function(v) {
|
||||||
if (isConsideredEmpty(v)) {
|
if (v === null) {
|
||||||
this._pathname = null;
|
this._pathname = null;
|
||||||
} else {
|
} else {
|
||||||
var pathname = escapePathName('' + v).replace(/\\/g, '/');
|
var pathname = escapePathName('' + v).replace(/\\/g, '/');
|
||||||
@ -1144,10 +1144,6 @@ Object.defineProperty(Url.prototype, 'pathname', {
|
|||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function isConsideredEmpty(value) {
|
|
||||||
return value === null || value === undefined || value === '';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search `char1` (integer code for a character) in `string`
|
// Search `char1` (integer code for a character) in `string`
|
||||||
// starting from `fromIndex` and ending at `string.length - 1`
|
// starting from `fromIndex` and ending at `string.length - 1`
|
||||||
// or when a stop character is found.
|
// or when a stop character is found.
|
||||||
|
@ -43,10 +43,10 @@ const accessorTests = [{
|
|||||||
}, {
|
}, {
|
||||||
// Setting href to non-null non-string coerces to string
|
// Setting href to non-null non-string coerces to string
|
||||||
url: 'google',
|
url: 'google',
|
||||||
set: {href: 0},
|
set: {href: undefined},
|
||||||
test: {
|
test: {
|
||||||
path: '0',
|
path: 'undefined',
|
||||||
href: '0'
|
href: 'undefined'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
// Setting port is reflected in host
|
// Setting port is reflected in host
|
||||||
@ -180,8 +180,8 @@ const accessorTests = [{
|
|||||||
url: 'http://www.google.com',
|
url: 'http://www.google.com',
|
||||||
set: {search: ''},
|
set: {search: ''},
|
||||||
test: {
|
test: {
|
||||||
search: null,
|
search: '?',
|
||||||
path: '/'
|
path: '/?'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
|
||||||
@ -203,11 +203,10 @@ const accessorTests = [{
|
|||||||
}, {
|
}, {
|
||||||
|
|
||||||
// Empty hash is ok
|
// Empty hash is ok
|
||||||
url: 'http://www.google.com#hash',
|
url: 'http://www.google.com',
|
||||||
set: {hash: ''},
|
set: {hash: ''},
|
||||||
test: {
|
test: {
|
||||||
hash: null,
|
hash: '#'
|
||||||
href: 'http://www.google.com/'
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
|
||||||
@ -253,8 +252,7 @@ const accessorTests = [{
|
|||||||
url: 'http://www.google.com',
|
url: 'http://www.google.com',
|
||||||
set: {pathname: ''},
|
set: {pathname: ''},
|
||||||
test: {
|
test: {
|
||||||
pathname: null,
|
pathname: '/'
|
||||||
href: 'http://www.google.com'
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
// Null path is ok
|
// Null path is ok
|
||||||
@ -292,12 +290,11 @@ const accessorTests = [{
|
|||||||
protocol: null
|
protocol: null
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
// Empty protocol is ok
|
// Empty protocol is invalid
|
||||||
url: 'http://www.google.com/path',
|
url: 'http://www.google.com/path',
|
||||||
set: {protocol: ''},
|
set: {protocol: ''},
|
||||||
test: {
|
test: {
|
||||||
protocol: null,
|
protocol: 'http:'
|
||||||
href: '//www.google.com/path'
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
// Set query to an object
|
// Set query to an object
|
||||||
@ -330,9 +327,9 @@ const accessorTests = [{
|
|||||||
url: 'http://www.google.com/path?key=value',
|
url: 'http://www.google.com/path?key=value',
|
||||||
set: {path: '?key2=value2'},
|
set: {path: '?key2=value2'},
|
||||||
test: {
|
test: {
|
||||||
pathname: null,
|
pathname: '/',
|
||||||
search: '?key2=value2',
|
search: '?key2=value2',
|
||||||
href: 'http://www.google.com?key2=value2'
|
href: 'http://www.google.com/?key2=value2'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
// path is reflected in search and pathname 3
|
// path is reflected in search and pathname 3
|
||||||
@ -352,38 +349,6 @@ const accessorTests = [{
|
|||||||
search: null,
|
search: null,
|
||||||
href: 'http://www.google.com'
|
href: 'http://www.google.com'
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
// setting hash to '' removes any hash
|
|
||||||
url: 'http://www.google.com/#hash',
|
|
||||||
set: {hash: ''},
|
|
||||||
test: {
|
|
||||||
hash: null,
|
|
||||||
href: 'http://www.google.com/'
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
// setting hash to '#' removes any hash
|
|
||||||
url: 'http://www.google.com/#hash',
|
|
||||||
set: {hash: '#'},
|
|
||||||
test: {
|
|
||||||
hash: null,
|
|
||||||
href: 'http://www.google.com/'
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
// setting search to '' removes any search
|
|
||||||
url: 'http://www.google.com/?search',
|
|
||||||
set: {search: ''},
|
|
||||||
test: {
|
|
||||||
search: null,
|
|
||||||
href: 'http://www.google.com/'
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
// setting search to '?' removes any search
|
|
||||||
url: 'http://www.google.com/?search',
|
|
||||||
set: {search: '?'},
|
|
||||||
test: {
|
|
||||||
search: null,
|
|
||||||
href: 'http://www.google.com/'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user