-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[typescript] Fix uncompilable output when using allOf (#8000) #9275
Conversation
`toModelImportMap` only accounts for union types and not intersection types, so I've combined those cases into `splitComposedType`. For `splitComposedType` I combined `replace(" ","").split("\\|")` and `split("( [|&] )|[<>]")` into `replace(" ","").split("[|&<>]")`. I've added the `needToImport` check to `toModelImportMap`. This is the same check that happens in `addImport`.
Hey, just a gentle bump. If anyone has a few minutes to check this out I would greatly appreciate it. |
|
||
/* | ||
#8000 | ||
Test that primatives are not returned by toModelImportMap |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the comment is a bit too narrow - the actual test not only verifies that, but also checks that intersection/union type imports are properly handled in general. maybe reword this somehow?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your contribution! The fix looks good to me.
…client The `AbstractTypeScriptClientCodegen` is very similar to the `TypeScriptClientCodegen`. However, they have been kept separate and some fixes brought to the former are not present on the latter. This change makes `TypescriptClientCodegen` extend from `AbstractTypeScriptClientCodegen` to re-use most of the common logic. Similar methods and CLI options were removed from `TypescriptClientCodegen`. The `NPM_REPOSITORY` flag was kept in the typescript client, although it might be sensible to move it to the abstract client and make other typescript-based generators benefit from it. In particular, this change fixes the issue OpenAPITools#8000 for the `typescript` generator which was merged by OpenAPITools#9275.
Fixes #8000
Summary
When using
allOf
, oroneOf
with an inline schema, a Union/Intersection type is generated with the primitiveobject
. This results in an invalid import because the composed type of the schema is ignored.Approach
To fix this I used
needToImport
to removes the language primitives from being imported. This same check already happens inaddImport
, but not intoModelImportMap
.toModelImportMap
splits union types but not intersection types, so I've combined those cases intosplitComposedType
. ForsplitComposedType
I combinedreplace(" ","").split("\\|")
andsplit("( [|&] )|[<>]")
intoreplace(" ","").split("[|&<>]")
. These should be equivilant regex, and I think stripping the whitespace is good here.I added the warning in
toModelImport
strictly because there was already a warning for the union type and wanted to be consistent.Minimal Reproducible Example
PR checklist
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*
.For Windows users, please run the script in Git BASH.
master
,5.1.x
,6.0.x
@TiFu (2017/07) @taxpon (2017/07) @sebastianhaas (2017/07) @kenisteward (2017/07) @Vrolijkx (2017/09) @macjohnny (2018/01) @topce (2018/10) @akehir (2019/07) @petejohansonxo (2019/11) @amakhrov (2020/02)