url: remove redundant function
PR-URL: https://github.com/nodejs/node/pull/19076 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
f32796fad2
commit
38bae5dc23
@ -887,8 +887,7 @@ function serializeParams(array) {
|
|||||||
|
|
||||||
const firstEncodedParam = encodeStr(array[0], noEscape, paramHexTable);
|
const firstEncodedParam = encodeStr(array[0], noEscape, paramHexTable);
|
||||||
const firstEncodedValue = encodeStr(array[1], noEscape, paramHexTable);
|
const firstEncodedValue = encodeStr(array[1], noEscape, paramHexTable);
|
||||||
let output =
|
let output = `${firstEncodedParam}=${firstEncodedValue}`;
|
||||||
`${firstEncodedParam}=${firstEncodedValue}`;
|
|
||||||
|
|
||||||
for (var i = 2; i < len; i += 2) {
|
for (var i = 2; i < len; i += 2) {
|
||||||
const encodedParam = encodeStr(array[i], noEscape, paramHexTable);
|
const encodedParam = encodeStr(array[i], noEscape, paramHexTable);
|
||||||
|
94
lib/url.js
94
lib/url.js
@ -38,7 +38,8 @@ const {
|
|||||||
URLSearchParams,
|
URLSearchParams,
|
||||||
domainToASCII,
|
domainToASCII,
|
||||||
domainToUnicode,
|
domainToUnicode,
|
||||||
formatSymbol
|
formatSymbol,
|
||||||
|
encodeStr,
|
||||||
} = require('internal/url');
|
} = require('internal/url');
|
||||||
|
|
||||||
// Original url.parse() API
|
// Original url.parse() API
|
||||||
@ -543,10 +544,27 @@ function urlFormat(urlObject, options) {
|
|||||||
return urlObject.format();
|
return urlObject.format();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These characters do not need escaping:
|
||||||
|
// ! - . _ ~
|
||||||
|
// ' ( ) * :
|
||||||
|
// digits
|
||||||
|
// alpha (uppercase)
|
||||||
|
// alpha (lowercase)
|
||||||
|
const noEscapeAuth = [
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 - 0x0F
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x10 - 0x1F
|
||||||
|
0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, // 0x20 - 0x2F
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 0x30 - 0x3F
|
||||||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 0x4F
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 0x50 - 0x5F
|
||||||
|
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6F
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 // 0x70 - 0x7F
|
||||||
|
];
|
||||||
|
|
||||||
Url.prototype.format = function format() {
|
Url.prototype.format = function format() {
|
||||||
var auth = this.auth || '';
|
var auth = this.auth || '';
|
||||||
if (auth) {
|
if (auth) {
|
||||||
auth = encodeAuth(auth);
|
auth = encodeStr(auth, noEscapeAuth, hexTable);
|
||||||
auth += '@';
|
auth += '@';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -931,78 +949,6 @@ Url.prototype.parseHost = function parseHost() {
|
|||||||
if (host) this.hostname = host;
|
if (host) this.hostname = host;
|
||||||
};
|
};
|
||||||
|
|
||||||
// These characters do not need escaping:
|
|
||||||
// ! - . _ ~
|
|
||||||
// ' ( ) * :
|
|
||||||
// digits
|
|
||||||
// alpha (uppercase)
|
|
||||||
// alpha (lowercase)
|
|
||||||
const noEscapeAuth = [
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 - 0x0F
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x10 - 0x1F
|
|
||||||
0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, // 0x20 - 0x2F
|
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 0x30 - 0x3F
|
|
||||||
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 0x4F
|
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 0x50 - 0x5F
|
|
||||||
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6F
|
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 // 0x70 - 0x7F
|
|
||||||
];
|
|
||||||
|
|
||||||
function encodeAuth(str) {
|
|
||||||
// faster encodeURIComponent alternative for encoding auth uri components
|
|
||||||
var out = '';
|
|
||||||
var lastPos = 0;
|
|
||||||
for (var i = 0; i < str.length; ++i) {
|
|
||||||
var c = str.charCodeAt(i);
|
|
||||||
|
|
||||||
// ASCII
|
|
||||||
if (c < 0x80) {
|
|
||||||
if (noEscapeAuth[c] === 1)
|
|
||||||
continue;
|
|
||||||
if (lastPos < i)
|
|
||||||
out += str.slice(lastPos, i);
|
|
||||||
lastPos = i + 1;
|
|
||||||
out += hexTable[c];
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lastPos < i)
|
|
||||||
out += str.slice(lastPos, i);
|
|
||||||
|
|
||||||
// Multi-byte characters ...
|
|
||||||
if (c < 0x800) {
|
|
||||||
lastPos = i + 1;
|
|
||||||
out += hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)];
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (c < 0xD800 || c >= 0xE000) {
|
|
||||||
lastPos = i + 1;
|
|
||||||
out += hexTable[0xE0 | (c >> 12)] +
|
|
||||||
hexTable[0x80 | ((c >> 6) & 0x3F)] +
|
|
||||||
hexTable[0x80 | (c & 0x3F)];
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Surrogate pair
|
|
||||||
++i;
|
|
||||||
var c2;
|
|
||||||
if (i < str.length)
|
|
||||||
c2 = str.charCodeAt(i) & 0x3FF;
|
|
||||||
else
|
|
||||||
c2 = 0;
|
|
||||||
lastPos = i + 1;
|
|
||||||
c = 0x10000 + (((c & 0x3FF) << 10) | c2);
|
|
||||||
out += hexTable[0xF0 | (c >> 18)] +
|
|
||||||
hexTable[0x80 | ((c >> 12) & 0x3F)] +
|
|
||||||
hexTable[0x80 | ((c >> 6) & 0x3F)] +
|
|
||||||
hexTable[0x80 | (c & 0x3F)];
|
|
||||||
}
|
|
||||||
if (lastPos === 0)
|
|
||||||
return str;
|
|
||||||
if (lastPos < str.length)
|
|
||||||
return out + str.slice(lastPos);
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// Original API
|
// Original API
|
||||||
Url,
|
Url,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user