Schema2ts is developed to generate Typescript code from REST API schema.
Syntax: schema2ts [options][file ...]
Options:
-h, --help Print this message.
--template FILE/URL Template of the generated files.
--tsx Generates '.tsx' file (or .d.tsx if -d is on).
-d, --declaration Generates corresponding '.d.ts' file.
-o, --out FILE Generates file to someplace.
--outPath DIRECTORY Generates file to the directory.
--noEmit Do not emit outputs.
interface Schema2tsAPI {
/** Custom template that used to generate code */ template?: string
/** If this is true, template will be treated as url/file path */ isTemplateUrl?: boolean
/** Schema that used to generate code */ schema: string | object
/** If this is true, schema will be treated as url/file path */ isSchemaUrl?: boolean
/** Generate only declarations */ declaration?: boolean
/** If you only want to change comments on the top, you may need this. */ customFileComment?: string
/** Code generator */ generator?: typeof RestClientGenerator
}
export default function(config: Schema2tsAPI): Promise<string>
Here is an example
import { Specs, SpecificationProvider } from 'schema2ts/dist/specifications'
// All Specs are in this Map
import API, { Schema2tsServerDefinition } from 'schema2ts/dist/api'
// Your transformer need to return a Schema2tsServerDefinition
declare const MySpec: SpecificationProvider
Specs.set('My API', MySpec)
// Set your spec before API call
API({ schema: { mySchema: true } }).then(result => {})
In schema2ts/dist/utils.js
, we have some utils that are useful when handle with schema objects.
Important!: These utils are not guaranteed to be stable, especially undocumented ones.
/**
* This is an impl of parsing JSON Schema into internal expression of type in schema2ts
*
* About JSON Schema, see: https://tools.ietf.org/html/draft-fge-json-schema-validation-00
*/
async createJSONSchemaToTypes(document: any) => (from: JSONSchema, ): Types.Type
In schema2ts/dist/code/types.js
, we define an internal express of Types
Variables that you can use in template comments
- %version%: Current version of schema2ts
- %typescript-version%: Current version of typescript that schema2ts use
- %when%: Current time
- %default-template%: Include default template of schema2ts
- Rest Client (using axios)
- Rest Client (using fetch) In Future
- Fake rest server In Future
You can create your own generator!
We have some examples in the ./examples folder.