You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# @leichtgewicht/ip-codec
Small package to encode or decode IP addresses from buffers to strings. Supports IPV4 and IPV6.
## Usage
The basics are straigthforward
```js import { encode, decode, sizeOf, familyOf } from '@leichtgewicht/ip-codec'
const uint8Array = encode("127.0.0.1") const str = decode(uint8Array)
try { switch sizeOf(str) { case 4: // IPv4 case 16: // IPv6 } switch familyOf(str) { case: 1: // IPv4 case: 2: // IPv6 } } catch (err) { // Invalid IP } ```
By default the library will work with Uint8Array's but you can bring your own buffer:
```js const buf = Buffer.alloc(4) encode('127.0.0.1', buf) ```
It is also possible to de-encode at a location inside a given buffer
```js const buf = Buffer.alloc(10) encode('127.0.0.1', buf, 4) ```
Allocation of a buffer may be difficult if you don't know what type the buffer: you can pass in a generator to allocate it for you:
```js encode('127.0.0.1', Buffer.alloc) ```
You can also de/encode ipv4 or ipv6 specifically:
```js import { v4, v6 } from '@leichtgewicht/ip-codec'
v4.decode(v4.encode('127.0.0.1')) v6.decode(v6.encode('::')) ```
## History
The code in this package was originally extracted from [node-ip](https://github.com/indutny/node-ip) and since improved.
Notable changes are the removal of the `Buffer` dependency and better support for detection of formats and allocation of buffers.
## License
[MIT](./LICENSE)
|