Tiny CBOR

This minimal generic library decodes and encodes most useful CBOR structures into simple JavaScript structures:

  • Maps with keys as strings or numbers with CBORType values as a Map
  • Arrays of CBORType values
  • integers as numbers
  • float32 and float64 as numbers
  • float16 NaN, Infinity, -Infinity
  • strings
  • byte strings as Uint8Array
  • booleans
  • null and undefined
  • tags as CBORTag(tag, value)

Limitations

This implementation does not support:

  • indefinite length maps, arrays, text strings, or byte strings.
  • half precision floating point numbers
  • integers outside the range of [-9007199254740991, 9007199254740991], see Number.MAX_SAFE_INTEGER
  • native output to JSON
  • does not support generic objects, only Maps

This implementation has the following constraints:

  • Map keys may only be strings or numbers
  • Tags are not interpreted

Behavior

Maps that have duplicate keys will throw an error during decoding. Decoding data that is incomplete will throw an error during decoding.