TypeScript d.ts file generator from JSON Schema file or OpenAPI(Swagger) spec file.
npm install -g dtsgenerator
$ 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
For customize the output type name.
npm install -S dtsgenerator
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
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();
Output debug message by debug library.
$ DEBUG=dtsgen dtsgen schema/news.json
JSON Schema
OpenAPI
nullable
property on OpenAPI by #319. Thank you @sakari :+1: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#data-types.npmignore
dtsgenerator
is licensed under the MIT license.
Copyright © 2016-2019, Hiroki Horiuchi