@leichtgewicht/ip-codec
TypeScript icon, indicating that this package has built-in type declarations

2.0.5 • Public • Published

@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

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.0.5
    2,339,837
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 2.0.5
    2,339,837
  • 2.0.4
    6,010,662
  • 2.0.3
    271,082
  • 2.0.2
    732
  • 2.0.1
    1
  • 2.0.0
    1
  • 1.0.0
    1

Package Sidebar

Install

npm i @leichtgewicht/ip-codec

Weekly Downloads

8,622,316

Version

2.0.5

License

MIT

Unpacked Size

17.7 kB

Total Files

6

Last publish

Collaborators

  • leichtgewicht