123456789101112131415161718192021222324252627282930313233 |
- import path from 'path-browserify';
- // Function that properly handles path resolution for parts that have
- // a protocol component like "http://".
- export function urlJoin( ...args ) {
- const protocolRegex = /^[a-zA-Z]+:\/\//;
- let lastRoot = - 1;
- for ( let i = 0, l = args.length; i < l; i ++ ) {
- if ( protocolRegex.test( args[ i ] ) ) {
- lastRoot = i;
- }
- }
- if ( lastRoot === - 1 ) {
- return path.join( ...args ).replace( /\\/g, '/' );
- } else {
- const parts = lastRoot <= 0 ? args : args.slice( lastRoot );
- const protocol = parts[ 0 ].match( protocolRegex )[ 0 ];
- parts[ 0 ] = parts[ 0 ].substring( protocol.length );
- return ( protocol + path.join( ...parts ) ).replace( /\\/g, '/' );
- }
- }
|