Generators are classes that are used to render models for a given language.
- JavaScript,
- TypeScript,
- Java.
- Go.
- C#.
Each generator extends default options for the generator. It means that the generator can also have additional options.
Options are passed as the first argument to the generator's constructor. Check the example:
const generator = new TypeScriptGenerator({ ...options });Default options contain:
| Option | Type | Description | Default value |
|---|---|---|---|
indentation |
Object | Options for indentation. | - |
indentation.type |
String | Type of indentation. Its value can be either SPACES or TABS. |
SPACES |
indentation.size |
String | Size of indentation. | 2 |
defaultPreset |
Object | Default preset for generator. For more information, read customization document. | Implemented by generator |
presets |
Array | Array contains presets. For more information, read customization document. | [] |
Below is a list of additional options available for a given generator.
| Option | Type | Description | Default value |
|---|---|---|---|
renderTypes |
Boolean | Render signature for types. | true |
modelType |
String | It indicates which model type should be rendered for the object type. Its value can be either interface or class. |
class |
namingConvention |
Object | Options for naming conventions. | - |
namingConvention.type |
Function | A function that returns the format of the type. | Returns pascal cased name, and ensures that reserved keywords are never rendered_ |
namingConvention.property |
Function | A function that returns the format of the property. | Returns camel cased name, and ensures that names of properties does not clash against reserved keywords for TS, as well as JS to ensure painless transpilation |
| Option | Type | Description | Default value |
|---|---|---|---|
collectionType |
String | It indicates with which signature should be rendered the array type. Its value can be either List (List<{type}>) or Array ({type}[]). |
List |
namingConvention |
Object | Options for naming conventions. | - |
namingConvention.type |
Function | A function that returns the format of the type. | Returns pascal cased name, and ensures that reserved keywords are never rendered_ |
namingConvention.property |
Function | A function that returns the format of the property. | Returns camel cased name, and ensures that names of properties does not clash against reserved keywords |
| Option | Type | Description | Default value |
|---|---|---|---|
namingConvention |
Object | Options for naming conventions. | - |
namingConvention.type |
Function | A function that returns the format of the type. | Returns pascal cased name, and ensures that reserved keywords are never rendered |
namingConvention.property |
Function | A function that returns the format of the property. | Returns camel cased name, and ensures that names of properties does not clash against reserved keywords |
| Option | Type | Description | Default value |
|---|---|---|---|
namingConvention |
Object | Options for naming conventions. | - |
namingConvention.type |
Function | A function that returns the format of the type. | Returns pascal cased name |
namingConvention.field |
Function | A function that returns the format of the field. | Returns pascal cased name |
| Option | Type | Description | Default value |
|---|---|---|---|
namingConvention |
Object | Options for naming conventions. | - |
namingConvention.type |
Function | A function that returns the format of the type. | Returns pascal cased name, and ensures that reserved keywords are never rendered_ |
namingConvention.property |
Function | A function that returns the format of the property. | Returns camel cased name, and ensures that names of properties does not clash against reserved keywords |
The minimum set of required actions to create a new generator are:
- Source code must be included in generators folder.
- Must extend the abstract
AbstractGeneratorclass, - Must define
Preset's shape for the language, - Must define language options by passing an interface describing additional options to the first generic argument of
AbstractGenerator. The interface must also be extended byCommonGeneratorOptionsinterface, - Must define default options as static class's field, which must be extended by
defaultGeneratorOptions, - Default options must include
defaultPresetproperty, - Must implement
renderfunction, - Must define Renderers classes for available model types in a given language. Renderer is an instance of the class with common helper functions to render appropriate model type and must be extended by
AbstractRendererclass - example.
Check the generator implementation for TypeScript language to see how it should look like.
If you created a generator then you can contribute it to the AsyncAPI Model SDK and it will become the official supported generator.