diff --git a/packages/typed-binary/README.md b/packages/typed-binary/README.md new file mode 100644 index 0000000..f39552e --- /dev/null +++ b/packages/typed-binary/README.md @@ -0,0 +1,47 @@ +
+ +![typed binary (light mode)](/docs/media/logo-light.svg) + +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-light.svg) + + + +
+ +# 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`. diff --git a/packages/typed-binary/package.json b/packages/typed-binary/package.json index fd4432d..8846886 100644 --- a/packages/typed-binary/package.json +++ b/packages/typed-binary/package.json @@ -1,6 +1,6 @@ { "name": "typed-binary", - "version": "4.0.1", + "version": "4.1.0", "description": "Describe binary structures with full TypeScript support. Encode and decode into pure JavaScript objects.", "packageManager": "pnpm@8.15.8+sha256.691fe176eea9a8a80df20e4976f3dfb44a04841ceb885638fe2a26174f81e65e", "type": "module",