Skip to content

Commit 16a7b8f

Browse files
authoredDec 12, 2022
Fix encoding of fragmentIdentifier (#355)
1 parent 5beef41 commit 16a7b8f

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed
 

Diff for: ‎index.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,9 @@ exports.stringifyUrl = (object, options) => {
455455

456456
let hash = getHash(object.url);
457457
if (object.fragmentIdentifier) {
458-
hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;
458+
const urlObjectForFragmentEncode = new URL(url);
459+
urlObjectForFragmentEncode.hash = object.fragmentIdentifier;
460+
hash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;
459461
}
460462

461463
return `${url}${queryString}${hash}`;

Diff for: ‎test/stringify-url.js

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ test('stringify URL with fragment identifier', t => {
2626
t.deepEqual(queryString.stringifyUrl({url: 'https://foo.bar/#abc', query: {}, fragmentIdentifier: 'top'}), 'https://foo.bar/#top');
2727
t.deepEqual(queryString.stringifyUrl({url: 'https://foo.bar', query: {}}), 'https://foo.bar');
2828
t.deepEqual(queryString.stringifyUrl({url: 'https://foo.bar', query: {}, fragmentIdentifier: 'foo bar'}), 'https://foo.bar#foo%20bar');
29+
t.deepEqual(queryString.stringifyUrl({url: 'https://foo.bar/', query: {}, fragmentIdentifier: '/foo/bar'}), 'https://foo.bar/#/foo/bar');
2930
});
3031

3132
test('skipEmptyString:: stringify URL with a query string', t => {

0 commit comments

Comments
 (0)
Please sign in to comment.