- Added schema generation

This commit is contained in:
Ferdi Koomen 2019-12-11 10:48:09 +01:00
parent f8b02b3314
commit 86a56f149f
13 changed files with 153 additions and 10 deletions

View File

@ -1,6 +1,6 @@
{
"name": "openapi-typescript-codegen",
"version": "0.1.0",
"version": "0.1.1",
"description": "NodeJS library that generates Typescript or Javascript clients based on the OpenAPI specification.",
"author": "Ferdi Koomen",
"homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen",

View File

@ -9,7 +9,9 @@ import { {{{this}}} } from '../models/{{{this}}}';
{{/if}}
{{#equals export 'interface'}}
{{>exportEnums}}
{{>exportInterface}}
{{else equals export 'enum'}}
{{>exportEnum}}
{{else}}
{{>exportGeneric}}
{{/equals}}

View File

@ -6,8 +6,12 @@
export let {{{name}}};
(function ({{{name}}}) {
{{#if enum}}
{{#each enum}}
{{{../name}}}.{{{name}}} = {{{value}}};
{{/each}}
{{/if}}
{{{name}}}.schema = {{>schema}};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -0,0 +1,11 @@
{{#if description}}
/**
* {{{description}}}
*/
{{/if}}
export let {{{name}}};
(function ({{{name}}}) {
{{{name}}}.schema = {{>schema}};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -6,6 +6,7 @@
export let {{{name}}};
(function ({{{name}}}) {
{{#if enums}}
{{#each enums}}
{{#if description}}
/**
@ -19,4 +20,7 @@ export let {{{name}}};
};
{{/each}}
{{/if}}
{{{name}}}.schema = {{>schema}};
})({{{name}}} || ({{{name}}} = {}));

View File

@ -0,0 +1,11 @@
{{#equals export 'interface'}}
{{>schemaInterface}}
{{else equals export 'enum'}}
{{>schemaEnum}}
{{else equals export 'array'}}
{{>schemaArray}}
{{else equals export 'dictionary'}}
{{>schemaDictionary}}
{{else}}
{{>schemaGeneric}}
{{/equals}}

View File

@ -0,0 +1,17 @@
{
type: 'Array',
{{#if link~}}
item: {{>schema link}},
{{else}}
item: '{{{base}}}',
{{/if}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}
{{#if isRequired~}}
isRequired: {{{isRequired}}},
{{/if}}
{{#if isNullable~}}
isNullable: {{{isNullable}}},
{{/if}}
}

View File

@ -0,0 +1,17 @@
{
type: 'Dictionary',
{{#if link~}}
item: {{>schema link}},
{{else}}
item: '{{{base}}}',
{{/if}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}
{{#if isRequired~}}
isRequired: {{{isRequired}}},
{{/if}}
{{#if isNullable~}}
isNullable: {{{isNullable}}},
{{/if}}
}

View File

@ -0,0 +1,12 @@
{
type: 'Enum',
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}
{{#if isRequired~}}
isRequired: {{{isRequired}}},
{{/if}}
{{#if isNullable~}}
isNullable: {{{isNullable}}},
{{/if}}
}

View File

@ -0,0 +1,56 @@
{
{{#if type~}}
type: '{{{base}}}',
{{/if}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}
{{#if isRequired~}}
isRequired: {{{isRequired}}},
{{/if}}
{{#if isNullable~}}
isNullable: {{{isNullable}}},
{{/if}}
{{#if format~}}
format: '{{{format}}}',
{{/if}}
{{#if maximum~}}
maximum: {{{maximum}}},
{{/if}}
{{#if exclusiveMaximum~}}
exclusiveMaximum: {{{exclusiveMaximum}}},
{{/if}}
{{#if minimum~}}
minimum: {{{minimum}}},
{{/if}}
{{#if exclusiveMinimum~}}
exclusiveMinimum: {{{exclusiveMinimum}}},
{{/if}}
{{#if multipleOf~}}
multipleOf: {{{multipleOf}}},
{{/if}}
{{#if maxLength~}}
maxLength: {{{maxLength}}},
{{/if}}
{{#if minLength~}}
minLength: {{{minLength}}},
{{/if}}
{{#if pattern~}}
pattern: '{{{pattern}}}',
{{/if}}
{{#if maxItems~}}
maxItems: {{{maxItems}}},
{{/if}}
{{#if minItems~}}
minItems: {{{minItems}}},
{{/if}}
{{#if uniqueItems~}}
uniqueItems: {{{uniqueItems}}},
{{/if}}
{{#if maxProperties~}}
maxProperties: {{{maxProperties}}},
{{/if}}
{{#if minProperties~}}
minProperties: {{{minProperties}}},
{{/if}}
}

View File

@ -0,0 +1,14 @@
{
{{#each properties}}
{{{name}}}: {{>schema}},
{{/each}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}
{{#if isRequired~}}
isRequired: {{{isRequired}}},
{{/if}}
{{#if isNullable~}}
isNullable: {{{isNullable}}},
{{/if}}
}

View File

@ -1,10 +1,5 @@
{
type: 'enum',
enums: [
{{#each enum}}
{{{value}}},
{{/each}}
],
type: 'Enum',
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}

View File

@ -54,8 +54,8 @@ export function writeClient(client: Client, language: Language, httpClient: Http
});
// Filter unused models and services.
client.models = getFilteredModels(client.models, language);
client.services = getFilteredServices(client.services, language);
// client.models = getFilteredModels(client.models, language);
// client.services = getFilteredServices(client.services, language);
// Write the client files
try {