https://github.com/basedwon/encoder
Provides a convenient way to define models and their associated fields allowing users to easily encode and decode data structures using different encoding schemes such as Base58 and foreign fields
https://github.com/basedwon/encoder
base58 data-modeling encoder
Last synced: 2 months ago
JSON representation
Provides a convenient way to define models and their associated fields allowing users to easily encode and decode data structures using different encoding schemes such as Base58 and foreign fields
- Host: GitHub
- URL: https://github.com/basedwon/encoder
- Owner: basedwon
- License: mit
- Created: 2023-10-05T07:09:02.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-11-07T11:27:38.000Z (over 1 year ago)
- Last Synced: 2025-04-22T03:01:54.013Z (3 months ago)
- Topics: base58, data-modeling, encoder
- Language: JavaScript
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# Encoder
[](https://www.npmjs.com/package/@basd/encoder)
[](https://gitlab.com/frenware/utils/encoder/-/pipelines)
[](https://gitlab.com/frenware/utils/encoder/-/blob/master/LICENSE)
[](https://www.npmjs.com/package/@basd/encoder)[](https://gitlab.com/frenware/utils/encoder)
[](https://github.com/basedwon/encoder)
[](https://twitter.com/basdwon)
[](https://discordapp.com/users/basedwon)A highly extensible encoding library built on top of the @basd/codex package. It provides a convenient way to define models and their associated fields allowing users to easily encode and decode data structures using different encoding schemes such as Base58 and foreign fields.
## Features
- **Custom Field Types**: Supports different field types including `base58` and `foreign`.
- **Flexible Models**: Define and use models easily to work with complex data structures.
- **Encoding and Decoding**: Provides simple and efficient encoding and decoding capabilities.
- **Foreign Field Encoding:** Seamlessly encode and decode foreign fields linked to other models.
- **Bs58 Encoding:** Out-of-the-box support for Base58 encoding and decoding.## Installation
Install the package with:
```bash
npm install @basd/encoder
```## Usage
First, import the `Encoder` library.
```js
import Encoder from '@basd/encoder'
```
or
```js
const Encoder = require('@basd/encoder')
```**Use the Encoder**:
```js
// Define models in the constructor
const encoder = new Encoder({ someType: { someField: 'string' }})// Define a model by adding it
encoder.addModel('myModelType', { someField: 'string' })
// or
encoder.addModel('myModelType', { fields: { someField: 'string' }})// Encode the data
const encodedData = encoder.encode('myModelType', data)// Decode the data
const decodedData = encoder.decode('myModelType', encodedData)
```### Advanced Usage
Here's an example of using a foreign field to reference another model:
```js
const models = {
user: { name: 'string', age: 'number' },
post: { title: 'string', body: 'string', author: 'user' },
}
const encoder = new Encoder(models, opts)
let data = { name: 'Alice', age: 33 }
let user = encoder.create('user', data)
let content = { title: 'Hello', body: 'World', author: user }
let post = encoder.create('post', content)let encoded = encoder.encode('post', post)
let decoded = encoder.decode('post', encoded)
```## Documentation
- [API Reference](/docs/api.md)
## Classes
### Base58Field
This class extends the string field type and provides encoding and decoding capabilities specific to the Base58 format.
### EncoderForeignField
The EncoderForeignField class extends the Codex's foreign field type to provide specific encoding and decoding functionality for foreign types.
### EncoderModel
The EncoderModel class provides methods for encoding and decoding a complete model by iterating through the defined fields.
### Encoder
The Encoder class is the main interface for working with models, defining encoding, and decoding methods based on the schema and options provided.
## Tests
In order to run the test suite, simply clone the repository and install its dependencies:
```bash
git clone https://gitlab.com/frenware/utils/encoder.git
cd encoder
npm install
```To run the tests:
```bash
npm test
```## Contributing
Thank you! Please see our [contributing guidelines](/docs/contributing.md) for details.
## Donations
If you find this project useful and want to help support further development, please send us some coin. We greatly appreciate any and all contributions. Thank you!
**Bitcoin (BTC):**
```
1JUb1yNFH6wjGekRUW6Dfgyg4J4h6wKKdF
```**Monero (XMR):**
```
46uV2fMZT3EWkBrGUgszJCcbqFqEvqrB4bZBJwsbx7yA8e2WBakXzJSUK8aqT4GoqERzbg4oKT2SiPeCgjzVH6VpSQ5y7KQ
```## License
@basd/encoder is [MIT licensed](https://gitlab.com/frenware/utils/encoder/-/blob/master/LICENSE).