Skip to content
This repository has been archived by the owner on Jun 2, 2019. It is now read-only.

Jack-Works/schema2ts

Repository files navigation

Schema2ts

Travis npm version code style: prettier

Schema2ts is developed to generate Typescript code from REST API schema.

Command Line usage

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.

API Usage

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>

Add a custom specification

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 => {})

Utils for developers

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

See Internal type express

Template variables

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

Q&A

Supported schema type?

Supported generator?

You can create your own generator!

What does it generate?

We have some examples in the ./examples folder.