| 'use strict'; |
| |
| const url = require('url'); |
| const ip = require('internal-ip'); |
| |
| function createDomain(options, server) { |
| const protocol = options.https ? 'https' : 'http'; |
| const hostname = options.useLocalIp |
| ? ip.v4.sync() || 'localhost' |
| : options.host || 'localhost'; |
| |
| // eslint-disable-next-line no-nested-ternary |
| const port = options.socket ? 0 : server ? server.address().port : 0; |
| // use explicitly defined public url |
| // (prefix with protocol if not explicitly given) |
| if (options.public) { |
| return /^[a-zA-Z]+:\/\//.test(options.public) |
| ? `${options.public}` |
| : `${protocol}://${options.public}`; |
| } |
| // the formatted domain (url without path) of the webpack server |
| return url.format({ |
| protocol, |
| hostname, |
| port, |
| }); |
| } |
| |
| module.exports = createDomain; |