A dead simple parser for IPv4 and IPv6 ranges, written in Typescript.
npm install @network-utils/ip-rangeip-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)
bash
$ npm i @network-utils/ip-range
`
Usage
$3
`typescript
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'
]
*/
`
---
$3
A string or array of strings, recursive
`typescript
type iprange = string | iprange[]
`
---
$3
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
---
$3
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
`bash
$ git clone https://github.com/justintaddei/ip-range.git
$ cd ip-range
$ npm install
$ npm test
``