mirror of https://github.com/lukechilds/node.git
Browse Source
Removes the non-standard options on WHATWG URL toString and extends the existing url.format() API to support customizable serialization of the WHATWG URL object. This does not yet include the documentation updates because the documentation for the new WHATWG URL object has not yet landed. Example: ```js const url = require('url'); const URL = url.URL; const myURL = new URL('http://example.org/?a=b#c'); const str = url.format(myURL, {fragment: false, search: false}); console.log(str); // Prints: http://example.org/ ``` PR-URL: https://github.com/nodejs/node/pull/10857 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Timothy Gu <timothygu99@gmail.com> Reviewed-By: Brian White <mscdex@mscdex.net>v6
3 changed files with 142 additions and 37 deletions
@ -0,0 +1,102 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const url = require('url'); |
||||
|
const URL = url.URL; |
||||
|
|
||||
|
const myURL = new URL('http://xn--lck1c3crb1723bpq4a.com/a?a=b#c'); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
const errreg = /^TypeError: options must be an object$/; |
||||
|
assert.throws(() => url.format(myURL, true), errreg); |
||||
|
assert.throws(() => url.format(myURL, 1), errreg); |
||||
|
assert.throws(() => url.format(myURL, 'test'), errreg); |
||||
|
assert.throws(() => url.format(myURL, Infinity), errreg); |
||||
|
|
||||
|
// Any falsy value other than undefined will be treated as false.
|
||||
|
// Any truthy value will be treated as true.
|
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {fragment: false}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {fragment: ''}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {fragment: 0}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {fragment: 1}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {fragment: {}}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {search: false}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {search: ''}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {search: 0}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {search: 1}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {search: {}}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {unicode: true}), |
||||
|
'http://理容ナカムラ.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {unicode: 1}), |
||||
|
'http://理容ナカムラ.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {unicode: {}}), |
||||
|
'http://理容ナカムラ.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {unicode: false}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
||||
|
|
||||
|
assert.strictEqual( |
||||
|
url.format(myURL, {unicode: 0}), |
||||
|
'http://xn--lck1c3crb1723bpq4a.com/a?a=b#c' |
||||
|
); |
Loading…
Reference in new issue