3.0.4 • Published 7 months ago

@spec2ts/jsonschema v3.0.4

Weekly downloads
58
License
MIT
Repository
github
Last release
7 months ago

@spec2ts/jsonschema

NPM version NPM download Build Status

@spec2ts/jsonschema is an utility to create TypeScript types from JSON schemas. Unlike other code generators @spec2ts/jsonschema does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree (AST).

Features

  • AST-based: Unlike other code generators @spec2ts/jsonschema does not use templates to generate code but uses TypeScript's built-in API to generate and pretty-print an abstract syntax tree.
  • Tree-shakeable: Individually exported types allows you to bundle only the ones you actually use.
  • YAML or JSON: Use YAML or JSON for your JSON Schemas.
  • External references: Resolves automatically external references and bundle or import them in generated files.
  • Implementation agnostic: Use generated types in any projet or framework.

Installation

Install in your project:

npm install @spec2ts/jsonschema

CLI Usage

jsonschema2ts [options] <input..>

Generate TypeScript types from JSON Schemas

Positionals:
  input  Path to JSON Schema(s) to convert to TypeScript                [string]

Options:
  --version     Show version number                                    [boolean]
  --help        Show help usage                                        [boolean]
  --output, -o  Output directory for generated types                    [string]
  --cwd, -c     Root directory for resolving $refs                      [string]
  --avoidAny    Avoid the `any` type and use `unknown` instead         [boolean]
  --enableDate  Build `Date` for format `date` and `date-time`         [boolean]
  --banner, -b  Comment prepended to the top of each generated file     [string]

Programmatic Usage

import { printer } from "@spec2ts/core";
import { parseSchema, JSONSchema } from "@spec2ts/jsonschema";

async function generateSchema(schema: JSONSchema): Promise<string> {
    const result = await parseSchema(schema);
    return printer.printNodes(result);
}

Implementations

  • Primitive types:
    • array
    • boolean
    • integer
    • number
    • null
    • object
    • string
    • homogeneous enum
    • heterogeneous enum
  • Special types:
    • Date (date and date-time formats)
    • Blob (binary format)
  • Automatic type naming:
    • From id
    • From path
    • From title
  • Custom JSON-schema extensions
  • Nested properties
  • Schema definitions
  • Schema references
    • Local (filesystem) schema references
    • External (network) schema references
  • Modular architecture
    • Import local references
    • Embed external references
  • allOf ("intersection")
  • anyOf ("union")
  • oneOf (treated like anyOf)
  • maxItems
  • minItems
  • additionalProperties of type
  • patternProperties (partial support)
  • extends (with allOf)
  • required properties on objects
  • validateRequired
  • literal objects in enum
  • referencing schema by id

Compatibility Matrix

TypeScript versionspec2ts version
v3.x.xv1
v4.x.xv2

License

This project is under MIT License. See the LICENSE file for the full license text.

2.0.0

8 months ago

3.0.4

7 months ago

3.0.3

7 months ago

3.0.2

8 months ago

3.0.1

8 months ago

3.0.0

8 months ago

2.0.0-beta.8

2 years ago

2.0.0-beta.7

2 years ago

2.0.0-beta.6

2 years ago

2.0.0-beta.5

3 years ago

2.0.0-beta.4

3 years ago

2.0.0-beta.3

3 years ago

2.0.0-beta.2

3 years ago

2.0.0-beta.1

3 years ago

2.0.0-beta.0

3 years ago

1.4.2

4 years ago

1.4.1

4 years ago

2.0.0-alpha.1

4 years ago

2.0.0-alpha.0

4 years ago

1.4.0

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago