# JSON-RPC 2.0 Code-Gen

Type/Service definition language and code generator for json-rpc 2.0. Currently generating code for NodeJS, Deno and the Web. Other targets are possible, but not implemented yet.

| Name    | Description                       |
| ------- | --------------------------------- |
| ts-node | Typescript for NodeJS             |
| ts-esm  | Typescript in ESM format for Deno |
| rust    | Rust                              |
| dart    | Dart                              |
| c#      | C#                                |

## Usage

Create a definition file like `test.jrpc`:

```jrpc
enum TestEnum {
  VAL1,
  VAL2,
  VAL10 = 10,
  VAL11,
  VAL12
}

type Test {
  testen: TestEnum;
  someString: string;
  someNumber?: number;
  array: string[];
  map: {number, TestEnum};
}

service TestService {
  @Description("This Function adds two number")
  @Param("v1", "The first Number")
  @Param("v2", "The second Number")
  @Returns("The added values of the two numbers")
  AddNumbers(v1: number,  v2: number): number;


  notification SendTest(test: Test);
}
```

Then run the generator like this `jrpc compile test.jrpc -o=ts-node:output/`.

This will generate the Client and Server code in the specified folder.

## TODOS

1. Documentation
2. Null Checks/Enforcements in all languages
3. More and better tests
