| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 528798c commit 072adfe
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -8,9 +8,39 @@ module.exports = { | |||
| 8 | 8 | CHAR_LOWERCASE_Z: 122, /*z*/ | |
| 9 | 9 | ||
| 10 | 10 | // Non-alphabetic chars. | |
| 11 | - CHAR_DOT: 46, /*.*/ | ||
| 12 | - CHAR_FORWARD_SLASH: 47, /*/*/ | ||
| 13 | - CHAR_BACKWARD_SLASH: 92, /*\*/ | ||
| 14 | - CHAR_COLON: 58, /*:*/ | ||
| 15 | - CHAR_QUESTION_MARK: 63, /*?*/ | ||
| 11 | + CHAR_DOT: 46, /* . */ | ||
| 12 | + CHAR_FORWARD_SLASH: 47, /* / */ | ||
| 13 | + CHAR_BACKWARD_SLASH: 92, /* \ */ | ||
| 14 | + CHAR_VERTICAL_LINE: 124, /* | */ | ||
| 15 | + CHAR_COLON: 58, /* : */ | ||
| 16 | + CHAR_QUESTION_MARK: 63, /* ? */ | ||
| 17 | + CHAR_UNDERSCORE: 95, /* _ */ | ||
| 18 | + CHAR_LINE_FEED: 10, /* \n */ | ||
| 19 | + CHAR_CARRIAGE_RETURN: 13, /* \r */ | ||
| 20 | + CHAR_TAB: 9, /* \t */ | ||
| 21 | + CHAR_FORM_FEED: 12, /* \f */ | ||
| 22 | + CHAR_EXCLAMATION_MARK: 33, /* ! */ | ||
| 23 | + CHAR_HASH: 35, /* # */ | ||
| 24 | + CHAR_SPACE: 32, /* */ | ||
| 25 | + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ | ||
| 26 | + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ | ||
| 27 | + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ | ||
| 28 | + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ | ||
| 29 | + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ | ||
| 30 | + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ | ||
| 31 | + CHAR_LEFT_CURLY_BRACKET: 123, /* { */ | ||
| 32 | + CHAR_RIGHT_CURLY_BRACKET: 125, /* } */ | ||
| 33 | + CHAR_HYPHEN_MINUS: 45, /* - */ | ||
| 34 | + CHAR_PLUS: 43, /* + */ | ||
| 35 | + CHAR_DOUBLE_QUOTE: 34, /* " */ | ||
| 36 | + CHAR_SINGLE_QUOTE: 39, /* ' */ | ||
| 37 | + CHAR_PERCENT: 37, /* % */ | ||
| 38 | + CHAR_SEMICOLON: 59, /* ; */ | ||
| 39 | + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ | ||
| 40 | + CHAR_GRAVE_ACCENT: 96, /* ` */ | ||
| 41 | + CHAR_AT: 64, /* @ */ | ||
| 42 | + | ||
| 43 | + // Digits | ||
| 44 | + CHAR_0: 48, /* 0 */ | ||
| 45 | + CHAR_9: 57, /* 9 */ | ||
| 16 | 46 | }; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -92,6 +92,43 @@ const slashedProtocol = { | |||
| 92 | 92 | 'file:': true | |
| 93 | 93 | }; | |
| 94 | 94 | const querystring = require('querystring'); | |
| 95 | + const { | ||
| 96 | + CHAR_SPACE, | ||
| 97 | + CHAR_TAB, | ||
| 98 | + CHAR_CARRIAGE_RETURN, | ||
| 99 | + CHAR_LINE_FEED, | ||
| 100 | + CHAR_FORM_FEED, | ||
| 101 | + CHAR_NO_BREAK_SPACE, | ||
| 102 | + CHAR_ZERO_WIDTH_NOBREAK_SPACE, | ||
| 103 | + CHAR_HASH, | ||
| 104 | + CHAR_FORWARD_SLASH, | ||
| 105 | + CHAR_LEFT_SQUARE_BRACKET, | ||
| 106 | + CHAR_RIGHT_SQUARE_BRACKET, | ||
| 107 | + CHAR_LEFT_ANGLE_BRACKET, | ||
| 108 | + CHAR_RIGHT_ANGLE_BRACKET, | ||
| 109 | + CHAR_LEFT_CURLY_BRACKET, | ||
| 110 | + CHAR_RIGHT_CURLY_BRACKET, | ||
| 111 | + CHAR_QUESTION_MARK, | ||
| 112 | + CHAR_LOWERCASE_A, | ||
| 113 | + CHAR_LOWERCASE_Z, | ||
| 114 | + CHAR_UPPERCASE_A, | ||
| 115 | + CHAR_UPPERCASE_Z, | ||
| 116 | + CHAR_DOT, | ||
| 117 | + CHAR_0, | ||
| 118 | + CHAR_9, | ||
| 119 | + CHAR_HYPHEN_MINUS, | ||
| 120 | + CHAR_PLUS, | ||
| 121 | + CHAR_UNDERSCORE, | ||
| 122 | + CHAR_DOUBLE_QUOTE, | ||
| 123 | + CHAR_SINGLE_QUOTE, | ||
| 124 | + CHAR_PERCENT, | ||
| 125 | + CHAR_SEMICOLON, | ||
| 126 | + CHAR_BACKWARD_SLASH, | ||
| 127 | + CHAR_CIRCUMFLEX_ACCENT, | ||
| 128 | + CHAR_GRAVE_ACCENT, | ||
| 129 | + CHAR_VERTICAL_LINE, | ||
| 130 | + CHAR_AT, | ||
| 131 | + } = require('internal/constants'); | ||
| 95 | 132 | ||
| 96 | 133 | function urlParse(url, parseQueryString, slashesDenoteHost) { | |
| 97 | 134 | if (url instanceof Url) return url; | |
@@ -119,13 +156,13 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 119 | 156 | const code = url.charCodeAt(i); | |
| 120 | 157 | ||
| 121 | 158 | // Find first and last non-whitespace characters for trimming | |
| 122 | - const isWs = code === 32/* */ || | ||
| 123 | - code === 9/*\t*/ || | ||
| 124 | - code === 13/*\r*/ || | ||
| 125 | - code === 10/*\n*/ || | ||
| 126 | - code === 12/*\f*/ || | ||
| 127 | - code === 160/*\u00A0*/ || | ||
| 128 | - code === 65279/*\uFEFF*/; | ||
| 159 | + const isWs = code === CHAR_SPACE || | ||
| 160 | + code === CHAR_TAB || | ||
| 161 | + code === CHAR_CARRIAGE_RETURN || | ||
| 162 | + code === CHAR_LINE_FEED || | ||
| 163 | + code === CHAR_FORM_FEED || | ||
| 164 | + code === CHAR_NO_BREAK_SPACE || | ||
| 165 | + code === CHAR_ZERO_WIDTH_NOBREAK_SPACE; | ||
| 129 | 166 | if (start === -1) { | |
| 130 | 167 | if (isWs) | |
| 131 | 168 | continue; | |
@@ -143,20 +180,20 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 143 | 180 | // Only convert backslashes while we haven't seen a split character | |
| 144 | 181 | if (!split) { | |
| 145 | 182 | switch (code) { | |
| 146 | - case 35: // '#' | ||
| 183 | + case CHAR_HASH: | ||
| 147 | 184 | hasHash = true; | |
| 148 | 185 | // Fall through | |
| 149 | - case 63: // '?' | ||
| 186 | + case CHAR_QUESTION_MARK: | ||
| 150 | 187 | split = true; | |
| 151 | 188 | break; | |
| 152 | - case 92: // '\\' | ||
| 189 | + case CHAR_BACKWARD_SLASH: | ||
| 153 | 190 | if (i - lastPos > 0) | |
| 154 | 191 | rest += url.slice(lastPos, i); | |
| 155 | 192 | rest += '/'; | |
| 156 | 193 | lastPos = i + 1; | |
| 157 | 194 | break; | |
| 158 | 195 | } | |
| 159 | - } else if (!hasHash && code === 35/*#*/) { | ||
| 196 | + } else if (!hasHash && code === CHAR_HASH) { | ||
| 160 | 197 | hasHash = true; | |
| 161 | 198 | } | |
| 162 | 199 | } | |
@@ -218,8 +255,8 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 218 | 255 | // resolution will treat //foo/bar as host=foo,path=bar because that's | |
| 219 | 256 | // how the browser resolves relative URLs. | |
| 220 | 257 | if (slashesDenoteHost || proto || hostPattern.test(rest)) { | |
| 221 | - var slashes = rest.charCodeAt(0) === 47/*/*/ && | ||
| 222 | - rest.charCodeAt(1) === 47/*/*/; | ||
| 258 | + var slashes = rest.charCodeAt(0) === CHAR_FORWARD_SLASH && | ||
| 259 | + rest.charCodeAt(1) === CHAR_FORWARD_SLASH; | ||
| 223 | 260 | if (slashes && !(proto && hostlessProtocol[proto])) { | |
| 224 | 261 | rest = rest.slice(2); | |
| 225 | 262 | this.slashes = true; | |
@@ -249,35 +286,35 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 249 | 286 | var nonHost = -1; | |
| 250 | 287 | for (i = 0; i < rest.length; ++i) { | |
| 251 | 288 | switch (rest.charCodeAt(i)) { | |
| 252 | - case 9: // '\t' | ||
| 253 | - case 10: // '\n' | ||
| 254 | - case 13: // '\r' | ||
| 255 | - case 32: // ' ' | ||
| 256 | - case 34: // '"' | ||
| 257 | - case 37: // '%' | ||
| 258 | - case 39: // '\'' | ||
| 259 | - case 59: // ';' | ||
| 260 | - case 60: // '<' | ||
| 261 | - case 62: // '>' | ||
| 262 | - case 92: // '\\' | ||
| 263 | - case 94: // '^' | ||
| 264 | - case 96: // '`' | ||
| 265 | - case 123: // '{' | ||
| 266 | - case 124: // '|' | ||
| 267 | - case 125: // '}' | ||
| 289 | + case CHAR_TAB: | ||
| 290 | + case CHAR_LINE_FEED: | ||
| 291 | + case CHAR_CARRIAGE_RETURN: | ||
| 292 | + case CHAR_SPACE: | ||
| 293 | + case CHAR_DOUBLE_QUOTE: | ||
| 294 | + case CHAR_PERCENT: | ||
| 295 | + case CHAR_SINGLE_QUOTE: | ||
| 296 | + case CHAR_SEMICOLON: | ||
| 297 | + case CHAR_LEFT_ANGLE_BRACKET: | ||
| 298 | + case CHAR_RIGHT_ANGLE_BRACKET: | ||
| 299 | + case CHAR_BACKWARD_SLASH: | ||
| 300 | + case CHAR_CIRCUMFLEX_ACCENT: | ||
| 301 | + case CHAR_GRAVE_ACCENT: | ||
| 302 | + case CHAR_LEFT_CURLY_BRACKET: | ||
| 303 | + case CHAR_VERTICAL_LINE: | ||
| 304 | + case CHAR_RIGHT_CURLY_BRACKET: | ||
| 268 | 305 | // Characters that are never ever allowed in a hostname from RFC 2396 | |
| 269 | 306 | if (nonHost === -1) | |
| 270 | 307 | nonHost = i; | |
| 271 | 308 | break; | |
| 272 | - case 35: // '#' | ||
| 273 | - case 47: // '/' | ||
| 274 | - case 63: // '?' | ||
| 309 | + case CHAR_HASH: | ||
| 310 | + case CHAR_FORWARD_SLASH: | ||
| 311 | + case CHAR_QUESTION_MARK: | ||
| 275 | 312 | // Find the first instance of any host-ending characters | |
| 276 | 313 | if (nonHost === -1) | |
| 277 | 314 | nonHost = i; | |
| 278 | 315 | hostEnd = i; | |
| 279 | 316 | break; | |
| 280 | - case 64: // '@' | ||
| 317 | + case CHAR_AT: | ||
| 281 | 318 | // At this point, either we have an explicit point where the | |
| 282 | 319 | // auth portion cannot go past, or the last @ char is the decider. | |
| 283 | 320 | atSign = i; | |
@@ -312,8 +349,8 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 312 | 349 | ||
| 313 | 350 | // if hostname begins with [ and ends with ] | |
| 314 | 351 | // assume that it's an IPv6 address. | |
| 315 | - var ipv6Hostname = hostname.charCodeAt(0) === 91/*[*/ && | ||
| 316 | - hostname.charCodeAt(hostname.length - 1) === 93/*]*/; | ||
| 352 | + var ipv6Hostname = hostname.charCodeAt(0) === CHAR_LEFT_SQUARE_BRACKET && | ||
| 353 | + hostname.charCodeAt(hostname.length - 1) === CHAR_RIGHT_SQUARE_BRACKET; | ||
| 317 | 354 | ||
| 318 | 355 | // validate a little. | |
| 319 | 356 | if (!ipv6Hostname) { | |
@@ -367,11 +404,11 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 367 | 404 | var hashIdx = -1; | |
| 368 | 405 | for (i = 0; i < rest.length; ++i) { | |
| 369 | 406 | const code = rest.charCodeAt(i); | |
| 370 | - if (code === 35/*#*/) { | ||
| 407 | + if (code === CHAR_HASH) { | ||
| 371 | 408 | this.hash = rest.slice(i); | |
| 372 | 409 | hashIdx = i; | |
| 373 | 410 | break; | |
| 374 | - } else if (code === 63/*?*/ && questionIdx === -1) { | ||
| 411 | + } else if (code === CHAR_QUESTION_MARK && questionIdx === -1) { | ||
| 375 | 412 | questionIdx = i; | |
| 376 | 413 | } | |
| 377 | 414 | } | |
@@ -422,13 +459,13 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { | |||
| 422 | 459 | function validateHostname(self, rest, hostname) { | |
| 423 | 460 | for (var i = 0; i < hostname.length; ++i) { | |
| 424 | 461 | const code = hostname.charCodeAt(i); | |
| 425 | - const isValid = (code >= 97/*a*/ && code <= 122/*z*/) || | ||
| 426 | - code === 46/*.*/ || | ||
| 427 | - (code >= 65/*A*/ && code <= 90/*Z*/) || | ||
| 428 | - (code >= 48/*0*/ && code <= 57/*9*/) || | ||
| 429 | - code === 45/*-*/ || | ||
| 430 | - code === 43/*+*/ || | ||
| 431 | - code === 95/*_*/ || | ||
| 462 | + const isValid = (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z) || | ||
| 463 | + code === CHAR_DOT || | ||
| 464 | + (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) || | ||
| 465 | + (code >= CHAR_0 && code <= CHAR_9) || | ||
| 466 | + code === CHAR_HYPHEN_MINUS || | ||
| 467 | + code === CHAR_PLUS || | ||
| 468 | + code === CHAR_UNDERSCORE || | ||
| 432 | 469 | code > 127; | |
| 433 | 470 | ||
| 434 | 471 | // Invalid host character | |
@@ -542,13 +579,13 @@ Url.prototype.format = function format() { | |||
| 542 | 579 | var lastPos = 0; | |
| 543 | 580 | for (var i = 0; i < pathname.length; ++i) { | |
| 544 | 581 | switch (pathname.charCodeAt(i)) { | |
| 545 | - case 35: // '#' | ||
| 582 | + case CHAR_HASH: | ||
| 546 | 583 | if (i - lastPos > 0) | |
| 547 | 584 | newPathname += pathname.slice(lastPos, i); | |
| 548 | 585 | newPathname += '%23'; | |
| 549 | 586 | lastPos = i + 1; | |
| 550 | 587 | break; | |
| 551 | - case 63: // '?' | ||
| 588 | + case CHAR_QUESTION_MARK: | ||
| 552 | 589 | if (i - lastPos > 0) | |
| 553 | 590 | newPathname += pathname.slice(lastPos, i); | |
| 554 | 591 | newPathname += '%3F'; | |
@@ -567,7 +604,7 @@ Url.prototype.format = function format() { | |||
| 567 | 604 | // unless they had them to begin with. | |
| 568 | 605 | if (this.slashes || slashedProtocol[protocol]) { | |
| 569 | 606 | if (this.slashes || host) { | |
| 570 | - if (pathname && pathname.charCodeAt(0) !== 47/*/*/) | ||
| 607 | + if (pathname && pathname.charCodeAt(0) !== CHAR_FORWARD_SLASH) | ||
| 571 | 608 | pathname = '/' + pathname; | |
| 572 | 609 | host = '//' + host; | |
| 573 | 610 | } else if (protocol.length >= 4 && | |
@@ -581,8 +618,10 @@ Url.prototype.format = function format() { | |||
| 581 | 618 | ||
| 582 | 619 | search = search.replace(/#/g, '%23'); | |
| 583 | 620 | ||
| 584 | - if (hash && hash.charCodeAt(0) !== 35/*#*/) hash = '#' + hash; | ||
| 585 | - if (search && search.charCodeAt(0) !== 63/*?*/) search = '?' + search; | ||
| 621 | + if (hash && hash.charCodeAt(0) !== CHAR_HASH) | ||
| 622 | + hash = '#' + hash; | ||
| 623 | + if (search && search.charCodeAt(0) !== CHAR_QUESTION_MARK) | ||
| 624 | + search = '?' + search; | ||
| 586 | 625 | ||
| 587 | 626 | return protocol + host + pathname + search + hash; | |
| 588 | 627 | }; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments