NetAddress unstable
Pure, platform-neutral values for MAC, IP, internet socket, and Unix path addresses.
Constants
ipv4Broadcast
unstableThe IPv4 broadcast address 255.255.255.255.
Signature
declare const ipv4Broadcast: Ipv4Addressipv4Loopback
unstableThe IPv4 loopback address 127.0.0.1.
Signature
declare const ipv4Loopback: Ipv4Addressipv4Unspecified
unstableThe unspecified IPv4 address 0.0.0.0.
Signature
declare const ipv4Unspecified: Ipv4Addressipv6Loopback
unstableThe IPv6 loopback address ::1.
Signature
declare const ipv6Loopback: Ipv6Addressipv6Unspecified
unstableThe unspecified IPv6 address ::.
Signature
declare const ipv6Unspecified: Ipv6AddressloopbackAddresses
unstableThe loopback addresses 127.0.0.1 and ::1.
Signature
declare const loopbackAddresses: readonly [Ipv4Address, Ipv6Address]Constructors
inetAddress
unstableCreates a checked internet address for an IP address and port.
Signature
declare function inetAddress(address: IpAddress, port: number): Result<InetAddress, NetAddressError>inetAddressFromInput
unstableConverts an InetAddressInput to an internet address, parsing strings like
inetAddressFromString, converting parts like inetAddressV4 and
inetAddressV6, and returning internet addresses unchanged.
Signature
declare function inetAddressFromInput(input: InetAddressInput): Result<InetAddress, NetAddressError>inetAddressFromIpString
unstableCreates a checked internet address from a numeric IP string and port.
Gotchas
The address must be a numeric IPv4 or IPv6 literal. This function does not resolve hostnames or accept IPv6 brackets.
Signature
declare function inetAddressFromIpString(address: string, port: number): Result<InetAddress, NetAddressError>inetAddressV4
unstableCreates a checked IPv4 internet address.
Signature
declare function inetAddressV4(address: Ipv4Address, port: number): Result<InetAddressV4, NetAddressError>inetAddressV6
unstableCreates a checked IPv6 internet address with an optional scope identifier.
Signature
declare function inetAddressV6(address: Ipv6Address, port: number, options?: { readonly scopeId?: number;}): Result<InetAddressV6, NetAddressError>ipFromInput
unstableConverts an IpAddressInput to an IP address, returning IP addresses
unchanged.
Details
Strings are parsed like ipFromString. Four octets or bytes make an IPv4
address, and eight segments or sixteen bytes make an IPv6 address.
Signature
declare function ipFromInput(input: IpAddressInput): Result<IpAddress, NetAddressError>Example Converting IP address inputs
import { Result } from "effect"import { NetAddress } from "effect/net"
const address = Result.getOrThrow(NetAddress.ipFromInput("192.0.2.1"))NetAddress.formatIp(address) // => "192.0.2.1"Result.getOrThrow(NetAddress.ipFromInput(address)) === address // => trueNetAddress.formatIp(Result.getOrThrow(NetAddress.ipFromInput([192, 0, 2, 1]))) // => "192.0.2.1"Result.isFailure(NetAddress.ipFromInput("example.com")) // => trueipv4FromInput
unstableConverts an Ipv4AddressInput to an IPv4 address, parsing strings like
ipv4FromString, checking octets like ipv4FromOctets, and returning IPv4
addresses unchanged.
Signature
declare function ipv4FromInput(input: Ipv4AddressInput): Result<Ipv4Address, NetAddressError>ipv4FromOctets
unstableCreates an IPv4 address from four checked octets.
Signature
declare function ipv4FromOctets(octets: readonly [number, number, number, number]): Result<Ipv4Address, NetAddressError>ipv6FromInput
unstableConverts an Ipv6AddressInput to an IPv6 address, parsing strings like
ipv6FromString, checking segments like ipv6FromSegments, and returning
IPv6 addresses unchanged.
Signature
declare function ipv6FromInput(input: Ipv6AddressInput): Result<Ipv6Address, NetAddressError>ipv6FromSegments
unstableCreates an IPv6 address from eight checked 16-bit segments.
Signature
declare function ipv6FromSegments(segments: readonly [number, number, number, number, number, number, number, number]): Result<Ipv6Address, NetAddressError>macAddressFromInput
unstableConverts a MacAddressInput to a MAC address, parsing strings like
macAddressFromString, checking octets like macAddressFromOctets, and
returning MAC addresses unchanged.
Signature
declare function macAddressFromInput(input: MacAddressInput): Result<MacAddress, NetAddressError>macAddressFromOctets
unstableCreates a MAC address from six checked octets.
Signature
declare function macAddressFromOctets(octets: readonly [number, number, number, number, number, number]): Result<MacAddress, NetAddressError>Converts a ScopedIpv6LiteralInput to a scoped IPv6 literal, parsing it
like scopedIpv6LiteralFromString.
Details
Scoped IPv6 literals are strings, so every input is parsed.
Signature
declare function scopedIpv6LiteralFromInput(input: ScopedIpv6LiteralInput): Result<ScopedIpv6Literal, NetAddressError>socketAddressFromInput
unstableConverts a SocketAddress.Input to a concrete socket address.
Details
Internet addresses are converted like inetAddressFromInput, without
hostname resolution. Invalid IP literals, ports, and input shapes return a
NetAddressError.
Signature
declare function socketAddressFromInput(input: Input): Result<SocketAddress, NetAddressError>unixPathAddress
unstableCreates a Unix-domain filesystem address without normalizing its opaque path.
Signature
declare function unixPathAddress(path: string): UnixPathAddressConversions
Converts an IP address or internet socket address to a WHATWG URL.
Details
Defaults to the HTTP scheme and uses standard URL normalization, including IPv6 brackets and omission of default ports. Bare IP addresses have no explicit port; internet socket addresses retain their port, including zero. Unspecified addresses are preserved.
Gotchas
Returns a NetAddressError for scoped IPv6 addresses or inputs that the URL
constructor rejects. Supply the scheme without a trailing colon, for example
"https".
Signature
declare function toUrl(self: IpAddress | InetAddress, scheme: string): Result<URL, NetAddressError>Converting
fromIpv4Mapped
unstableExtracts the IPv4 value from an IPv4-mapped IPv6 address.
Signature
declare function fromIpv4Mapped(self: Ipv6Address): Option<Ipv4Address>Returns the IPv6 scope ID of a network interface from its addresses.
Details
The first IPv6 address with a positive scope ID supplies the result. Accepts
the addresses of one interface, such as os.networkInterfaces()[name] or the
entries of Deno.networkInterfaces() with that name, without performing any
operating-system lookup itself.
See
- scopeIdsFromInterfaces for mapping every interface at once
Signature
declare function scopeIdFromInterface(addresses: readonly Array<NetworkInterfaceAddress> | undefined): Option<number>scopeIdsFromInterfaces
unstableCreates a map from interface names to IPv6 scope IDs using supplied interface entries.
Details
Each entry pairs an interface name with its addresses. The first IPv6 address
with a positive scope ID supplies that interface's mapping. Accepts entries
such as Object.entries(os.networkInterfaces()) without performing any
operating-system lookup itself. Later changes to the entries do not affect
the map.
See
- inetAddressFromHostString for resolving named IPv6 zones with the map
Signature
declare function scopeIdsFromInterfaces(interfaces: Iterable<readonly [string, readonly Array<NetworkInterfaceAddress> | undefined]>): Map<string, number>toIpv4Mapped
unstableConverts an IPv4 address to its IPv4-mapped IPv6 representation.
Signature
declare function toIpv4Mapped(self: Ipv4Address): Ipv6AddressDecoding
inetAddressFromHostString
unstableParses an unbracketed numeric host and port, resolving named IPv6 zones using a supplied map of interface names to numeric scope IDs.
Details
IPv4, unscoped IPv6, and numeric IPv6 zones need no map. Named zones must have a matching map entry. This function performs no DNS or operating-system lookup.
See
- formatHost for formatting the host of an internet address
- scopeIdsFromInterfaces for building a scope map from interface entries
Signature
declare function inetAddressFromHostString(host: string, port: number, scopeIds?: ReadonlyMap<string, number>): Result<InetAddress, NetAddressError>inetAddressFromString
unstableParses IPv4:port or [IPv6]:port without DNS resolution.
Signature
declare function inetAddressFromString(input: string): Result<InetAddress, NetAddressError>ipFromString
unstableParses a bare numeric IPv4 or IPv6 address.
Signature
declare function ipFromString(input: string): Result<IpAddress, NetAddressError>ipv4FromString
unstableParses a strict dotted-decimal IPv4 address.
Details
Multi-digit octets with a leading zero are rejected to avoid octal ambiguity.
Signature
declare function ipv4FromString(input: string): Result<Ipv4Address, NetAddressError>ipv6FromString
unstableParses an IPv6 address with optional compression and trailing embedded IPv4.
Signature
declare function ipv6FromString(input: string): Result<Ipv6Address, NetAddressError>macAddressFromString
unstableParses a colon-separated MAC address containing six two-digit hexadecimal octets.
Signature
declare function macAddressFromString(input: string): Result<MacAddress, NetAddressError>Parses an IPv6 literal with a numeric or named zone, such as fe80::1%eth0.
Signature
declare function scopedIpv6LiteralFromString(input: string): Result<ScopedIpv6Literal, NetAddressError>Encoding
formatHost
unstableFormats the numeric host of an internet address without brackets or a port,
preserving a nonzero IPv6 scope ID as a % suffix.
When to use
Use when the host and port are represented separately.
See
- formatInet for a complete socket address
- formatUrlHost for a bracketed URL authority host
Signature
declare function formatHost(self: InetAddress): stringformatInet
unstableFormats a resolved internet address, bracketing IPv6 around its port.
Signature
declare function formatInet(self: InetAddress): stringFormats an IP address in canonical numeric form.
Signature
declare function formatIp(self: IpAddress): stringformatMacAddress
unstableFormats a MAC address as six lowercase hexadecimal octets separated by colons.
Signature
declare function formatMacAddress(self: MacAddress): stringformatMulticastInterface
unstableFormats an IPv4 address or IPv6 interface index for a native multicast API.
Details
IPv4 addresses are formatted as numeric IPs. An IPv6 index of zero produces
"::". Other indices produce "::%index" on "win32", or "::%name" on
other platforms using the first matching interface name, falling back to the
numeric index when no name matches.
Supply a scope map from scopeIdsFromInterfaces and optionally a platform string. Omitting the platform uses non-Windows behavior. This function performs no operating-system lookups.
Signature
declare function formatMulticastInterface(networkInterface: number | Ipv4Address, scopeIds: ReadonlyMap<string, number>, platform?: string): stringformatNativeHost
unstableFormats an internet address's host for a native socket API, without brackets or a port.
Details
On "win32", IPv6 zones remain numeric. On other platforms, the first
interface name matching the scope ID is used, falling back to the numeric ID
when no name matches. Unscoped IPv6 and IPv4 hosts are unchanged.
Supply a scope map from scopeIdsFromInterfaces and optionally a platform string. Omitting the platform uses non-Windows behavior. This function performs no operating-system lookups.
Signature
declare function formatNativeHost(self: InetAddress, scopeIds: ReadonlyMap<string, number>, platform?: string): stringformatSocketAddress
unstableFormats a portable socket address for human-readable output.
Signature
declare function formatSocketAddress(self: SocketAddress): stringformatUnixPath
unstableFormats a Unix-domain socket path as a readable unix://path display string.
Details
Preserves the raw path without URL encoding or normalization. The resulting string is intended for display.
Signature
declare function formatUnixPath(self: UnixPathAddress): stringFormats an IP or socket address as a URL display string.
Details
Defaults to HTTP, brackets IPv6 addresses, and omits default ports and the
trailing slash. Custom schemes such as "tcp" retain their scheme and host.
Unix socket addresses use formatUnixPath, preserving the raw path
with a unix:// prefix regardless of the supplied scheme.
Gotchas
Returns a NetAddressError when URL conversion fails, including for scoped
IPv6 addresses.
Signature
declare function formatUrl(self: IpAddress | SocketAddress, scheme: string): Result<string, NetAddressError>formatUrlHost
unstableFormats an IP address for use as a URL authority host.
Signature
declare function formatUrlHost(self: IpAddress): stringformatUrlHostString
unstableFormats a hostname or numeric IP address for use as a URL authority host.
Signature
declare function formatUrlHostString(host: string): stringErrors
NetAddressError
unstableA checked network-address operation failure retaining the address or supplied input.
Details
Address-based operations retain the address value. Parsing and numeric
construction retain the supplied string or array. Composed operations forward
errors from the failing operation unchanged. Failures from external operations
retain the original exception in cause when available.
Signature
declare class NetAddressError extends YieldableError<this> & { readonly _tag: "NetAddressError";} & Readonly<{ readonly cause?: unknown; readonly input: unknown; readonly message: string;}> { constructor(args: { readonly cause?: unknown; readonly input: unknown; readonly message: string; });}Getters
Returns the family of an IP address or internet address.
Signature
declare function familyOf(self: IpAddress | InetAddress): IpFamilyExample Reading address families
import { NetAddress } from "effect/net"
NetAddress.familyOf(NetAddress.ipv4Loopback) // => "IPv4"NetAddress.familyOf(NetAddress.inetAddressFromStringUnsafe("[::1]:80")) // => "IPv6"ipv4ToOctets
unstableReturns the four numeric octets of an IPv4 address in a fresh tuple.
Signature
declare function ipv4ToOctets(self: Ipv4Address): readonly [number, number, number, number]ipv6ToOctets
unstableReturns the sixteen numeric octets of an IPv6 address in a fresh array.
Signature
declare function ipv6ToOctets(self: Ipv6Address): readonly Array<number>ipv6ToSegments
unstableReturns the eight numeric segments of an IPv6 address in a fresh tuple.
Signature
declare function ipv6ToSegments(self: Ipv6Address): readonly [number, number, number, number, number, number, number, number]macAddressToOctets
unstableReturns the six numeric octets of a MAC address in a fresh tuple.
Signature
declare function macAddressToOctets(self: MacAddress): readonly [number, number, number, number, number, number]Returns the bit width of an IP address.
Signature
declare function width(address: IpAddress): 32 | 128Guards
isInetAddress
unstableReturns true when a value is a resolved internet address.
Signature
declare function isInetAddress(u: unknown): u is InetAddressisInetAddressV4
unstableReturns true when a value is a resolved IPv4 internet address.
Signature
declare function isInetAddressV4(u: unknown): u is InetAddressV4isInetAddressV6
unstableReturns true when a value is a resolved IPv6 internet address.
Signature
declare function isInetAddressV6(u: unknown): u is InetAddressV6isIpAddress
unstableReturns true when a value is an IPv4 or IPv6 address.
Signature
declare function isIpAddress(u: unknown): u is IpAddressisIpv4Address
unstableReturns true when a value is an IPv4 address.
Signature
declare function isIpv4Address(u: unknown): u is Ipv4AddressisIpv6Address
unstableReturns true when a value is an IPv6 address.
Signature
declare function isIpv6Address(u: unknown): u is Ipv6AddressisMacAddress
unstableReturns true when a value is a MAC address.
Signature
declare function isMacAddress(u: unknown): u is MacAddressReturns true when a value is a canonical scoped IPv6 literal.
Signature
declare function isScopedIpv6Literal(u: unknown): u is ScopedIpv6LiteralisSocketAddress
unstableReturns true when a value is a portable concrete socket address.
Signature
declare function isSocketAddress(u: unknown): u is SocketAddressisUnixPathAddress
unstableReturns true when a value is a Unix-domain filesystem address.
Signature
declare function isUnixPathAddress(u: unknown): u is UnixPathAddressModels
An IPv4 limited-broadcast or MAC all-ones broadcast address.
Details
MAC broadcast is also multicast because its IEEE group bit is set. IPv4 limited broadcast is not multicast. Directed IPv4 broadcast requires network prefix context and is intentionally not represented by this refinement.
Signature
type BroadcastAddress<A extends Ipv4Address | MacAddress = Ipv4Address | MacAddress> = A extends MacAddress ? Brand.Branded<MulticastAddress<A>, typeof BroadcastTypeId> : Brand.Branded<A, typeof BroadcastTypeId>The IPv4 or IPv6 family of an IP address or internet address type.
Details
Refinements such as MulticastAddress<A> are dropped; the result is the
plain Ipv4Address or Ipv6Address for the family. Unions distribute, so
Family<IpAddress> and Family<InetAddress> are both IpAddress.
Signature
type Family<A extends IpAddress | InetAddress> = A extends Ipv4Address | InetAddressV4 ? Ipv4Address : Ipv6AddressExample Deriving the family of an internet address
import { NetAddress } from "effect/net"
const family: NetAddress.Family<NetAddress.InetAddressV6> = NetAddress.ipv6LoopbackFamilyAddress
typeThe IP address type for an IP address family name. FamilyAddress<IpFamily>
is IpAddress.
See
- Family for the inverse mapping from an address type
Signature
type FamilyAddress<F extends IpFamily> = F extends "IPv4" ? Ipv4Address : Ipv6AddressThe internet address type for an IP address family.
Details
Inet<Ipv4Address> is InetAddressV4 and Inet<Ipv6Address> is
InetAddressV6. Refinements on A are dropped because the port-carrying
types hold a plain family address. Inet<IpAddress> is InetAddress.
Signature
type Inet<A extends IpAddress = IpAddress> = A extends Ipv4Address ? InetAddressV4 : InetAddressV6Example Selecting the internet address for a family
import { Result } from "effect"import { NetAddress } from "effect/net"
const endpoint: NetAddress.Inet<NetAddress.Ipv4Address> = Result.getOrThrow( NetAddress.inetAddressV4(NetAddress.ipv4Loopback, 8080))A resolved IPv4 or IPv6 internet address and port.
Signature
type InetAddress = InetAddressV4 | InetAddressV6An internet address and port, or a string or parts to convert to one.
Signature
type InetAddressInput = InetAddress | string | InetAddressPartsThe address, port, and optional IPv6 scope identifier of an internet address.
Details
A nonzero scopeId is only valid with an IPv6 address.
Signature
interface InetAddressParts<A extends IpAddressInput = IpAddressInput> { readonly address: A; readonly port: number; readonly scopeId?: number;}A resolved IPv4 internet address and port.
Signature
interface InetAddressV4 extends Equal, Hash, Inspectable { readonly _tag: "InetAddressV4"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress"; readonly address: Ipv4Address; readonly port: number;}A resolved IPv6 internet address, port, and scope identifier.
Signature
interface InetAddressV6 extends Equal, Hash, Inspectable { readonly _tag: "InetAddressV6"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress"; readonly address: Ipv6Address; readonly port: number; readonly scopeId: number;}A numeric IPv4 or IPv6 address.
Signature
type IpAddress = Ipv4Address | Ipv6AddressAn IP address, or any Ipv4AddressInput or Ipv6AddressInput to convert to
one.
Signature
type IpAddressInput = Ipv4AddressInput | Ipv6AddressInputThe name of an IP address family, spelled as in os.networkInterfaces() and
socket address information on Node.js, Deno, and Bun.
See
- familyOf for reading the family of an address
- FamilyAddress for the address type of a family
Signature
type IpFamily = "IPv4" | "IPv6"An immutable 32-bit IPv4 address.
Signature
interface Ipv4Address extends Equal, Hash, Inspectable { readonly _tag: "Ipv4Address"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress";}An IPv4 address, or a string, four octets, or four network-order bytes to convert to one.
Signature
type Ipv4AddressInput = Ipv4Address | string | Ipv4Octets | Uint8ArrayThe four octets of an IPv4 address in network order.
Signature
type Ipv4Octets = Readonly<TupleOf<4, number>>An immutable 128-bit IPv6 address without socket scope metadata.
Signature
interface Ipv6Address extends Equal, Hash, Inspectable { readonly _tag: "Ipv6Address"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress";}An IPv6 address, or a string, eight 16-bit segments, or sixteen network-order bytes to convert to one.
Signature
type Ipv6AddressInput = Ipv6Address | string | Ipv6Segments | Uint8ArrayThe eight 16-bit segments of an IPv6 address in network order.
Signature
type Ipv6Segments = Readonly<TupleOf<8, number>>An IP address proven to be link-local.
Signature
type LinkLocalAddress<A extends IpAddress = IpAddress> = Brand.Branded<A, typeof LinkLocalTypeId>A MAC address whose IEEE universal/local bit marks it as locally administered.
Signature
type LocallyAdministeredAddress<A extends MacAddress = MacAddress> = Brand.Branded<A, typeof LocallyAdministeredTypeId>An IP address proven to be loopback.
Signature
type LoopbackAddress<A extends IpAddress = IpAddress> = Brand.Branded<A, typeof LoopbackTypeId>An immutable 48-bit IEEE 802 MAC address.
Signature
interface MacAddress extends Equal, Hash, Inspectable { readonly _tag: "MacAddress"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress";}A MAC address, or a string or six octets to convert to one.
Signature
type MacAddressInput = MacAddress | string | MacAddressOctetsThe six octets of a MAC address in transmission order.
Signature
type MacAddressOctets = Readonly<TupleOf<6, number>>An IP or MAC address proven to be multicast (IPv4 224.0.0.0/4, IPv6
ff00::/8, or a MAC address with the IEEE group bit set).
Details
This is a branded refinement of the underlying address. Construction returns
the same runtime value, preserving identity, equality, hashing, and formatting.
The MAC all-ones broadcast address has the group bit set and is therefore
multicast; use isMacBroadcast to distinguish it. The IPv4 limited
broadcast address 255.255.255.255 is not multicast.
The default type argument remains IpAddress; specify MacAddress or an
explicit IP/MAC union when accepting those wider address families.
Signature
type MulticastAddress<A extends IpAddress | MacAddress = IpAddress> = Brand.Branded<A, typeof MulticastTypeId>A native multicast interface selector for an IP address family: an interface
address for IPv4 or an interface index for IPv6. ipv4Unspecified and index
0 select the operating system default.
Signature
type MulticastInterface<A extends IpAddress = IpAddress> = A extends Ipv4Address ? Ipv4Address : numberExample Selecting multicast interfaces by family
import { NetAddress } from "effect/net"
const ipv4Interface: NetAddress.MulticastInterface<NetAddress.Ipv4Address> = NetAddress.ipv4Unspecifiedconst ipv6Interface: NetAddress.MulticastInterface<NetAddress.Ipv6Address> = 0Network interface address metadata used to resolve IPv6 scope IDs.
Signature
interface NetworkInterfaceAddress { readonly family: string; readonly scopeid?: number | null;}An IPv4 private-use address in an RFC 1918 range.
Signature
type PrivateAddress<A extends Ipv4Address = Ipv4Address> = Brand.Branded<A, typeof PrivateTypeId>ScopedIpv6Literal
typeAn IPv6 literal with a zone, such as fe80::1%eth0 or fe80::1%3.
Details
Named zones are kept as written because mapping an interface name to a numeric scope ID requires the operating system's interface table. Numeric zones must be unsigned 32-bit integers and are stored without leading zeros, and the address part is stored in canonical form.
See
- scopedIpv6LiteralFromString for parsing scoped IPv6 literals
Signature
type ScopedIpv6Literal = Brand.Branded<string, "~effect/net/NetAddress/ScopedIpv6Literal">A scoped IPv6 literal or a string to parse as one.
Signature
type ScopedIpv6LiteralInput = ScopedIpv6Literal | stringA portable concrete internet or Unix-domain filesystem address.
Signature
type SocketAddress = InetAddress | UnixPathAddressAn IP or MAC address proven to be syntactically unicast.
Details
For IP addresses this excludes multicast, unspecified, and the IPv4 limited broadcast address. Reserved and special-purpose addresses may still satisfy this refinement, as may an IPv4 directed broadcast whose network prefix is unknown. It does not promise reachability or destination usability. For MAC addresses it means that the IEEE individual/group bit is clear.
Signature
type UnicastAddress<A extends IpAddress | MacAddress = IpAddress | MacAddress> = Brand.Branded<A, typeof UnicastTypeId>An IPv6 unique-local address in fc00::/7.
Signature
type UniqueLocalAddress<A extends Ipv6Address = Ipv6Address> = Brand.Branded<A, typeof UniqueLocalTypeId>A MAC address whose IEEE universal/local bit marks it as universally administered.
Signature
type UniversallyAdministeredAddress<A extends MacAddress = MacAddress> = Brand.Branded<A, typeof UniversallyAdministeredTypeId>An opaque Unix-domain filesystem socket path.
Signature
interface UnixPathAddress extends Equal, Hash, Inspectable { readonly _tag: "UnixPathAddress"; readonly "~effect/net/NetAddress": "~effect/net/NetAddress"; readonly path: string;}The path of a Unix-domain socket address.
Signature
interface UnixPathAddressParts { readonly path: string;}An all-zero IPv4 or IPv6 address.
Signature
type UnspecifiedAddress<A extends IpAddress = IpAddress> = Brand.Branded<A, typeof UnspecifiedTypeId>Other
SocketAddress
unstableCompanion types for constructing socket addresses.
toCanonical
unstableSignature
declare function toCanonical(self: IpAddress): IpAddressdeclare function toCanonical(self: InetAddress): InetAddressPattern Matching
Folds an IP address by its numeric version.
Signature
declare const match: { <A, B>(options: { readonly onIpv4: (address: Ipv4Address) => A; readonly onIpv6: (address: Ipv6Address) => B; }): (self: IpAddress) => A | B; <A, B>(self: IpAddress, options: { readonly onIpv4: (address: Ipv4Address) => A; readonly onIpv6: (address: Ipv6Address) => B; }): A | B;}Predicates
isBroadcast
unstableReturns true for the IPv4 limited broadcast address 255.255.255.255 or
the MAC all-ones broadcast address.
Details
MAC broadcast is also multicast because its IEEE group bit is set. IPv4 limited broadcast is not multicast. Directed IPv4 broadcast cannot be determined without a network prefix and is not classified here.
Signature
declare function isBroadcast<A extends MacAddress | Ipv4Address>(self: A): self is BroadcastAddress<A>Returns true when an IP address or internet address belongs to a family,
narrowing it to that family.
Signature
declare const isFamily: { (family: "IPv4"): <A extends IpAddress | InetAddress>(self: A) => self is Extract<A, Ipv4Address | InetAddressV4>; (family: "IPv6"): <A extends IpAddress | InetAddress>(self: A) => self is Extract<A, Ipv6Address | InetAddressV6>; (family: IpFamily): (self: IpAddress | InetAddress) => boolean; <A extends IpAddress | InetAddress>(self: A, family: "IPv4"): self is Extract<A, Ipv4Address | InetAddressV4>; <A extends IpAddress | InetAddress>(self: A, family: "IPv6"): self is Extract<A, Ipv6Address | InetAddressV6>; (self: IpAddress | InetAddress, family: IpFamily): boolean;}isIpv4Mapped
unstableReturns true when an IPv6 address is in the ::ffff:0:0/96 mapped range.
Signature
declare function isIpv4Mapped(self: Ipv6Address): booleanisLinkLocal
unstableReturns true for IPv4 169.254.0.0/16 or IPv6 fe80::/10.
Signature
declare function isLinkLocal<A extends IpAddress>(self: A): self is LinkLocalAddress<A>isLoopback
unstableReturns true for IPv4 127.0.0.0/8 or IPv6 ::1.
Signature
declare function isLoopback<A extends IpAddress>(self: A): self is LoopbackAddress<A>isMacBroadcast
unstableReturns true when the MAC address is the all-ones broadcast address.
Signature
declare function isMacBroadcast<A extends MacAddress>(self: A): self is BroadcastAddress<A>isMacLocallyAdministered
unstableReturns true when the MAC address has the IEEE local-administration bit set.
Signature
declare function isMacLocallyAdministered<A extends MacAddress>(self: A): self is LocallyAdministeredAddress<A>isMacMulticast
unstableReturns true when the MAC address has the IEEE group-address bit set.
Signature
declare function isMacMulticast<A extends MacAddress>(self: A): self is MulticastAddress<A>isMacUnicast
unstableReturns true when the MAC address has the IEEE group-address bit clear.
Signature
declare function isMacUnicast<A extends MacAddress>(self: A): self is UnicastAddress<A>isMacUniversallyAdministered
unstableReturns true when the MAC address has the IEEE local-administration bit clear.
Signature
declare function isMacUniversallyAdministered<A extends MacAddress>(self: A): self is UniversallyAdministeredAddress<A>isMulticast
unstableReturns true for IPv4 224.0.0.0/4, IPv6 ff00::/8, or a MAC address with
the IEEE group bit set, refining the value while preserving its address type.
Details
The MAC all-ones broadcast address has the group bit set and is multicast;
the IPv4 limited broadcast address 255.255.255.255 is not. Use
isMacBroadcast or isBroadcast to distinguish broadcast.
Signature
declare function isMulticast<A extends MacAddress | IpAddress>(self: A): self is MulticastAddress<A>Example Classifying IP and MAC group addresses
import { assert } from "@effect/vitest"import { NetAddress } from "effect/net"
const ip = NetAddress.ipFromStringUnsafe("239.255.0.1")const mac = NetAddress.macAddressFromStringUnsafe("ff:ff:ff:ff:ff:ff")
assert.isTrue(NetAddress.isMulticast(ip))assert.isTrue(NetAddress.isMulticast(mac))assert.isTrue(NetAddress.isBroadcast(mac))assert.isFalse(NetAddress.isMulticast(NetAddress.ipv4Broadcast))Returns true for IPv4 private-use ranges defined by RFC 1918.
Signature
declare function isPrivate<A extends Ipv4Address>(self: A): self is PrivateAddress<A>Returns true when an address is syntactically unicast.
Details
IP addresses exclude multicast, unspecified, and IPv4 limited broadcast. This does not exclude reserved ranges, prefix-relative directed broadcast, or addresses that are unusable or unreachable in a particular deployment. MAC addresses are unicast when their IEEE individual/group bit is clear.
Signature
declare function isUnicast<A extends MacAddress | IpAddress>(self: A): self is UnicastAddress<A>isUniqueLocal
unstableReturns true for IPv6 unique-local addresses in fc00::/7.
Signature
declare function isUniqueLocal<A extends Ipv6Address>(self: A): self is UniqueLocalAddress<A>isUnspecified
unstableReturns true for the all-zero address of either IP version.
Signature
declare function isUnspecified<A extends IpAddress>(self: A): self is UnspecifiedAddress<A>Unsafe
formatUrlUnsafe
unstableFormats an IP or socket address as a URL display string,
throwing a NetAddressError when conversion fails.
See
- formatUrl for the checked version and formatting behavior.
Signature
declare function formatUrlUnsafe(self: IpAddress | SocketAddress, scheme: string): stringinetAddressFromInputUnsafe
unstableConverts a trusted InetAddressInput to an internet address, throwing on failure.
Signature
declare function inetAddressFromInputUnsafe(input: InetAddressInput): InetAddressinetAddressFromIpStringUnsafe
unstableCreates an internet address from a trusted numeric IP string and port.
Gotchas
This function throws when either input is invalid. Use only when both values are already known to satisfy the checked constructor's requirements.
Signature
declare function inetAddressFromIpStringUnsafe(address: string, port: number): InetAddressinetAddressFromNativeUnsafe
unstableCreates an internet address from a trusted native numeric host and port. Named IPv6 zones are resolved using the supplied interface-to-scope map. Use only for runtime-supplied socket addresses: this skips input validation, so malformed strings or ports may silently produce incorrect values. An unknown named IPv6 zone throws rather than losing its scope.
Signature
declare function inetAddressFromNativeUnsafe(host: string, port: number, scopeIds?: ReadonlyMap<string, number>): InetAddressinetAddressFromStringUnsafe
unstableParses a trusted numeric internet address and port, throwing on failure.
Signature
declare function inetAddressFromStringUnsafe(input: string): InetAddressinetAddressUnsafe
unstableCreates an internet address from a trusted IP address and port, throwing on failure.
Signature
declare function inetAddressUnsafe(address: IpAddress, port: number): InetAddressipFromInputUnsafe
unstableConverts a trusted IpAddressInput to an IP address, throwing on failure.
Signature
declare function ipFromInputUnsafe(input: IpAddressInput): IpAddressipFromStringUnsafe
unstableParses a trusted bare numeric IPv4 or IPv6 address, throwing on failure.
Signature
declare function ipFromStringUnsafe(input: string): IpAddressipv4FromBytesUnsafe
unstableCreates an IPv4 address from trusted network-order bytes without validation.
Signature
declare function ipv4FromBytesUnsafe(bytes: Uint8Array): Ipv4Addressipv6FromBytesUnsafe
unstableCreates an IPv6 address from trusted network-order bytes without validation.
Signature
declare function ipv6FromBytesUnsafe(bytes: Uint8Array): Ipv6AddressmacAddressFromInputUnsafe
unstableConverts a trusted MacAddressInput to a MAC address, throwing on failure.
Signature
declare function macAddressFromInputUnsafe(input: MacAddressInput): MacAddressmacAddressFromStringUnsafe
unstableParses a trusted colon-separated MAC address, throwing on failure.
Signature
declare function macAddressFromStringUnsafe(input: string): MacAddresssocketAddressFromInputUnsafe
unstableConverts a trusted SocketAddress.Input to a concrete socket address,
throwing on failure.
Signature
declare function socketAddressFromInputUnsafe(input: Input): SocketAddress