IP address utilities for node.js providing IPv4/IPv6 address manipulation, validation, and network operations
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Functions for validating IP address formats and classifying addresses as private, public, or loopback with support for both IPv4 and IPv6 addresses.
Checks if a string is in valid IPv4 format using regex validation.
/**
* Checks if string is valid IPv4 format
* @param {string} ip - IP address string to validate
* @returns {boolean} True if valid IPv4 format, false otherwise
*/
function isV4Format(ip);Usage Examples:
const ip = require('ip');
console.log(ip.isV4Format('127.0.0.1')); // true
console.log(ip.isV4Format('192.168.1.1')); // true
console.log(ip.isV4Format('255.255.255.255')); // true
console.log(ip.isV4Format('256.1.1.1')); // false (invalid octet)
console.log(ip.isV4Format('::1')); // false (IPv6)
console.log(ip.isV4Format('not-an-ip')); // falseChecks if a string is in valid IPv6 format using regex validation.
/**
* Checks if string is valid IPv6 format
* @param {string} ip - IP address string to validate
* @returns {boolean} True if valid IPv6 format, false otherwise
*/
function isV6Format(ip);Usage Examples:
const ip = require('ip');
console.log(ip.isV6Format('::1')); // true
console.log(ip.isV6Format('::ffff:127.0.0.1')); // true (IPv4-mapped)
console.log(ip.isV6Format('2001:db8::1')); // true
console.log(ip.isV6Format('fe80::1')); // true
console.log(ip.isV6Format('127.0.0.1')); // false (IPv4)
console.log(ip.isV6Format('invalid')); // falseCompares two IP addresses for equality, supporting IPv4, IPv6, and mixed comparisons with IPv6-mapped IPv4 addresses.
/**
* Compares two IP addresses for equality
* @param {string} a - First IP address
* @param {string} b - Second IP address
* @returns {boolean} True if addresses are equal, false otherwise
*/
function isEqual(a, b);Usage Examples:
const ip = require('ip');
// IPv4 comparisons
console.log(ip.isEqual('127.0.0.1', '127.0.0.1')); // true
console.log(ip.isEqual('127.0.0.1', '127.0.0.2')); // false
// IPv6 comparisons
console.log(ip.isEqual('::1', '::1')); // true
console.log(ip.isEqual('::1', '::2')); // false
// Mixed IPv4/IPv6 comparisons (IPv6-mapped IPv4)
console.log(ip.isEqual('127.0.0.1', '::ffff:127.0.0.1')); // true
console.log(ip.isEqual('127.0.0.1', '::7f00:1')); // true
console.log(ip.isEqual('127.0.0.1', '::ffaf:7f00:1')); // falseChecks if an IP address is in a private address range, including loopback addresses.
/**
* Checks if IP address is in private range
* @param {string} addr - IP address to check
* @returns {boolean} True if address is private, false otherwise
* @throws {Error} Throws error for invalid IPv4 address
*/
function isPrivate(addr);Supported Private Ranges:
Usage Examples:
const ip = require('ip');
// IPv4 private ranges
console.log(ip.isPrivate('10.0.0.1')); // true (10.x.x.x)
console.log(ip.isPrivate('172.16.0.1')); // true (172.16-31.x.x)
console.log(ip.isPrivate('192.168.1.1')); // true (192.168.x.x)
console.log(ip.isPrivate('169.254.1.1')); // true (link-local)
console.log(ip.isPrivate('127.0.0.1')); // true (loopback)
// IPv4 public addresses
console.log(ip.isPrivate('8.8.8.8')); // false
console.log(ip.isPrivate('1.1.1.1')); // false
// IPv6 addresses
console.log(ip.isPrivate('::1')); // true (loopback)
console.log(ip.isPrivate('fe80::1')); // true (link-local)
console.log(ip.isPrivate('fd12:3456:789a:1::1')); // true (unique local)
// IPv6-mapped IPv4
console.log(ip.isPrivate('::ffff:192.168.1.1')); // true
// Special formats (hex, octal)
console.log(ip.isPrivate('0x7f.1')); // true (127.0.0.1 in hex)Checks if an IP address is public (not private). This is the logical inverse of isPrivate.
/**
* Checks if IP address is public (not private)
* @param {string} addr - IP address to check
* @returns {boolean} True if address is public, false otherwise
*/
function isPublic(addr);Usage Examples:
const ip = require('ip');
console.log(ip.isPublic('8.8.8.8')); // true
console.log(ip.isPublic('1.1.1.1')); // true
console.log(ip.isPublic('192.168.1.1')); // false (private)
console.log(ip.isPublic('127.0.0.1')); // false (loopback)Checks if an IP address is a loopback address, supporting various input formats including decimal, octal, hexadecimal, and long integer representations.
/**
* Checks if IP address is loopback address
* @param {string} addr - IP address to check (supports various formats)
* @returns {boolean} True if address is loopback, false otherwise
*/
function isLoopback(addr);Supported Loopback Ranges:
Usage Examples:
const ip = require('ip');
// Standard IPv4 loopback
console.log(ip.isLoopback('127.0.0.1')); // true
console.log(ip.isLoopback('127.8.8.8')); // true (any 127.x.x.x)
// IPv6 loopback
console.log(ip.isLoopback('::1')); // true
console.log(ip.isLoopback('fe80::1')); // true
console.log(ip.isLoopback('::')); // true
// Various IPv4 formats
console.log(ip.isLoopback('0177.0.0.1')); // true (octal)
console.log(ip.isLoopback('0x7f.0.0.1')); // true (hex)
console.log(ip.isLoopback('2130706433')); // true (long integer)
// Non-loopback addresses
console.log(ip.isLoopback('8.8.8.8')); // false
console.log(ip.isLoopback('192.168.1.1')); // false