| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | '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);  }};
 |