@network-utils/ip-range

A dead simple parser for IPv4 and IPv6 ranges, written in Typescript.

Usage no npm install needed!

<script type="module">
  import networkUtilsIpRange from 'https://cdn.skypack.dev/@network-utils/ip-range';
</script>

README

ip-range

code style: prettier

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