https://github.com/shiwano/typhen-json-schema
Converts TypeScript Interfaces to JSON Schema.
https://github.com/shiwano/typhen-json-schema
json-schema
Last synced: about 1 month ago
JSON representation
Converts TypeScript Interfaces to JSON Schema.
- Host: GitHub
- URL: https://github.com/shiwano/typhen-json-schema
- Owner: shiwano
- License: mit
- Created: 2015-01-19T14:44:55.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-04-20T17:48:03.000Z (about 8 years ago)
- Last Synced: 2025-03-24T07:55:29.831Z (about 1 month ago)
- Topics: json-schema
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 20
- Watchers: 3
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# typhen-json-schema [](http://travis-ci.org/shiwano/typhen-json-schema) [](http://badge.fury.io/js/typhen-json-schema)
> Converts TypeScript Interfaces to JSON Schema
## Getting Started
If you haven't used [typhen](https://github.com/shiwano/typhen) before, be sure to check out the README.```sh
$ npm install --save-dev typhen-json-schema
$ vi tsconfig.json # Add settings.
$ typhen
``````sh
$ 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.```js
{
"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.
```ts
interface integer {}
``````ts
/**
@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.
```ts
/**
@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](http://gulpjs.com/).## Contributors
* Shogo Iwano (@shiwano)
* Horiuchi_H (@horiuchi)
* @nabilnaffar## License
Copyright (c) 2015 Shogo Iwano
Licensed under the MIT license.