@consento/codecs

Serializable (named) codecs, including msgpack that work with typescript

Usage no npm install needed!

<script type="module">
  import consentoCodecs from 'https://cdn.skypack.dev/@consento/codecs';
</script>

README

@consento/codecs

Extended, sealed version of codecs that supports msgpack and base32 encoding and decoding.

const codecs = require('@consento/codecs')
const json = codecs('base32')
const buffer = json.encode({ hello: 'world' }) // JSON buffer
json.decode(buffer)

codecs.msgpack // You can access the codecs directly

codecs.available /*
[
  'ascii',    'base32',
  'base32c',  'base32h',
  'base32hp', 'base32p',
  'base64',   'binary',
  'hex',      'json',
  'msgpack',  'ndjson',
  'ucs-2',    'ucs2',
  'utf-8',    'utf16-le',
  'utf16le',  'utf8'
]
*/;

codecs.has('hex') // true

for (const codec of codecs) {
  console.log(codec) /*
    Codec(string:ascii)
    Codec(string:base32)
    Codec(string:base32c)
    Codec(string:base32h)
    Codec(string:base32hp)
    Codec(string:base32p)
    Codec(string:base64)
    Codec(Buffer:binary)
    Codec(string:hex)
    Codec(any:json)
    Codec(any:msgpack)
    Codec(any:ndjson)
    Codec(string:ucs2)
    Codec(string:utf-8)
    Codec(string:utf16le)
  */
}

const extensionCodec = new codecs.msgpack.ExtensionCodec()
const extMsgpack = codecs.bindMsgPack({
  encode: { extensionCodec },
  decode: { extensionCodec }
})

License

MIT