"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ip = void 0; const os_1 = __importDefault(require("os")); exports.ip = { address() { const interfaces = os_1.default.networkInterfaces(); // Default to `ipv4` const family = normalizeFamily(); const all = Object.values(interfaces).map((addrs = []) => { const addresses = addrs.filter((details) => { const detailsFamily = normalizeFamily(details.family); if (detailsFamily !== family || exports.ip.isLoopback(details.address)) { return false; } return true; }); return addresses.length ? addresses[0].address : undefined; }).filter(Boolean); return !all.length ? exports.ip.loopback(family) : all[0]; }, isLoopback(addr) { return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/ .test(addr) || /^fe80::1$/.test(addr) || /^::1$/.test(addr) || /^::$/.test(addr); }, loopback(family) { // Default to `ipv4` family = normalizeFamily(family); if (family !== 'ipv4' && family !== 'ipv6') { throw new Error('family must be ipv4 or ipv6'); } return family === 'ipv4' ? '127.0.0.1' : 'fe80::1'; } }; function normalizeFamily(family) { if (family === 4) { return 'ipv4'; } if (family === 6) { return 'ipv6'; } return family ? family.toLowerCase() : 'ipv4'; } //# sourceMappingURL=ip.js.map