0.0.9 • Published 1 year ago

fast-typescript-to-jsonschema v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

fast-typescript-to-jsonschema

npm version Test codecov

English | 简体中文

a tool generate json schema from typescript.

Feature

  • compile Typescript to get all type information
  • convert properties, extends, annotations, and initial values to jsonschema

Usage

  1. install
yarn add fast-typescript-to-jsonschema -D
  1. create type.ts
interface ITest {
  attr1: string;
  attr2: number;
  attr3?: boolean;
}
  1. create test.js

3.1. gen jsonschema from file.

const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');
const path = require('path');

// target file
const file = path.resolve(__dirname, './type.ts');

// generate data
genTypeSchema.genJsonDataFormFile(file);

// get all jsonschema data of current file
const json = genTypeSchema.genJsonData();

// get jsonschema of specific type
const jsonSchema = genTypeSchema.getJsonSchema(file, 'ITest');

// result
console.log(jsonSchema); 

3.2. gen jsonschema from code.

const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');

const code = `
interface ITest {
  attr1: string;
  attr2: number;
  attr3?: boolean;
}
`
// generate data
genTypeSchema.genJsonDataFromCode(code);

// get all jsonschema data of current file
const json = genTypeSchema.genJsonData();

// get jsonschema of specific type
const jsonSchema = genTypeSchema.getJsonSchema('ITest');

// result
console.log(jsonSchema); 
  1. execute script
node ./test.js

jsonSchema result:

{
  "additionalProperties": false,
  "properties": {
    "attr1": {
      "type": "string",
    },
    "attr2": {
      "type": "number",
    },
    "attr3": {
      "type": "boolean",
    },
  },
  "required": [
    "attr1",
    "attr2",
  ],
  "type": "object",
}

see more examples at example.

Comments

Example1

interface Interface_1 {
  attr: string;
}

result:

{
  "additionalProperties": false,
  "properties": {
    "attr": {
      "type": "string",
    },
  },
  "required": [
    "attr",
  ],
  "type": "object",
}

Example2

interface Interface_4 {
  attr: string[];
}

result:

{
  "additionalProperties": false,
  "properties": {
    "attr": {
      "items": {
        "type": "string",
      },
      "type": "array",
    },
  },
  "required": [
    "attr",
  ],
  "type": "object",
}

Read more supported types here

Contribution

Contributions are extremely welcomed by our team, you can contribute to this repository by several ways below.