You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							51 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							51 lines
						
					
					
						
							1.1 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
var URL = require('url-parse'); | 
						|
 | 
						|
var debug = function() {}; | 
						|
if (process.env.NODE_ENV !== 'production') { | 
						|
  debug = require('debug')('sockjs-client:utils:url'); | 
						|
} | 
						|
 | 
						|
module.exports = { | 
						|
  getOrigin: function(url) { | 
						|
    if (!url) { | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    var p = new URL(url); | 
						|
    if (p.protocol === 'file:') { | 
						|
      return null; | 
						|
    } | 
						|
 | 
						|
    var port = p.port; | 
						|
    if (!port) { | 
						|
      port = (p.protocol === 'https:') ? '443' : '80'; | 
						|
    } | 
						|
 | 
						|
    return p.protocol + '//' + p.hostname + ':' + port; | 
						|
  } | 
						|
 | 
						|
, isOriginEqual: function(a, b) { | 
						|
    var res = this.getOrigin(a) === this.getOrigin(b); | 
						|
    debug('same', a, b, res); | 
						|
    return res; | 
						|
  } | 
						|
 | 
						|
, isSchemeEqual: function(a, b) { | 
						|
    return (a.split(':')[0] === b.split(':')[0]); | 
						|
  } | 
						|
 | 
						|
, addPath: function (url, path) { | 
						|
    var qs = url.split('?'); | 
						|
    return qs[0] + path + (qs[1] ? '?' + qs[1] : ''); | 
						|
  } | 
						|
 | 
						|
, addQuery: function (url, q) { | 
						|
    return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q)); | 
						|
  } | 
						|
 | 
						|
, isLoopbackAddr: function (addr) { | 
						|
    return /^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(addr) || /^\[::1\]$/.test(addr); | 
						|
  } | 
						|
};
 | 
						|
 |