nason
v1.3.1
Published
Ultra tiny serializer with customizable encoders.
Downloads
13
Maintainers
Readme
Disclaimer: This library is part of a bigger project and its goal is to be as small as possible (I don't want to use the >200kb bundle of bson). This lib is only around 4kb, uncompressed. It's only supposed to work within JS itself and not all data-types are implemented so far (see types-table at the bottom).
The name is based on nashorn which is the German word for rhino.
Installation
Install via npm
or yarn
:
$ npm install nason
# or
$ yarn add nason
Include directly via jsdelivr:
<script src="https://cdn.jsdelivr.net/npm/nason/lib/nason.min.js"></script>
Using JavaScript Modules:
import {...} from 'https://cdn.jsdelivr.net/npm/nason/lib/nason.min.mjs'
Usage
import {deserialize, serialize} from 'nason';
// Serialize something; you'll get a Uint8Array in return.
// You can pass any kind of supported data-type you want to serialize.
const enc = serialize({
'hello': 'world',
'number': 13235,
'array': [1, 2, 3, 'abc']
});
// ... save enc to file or do whatever you want with it
// Deserialize a previously-serialized value
const dec = deserialize(enc);
console.log(dec); // Will be the same as initially passed into serialize
nason
exports the following properties and functions:
import {
deserialize, // Takes a single Uint8Array and decodes it
serialize, // Takes any supported value and converts it to a Uint8Array
version // Current version of this package
} from 'nason';
There's even more if you want to develop plugins!
Data-types
| Data-type | Status |
| --------- | ------ |
| object
| ✅ Fully supported |
| array
| ✅ Fully supported |
| string
| ✅ Fully supported |
| number
| ✅ Fully supported |
| boolean
| ✅ Fully supported |
| null
| ✅ Fully supported |
undefined
is not part of the JSON specification and will throw an error if you try to serialize it.
Plugins
It's possible to write custom encoders for data-types not supported out-of-the-box. Head to plugins to get started!