@@ -148,9 +148,12 @@ function resolveGlobBase(baseURL: string | undefined, match: string): string {
148
148
const newSuffix = mapToken ( token . substring ( questionIndex ) , `?$_${ index } _$` ) ;
149
149
return newPrefix + newSuffix ;
150
150
} ) . join ( '/' ) ;
151
- let resolved = constructURLBasedOnBaseURL ( baseURL , relativePath ) ;
152
- for ( const [ token , original ] of tokenMap )
153
- resolved = resolved . replace ( token , original ) ;
151
+ const result = resolveBaseURL ( baseURL , relativePath ) ;
152
+ let resolved = result . resolved ;
153
+ for ( const [ token , original ] of tokenMap ) {
154
+ const normalize = result . caseInsensitivePart ?. includes ( token ) ;
155
+ resolved = resolved . replace ( token , normalize ? original . toLowerCase ( ) : original ) ;
156
+ }
154
157
match = resolved ;
155
158
}
156
159
return match ;
@@ -166,8 +169,20 @@ function parseURL(url: string): URL | null {
166
169
167
170
export function constructURLBasedOnBaseURL ( baseURL : string | undefined , givenURL : string ) : string {
168
171
try {
169
- return ( new URL ( givenURL , baseURL ) ) . toString ( ) ;
172
+ return resolveBaseURL ( baseURL , givenURL ) . resolved ;
170
173
} catch ( e ) {
171
174
return givenURL ;
172
175
}
173
176
}
177
+
178
+ function resolveBaseURL ( baseURL : string | undefined , givenURL : string ) {
179
+ try {
180
+ const url = new URL ( givenURL , baseURL ) ;
181
+ const resolved = url . toString ( ) ;
182
+ // Schema and domain are case-insensitive.
183
+ const caseInsensitivePrefix = url . origin ;
184
+ return { resolved, caseInsensitivePart : caseInsensitivePrefix } ;
185
+ } catch ( e ) {
186
+ return { resolved : givenURL } ;
187
+ }
188
+ }
0 commit comments