"use strict";

exports.__esModule = true;
exports.isUrl = isUrl;
exports.prependHTTP = void 0;
/**
 * RegExps.
 * A URL must match #1 and then at least one of #2/#3.
 * Use two levels of REs to avoid REDOS.
 */

var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
var protocolRE = /^https?:\/\/.+$/i;
var localhostDomainRE = /^localhost[\:?\d]*(?:[^\:?\d]\S*)?$/;
var nonLocalhostDomainRE = /^[^\s\.]+\.\S{2,}$/;

/**
 * Loosely validate a URL `string`.
 *
 * @param {String} string
 * @return {Boolean}
 */

function isUrl(string) {
  if (typeof string !== 'string') {
    return false;
  }
  var match = string.match(protocolAndDomainRE);
  if (!match) {
    return false;
  }
  var everythingAfterProtocol = match[1];
  if (!everythingAfterProtocol) {
    return false;
  }
  return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);
}

/**
 * Prepend `http://` to relative url.
 *
 * @param {String} url
 * @return {String}
 */
var prependHTTP = url => url && (protocolRE.test(url) ? url : "http://".concat(url));
exports.prependHTTP = prependHTTP;
//# sourceMappingURL=UrlUtils.js.map