Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/json-schema-tools/transpiler

Transpile JSON Schema to Type aliases for many languages
https://github.com/json-schema-tools/transpiler

json-schema-generator jsonschema open-api open-rpc typings

Last synced: 3 days ago
JSON representation

Transpile JSON Schema to Type aliases for many languages

Awesome Lists containing this project

README

        

# JSON Schema Transpiler


CircleCI branch

npm
GitHub release
GitHub commits since latest release

Turn your JSON Schemas into types to be used in various languages.

[Try Me](https://json-schema.tools/)

- Generate types for:
- Golang
- Typescript
- Rust
- Python
- handles cycle detection
- automatically determines references
- includes documentation annotations for easy documentation generation with native language tools.
- minimal dependencies (wip)
- Creates 1 type alias per 1 schema
- Autogenerated deterministic titles where missing
- Autoreferencer (removes duplication)
- Code is synchronous - no IO keeps it lean and fast
- [Convert schema to types in browser too!](https://json-schema.tools)

## Getting Started

`npm install @json-schema-tools/transpiler`

```typescript
const JsonSchemaTranspiler = require("@json-schema-tools/transpiler").default;

const mySchema = {
"title": "PlowAnimals",
"description": "an array of animals that are good at pulling things",
"type": "array",
"items": {
"oneOf": [
{ "title": "Horse" },
{ "title": "Donkey" },
{ "title": "Elephant" },
]
}
};

const transpiler = new JsonSchemaTranspiler(mySchema);

console.log(transpiler.toTypescript());
console.log(transpiler.toRust());
console.log(transpiler.to("go")); // same thing, different form/interface
console.log(transpiler.to("python")); // works with shorthand of the language aswell (py or python)
```

## Testing

### Generate a test case

`npm run generateTest`

outputs:

```
> @json-schema-tools/[email protected] generateTest /Users/zb/Code/json-schema-tools/transpiler
> tsc && node ./build/integration-tests/generator.js

? What is the name of the test schema? type-as-array
? Enter a url to a JSON Schema, or press enter to get an empty one? false
Detecting languages...
Found 4 languages: go, py, rs, ts

Writing files...
All done
```

Edit schema if necessary, and run `npm test`. Update expected results as needed.

### Contributing

How to contribute, build and release are outlined in [CONTRIBUTING.md](CONTRIBUTING.md), [BUILDING.md](BUILDING.md) and [RELEASING.md](RELEASING.md) respectively. Commits in this repository follow the [CONVENTIONAL_COMMITS.md](CONVENTIONAL_COMMITS.md) specification.