Skip to content

Latest commit

 

History

History
125 lines (95 loc) · 2.63 KB

README.md

File metadata and controls

125 lines (95 loc) · 2.63 KB

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

  • @minLength {number}
  • @maxLength {number}
  • @pattern {string}
  • @format {string}
  • @default {string}

number or integer validations

  • @multipleOf {number}
  • @minimum {number}
  • @maximum {number}
  • @exclusiveMinimum
  • @exclusiveMaximum
  • @default {number}

object validations

  • @minProperties {number}
  • @maxProperties {number}

array validations

  • @minItems {number}
  • @maxItems {number}
  • @uniqueItems

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

  • Shogo Iwano (@shiwano)
  • Horiuchi_H (@horiuchi)
  • @nabilnaffar

License

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