@@ -1126,26 +1126,32 @@ function domainToUnicode(domain) {
1126
1126
return _domainToUnicode ( `${ domain } ` ) ;
1127
1127
}
1128
1128
1129
- // Utility function that converts a URL object into an ordinary
1130
- // options object as expected by the http.request and https.request
1131
- // APIs.
1129
+ /**
1130
+ * Utility function that converts a URL object into an ordinary options object
1131
+ * as expected by the `http.request` and `https.request` APIs.
1132
+ * @param {URL } url
1133
+ * @returns {Record<string, unknown> }
1134
+ */
1132
1135
function urlToHttpOptions ( url ) {
1136
+ const { hostname, pathname, port, username, password, search } = url ;
1133
1137
const options = {
1138
+ __proto__ : null ,
1139
+ ...url , // In case the url object was extended by the user.
1134
1140
protocol : url . protocol ,
1135
- hostname : url . hostname && StringPrototypeStartsWith ( url . hostname , '[' ) ?
1136
- StringPrototypeSlice ( url . hostname , 1 , - 1 ) :
1137
- url . hostname ,
1141
+ hostname : hostname && StringPrototypeStartsWith ( hostname , '[' ) ?
1142
+ StringPrototypeSlice ( hostname , 1 , - 1 ) :
1143
+ hostname ,
1138
1144
hash : url . hash ,
1139
- search : url . search ,
1140
- pathname : url . pathname ,
1141
- path : `${ url . pathname || '' } ${ url . search || '' } ` ,
1145
+ search : search ,
1146
+ pathname : pathname ,
1147
+ path : `${ pathname || '' } ${ search || '' } ` ,
1142
1148
href : url . href ,
1143
1149
} ;
1144
- if ( url . port !== '' ) {
1145
- options . port = Number ( url . port ) ;
1150
+ if ( port !== '' ) {
1151
+ options . port = Number ( port ) ;
1146
1152
}
1147
- if ( url . username || url . password ) {
1148
- options . auth = `${ decodeURIComponent ( url . username ) } :${ decodeURIComponent ( url . password ) } ` ;
1153
+ if ( username || password ) {
1154
+ options . auth = `${ decodeURIComponent ( username ) } :${ decodeURIComponent ( password ) } ` ;
1149
1155
}
1150
1156
return options ;
1151
1157
}
0 commit comments