Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avaer/smiggles
The ultimate in node cerealization
https://github.com/avaer/smiggles
Last synced: about 2 months ago
JSON representation
The ultimate in node cerealization
- Host: GitHub
- URL: https://github.com/avaer/smiggles
- Owner: avaer
- Created: 2018-01-24T01:01:43.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-05T01:36:34.000Z (almost 6 years ago)
- Last Synced: 2024-05-01T13:59:46.406Z (8 months ago)
- Language: JavaScript
- Size: 30.3 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## smiggles
The ultimate in node cerealization.
```js
const {serialize, deserialize} = require('smiggles');const obj = ['lol', 2, [true, false], null, {fail: 'whale', trail: {ail: 'kale'}}, Uint8ClampedArray.from([7]), null, Uint16Array.from([8]), Float32Array.from([1,2,3,4])];
const arrayBuffer = smiggles.serialize(obj); // ArrayBuffer
// const arrayBuffer = smiggles.serialize(obj, new ArrayBuffer(1024)); // pass in an optional ArrayBuffer to use
const result = smiggles.deserialize(buffer); // Arrayequals(obj, result); // true
```Works with all JSON types, as well as typed arrays, with proper alignment, and _zero copy_ on either size for typed arrays (it just points into the correct `ArrayBuffer` offsets). This basically lets you send binary data, _fast_. Think Protobuf in node land. Pure JS.
Note that `serialize` takes an optional `ArrayBuffer` for serialize into: it must be big enough to hold the serialized result. If it is not big enough you will get a throw.
Throws if it cannot `serialize`/`deserialize` the thing you put in. If you get a result back, the result should be transparent.