json2jsii
Generates jsii-compatible structs from JSON schemas
Usage
const g = new TypeGenerator({
definitions: {
Name: {
description: 'Represents a name of a person',
required: [ 'firstName', 'lastName' ],
properties: {
firstName: {
type: 'string',
description: 'The first name of the person',
},
lastName: {
type: 'string',
description: 'The last name of the person',
},
},
},
},
});
g.addType('Person', {
required: [ 'name' ],
properties: {
name: {
description: 'The person\'s name',
$ref: '#/definitions/Name',
},
color: {
description: 'Favorite color. Default is green',
enum: [ 'red', 'green', 'blue', 'yellow' ],
},
},
});
fs.writeFileSync('gen/ts/person.ts', await g.render());
Then, gen/ts/person.ts
will look like this;
export interface Person {
readonly name: Name;
readonly color?: any;
}
export interface Name {
readonly firstName: string;
readonly lastName: string;
}
Language bindings
Once you generate jsii-compatible TypeScript source (such as person.ts
above),
you can use jsii-srcmak in order to
produce source code in any of the jsii supported languages.
The following command will produce Python sources for the Person
types:
$ jsii-srcmak gen/ts \
--python-outdir gen/py --python-module-name person \
--java-outdir gen/java --java-package person
See the jsii-srcmak for library usage.
Contributions
All contributions are celebrated.
License
Distributed under the Apache 2.0 license.