Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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!
- Host: GitHub
- URL: https://github.com/simonwep/nason
- Owner: simonwep
- License: mit
- Created: 2020-04-01T20:22:54.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-10T11:01:52.000Z (about 2 years ago)
- Last Synced: 2024-11-01T13:51:45.816Z (3 months ago)
- Topics: binary, bson, compression, deserialization, json, serialization
- Language: TypeScript
- Homepage:
- Size: 347 KB
- Stars: 35
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
Ultra tiny object serializer> 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!