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.