JSPM

@leichtgewicht/ip-codec

2.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 12659827
  • Score
    100M100P100Q244121F
  • License MIT

Small package to encode or decode IP addresses from buffers to strings.

Package Exports

  • @leichtgewicht/ip-codec

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@leichtgewicht/ip-codec) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@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