"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = prepareUrls; function _react() { const data = _interopRequireDefault(require("react")); _react = function _react() { return data; }; return data; } function _address() { const data = _interopRequireDefault(require("address")); _address = function _address() { return data; }; return data; } function _url() { const data = _interopRequireDefault(require("url")); _url = function _url() { return data; }; return data; } function _chalk() { const data = _interopRequireDefault(require("chalk")); _chalk = function _chalk() { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function prepareUrls(protocol, host, port, base, history) { const baseInfo = { protocol, pathname: base || '/' }; const formatUrl = hostname => _url().default.format(_objectSpread({}, baseInfo, { hostname, port })); const prettyPrintUrl = (hostname, useColor) => _url().default.format(_objectSpread({}, baseInfo, { hostname, port: useColor ? _chalk().default.bold(port) : port })); const isUnspecifiedHost = host === '0.0.0.0' || host === '::'; let prettyHost, lanUrlForConfig, lanUrlForTerminal, rawLanUrl; if (isUnspecifiedHost) { prettyHost = 'localhost'; try { // This can only return an IPv4 address lanUrlForConfig = _address().default.ip(); if (lanUrlForConfig) { // check if use public ip const USE_PUBLIC_IP = process.env.USE_PUBLIC_IP === 'true'; // Check if the address is a private ip // https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces if (USE_PUBLIC_IP || /^10[.]|^30[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(lanUrlForConfig)) { // Address is private, format it for later use lanUrlForTerminal = prettyPrintUrl(lanUrlForConfig, true); rawLanUrl = prettyPrintUrl(lanUrlForConfig, false); } else { // Address is not private, so we will discard it lanUrlForConfig = undefined; } } } catch (_e) {// ignored } } else { prettyHost = host; } const localUrlForTerminal = prettyPrintUrl(prettyHost); const localUrlForBrowser = formatUrl(prettyHost); return { lanUrlForConfig, lanUrlForTerminal, localUrlForTerminal, localUrlForBrowser, rawLanUrl }; }