Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ipetrovic11/ts-transformer-json-schema
A TypeScript custom transformer to obtain JSON schema from interface.
https://github.com/ipetrovic11/ts-transformer-json-schema
fastest-validator json-schema-generator moleculer transfomer typescript
Last synced: 2 months ago
JSON representation
A TypeScript custom transformer to obtain JSON schema from interface.
- Host: GitHub
- URL: https://github.com/ipetrovic11/ts-transformer-json-schema
- Owner: ipetrovic11
- License: mit
- Fork: true (kimamula/ts-transformer-keys)
- Created: 2019-06-13T20:02:06.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-29T15:48:22.000Z (almost 5 years ago)
- Last Synced: 2024-10-30T20:46:05.997Z (2 months ago)
- Topics: fastest-validator, json-schema-generator, moleculer, transfomer, typescript
- Language: TypeScript
- Homepage:
- Size: 260 KB
- Stars: 13
- Watchers: 1
- Forks: 4
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-moleculer - ts-transformer-json-schema - Use Typescript Intefraces as validator. (Mixins / Validation)
README
[![Build Status][travis-image]][travis-url] [![Downloads](https://img.shields.io/npm/dm/ts-transformer-json-schema.svg)](https://www.npmjs.com/package/ts-transformer-json-schema)
# ts-transformer-json-schema [![NPM version][npm-image]][npm-url]
A TypeScript custom transformer to obtain json schema for [fastest-validator](https://github.com/icebob/fastest-validator) from TypeScript interface```
$ npm install ts-transformer-json-schema --save
```# Requirement
TypeScript >= 2.4.1
TTypeScript## How to use directly with fastest-validator
```ts
import { schema } from 'ts-transformer-json-schema';
import Validator from 'fastest';interface IExample {
str: string;
}const v = new Validator();
v.validate({ str: 'string' }, schema());
```## How to use with Moleculer
```ts
import { schema } from 'ts-transformer-json-schema';interface IUser {
name: string;
}const GreeterService: ServiceSchema = {
actions: {
welcome: {
params: schema(),
handler({ params: user }: Context) {
return `Welcome, ${user.name}`;
}
}
}
}
```There is moleculer template that comes with this transformer and configure compiler to use it:
https://github.com/ipetrovic11/moleculer-template-typescript## How to use the custom transformer
Unfortunately, TypeScript itself does not currently provide any easy way to use custom transformers (See https://github.com/Microsoft/TypeScript/issues/14419).
### For ttypescript
See [ttypescript's README](https://github.com/cevek/ttypescript/blob/master/README.md) for how to use this with module bundlers such as webpack or Rollup.
```json
// tsconfig.json
{
"compilerOptions": {
// ...
"plugins": [
{ "transform": "ts-transformer-json-schema/transformer" }
]
},
// ...
}
```### What can be transformed
Currently transformer can handle:
* Interfaces
* Neasted interfaces
* Extended interfaces* Intersections and Unions
* Enums
* Emails - Predefined - IEmail
* Dates - Predefined - IDate
* UUID - Predefined - IUUID
* Forbidden - Predefined - IForbidden* Additional properties
Take a look at [tests](https://github.com/ipetrovic11/ts-transformer-json-schema/blob/master/test/schema.spec.ts) for all possibilities.
All cases from fastest-validator should be covered, if not please report the issue.# License
MIT
[travis-image]:https://travis-ci.org/ipetrovic11/ts-transformer-json-schema.svg?branch=master
[travis-url]:https://travis-ci.org/ipetrovic11/ts-transformer-json-schema
[npm-image]:https://img.shields.io/npm/v/ts-transformer-json-schema.svg?style=flat
[npm-url]:https://www.npmjs.com/package/ts-transformer-json-schema