Home

Awesome

typhen-json-schema Build Status npm version

Converts TypeScript Interfaces to JSON Schema

Getting Started

If you haven't used typhen before, be sure to check out the README.

$ npm install --save-dev typhen-json-schema
$ vi tsconfig.json # Add settings.
$ typhen
$ npm install -g typhen-json-schema
$ typhen --plugin typhen-json-schema --dest generated definitions.d.ts

The "typhen-json-schema" plugin

Overview

In your project's tsconfig.json, add settings for using the plugin.

{
  "files": [
    "src/index.ts"
  ],
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES5"
  },
  "typhen": [
    {
      "plugin": "typhen-json-schema",
      "pluginOptions": {
        "baseUri": "http://example.com/my-schema",
        "enumType": "string"
      },
      "outDir": "output-directory",
      "files": [ "typings/json.d.ts" ]
    }
  ]
}

If you want to use an integer type of JSON Schema, you will add the interface declaration to the beginning of a file, or add @integer tag to number's documentation comments.

interface integer {}
  /**
    @integer
   */
  age: number;

Options

baseUri

Type: String Default value: ''

The base uri that is used to define a reference to another JSON Schema.

enumType

Type: String Default value: 'integer'

A value that specifies enum value. It is either string or integer.

Validations

You can define validation rules by adding tags in documentation comments like the below.

  /**
    @minimum 0
    @exclusiveMinimum
   */
  price: number;

string validations

number or integer validations

object validations

array validations

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using gulp.js.

Contributors

License

Copyright (c) 2015 Shogo Iwano Licensed under the MIT license.