55 lines
1.3 KiB
Markdown
55 lines
1.3 KiB
Markdown
# 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
|