@network-utils/ip-range
v1.0.2
Published
A dead simple parser for IPv4 and IPv6 ranges, written in Typescript.
Downloads
52
Readme
ip-range
About
ip-range
is a dead simple and super flexable parser for IP ranges, written in Typescript. It supports both IPv4 and IPv6 in CIDR notation (192.168.1.0/24
) and hyphenated ranges (192.168.1.12-192.168.1.24
)
Installation
$ npm i @network-utils/ip-range
Usage
Example
import { parseRange, ipsBetween } from '@network-utils/ip-range'
// These could be IPv6 also.
const ipsFromCIDR = parseRange('192.168.1.120/29')
const ipsFromHyphenatedRange = parseRange('192.168.1.121-192.168.1.126')
const ipsFromRange = ipsBetween('192.168.1.121', '192.168.1.126')
/*
All three output:
[
'192.168.1.121',
'192.168.1.122',
'192.168.1.123',
'192.168.1.124',
'192.168.1.125',
'192.168.1.126'
]
*/
// parseRange also accepts multi-dimensional arrays
// so you can mix-and-match however you want
const totallyWorks = parseRange(['192.168.1.120/29', ['10.0.0.2-10.0.0.8', '192.168.0.8-192.168.0.12']])
/*
output:
[
'192.168.1.121',
'192.168.1.122',
'192.168.1.123',
'192.168.1.124',
'192.168.1.125',
'192.168.1.126',
'10.0.0.2',
'10.0.0.3',
'10.0.0.4',
'10.0.0.5',
'10.0.0.6',
'10.0.0.7',
'10.0.0.8',
'192.168.0.8',
'192.168.0.9',
'192.168.0.10',
'192.168.0.11',
'192.168.0.12'
]
*/
type iprange
A string or array of strings, recursive
type iprange = string | iprange[]
parseRange(range: iprange): string[]
Parses an ip range or an array of ip ranges into an array containing each ip within the range(s)
Throws an "InvalidRange"
error if range
is invalid
ipsBetween(firstIP: string, lastIP: string): string[]
Returns an array of every IP address between firstIP
and lastIP
(inclusive)
Throws an "InvalidRange"
error if firstIP
or lastIP
are not a valid IP address
Testing
$ git clone https://github.com/justintaddei/ip-range.git
$ cd ip-range
$ npm install
$ npm test
Related Packages
License
MIT