2.0.1 • Published 2 years ago
json-schema-to-dts v2.0.1
json-schema-to-dts
Convert JSON Schema definitions into accurate (as possible) TypeScript definitions, specifying how the main schema types and lifted sub-schemas should be declared / exported.
Example
Given the schema
{
"type": "object",
"properties": {
"name": { "type": "string", "description": "The name of an object" },
"not_annotated": { "type": "null" },
"command": {
"oneOf": [{ "const": "a constant!" }, { "enum": ["multiple", { "options": "are allowed" }] }]
}
}
}And these options:
const options = {
topLevel: {
isExported: true,
},
};We get the following result:
type JSONPrimitive = boolean | null | number | string;
type JSONValue =
| JSONPrimitive
| JSONValue[]
| {
[key: string]: JSONValue;
};
export type Test = {
/** The name of an object */
name?: string;
not_annotated?: null;
command?:
| 'a constant!'
| (
| 'multiple'
| {
options: 'are allowed';
}
);
};API
new Parser()
Produce a new Parser instance.
.addSchema(uri, schema)
Add a schema to the parser where:
uri- is a string representing the schema's uri (ie:file:///path/to/schema.json)schema- is the json object representation of the schema
.compile(options)
Compile all added schemas where:
topLevel- options for root schemashasDeclareKeyword- (optional) mark the type declaration asdeclareisExported- (optional)exportthe type declaration
lifted- options for sub-schemas that have been lifted during compilationhasDeclareKeyword- (optional) mark the type declaration asdeclareisExported- (optional)exportthe type declaration
Returns an object { diagnostics, text } where:
diagnostics- is an array of diagnosticstext- is the resulting typescript definitions