ip-num is A TypeScript/JavaScript library for working with ASN, IPv4, and IPv6 numbers. It provides representations of these internet protocol numbers with the ability to perform various IP related operations like parsing, validating etc, on them.
A new version of ip-num, version 1.3.2 is now available.
This release contains one new feature and a bug fix.
Add method to split range into smaller ranges of certain size
In previous versions of ip-num, it was possible to take IP ranges with prefix less than /32 and split them into two. For example:
import {IPv4CidrRange} from "ip-num/IPRange";
import {IPv4Prefix} from "ip-num/Prefix";
let ipv4CidrRange = IPv4CidrRange.fromCidr("192.168.208.0/24");
let splitRanges: Array<IPv4CidrRange> = ipv4CidrRange.split();
// console logs:
// 192.168.208.0/25
// 192.168.208.128/25
splitRanges.forEach(range => console.log(range.toCidrString()))
But what if one needs to take an IP range and instead of just splitting into two, there is the requirement to split into a number of ranges with a specified prefix? Well, that is now possible with the addition of splitInto method:
import {IPv4CidrRange} from "ip-num/IPRange";
import {IPv4Prefix} from "ip-num/Prefix";
let ipv4CidrRange = IPv4CidrRange.fromCidr("192.168.208.0/24");
let splitRanges: Array<IPv4CidrRange> =
ipv4CidrRange.splitInto(IPv4Prefix.fromNumber(26));
// console logs:
// 192.168.208.0/26
// 192.168.208.64/26
// 192.168.208.128/26
// 192.168.208.192/26
splitRanges.forEach(range => console.log(range.toCidrString()))
RangedSet.isCidrAble() incorrect results
Previous versions of ip-num failed to properly report that a string representing a single IP can be represented in the CIDR notation. This has now been fixed:
import {RangedSet} from "ip-num/IPRange";
let rangedSet= RangedSet.fromRangeString("1.2.3.4-1.2.3.4");
// now returns true
console.log(rangedSet.isCidrAble())
As always, ip-num is just an npm install or npm upgrade away.
Feel free to open an issue to discuss a feature or to report a bug.