import os from "node:os"; import type { NetworkInterfacesSnapshot } from "../infra/network-interfaces.js"; type NetworkInterfaceEntry = NonNullable[string]>[number]; export type NetworkInterfaceEntryInput = { address: string; family: "IPv4" | "IPv6"; internal?: boolean; netmask?: string; }; export function makeNetworkInterfaceEntry( input: NetworkInterfaceEntryInput, ): NetworkInterfaceEntry { if (input.family === "IPv6") { return { address: input.address, family: "IPv6", internal: input.internal ?? false, netmask: input.netmask ?? "", cidr: null, mac: "", scopeid: 0, }; } return { address: input.address, family: "IPv4", internal: input.internal ?? false, netmask: input.netmask ?? "", cidr: null, mac: "", }; } export function makeNetworkInterfacesSnapshot( snapshot: Record, ): NetworkInterfacesSnapshot { return Object.fromEntries( Object.entries(snapshot).map(([name, entries]) => [ name, entries.map((entry) => makeNetworkInterfaceEntry(entry)), ]), ); }