-
Notifications
You must be signed in to change notification settings - Fork 483
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
Custom type
is not retained as type, but rewritten as allOf: - $ref: ...
breaking nullable: true
spec in @ApiProperty
#2948
Comments
Would you like to create a PR for this issue? |
Sure, but I don't know what the solution would be here - what should the value of |
One solution looks like:
I will test with redoc.ly to see if it's acceptable. If it is, then I think we can just add this |
The only think redoc.ly will accept is:
so it seems like an easy fix |
Here is the source of our woes: swagger/lib/services/schema-object-factory.ts Lines 368 to 379 in 5404905
Extra keys that are not in the set of The list of supported keys needs to be expanded, or removed altogether. I'm not sure which one as I haven't read the OpenAPI spec to any level of detail. |
Hello, i have the same issue as well. Setting a property other than "type, isArray, required" results in an allOf, causing my DTO schemas to lack the reference to another DTO. This causes problems with OpenAPI Generator because it generates the same models twice, except the file names are different. It would be greatly appreciated if there could be a fix for this so that we get a $ref instead of an allOf. Thank you very much |
This is indeed accepted, but breaks UIs as the Edit: My solution ended up being patching the package: diff --git a/dist/services/schema-object-factory.js b/dist/services/schema-object-factory.js
index b73f013c79218af537f720e71aeabf83a35f9775..5f1cdebf6c89a7373d6f4b98a8d8d67aac91b3e2 100644
--- a/dist/services/schema-object-factory.js
+++ b/dist/services/schema-object-factory.js
@@ -201,6 +201,9 @@ class SchemaObjectFactory {
const keysToRemove = ['type', 'isArray', 'required', 'name'];
const validMetadataObject = (0, lodash_1.omit)(metadata, keysToRemove);
const extraMetadataKeys = Object.keys(validMetadataObject);
+ if (metadata.nullable) {
+ return Object.assign(Object.assign({ name: metadata.name || key, required: metadata.required }, validMetadataObject), { $ref });
+ }
if (extraMetadataKeys.length > 0) {
return Object.assign(Object.assign({ name: metadata.name || key, required: metadata.required }, validMetadataObject), { allOf: [{ $ref }] });
}
|
Is there an existing issue for this?
Current behavior
Custom
type
is not retained as type, but rewritten asallOf: - $ref: ...
breakingnullable: true
spec in@ApiProperty
In
@ApiProperty
when using something like:the rendered openapi.yaml is like:
tools like Redoc.ly then start to throw errors:
Minimum reproduction code
https://nothing.com
Steps to reproduce
see above
Expected behavior
Package version
7.3.0
NestJS version
10.3.3
Node.js version
20
In which operating systems have you tested?
Other
maybe related: #2645
maybe related: #2646
The text was updated successfully, but these errors were encountered: