@exodus/borsh
v0.6.0
Published
Binary Object Representation Serializer for Hashing
Downloads
6,042
Maintainers
Readme
Borsh JS
Borsh JS is an implementation of the Borsh binary serialization format for JavaScript and TypeScript projects.
Borsh stands for Binary Object Representation Serializer for Hashing. It is meant to be used in security-critical projects as it prioritizes consistency, safety, speed, and comes with a strict specification.
Examples
Serializing an object
const value = new Test({ x: 255, y: 20, z: '123', q: [1, 2, 3] });
const schema = new Map([[Test, { kind: 'struct', fields: [['x', 'u8'], ['y', 'u64'], ['z', 'string'], ['q', [3]]] }]]);
const buffer = borsh.serialize(schema, value);
Deserializing an object
const newValue = borsh.deserialize(schema, Test, buffer);
Type Mappings
| Borsh | TypeScript |
|-----------------------|----------------|
| u8
integer | number
|
| u16
integer | number
|
| u32
integer | number
|
| u64
integer | BN
|
| u128
integer | BN
|
| u256
integer | BN
|
| u512
integer | BN
|
| f32
float | N/A |
| f64
float | N/A |
| fixed-size byte array | Uint8Array
|
| UTF-8 string | string
|
| option | null
or type |
| map | N/A |
| set | N/A |
| structs | any
|
Contributing
Install dependencies:
yarn install
Continuously build with:
yarn dev
Run tests:
yarn test
Run linter
yarn lint
Publish
Prepare dist
version by running:
yarn build
When publishing to npm use np.
License
This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-MIT and LICENSE-APACHE for details.