fix(v2): doc path special char (space or other) should lead to a valid slug (#3262)

* doc path special char (space or other) should lead to a valid slug

* doc path special char (space or other) should lead to a valid slug

* improve doc bad slug message
This commit is contained in:
Sébastien Lorber 2020-08-11 17:20:51 +02:00 committed by GitHub
parent b75a7150b2
commit dd3f3f1093
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 3 deletions

View file

@ -394,10 +394,11 @@ describe('load utils', () => {
expect(isValidPathname('/hey/ho/')).toBe(true);
expect(isValidPathname('/hey/h%C3%B4/')).toBe(true);
expect(isValidPathname('/hey///ho///')).toBe(true); // Unexpected but valid
expect(isValidPathname('/hey/héllô you')).toBe(true);
//
expect(isValidPathname('')).toBe(false);
expect(isValidPathname('hey')).toBe(false);
expect(isValidPathname('/hey/hô')).toBe(false);
expect(isValidPathname('/hey?qs=ho')).toBe(false);
expect(isValidPathname('https://fb.com/hey')).toBe(false);
expect(isValidPathname('//hey')).toBe(false);

View file

@ -365,7 +365,8 @@ export function isValidPathname(str: string): boolean {
}
try {
// weird, but is there a better way?
return new URL(str, 'https://domain.com').pathname === str;
const parsedPathname = new URL(str, 'https://domain.com').pathname;
return parsedPathname === str || parsedPathname === encodeURI(str);
} catch (e) {
return false;
}