Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iwoplaza/typed-binary
Describe binary structures with full TypeScript support. Encode and decode into pure JavaScript objects.
https://github.com/iwoplaza/typed-binary
binary decoding encoding ts typescript
Last synced: about 1 month ago
JSON representation
Describe binary structures with full TypeScript support. Encode and decode into pure JavaScript objects.
- Host: GitHub
- URL: https://github.com/iwoplaza/typed-binary
- Owner: iwoplaza
- License: mit
- Created: 2022-01-11T20:09:48.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-10-29T08:47:33.000Z (2 months ago)
- Last Synced: 2024-10-29T09:56:47.023Z (2 months ago)
- Topics: binary, decoding, encoding, ts, typescript
- Language: TypeScript
- Homepage: https://iwoplaza.github.io/typed-binary/
- Size: 3.25 MB
- Stars: 101
- Watchers: 2
- Forks: 3
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![typed binary (light mode)](/docs/media/logo-light.svg#gh-light-mode-only)
![typed binary (dark mode)](/docs/media/logo-dark.svg#gh-dark-mode-only)Describe binary structures with full TypeScript support.
[Website](https://iwoplaza.github.io/typed-binary) — [Documentation](https://iwoplaza.github.io/typed-binary/guides/getting-started)
![Basic Type and Documentation Inference](/docs/media/code-showcase-dark.svg#gh-dark-mode-only)
![Basic Type and Documentation Inference](/docs/media/code-showcase-light.svg#gh-light-mode-only)# Why Typed Binary?
Serialize and deserialize typed schemas without the need for redundant interfaces or an external DSL. Schemas themselves define what type they encode and decode, and **the IDE knows it**!
- Since value types are inferred from the schemas themselves, there is a **single source-of-truth**.
- No external DSL necessary to define the schemas, meaning you have instant feedback without the need to compile the interface definitions.
- It's platform independent (use it in Node.js as well as in in Browsers)
- While being made with TypeScript in mind, it also works in plain JavaScript.# Documentation
The [typed binary documentation](https://iwoplaza.github.io/typed-binary/guides/getting-started) is a great starting point for learning how to use the library.
# Installation
```sh
# using npm
npm install typed-binary# using pnpm
pnpm add typed-binary# using yarn
yarn add typed-binary
```> To properly enable type inference, **TypeScript 4.5** and up is required because of it's newly added [Tail-Recursion Elimination on Conditional Types](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html#tail-recursion-elimination-on-conditional-types) feature,
# Running examples
There are a handful of examples provided. To run any one of them make sure to clone the [typed-binary](https://github.com/iwoplaza/typed-binary) repository first, then go into the `examples/` directory. To setup the examples environment, run `pnpm install`, which will fetch dependencies, build the parent project and link it to the 'examples' project.
Pick an example that peaks interest, and run `pnpm example:exampleName`.