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