@@ -62,27 +62,28 @@ export function sanitizeUrl(url) {
6262 return `${ urlObject . pathname } ${ urlObject . search } ${ urlObject . hash } `
6363 }
6464
65- if ( urlTrimmed . startsWith ( "./" ) ) {
66- return `.${ urlObject . pathname } ${ urlObject . search } ${ urlObject . hash } `
67- }
68-
69- // Handle multiple levels of relative paths (../, ../../, ../../../, etc.)
70- if ( urlTrimmed . startsWith ( "../" ) ) {
71- // Count the number of ../ segments
65+ // Handle relative paths (./path, ../path, ./../../path, etc.)
66+ if ( urlTrimmed . startsWith ( "./" ) || urlTrimmed . startsWith ( "../" ) ) {
7267 const segments = urlTrimmed . split ( "/" )
73- let relativeLevels = 0
74-
75- for ( const segment of segments ) {
76- if ( segment === ".." ) {
77- relativeLevels ++
68+ let relativePath = ""
69+ let pathStartIndex = 0
70+
71+ // Process initial relative segments
72+ for ( let i = 0 ; i < segments . length ; i ++ ) {
73+ if ( segments [ i ] === "." ) {
74+ relativePath += "./"
75+ pathStartIndex = i + 1
76+ } else if ( segments [ i ] === ".." ) {
77+ relativePath += "../"
78+ pathStartIndex = i + 1
7879 } else {
7980 break
8081 }
8182 }
8283
83- // Reconstruct the relative path with correct number of ../
84- const relativePath = "../" . repeat ( relativeLevels )
85- return `${ relativePath } ${ urlObject . pathname . substring ( 1 ) } ${ urlObject . search } ${ urlObject . hash } `
84+ // Get the remaining path from the URL object
85+ const remainingPath = urlObject . pathname . substring ( 1 )
86+ return `${ relativePath } ${ remainingPath } ${ urlObject . search } ${ urlObject . hash } `
8687 }
8788
8889 return `${ urlObject . pathname . substring ( 1 ) } ${ urlObject . search } ${ urlObject . hash } `
0 commit comments