"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function priority(name) {
if (name.startsWith('en') || name.startsWith('eth')) {
return 0;
}
if (name.startsWith('wlan')) {
return 1;
}
return 2;
}
function 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);
}
function loopback(family = 'IPv4') {
if (family === 'IPv4') {
return '127.0.0.1';
} else if (family === 'IPv6') {
return 'fe80::1';
} else {
throw new Error('IP family must be IPv4 or IPv6');
}
}
function address(family = 'IPv4') {
const interfaces = _os().default.networkInterfaces();
const sortedInterfaces = Object.keys(interfaces).sort(function (a, b) {
return priority(a) - priority(b);
});
const all = sortedInterfaces.map(function (nic) {
const addresses = interfaces[nic].filter(details => details.family === family && !isLoopback(details.address));
return addresses.length ? addresses[0].address : undefined;
}).filter(Boolean);
return all.length ? all[0] : loopback(family);
}
var _default = {
address
};
exports.default = _default;
//# sourceMappingURL=__sourcemaps__/ip.js.map