3.0.5 • Published 10 months ago
@spec2ts/jsonschema v3.0.5
@spec2ts/jsonschema
@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/jsonschemadoes 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/jsonschemaCLI 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 (
dateanddate-timeformats) - Blob (
binaryformat)
- Date (
- Automatic type naming:
- From
id - From
path - From
title
- From
- 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 likeanyOf)maxItemsminItemsadditionalPropertiesof typepatternProperties(partial support)extends(withallOf)requiredproperties on objectsvalidateRequired- literal objects in enum
- referencing schema by id
Compatibility Matrix
| TypeScript version | spec2ts version |
|---|---|
| v3.x.x | v1 |
| v4.x.x | v2 |
License
This project is under MIT License. See the LICENSE file for the full license text.
3.0.5
10 months ago
2.0.0
2 years ago
3.0.4
2 years ago
3.0.3
2 years ago
3.0.2
2 years ago
3.0.1
2 years ago
3.0.0
2 years ago
2.0.0-beta.8
3 years ago
2.0.0-beta.7
3 years ago
2.0.0-beta.6
4 years ago
2.0.0-beta.5
4 years ago
2.0.0-beta.4
4 years ago
2.0.0-beta.3
5 years ago
2.0.0-beta.2
5 years ago
2.0.0-beta.1
5 years ago
2.0.0-beta.0
5 years ago
1.4.2
5 years ago
1.4.1
5 years ago
2.0.0-alpha.1
5 years ago
2.0.0-alpha.0
5 years ago
1.4.0
5 years ago
1.3.1
6 years ago
1.3.0
6 years ago
1.2.0
6 years ago
1.1.0
6 years ago
1.0.0
6 years ago