Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/simonwep/nason

📦 Ultra tiny serializer / encoder with plugin-support. Useful to build binary files containing images, strings, numbers and more!
https://github.com/simonwep/nason

binary bson compression deserialization json serialization

Last synced: 3 months ago
JSON representation

📦 Ultra tiny serializer / encoder with plugin-support. Useful to build binary files containing images, strings, numbers and more!

Awesome Lists containing this project

README

        


Logo


Ultra tiny object serializer


gzip size
brotli size
Coverage Status
Build Status
Download count
No dependencies
JSDelivr download count
Current version
Support me

> 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](https://github.com/mongodb/js-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`:

```shell
$ npm install nason
# or
$ yarn add nason
```

Include directly via [jsdelivr](https://www.jsdelivr.com/package/npm/nason):

```html

```

Using [ES Modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules):

````js
import { deserialize, serialize } from 'https://cdn.jsdelivr.net/npm/nason/lib/nason.min.mjs'
````

### Usage

```js
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:

```js
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](docs/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.
> You can, however, [add support for it](docs/plugins/undefined.md) ;)

### Plugins

It's possible to write custom encoders for data-types not supported out-of-the-box.
Head to [plugins](docs/plugins) to get started!