Skip to content

Commit 9feb734

Browse files
committed
too eager on pathname replacement
1 parent ec71972 commit 9feb734

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/lib/utils.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ describe('sanitizeUrl', () => {
66
const testCases = [
77
{ input: 'http://example.com', expected: 'http://example.com/' },
88
{ input: 'https://www.google.com', expected: 'https://www.google.com/' },
9-
{ input: 'http://test.com/path/to/resource', expected: 'http://test.com/path%2Fto%2Fresource' },
10-
{ input: 'https://api.github.com/users/octocat', expected: 'https://api.github.com/users%2Foctocat' },
9+
{ input: 'http://test.com/path/to/resource', expected: 'http://test.com/path/to/resource' },
10+
{ input: 'https://api.github.com/users/octocat', expected: 'https://api.github.com/users/octocat' },
1111
{
1212
input: 'https://subdomain.example.com/page?param=value#section',
1313
expected: 'https://subdomain.example.com/page?param=value#section',
@@ -77,13 +77,13 @@ describe('sanitizeUrl', () => {
7777
it('should handle URL with all components', () => {
7878
const complexUrl = 'https://user:pass@example.com:8080/path/to/resource?param=value&other=test#fragment'
7979
const result = sanitizeUrl(complexUrl)
80-
expect(result).toBe('https://user:pass@example.com:8080/path%2Fto%2Fresource?param=value&other=test#fragment')
80+
expect(result).toBe('https://user:pass@example.com:8080/path/to/resource?param=value&other=test#fragment')
8181
})
8282

8383
it('should preserve valid URL structure', () => {
8484
const url = 'https://api.example.com/v1/users?limit=10&offset=0#results'
8585
const result = sanitizeUrl(url)
86-
expect(result).toBe('https://api.example.com/v1%2Fusers?limit=10&offset=0#results')
86+
expect(result).toBe('https://api.example.com/v1/users?limit=10&offset=0#results')
8787
})
8888
})
8989

src/lib/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ export function sanitizeUrl(raw: string) {
711711
throw new Error(`Invalid url to pass to open(): ${url}`)
712712
}
713713
url.hostname = encodeURIComponent(url.hostname)
714-
url.pathname = url.pathname.slice(0, 1) + encodeURIComponent(url.pathname.slice(1))
714+
url.pathname = url.pathname.slice(0, 1) + encodeURIComponent(url.pathname.slice(1)).replace(/%2f/ig,'/')
715715
url.search = url.search.slice(0, 1) + Array.from(url.searchParams.entries()).map(sanitizeParam).join('&')
716716
url.hash = url.hash.slice(0, 1) + encodeURIComponent(url.hash.slice(1))
717717
return url.href

0 commit comments

Comments
 (0)