Meet npm Pro: unlimited public & private packages + package-based permissions.Learn more »

cereal-box

1.0.0 • Public • Published

cereal-box

Painless object (de)serialization with simple schemas, optimized for speed (and not encoded size).

Quick start

const { encode, decode } = codec({
  id: "int",
  url: "string",
  method: "string",
  headers: {
    accept: "string",
    "user-agent": "string"
  }
});
 
const encoded = encode({
  id: 2013820,
  url: "/some/path?with=query",
  method: "GET",
  headers: {
    accept: "application/json",
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
  }
});
 
console.log(encoded);
// Uint8Array [ 4 0 0 0 124 186 30 0 42 0 0 0 47 0 115 0 111 0 109 0 101 0 47 0 112 0 97 0
// 116 0 104 0 63 0 119 0 105 0 116 0 104 0 61 0 113 0 117 0 101 0 114 0 121 0 0 0 6 0 0 0
// 71 0 69 0 84 0 0 0 176 0 0 0 32 0 0 0 97 0 112 0 112 0 108 0 105 0 99 0 97 0 116 0 105
// 0 111 0 110 0 47 0 106 0 115 0 111 0 110 0 136 0 0 0 77 0 111 0 122 0 105 0 108 0 108 0
// 97 0 47 0 53 0 46 0 48 0 32 0 40 0 88 0 49 0 49 0 59 0 32 0 76 0 105 0 110 0 117 0 120
// 0 32 0 120 0 56 0 54 0 95 0 54 0 52 0 59 0 32 0 114 0 118 0 58 0 49 0 50 0 46 0 48 0 41
// 0 32 0 71 0 101 0 99 0 107 0 111 0 47 0 50 0 48 0 49 0 48 0 48 0 49 0 48 0 49 0 32 0 70
// 0 105 0 114 0 101 0 102 0 111 0 120 0 47 0 49 0 50 0 46 0 48 0 ]
 
console.log(JSON.stringify(decode(encoded), null, 2));
// {
//   "id": 2013820,
//   "url": "/some/path?with=query",
//   "method": "GET",
//   "headers": {
//     "accept": "application/json",
//     "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0"
//   }
// }

Valid field types

The following field types are supported:

  • int: An unsigned integer.
  • string: A string.
  • json: A simple, hierarchical data-structure that can be JSON serialized.
  • typed: A Uint8Array instance.

Additionally, hierarchical data-structures are supported by passing an object where the values are valid field types.

Install

npm i cereal-box

DownloadsWeekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • avatar