import figures from '@roots/bud-support/figures' import {Box, Text} from '@roots/bud-support/ink' import {externalNetworkInterface} from '@roots/bud-support/os' interface Props { devUrl?: URL displayServerInfo?: boolean mode?: `development` | `production` proxy?: unknown proxyUrl?: URL publicDevUrl?: URL publicProxyUrl?: URL } /** * Server info ink component */ export const Server = ({ devUrl, displayServerInfo, mode, proxy = false, proxyUrl, publicDevUrl, publicProxyUrl, }: Props) => { if ( !displayServerInfo || mode !== `development` || !devUrl || !(devUrl instanceof URL) ) return null return ( {` `} {` `}Network {` `} ) } const Proxy = ({ proxy, proxyUrl, publicProxyUrl, }: { proxy?: Props[`proxy`] proxyUrl?: Props[`proxyUrl`] publicProxyUrl?: Props[`publicProxyUrl`] }) => { if (!proxy || !proxyUrl || !(proxyUrl instanceof URL)) return null return ( {figures.pointerSmall} Proxy {figures.lineDashed0} {proxyUrl.href} {publicProxyUrl?.href && publicProxyUrl?.href !== proxyUrl.href && ( {figures.lineDashed0} {publicProxyUrl.href} )} ) } const Dev = ({ devUrl, publicDevUrl, }: { devUrl: Props[`devUrl`] publicDevUrl: Props[`publicDevUrl`] }) => { if (!devUrl?.href) return null const ipv4 = externalNetworkInterface.ipv4Url(devUrl.protocol) ipv4.port = devUrl.port return ( {figures.pointerSmall} Dev {figures.lineDashed0} {devUrl.href} {ipv4.href !== devUrl.href && ( {figures.lineDashed0} {ipv4.href} )} {publicDevUrl && publicDevUrl?.href !== devUrl.href && ( {figures.lineDashed0} {publicDevUrl.href} )} ) } export {Server as default}