dtsgeneratorws
Version:
TypeScript d.ts file generator for JSON Schema file
151 lines (103 loc) • 5.01 kB
Markdown
# dtsgenerator
TypeScript d.ts file generator from JSON Schema file or OpenAPI(Swagger) spec file.
[](#)
[](https://www.npmjs.com/package/dtsgenerator)
[](https://travis-ci.org/horiuchi/dtsgenerator)
[](https://coveralls.io/github/horiuchi/dtsgenerator?branch=master)
[](https://greenkeeper.io/)
[](https://www.npmjs.com/package/dtsgenerator)
[](https://devtoken.rocks/package/dtsgenerator)
[](#)
## Table of Contents
- [Install](#install)
- [Usage](#usage)
- [Advance Usage](#advance-usage)
- [Development](#development)
- [ChangeLog](#changelog)
- [License](#license)
## Install
npm install -g dtsgeneratorws
- [Releases](https://github.com/horiuchi/dtsgenerator/releases)
## Usage
```
$ dtsgen --help
Usage: script [options] <file ... | file patterns using node-glob>
Options:
-V, --version output the version number
--url <url> input json schema from the url. (default: )
--stdin read stdin with other files or urls.
-o, --out <file> output d.ts filename.
-n, --namespace <namespace> use root namespace instead of definitions or components.schema from OpenAPI, or -n "" to suppress namespaces.
-h, --help output usage information
Examples:
$ dtsgen --help
$ dtsgen --out types.d.ts schema/**/*.schema.json
$ cat schema1.json | dtsgen
$ dtsgen -o swaggerSchema.d.ts --url https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v2.0/schema.json
$ dtsgen -o petstore.d.ts -n PetStore --url https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v2.0/yaml/petstore.yaml
```
## Advance Usage
For customize the output type name.
### Install for library
npm install -S dtsgenerator
### Usage for library
For example, it want to add the `I` prefix to the interface name.
This is not usual example...
https://github.com/horiuchi/dtsgenerator/blob/master/example/add-prefix/index.ts
```js
import dtsGenerator, { DefaultTypeNameConvertor, SchemaId } from 'dtsgenerator';
import * as fs from 'fs';
const filePath = '../../test/snapshots/json-schema-draft-04/schema/schema.json';
function typeNameConvertor(id: SchemaId): string[] {
const names = DefaultTypeNameConvertor(id);
if (names.length > 0) {
const lastIndex = names.length - 1;
names[lastIndex] = 'I' + names[lastIndex];
}
return names;
}
async function main(): Promise<void> {
const content = JSON.parse( fs.readFileSync(filePath, 'utf-8') );
const result = await dtsGenerator({
contents: [content],
typeNameConvertor,
});
console.log(result);
}
main();
```
## Development
### Debug
Output debug message by [debug](https://www.npmjs.com/package/debug) library.
$ DEBUG=dtsgen dtsgen schema/news.json
### Links about JSON Schema and Swagger
- [The home of JSON Schema](http://json-schema.org/)
- [The OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification)
### Supported spec and features
- JSON Schema
- Draft-04 and before
- Draft-07 and before
- OpenAPI
- OpenAPI Specification version 2.0
- OpenAPI Specification version 3.0
- [supported features in these spec](https://github.com/horiuchi/dtsgenerator/blob/master/SupportedFeatures.md)
## ChangeLog
### [v2.5.1](https://github.com/horiuchi/dtsgenerator/releases/tag/v2.5.1) (2020-04-27)
- fixed:
- Fix: the bug of name conversion by #402. Thank you @unclechu :+1:
- Fix: Error when spaces included in a 'name' property under paths/parameters by #407. Thank you @scvnathan :+1:
### [v2.5.0](https://github.com/horiuchi/dtsgenerator/releases/tag/v2.5.0) (2020-02-28)
- features:
- Add to support the text media type on Open API Schema by #396. Thank you @silesky :+1:
### [v2.4.1](https://github.com/horiuchi/dtsgenerator/releases/tag/v2.4.1) (2020-02-05)
- fixed
- Fix: the bug of #386. thank you for reporting issue @Oloompa :+1:
### [v2.4.0](https://github.com/horiuchi/dtsgenerator/releases/tag/v2.4.0) (2020-02-04)
- fixed
- Fix: typescript import statement #381. thank you @lupus92 :+1:
- Fix: use `export` when given empty namespace #386. Thank you @zregvart :+1:
### older versions history
[ChangeLogs](https://github.com/horiuchi/dtsgenerator/blob/master/CHANGELOG.md)
## License
`dtsgenerator` is licensed under the MIT license.
Copyright © 2016-2020, [Hiroki Horiuchi](mailto:horiuchi.g@gmail.com)