| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -878,8 +878,7 @@ function serializeParams(array) { | |||
| 878 | 878 | ||
| 879 | 879 | const firstEncodedParam = encodeStr(array[0], noEscape, paramHexTable); | |
| 880 | 880 | const firstEncodedValue = encodeStr(array[1], noEscape, paramHexTable); | |
| 881 | - let output = | ||
| 882 | - `${firstEncodedParam}=${firstEncodedValue}`; | ||
| 881 | + let output = `${firstEncodedParam}=${firstEncodedValue}`; | ||
| 883 | 882 | ||
| 884 | 883 | for (var i = 2; i < len; i += 2) { | |
| 885 | 884 | const encodedParam = encodeStr(array[i], noEscape, paramHexTable); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,7 +36,8 @@ const { | |||
| 36 | 36 | URLSearchParams, | |
| 37 | 37 | domainToASCII, | |
| 38 | 38 | domainToUnicode, | |
| 39 | - formatSymbol | ||
| 39 | + formatSymbol, | ||
| 40 | + encodeStr, | ||
| 40 | 41 | } = require('internal/url'); | |
| 41 | 42 | ||
| 42 | 43 | // Original url.parse() API | |
@@ -541,10 +542,27 @@ function urlFormat(urlObject, options) { | |||
| 541 | 542 | return urlObject.format(); | |
| 542 | 543 | } | |
| 543 | 544 | ||
| 545 | + // These characters do not need escaping: | ||
| 546 | + // ! - . _ ~ | ||
| 547 | + // ' ( ) * : | ||
| 548 | + // digits | ||
| 549 | + // alpha (uppercase) | ||
| 550 | + // alpha (lowercase) | ||
| 551 | + const noEscapeAuth = [ | ||
| 552 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 - 0x0F | ||
| 553 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x10 - 0x1F | ||
| 554 | + 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, // 0x20 - 0x2F | ||
| 555 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 0x30 - 0x3F | ||
| 556 | + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 0x4F | ||
| 557 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 0x50 - 0x5F | ||
| 558 | + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6F | ||
| 559 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 // 0x70 - 0x7F | ||
| 560 | + ]; | ||
| 561 | + | ||
| 544 | 562 | Url.prototype.format = function format() { | |
| 545 | 563 | var auth = this.auth || ''; | |
| 546 | 564 | if (auth) { | |
| 547 | - auth = encodeAuth(auth); | ||
| 565 | + auth = encodeStr(auth, noEscapeAuth, hexTable); | ||
| 548 | 566 | auth += '@'; | |
| 549 | 567 | } | |
| 550 | 568 | ||
@@ -929,78 +947,6 @@ Url.prototype.parseHost = function parseHost() { | |||
| 929 | 947 | if (host) this.hostname = host; | |
| 930 | 948 | }; | |
| 931 | 949 | ||
| 932 | - // These characters do not need escaping: | ||
| 933 | - // ! - . _ ~ | ||
| 934 | - // ' ( ) * : | ||
| 935 | - // digits | ||
| 936 | - // alpha (uppercase) | ||
| 937 | - // alpha (lowercase) | ||
| 938 | - const noEscapeAuth = [ | ||
| 939 | - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 - 0x0F | ||
| 940 | - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x10 - 0x1F | ||
| 941 | - 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, // 0x20 - 0x2F | ||
| 942 | - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 0x30 - 0x3F | ||
| 943 | - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 0x4F | ||
| 944 | - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, // 0x50 - 0x5F | ||
| 945 | - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 0x6F | ||
| 946 | - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 // 0x70 - 0x7F | ||
| 947 | - ]; | ||
| 948 | - | ||
| 949 | - function encodeAuth(str) { | ||
| 950 | - // faster encodeURIComponent alternative for encoding auth uri components | ||
| 951 | - var out = ''; | ||
| 952 | - var lastPos = 0; | ||
| 953 | - for (var i = 0; i < str.length; ++i) { | ||
| 954 | - var c = str.charCodeAt(i); | ||
| 955 | - | ||
| 956 | - // ASCII | ||
| 957 | - if (c < 0x80) { | ||
| 958 | - if (noEscapeAuth[c] === 1) | ||
| 959 | - continue; | ||
| 960 | - if (lastPos < i) | ||
| 961 | - out += str.slice(lastPos, i); | ||
| 962 | - lastPos = i + 1; | ||
| 963 | - out += hexTable[c]; | ||
| 964 | - continue; | ||
| 965 | - } | ||
| 966 | - | ||
| 967 | - if (lastPos < i) | ||
| 968 | - out += str.slice(lastPos, i); | ||
| 969 | - | ||
| 970 | - // Multi-byte characters ... | ||
| 971 | - if (c < 0x800) { | ||
| 972 | - lastPos = i + 1; | ||
| 973 | - out += hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]; | ||
| 974 | - continue; | ||
| 975 | - } | ||
| 976 | - if (c < 0xD800 || c >= 0xE000) { | ||
| 977 | - lastPos = i + 1; | ||
| 978 | - out += hexTable[0xE0 | (c >> 12)] + | ||
| 979 | - hexTable[0x80 | ((c >> 6) & 0x3F)] + | ||
| 980 | - hexTable[0x80 | (c & 0x3F)]; | ||
| 981 | - continue; | ||
| 982 | - } | ||
| 983 | - // Surrogate pair | ||
| 984 | - ++i; | ||
| 985 | - var c2; | ||
| 986 | - if (i < str.length) | ||
| 987 | - c2 = str.charCodeAt(i) & 0x3FF; | ||
| 988 | - else | ||
| 989 | - c2 = 0; | ||
| 990 | - lastPos = i + 1; | ||
| 991 | - c = 0x10000 + (((c & 0x3FF) << 10) | c2); | ||
| 992 | - out += hexTable[0xF0 | (c >> 18)] + | ||
| 993 | - hexTable[0x80 | ((c >> 12) & 0x3F)] + | ||
| 994 | - hexTable[0x80 | ((c >> 6) & 0x3F)] + | ||
| 995 | - hexTable[0x80 | (c & 0x3F)]; | ||
| 996 | - } | ||
| 997 | - if (lastPos === 0) | ||
| 998 | - return str; | ||
| 999 | - if (lastPos < str.length) | ||
| 1000 | - return out + str.slice(lastPos); | ||
| 1001 | - return out; | ||
| 1002 | - } | ||
| 1003 | - | ||
| 1004 | 950 | module.exports = { | |
| 1005 | 951 | // Original API | |
| 1006 | 952 | Url, | |
| Back | FazBrowse Home | New Git URL |
0 commit comments