1.11.1 • Published 4 years ago
@naturalcycles/json-schema-lib v1.11.1
@naturalcycles/json-schema-lib
JSON schema to/from TypeScript parser/generator
Allows to generate JSON Schema from a set of Typescript files with Interfaces (also Types and Enums).
Also, to generate Typescript files from JSON schemas (reverse).
Status: experimental! Everything is subject to change!
Example
Install json-schema-lib as your devDependency:
yarn add -D @naturacycles/json-schema-libDefine a jsonSchemaGenerator.cfg.js in the root of you project:
module.exports = {
paths: ['src/types/*.ts'],
outputDir: 'resources/schemas',
}Config says to scan all *.ts files in src/types, parse them, generate JSON schemas, write them
into resources/schemas folder.
Similar projects
Develop
Typescript AST debugging: https://ts-ast-viewer.com/
Supported
- Schemas from:
- Interfaces
- Types
- Enums
- Classes
string,number,boolean- Literal types, e.g
someString, 15,true nulltypeobject,arraytupleenum(stringandnumbervalues)- optional/required properties
- Union types (
|), Intersections (&),extends - jsdoc
@validationType(e.g.integer) - Type references, e.g.
p: Person(wherePersonis defined elsewhere, can be in another file) - Parsing a list of files (not necessary for all types to be in 1 file)
Partial,RequiredRecord<A, B>- Indexed properties (
{ [name: string]: string }) StringMap(aka Dictionary)- jsdoc tags:
validationTypeto overridetype, e.g.@validationType integer- General:
deprecated,readOnly,writeOnly,default - String:
pattern,format,minLength,maxLength - Number:
multipleOf,minimum,exclusiveMinimum,maximum,exclusiveMaximum - Object:
additionalProperties,minProperties,maxProperties - Array:
minItems,maxItems,uniqueItems - Schema composition:
if,then,else,dependencies,dependentRequired,dependentSchemas
Currently NOT supported
Omit,Pick- Generic interfaces, e.g.
interface MyType<T> { current: T, future: T } typeofkeyof- Conditional types