- More cleanup

This commit is contained in:
Ferdi Koomen 2019-12-04 17:19:11 +01:00
parent 22c98ef426
commit 7235a12229
22 changed files with 288 additions and 174 deletions

View File

@ -1,6 +1,6 @@
{
"name": "openapi-typescript-codegen",
"version": "0.0.5",
"version": "0.0.6",
"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

@ -4,6 +4,6 @@ import { Service } from './Service';
export interface Client {
version: string;
server: string;
models: Map<string, Model>;
services: Map<string, Service>;
models: Model[];
services: Service[];
}

View File

@ -3,7 +3,7 @@ import { OpenApi } from '../interfaces/OpenApi';
import { getModel } from './getModel';
import { getType } from './getType';
export function getModels(openApi: OpenApi): Map<string, Model> {
export function getModels(openApi: OpenApi): Model[] {
const models = new Map<string, Model>();
for (const definitionName in openApi.definitions) {
if (openApi.definitions.hasOwnProperty(definitionName)) {
@ -13,5 +13,5 @@ export function getModels(openApi: OpenApi): Map<string, Model> {
models.set(definitionType.base, model);
}
}
return models;
return Array.from(models.values());
}

View File

@ -6,7 +6,7 @@ import { getOperation } from './getOperation';
/**
* Get the OpenAPI services
*/
export function getServices(openApi: OpenApi): Map<string, Service> {
export function getServices(openApi: OpenApi): Service[] {
const services = new Map<string, Service>();
for (const url in openApi.paths) {
if (openApi.paths.hasOwnProperty(url)) {
@ -45,5 +45,5 @@ export function getServices(openApi: OpenApi): Map<string, Service> {
}
}
}
return services;
return Array.from(services.values());
}

View File

@ -3,7 +3,7 @@ import { OpenApi } from '../interfaces/OpenApi';
import { getModel } from './getModel';
import { getType } from './getType';
export function getModels(openApi: OpenApi): Map<string, Model> {
export function getModels(openApi: OpenApi): Model[] {
const models = new Map<string, Model>();
if (openApi.components) {
for (const definitionName in openApi.components.schemas) {
@ -15,5 +15,5 @@ export function getModels(openApi: OpenApi): Map<string, Model> {
}
}
}
return models;
return Array.from(models.values());
}

View File

@ -6,7 +6,7 @@ import { getOperation } from './getOperation';
/**
* Get the OpenAPI services
*/
export function getServices(openApi: OpenApi): Map<string, Service> {
export function getServices(openApi: OpenApi): Service[] {
const services = new Map<string, Service>();
for (const url in openApi.paths) {
if (openApi.paths.hasOwnProperty(url)) {
@ -45,5 +45,5 @@ export function getServices(openApi: OpenApi): Map<string, Service> {
}
}
}
return services;
return Array.from(services.values());
}

View File

@ -0,0 +1,13 @@
import { Language } from '../index';
import { Model } from '../client/interfaces/Model';
export function getFilteredModels(models: Model[], language: Language): Model[] {
return models.filter(model => {
if (language === Language.JAVASCRIPT) {
const hasEnum = model.enum.length > 0;
const hasEnums = model.enums.length > 0;
return hasEnum || hasEnums;
}
return true;
});
}

View File

@ -0,0 +1,11 @@
import { Language } from '../index';
import { Service } from '../client/interfaces/Service';
export function getFilteredServices(services: Service[], language: Language): Service[] {
return services.filter(service => {
if (language === Language.JAVASCRIPT) {
return service.operations.length > 0;
}
return service.operations.length;
});
}

View File

@ -1,13 +0,0 @@
import * as glob from 'glob';
import * as path from 'path';
export function getImports(folder: string): string[] {
const files = glob.sync('**/*.{ts,js}', { cwd: folder });
return files
.map(file => path.basename(file))
.sort((a, b) => {
const nameA = a.toLowerCase();
const nameB = b.toLowerCase();
return nameA.localeCompare(nameB, 'en');
});
}

View File

@ -0,0 +1,65 @@
import { Model } from '../client/interfaces/Model';
import { getModelNames } from './getModelNames';
describe('getModelNames', () => {
it('should return sorted list', () => {
const models: Model[] = [];
models.push({
export: 'interface',
name: 'John',
type: 'John',
base: 'John',
template: null,
link: null,
description: null,
isProperty: false,
isReadOnly: false,
isRequired: false,
isNullable: false,
imports: [],
extends: [],
enum: [],
enums: [],
properties: [],
});
models.push({
export: 'interface',
name: 'Jane',
type: 'Jane',
base: 'Jane',
template: null,
link: null,
description: null,
isProperty: false,
isReadOnly: false,
isRequired: false,
isNullable: false,
imports: [],
extends: [],
enum: [],
enums: [],
properties: [],
});
models.push({
export: 'interface',
name: 'Doe',
type: 'Doe',
base: 'Doe',
template: null,
link: null,
description: null,
isProperty: false,
isReadOnly: false,
isRequired: false,
isNullable: false,
imports: [],
extends: [],
enum: [],
enums: [],
properties: [],
});
expect(getModelNames([])).toEqual([]);
expect(getModelNames(models)).toEqual(['Doe', 'Jane', 'John']);
});
});

View File

@ -0,0 +1,13 @@
import { Language } from '../index';
import { Model } from '../client/interfaces/Model';
export function getModelNames(models: Model[], language: Language): string[] {
return models
.map(model => model.name)
.concat(language === Language.TYPESCRIPT ? ['Dictionary'] : [])
.sort((a, b) => {
const nameA = a.toLowerCase();
const nameB = b.toLowerCase();
return nameA.localeCompare(nameB, 'en');
});
}

View File

@ -0,0 +1,26 @@
import { Service } from '../client/interfaces/Service';
import { getServiceNames } from './getServiceNames';
describe('getServiceNames', () => {
it('should return sorted list', () => {
const services: Service[] = [];
services.push({
name: 'John',
operations: [],
imports: [],
});
services.push({
name: 'Jane',
operations: [],
imports: [],
});
services.push({
name: 'Doe',
operations: [],
imports: [],
});
expect(getServiceNames([])).toEqual([]);
expect(getServiceNames(services)).toEqual(['Doe', 'Jane', 'John']);
});
});

View File

@ -0,0 +1,11 @@
import { Service } from '../client/interfaces/Service';
export function getServiceNames(services: Service[]): string[] {
return services
.map(service => service.name)
.sort((a, b) => {
const nameA = a.toLowerCase();
const nameB = b.toLowerCase();
return nameA.localeCompare(nameB, 'en');
});
}

View File

@ -1,12 +0,0 @@
import { Language } from '../index';
import { Model } from '../client/interfaces/Model';
export function shouldExportModel(model: Model, language: Language): boolean {
if (language === Language.JAVASCRIPT) {
const hasEnum = model.enum.length > 0;
const hasEnums = model.enums.length > 0;
return hasEnum || hasEnums;
}
return true;
}

View File

@ -6,6 +6,8 @@ import * as rimraf from 'rimraf';
import { Client } from '../client/interfaces/Client';
import { HttpClient, Language } from '../index';
import { Templates } from './readHandlebarsTemplates';
import { getFilteredModels } from './getFilteredModels';
import { getFilteredServices } from './getFilteredServices';
import { writeClientIndex } from './writeClientIndex';
import { writeClientModels } from './writeClientModels';
import { writeClientServices } from './writeClientServices';
@ -51,12 +53,16 @@ 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);
// Write the client files
try {
writeClientSettings(client, language, httpClient, templates, outputPathCore);
writeClientModels(client.models, language, templates, outputPathModels);
writeClientServices(client.services, language, templates, outputPathServices);
writeClientIndex(client, language, templates, outputPathModels, outputPathServices, outputPath);
writeClientIndex(client, language, templates, outputPath);
} catch (e) {
throw e;
}

View File

@ -2,8 +2,6 @@ import * as fs from 'fs';
import * as glob from 'glob';
import { Client } from '../client/interfaces/Client';
import { Language } from '../index';
import { Model } from '../client/interfaces/Model';
import { Service } from '../client/interfaces/Service';
import { Templates } from './readHandlebarsTemplates';
import { writeClientIndex } from './writeClientIndex';
@ -18,8 +16,8 @@ describe('writeClientIndex', () => {
const client: Client = {
server: 'http://localhost:8080',
version: '1.0',
models: new Map<string, Model>(),
services: new Map<string, Service>(),
models: [],
services: [],
};
const templates: Templates = {
@ -31,7 +29,7 @@ describe('writeClientIndex', () => {
globSync.mockReturnValue([]);
writeClientIndex(client, Language.TYPESCRIPT, templates, '/', '/', '/');
writeClientIndex(client, Language.TYPESCRIPT, templates, '/');
expect(fsWriteFileSync).toBeCalledWith('/index.ts', 'dummy');
});

View File

@ -4,7 +4,8 @@ import { Client } from '../client/interfaces/Client';
import { Language } from '../index';
import { Templates } from './readHandlebarsTemplates';
import { getFileName } from './getFileName';
import { getImports } from './getImports';
import { getModelNames } from './getModelNames';
import { getServiceNames } from './getServiceNames';
/**
* Generate the OpenAPI client index file using the Handlebar template and write it to disk.
@ -13,11 +14,9 @@ import { getImports } from './getImports';
* @param client Client object, containing, models, schemas and services.
* @param language The output language (Typescript or javascript).
* @param templates The loaded handlebar templates.
* @param outputPathModels
* @param outputPathServices
* @param outputPath
*/
export function writeClientIndex(client: Client, language: Language, templates: Templates, outputPathModels: string, outputPathServices: string, outputPath: string): void {
export function writeClientIndex(client: Client, language: Language, templates: Templates, outputPath: string): void {
const fileName = getFileName('index', language);
try {
fs.writeFileSync(
@ -25,8 +24,8 @@ export function writeClientIndex(client: Client, language: Language, templates:
templates.index({
server: client.server,
version: client.version,
models: getImports(outputPathModels),
services: getImports(outputPathServices),
models: getModelNames(client.models, language),
services: getServiceNames(client.services),
})
);
} catch (e) {

View File

@ -10,8 +10,8 @@ const fsWriteFileSync = fs.writeFileSync as jest.MockedFunction<typeof fs.writeF
describe('writeClientModels', () => {
it('should write to filesystem', () => {
const models = new Map<string, Model>();
models.set('Item', {
const models: Model[] = [];
models.push({
export: 'interface',
name: 'Item',
type: 'Item',

View File

@ -6,7 +6,6 @@ import { Templates } from './readHandlebarsTemplates';
import { exportModel } from './exportModel';
import { format } from './format';
import { getFileName } from './getFileName';
import { shouldExportModel } from './shouldExportModel';
/**
* Generate Models using the Handlebar template and write to disk.
@ -15,17 +14,15 @@ import { shouldExportModel } from './shouldExportModel';
* @param templates The loaded handlebar templates.
* @param outputPath
*/
export function writeClientModels(models: Map<string, Model>, language: Language, templates: Templates, outputPath: string): void {
export function writeClientModels(models: Model[], language: Language, templates: Templates, outputPath: string): void {
models.forEach(model => {
if (shouldExportModel(model, language)) {
const fileName = getFileName(model.name, language);
try {
const templateData = exportModel(model);
const templateResult = templates.model(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
} catch (e) {
throw new Error(`Could not write model: "${fileName}"`);
}
const fileName = getFileName(model.name, language);
try {
const templateData = exportModel(model);
const templateResult = templates.model(templateData);
fs.writeFileSync(path.resolve(outputPath, fileName), format(templateResult));
} catch (e) {
throw new Error(`Could not write model: "${fileName}"`);
}
});
}

View File

@ -10,8 +10,8 @@ const fsWriteFileSync = fs.writeFileSync as jest.MockedFunction<typeof fs.writeF
describe('writeClientServices', () => {
it('should write to filesystem', () => {
const services = new Map<string, Service>();
services.set('Item', {
const services: Service[] = [];
services.push({
name: 'Item',
operations: [],
imports: [],

View File

@ -14,7 +14,7 @@ import { getFileName } from './getFileName';
* @param templates The loaded handlebar templates.
* @param outputPath
*/
export function writeClientServices(services: Map<string, Service>, language: Language, templates: Templates, outputPath: string): void {
export function writeClientServices(services: Service[], language: Language, templates: Templates, outputPath: string): void {
services.forEach(service => {
const fileName = getFileName(service.name, language);
try {

View File

@ -360,18 +360,18 @@ export { ApiError } from './core/ApiError';
export { isSuccess } from './core/isSuccess';
export { OpenAPI } from './core/OpenAPI';
export { EnumFromDescription.js } from './models/EnumFromDescription.js';
export { EnumWithNumbers.js } from './models/EnumWithNumbers.js';
export { EnumWithStrings.js } from './models/EnumWithStrings.js';
export { ModelWithEnum.js } from './models/ModelWithEnum.js';
export { ModelWithEnumFromDescription.js } from './models/ModelWithEnumFromDescription.js';
export { EnumFromDescription } from './models/EnumFromDescription';
export { EnumWithNumbers } from './models/EnumWithNumbers';
export { EnumWithStrings } from './models/EnumWithStrings';
export { ModelWithEnum } from './models/ModelWithEnum';
export { ModelWithEnumFromDescription } from './models/ModelWithEnumFromDescription';
export { ComplexService.js } from './services/ComplexService.js';
export { DefaultsService.js } from './services/DefaultsService.js';
export { ParametersService.js } from './services/ParametersService.js';
export { ResponseService.js } from './services/ResponseService.js';
export { SimpleService.js } from './services/SimpleService.js';
export { TypesService.js } from './services/TypesService.js';
export { ComplexService } from './services/ComplexService';
export { DefaultsService } from './services/DefaultsService';
export { ParametersService } from './services/ParametersService';
export { ResponseService } from './services/ResponseService';
export { SimpleService } from './services/SimpleService';
export { TypesService } from './services/TypesService';
"
`;
@ -1289,51 +1289,51 @@ export { ApiError } from './core/ApiError';
export { isSuccess } from './core/isSuccess';
export { OpenAPI } from './core/OpenAPI';
export { ArrayWithArray.ts } from './models/ArrayWithArray.ts';
export { ArrayWithBooleans.ts } from './models/ArrayWithBooleans.ts';
export { ArrayWithNumbers.ts } from './models/ArrayWithNumbers.ts';
export { ArrayWithProperties.ts } from './models/ArrayWithProperties.ts';
export { ArrayWithReferences.ts } from './models/ArrayWithReferences.ts';
export { ArrayWithStrings.ts } from './models/ArrayWithStrings.ts';
export { Dictionary.ts } from './models/Dictionary.ts';
export { DictionaryWithArray.ts } from './models/DictionaryWithArray.ts';
export { DictionaryWithDictionary.ts } from './models/DictionaryWithDictionary.ts';
export { DictionaryWithProperties.ts } from './models/DictionaryWithProperties.ts';
export { DictionaryWithReference.ts } from './models/DictionaryWithReference.ts';
export { DictionaryWithString.ts } from './models/DictionaryWithString.ts';
export { EnumFromDescription.ts } from './models/EnumFromDescription.ts';
export { EnumWithNumbers.ts } from './models/EnumWithNumbers.ts';
export { EnumWithStrings.ts } from './models/EnumWithStrings.ts';
export { ModelLink.ts } from './models/ModelLink.ts';
export { ModelThatExtends.ts } from './models/ModelThatExtends.ts';
export { ModelThatExtendsExtends.ts } from './models/ModelThatExtendsExtends.ts';
export { ModelWithArray.ts } from './models/ModelWithArray.ts';
export { ModelWithBoolean.ts } from './models/ModelWithBoolean.ts';
export { ModelWithCircularReference.ts } from './models/ModelWithCircularReference.ts';
export { ModelWithDictionary.ts } from './models/ModelWithDictionary.ts';
export { ModelWithDuplicateImports.ts } from './models/ModelWithDuplicateImports.ts';
export { ModelWithDuplicateProperties.ts } from './models/ModelWithDuplicateProperties.ts';
export { ModelWithEnum.ts } from './models/ModelWithEnum.ts';
export { ModelWithEnumFromDescription.ts } from './models/ModelWithEnumFromDescription.ts';
export { ModelWithInteger.ts } from './models/ModelWithInteger.ts';
export { ModelWithLink.ts } from './models/ModelWithLink.ts';
export { ModelWithNestedEnums.ts } from './models/ModelWithNestedEnums.ts';
export { ModelWithNestedProperties.ts } from './models/ModelWithNestedProperties.ts';
export { ModelWithProperties.ts } from './models/ModelWithProperties.ts';
export { ModelWithReference.ts } from './models/ModelWithReference.ts';
export { ModelWithString.ts } from './models/ModelWithString.ts';
export { SimpleBoolean.ts } from './models/SimpleBoolean.ts';
export { SimpleFile.ts } from './models/SimpleFile.ts';
export { SimpleInteger.ts } from './models/SimpleInteger.ts';
export { SimpleReference.ts } from './models/SimpleReference.ts';
export { SimpleString.ts } from './models/SimpleString.ts';
export { ArrayWithArray } from './models/ArrayWithArray';
export { ArrayWithBooleans } from './models/ArrayWithBooleans';
export { ArrayWithNumbers } from './models/ArrayWithNumbers';
export { ArrayWithProperties } from './models/ArrayWithProperties';
export { ArrayWithReferences } from './models/ArrayWithReferences';
export { ArrayWithStrings } from './models/ArrayWithStrings';
export { Dictionary } from './models/Dictionary';
export { DictionaryWithArray } from './models/DictionaryWithArray';
export { DictionaryWithDictionary } from './models/DictionaryWithDictionary';
export { DictionaryWithProperties } from './models/DictionaryWithProperties';
export { DictionaryWithReference } from './models/DictionaryWithReference';
export { DictionaryWithString } from './models/DictionaryWithString';
export { EnumFromDescription } from './models/EnumFromDescription';
export { EnumWithNumbers } from './models/EnumWithNumbers';
export { EnumWithStrings } from './models/EnumWithStrings';
export { ModelLink } from './models/ModelLink';
export { ModelThatExtends } from './models/ModelThatExtends';
export { ModelThatExtendsExtends } from './models/ModelThatExtendsExtends';
export { ModelWithArray } from './models/ModelWithArray';
export { ModelWithBoolean } from './models/ModelWithBoolean';
export { ModelWithCircularReference } from './models/ModelWithCircularReference';
export { ModelWithDictionary } from './models/ModelWithDictionary';
export { ModelWithDuplicateImports } from './models/ModelWithDuplicateImports';
export { ModelWithDuplicateProperties } from './models/ModelWithDuplicateProperties';
export { ModelWithEnum } from './models/ModelWithEnum';
export { ModelWithEnumFromDescription } from './models/ModelWithEnumFromDescription';
export { ModelWithInteger } from './models/ModelWithInteger';
export { ModelWithLink } from './models/ModelWithLink';
export { ModelWithNestedEnums } from './models/ModelWithNestedEnums';
export { ModelWithNestedProperties } from './models/ModelWithNestedProperties';
export { ModelWithProperties } from './models/ModelWithProperties';
export { ModelWithReference } from './models/ModelWithReference';
export { ModelWithString } from './models/ModelWithString';
export { SimpleBoolean } from './models/SimpleBoolean';
export { SimpleFile } from './models/SimpleFile';
export { SimpleInteger } from './models/SimpleInteger';
export { SimpleReference } from './models/SimpleReference';
export { SimpleString } from './models/SimpleString';
export { ComplexService.ts } from './services/ComplexService.ts';
export { DefaultsService.ts } from './services/DefaultsService.ts';
export { ParametersService.ts } from './services/ParametersService.ts';
export { ResponseService.ts } from './services/ResponseService.ts';
export { SimpleService.ts } from './services/SimpleService.ts';
export { TypesService.ts } from './services/TypesService.ts';
export { ComplexService } from './services/ComplexService';
export { DefaultsService } from './services/DefaultsService';
export { ParametersService } from './services/ParametersService';
export { ResponseService } from './services/ResponseService';
export { SimpleService } from './services/SimpleService';
export { TypesService } from './services/TypesService';
"
`;
@ -2786,18 +2786,18 @@ export { ApiError } from './core/ApiError';
export { isSuccess } from './core/isSuccess';
export { OpenAPI } from './core/OpenAPI';
export { EnumFromDescription.js } from './models/EnumFromDescription.js';
export { EnumWithNumbers.js } from './models/EnumWithNumbers.js';
export { EnumWithStrings.js } from './models/EnumWithStrings.js';
export { ModelWithEnum.js } from './models/ModelWithEnum.js';
export { ModelWithEnumFromDescription.js } from './models/ModelWithEnumFromDescription.js';
export { EnumFromDescription } from './models/EnumFromDescription';
export { EnumWithNumbers } from './models/EnumWithNumbers';
export { EnumWithStrings } from './models/EnumWithStrings';
export { ModelWithEnum } from './models/ModelWithEnum';
export { ModelWithEnumFromDescription } from './models/ModelWithEnumFromDescription';
export { ComplexService.js } from './services/ComplexService.js';
export { DefaultsService.js } from './services/DefaultsService.js';
export { ParametersService.js } from './services/ParametersService.js';
export { ResponseService.js } from './services/ResponseService.js';
export { SimpleService.js } from './services/SimpleService.js';
export { TypesService.js } from './services/TypesService.js';
export { ComplexService } from './services/ComplexService';
export { DefaultsService } from './services/DefaultsService';
export { ParametersService } from './services/ParametersService';
export { ResponseService } from './services/ResponseService';
export { SimpleService } from './services/SimpleService';
export { TypesService } from './services/TypesService';
"
`;
@ -3723,51 +3723,51 @@ export { ApiError } from './core/ApiError';
export { isSuccess } from './core/isSuccess';
export { OpenAPI } from './core/OpenAPI';
export { ArrayWithArray.ts } from './models/ArrayWithArray.ts';
export { ArrayWithBooleans.ts } from './models/ArrayWithBooleans.ts';
export { ArrayWithNumbers.ts } from './models/ArrayWithNumbers.ts';
export { ArrayWithProperties.ts } from './models/ArrayWithProperties.ts';
export { ArrayWithReferences.ts } from './models/ArrayWithReferences.ts';
export { ArrayWithStrings.ts } from './models/ArrayWithStrings.ts';
export { Dictionary.ts } from './models/Dictionary.ts';
export { DictionaryWithArray.ts } from './models/DictionaryWithArray.ts';
export { DictionaryWithDictionary.ts } from './models/DictionaryWithDictionary.ts';
export { DictionaryWithProperties.ts } from './models/DictionaryWithProperties.ts';
export { DictionaryWithReference.ts } from './models/DictionaryWithReference.ts';
export { DictionaryWithString.ts } from './models/DictionaryWithString.ts';
export { EnumFromDescription.ts } from './models/EnumFromDescription.ts';
export { EnumWithNumbers.ts } from './models/EnumWithNumbers.ts';
export { EnumWithStrings.ts } from './models/EnumWithStrings.ts';
export { ModelLink.ts } from './models/ModelLink.ts';
export { ModelThatExtends.ts } from './models/ModelThatExtends.ts';
export { ModelThatExtendsExtends.ts } from './models/ModelThatExtendsExtends.ts';
export { ModelWithArray.ts } from './models/ModelWithArray.ts';
export { ModelWithBoolean.ts } from './models/ModelWithBoolean.ts';
export { ModelWithCircularReference.ts } from './models/ModelWithCircularReference.ts';
export { ModelWithDictionary.ts } from './models/ModelWithDictionary.ts';
export { ModelWithDuplicateImports.ts } from './models/ModelWithDuplicateImports.ts';
export { ModelWithDuplicateProperties.ts } from './models/ModelWithDuplicateProperties.ts';
export { ModelWithEnum.ts } from './models/ModelWithEnum.ts';
export { ModelWithEnumFromDescription.ts } from './models/ModelWithEnumFromDescription.ts';
export { ModelWithInteger.ts } from './models/ModelWithInteger.ts';
export { ModelWithLink.ts } from './models/ModelWithLink.ts';
export { ModelWithNestedEnums.ts } from './models/ModelWithNestedEnums.ts';
export { ModelWithNestedProperties.ts } from './models/ModelWithNestedProperties.ts';
export { ModelWithProperties.ts } from './models/ModelWithProperties.ts';
export { ModelWithReference.ts } from './models/ModelWithReference.ts';
export { ModelWithString.ts } from './models/ModelWithString.ts';
export { SimpleBoolean.ts } from './models/SimpleBoolean.ts';
export { SimpleFile.ts } from './models/SimpleFile.ts';
export { SimpleInteger.ts } from './models/SimpleInteger.ts';
export { SimpleReference.ts } from './models/SimpleReference.ts';
export { SimpleString.ts } from './models/SimpleString.ts';
export { ArrayWithArray } from './models/ArrayWithArray';
export { ArrayWithBooleans } from './models/ArrayWithBooleans';
export { ArrayWithNumbers } from './models/ArrayWithNumbers';
export { ArrayWithProperties } from './models/ArrayWithProperties';
export { ArrayWithReferences } from './models/ArrayWithReferences';
export { ArrayWithStrings } from './models/ArrayWithStrings';
export { Dictionary } from './models/Dictionary';
export { DictionaryWithArray } from './models/DictionaryWithArray';
export { DictionaryWithDictionary } from './models/DictionaryWithDictionary';
export { DictionaryWithProperties } from './models/DictionaryWithProperties';
export { DictionaryWithReference } from './models/DictionaryWithReference';
export { DictionaryWithString } from './models/DictionaryWithString';
export { EnumFromDescription } from './models/EnumFromDescription';
export { EnumWithNumbers } from './models/EnumWithNumbers';
export { EnumWithStrings } from './models/EnumWithStrings';
export { ModelLink } from './models/ModelLink';
export { ModelThatExtends } from './models/ModelThatExtends';
export { ModelThatExtendsExtends } from './models/ModelThatExtendsExtends';
export { ModelWithArray } from './models/ModelWithArray';
export { ModelWithBoolean } from './models/ModelWithBoolean';
export { ModelWithCircularReference } from './models/ModelWithCircularReference';
export { ModelWithDictionary } from './models/ModelWithDictionary';
export { ModelWithDuplicateImports } from './models/ModelWithDuplicateImports';
export { ModelWithDuplicateProperties } from './models/ModelWithDuplicateProperties';
export { ModelWithEnum } from './models/ModelWithEnum';
export { ModelWithEnumFromDescription } from './models/ModelWithEnumFromDescription';
export { ModelWithInteger } from './models/ModelWithInteger';
export { ModelWithLink } from './models/ModelWithLink';
export { ModelWithNestedEnums } from './models/ModelWithNestedEnums';
export { ModelWithNestedProperties } from './models/ModelWithNestedProperties';
export { ModelWithProperties } from './models/ModelWithProperties';
export { ModelWithReference } from './models/ModelWithReference';
export { ModelWithString } from './models/ModelWithString';
export { SimpleBoolean } from './models/SimpleBoolean';
export { SimpleFile } from './models/SimpleFile';
export { SimpleInteger } from './models/SimpleInteger';
export { SimpleReference } from './models/SimpleReference';
export { SimpleString } from './models/SimpleString';
export { ComplexService.ts } from './services/ComplexService.ts';
export { DefaultsService.ts } from './services/DefaultsService.ts';
export { ParametersService.ts } from './services/ParametersService.ts';
export { ResponseService.ts } from './services/ResponseService.ts';
export { SimpleService.ts } from './services/SimpleService.ts';
export { TypesService.ts } from './services/TypesService.ts';
export { ComplexService } from './services/ComplexService';
export { DefaultsService } from './services/DefaultsService';
export { ParametersService } from './services/ParametersService';
export { ResponseService } from './services/ResponseService';
export { SimpleService } from './services/SimpleService';
export { TypesService } from './services/TypesService';
"
`;