Bug Report Checklist
Description
The typescript-fetch generator is generating a circular import. In my provided reproducible example, it's
models/index.ts -> models/HTTPValidationError.ts -> models/index.ts
The actual code is:
// models/HTTPValidationError.ts
import {
ValidationError,
ValidationErrorFromJSON,
ValidationErrorFromJSONTyped,
ValidationErrorToJSON,
} from './';
This produces some annoying warning messages but doesn't seem to actually break the code.
openapi-generator version
4.3.0
OpenAPI declaration file content or url
Click to expand
{
"openapi": "3.0.2",
"info": {
"title": "Some API",
"version": "0.1.0"
},
"paths": {
},
"components": {
"schemas": {
"HTTPValidationError": {
"title": "HTTPValidationError",
"type": "object",
"properties": {
"detail": {
"title": "Detail",
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
},
"ValidationError": {
"title": "ValidationError",
"required": ["loc", "msg", "type"],
"type": "object",
"properties": {
"loc": {
"title": "Location",
"type": "array",
"items": {
"type": "string"
}
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
}
}
}
}
}
Command line used for generation
openapi-generator generate -g typescript-fetch -i test-input.json -o api-client
Steps to reproduce
Run command line with provided input.
Related issues/PRs
Nope
Suggest a fix
I'm pretty sure this can be fixed by re-working the import statements in modelGeneric.mustache and modelOneOf.mustache. Instead of importing from ./, it should be possible to import directly from the thing you're importing. For example, in the code above, it could import from ./ValidationError instead of ./.
A diff might look like (forgive me, I'm not entirely familiar with mustache syntax):
diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
index bd593da1..263f80ac 100644
--- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
@@ -1,13 +1,13 @@
import { exists, mapValues } from '../runtime';
{{#hasImports}}
+{{#imports}}
import {
- {{#imports}}
{{{.}}},
{{.}}FromJSON,
{{.}}FromJSONTyped,
{{.}}ToJSON,
- {{/imports}}
-} from './';
+} from './{{.}}';
+{{/imports}}
{{/hasImports}}
{{#discriminator}}
Bug Report Checklist
Description
The typescript-fetch generator is generating a circular import. In my provided reproducible example, it's
models/index.ts -> models/HTTPValidationError.ts -> models/index.ts
The actual code is:
This produces some annoying warning messages but doesn't seem to actually break the code.
openapi-generator version
4.3.0
OpenAPI declaration file content or url
Click to expand
{ "openapi": "3.0.2", "info": { "title": "Some API", "version": "0.1.0" }, "paths": { }, "components": { "schemas": { "HTTPValidationError": { "title": "HTTPValidationError", "type": "object", "properties": { "detail": { "title": "Detail", "type": "array", "items": { "$ref": "#/components/schemas/ValidationError" } } } }, "ValidationError": { "title": "ValidationError", "required": ["loc", "msg", "type"], "type": "object", "properties": { "loc": { "title": "Location", "type": "array", "items": { "type": "string" } }, "msg": { "title": "Message", "type": "string" }, "type": { "title": "Error Type", "type": "string" } } } } } }Command line used for generation
openapi-generator generate -g typescript-fetch -i test-input.json -o api-clientSteps to reproduce
Run command line with provided input.
Related issues/PRs
Nope
Suggest a fix
I'm pretty sure this can be fixed by re-working the import statements in
modelGeneric.mustacheandmodelOneOf.mustache. Instead of importing from./, it should be possible to import directly from the thing you're importing. For example, in the code above, it could import from./ValidationErrorinstead of./.A diff might look like (forgive me, I'm not entirely familiar with mustache syntax):