Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/open-rpc/generator

Multi-Component & Multi-Language Generators for OpenRPC
https://github.com/open-rpc/generator

open-rpc openrpc openrpc-document openrpc-generator rpc

Last synced: 3 months ago
JSON representation

Multi-Component & Multi-Language Generators for OpenRPC

Awesome Lists containing this project

README

        

# OpenRPC Generator


CircleCI branch

npm
GitHub release
GitHub commits since latest release

A Generator tool for [open-rpc](https://github.com/open-rpc/spec) APIs.

Need help or have a question? Join us on [Discord](https://discord.gg/gREUKuF)!

## Features:

- Built in components for:
- Clients
- Server
- Documentation
- Easy to create new components

## Usage

The generator CLI has a generate command which takes a config to run. The config specifies what components you want to make, as well as the configuration for each component.

Using the CLI's `init` command, you can walk though an interactive config builder.

### Quick start

```sh
npm install -g @open-rpc/generator

open-rpc-generator init
open-rpc-generator generate -c open-rpc-generator-config.json
```

### Generating an individual component

```shell
open-rpc-generator generate \
-t client \
-l typescript \
-n petstoreClientTs \
-d https://raw.githubusercontent.com/open-rpc/examples/master/service-descriptions/petstore-openrpc.json \
-o ./generated
```
### Custom Component Generation Configuration
Here for customComponent we specify the module that exports as
default the type IComponentModule see custom-test-component.js as an example. It is easy to also refer to an npm package as well as a plain js file. customType is can be anything , it is not restricted to client | server | doc naming.
```
{
"openrpcDocument": "./src/awesome-custom-client_openrpc.json",
"outDir": "generated-client",
"components": [
{
"type": "custom",
"name": "awesome-custom-client",
"language": "typescript",
"customComponent": "./src/custom-test-component.js",
"customType": "client"
}
]
}
```
## Resources

- [@open-rpc/generator package](https://www.npmjs.com/package/@open-rpc/generator)
- [example open-rpc documents](https://github.com/open-rpc/examples/tree/master/service-descriptions)