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 schemas-
hasDeclareKeyword
- (optional) mark the type declaration asdeclare
-
isExported
- (optional)export
the type declaration
-
-
lifted
- options for sub-schemas that have been lifted during compilation-
hasDeclareKeyword
- (optional) mark the type declaration asdeclare
-
isExported
- (optional)export
the type declaration
-
Returns an object { diagnostics, text }
where:
-
diagnostics
- is an array of diagnostics -
text
- is the resulting typescript definitions