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.TypeIn 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.