Skip to content

simonwep/nason

Repository files navigation

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). 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 ES Modules:

import { deserialize, serialize } 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. You can, however, add support for it ;)

Plugins

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published