https://github.com/justintaddei/ip-range
A dead simple parser for IP ranges, written in Typescript.
https://github.com/justintaddei/ip-range
Last synced: 3 months ago
JSON representation
A dead simple parser for IP ranges, written in Typescript.
- Host: GitHub
- URL: https://github.com/justintaddei/ip-range
- Owner: justintaddei
- License: mit
- Created: 2019-11-17T23:26:13.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-27T19:01:45.000Z (11 months ago)
- Last Synced: 2025-01-29T06:20:12.927Z (4 months ago)
- Language: TypeScript
- Size: 331 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ip-range





[](https://github.com/prettier/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
```bash
$ npm i @network-utils/ip-range
```## Usage
### Example
```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'
]
*/
```---
### `type iprange`
A string or array of strings, recursive
```typescript
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
```bash
$ git clone https://github.com/justintaddei/ip-range.git
$ cd ip-range
$ npm install
$ npm test
```---
## Related Packages
- [@network-utils/tcp-ping](https://www.npmjs.com/package/@network-utils/tcp-ping)
- [@network-utils/tcp-scanner](https://www.npmjs.com/package/@network-utils/tcp-scanner)
- [@network-utils/arp-lookup](https://www.npmjs.com/package/@network-utils/arp-lookup)---
## License
MIT