Skip to content

A TypeScript custom transformer to obtain JSON schema from interface.

License

Notifications You must be signed in to change notification settings

ipetrovic11/ts-transformer-json-schema

 
 

Repository files navigation

Build Status Downloads

ts-transformer-json-schema NPM version

A TypeScript custom transformer to obtain json schema for 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

import { schema } from 'ts-transformer-json-schema';
import Validator from 'fastest';

interface IExample {
  str: string;
}

const v = new Validator();
v.validate({ str: 'string' }, schema<IExample>());

How to use with Moleculer

import { schema } from 'ts-transformer-json-schema';

interface IUser {
	name: string;
}

const GreeterService: ServiceSchema = {
  actions: {
    welcome: {
      params: schema<IUser>(),
      handler({ params: user }: Context<IUser>) {
        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 microsoft/TypeScript#14419).

For ttypescript

See ttypescript's README for how to use this with module bundlers such as webpack or Rollup.

// 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 for all possibilities. All cases from fastest-validator should be covered, if not please report the issue.

License

MIT

About

A TypeScript custom transformer to obtain JSON schema from interface.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 87.7%
  • JavaScript 12.3%