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}