Convert JSON Schema definitions into accurate (as possible) TypeScript definitions, specifying how the main schema types and lifted sub-schemas should be declared / exported.
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";
}
);
};
Produce a new Parser
instance.
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 all added schemas where:
topLevel
- options for root schemashasDeclareKeyword
- (optional) mark the type declaration asdeclare
isExported
- (optional)export
the type declaration
lifted
- options for sub-schemas that have been lifted during compilationhasDeclareKeyword
- (optional) mark the type declaration asdeclare
isExported
- (optional)export
the type declaration
sourceFile
- (optional) existing source file to add the types to
Returns an object { diagnostics, text }
where:
diagnostics
- is an array of diagnosticstext
- is the resulting typescript definitions