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.
k_m_x 04c1a405c9
vision1
10 months ago
..
types vision1 10 months ago
LICENSE vision1 10 months ago
Readme.md vision1 10 months ago
index.cjs vision1 10 months ago
index.mjs vision1 10 months ago
package.json vision1 10 months ago

Readme.md

@leichtgewicht/ip-codec

Small package to encode or decode IP addresses from buffers to strings. Supports IPV4 and IPV6.

Usage

The basics are straigthforward

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:

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

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:

encode('127.0.0.1', Buffer.alloc)

You can also de/encode ipv4 or ipv6 specifically:

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 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