-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Description
Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch class-validator-jsonschema@3.1.1 for the project I'm working on.
I wanted class transformer discriminators in my documentation.
Here is the diff that solved my problem:
diff --git a/node_modules/class-validator-jsonschema/build/defaultConverters.js b/node_modules/class-validator-jsonschema/build/defaultConverters.js
index 09dc4b7..0569977 100644
--- a/node_modules/class-validator-jsonschema/build/defaultConverters.js
+++ b/node_modules/class-validator-jsonschema/build/defaultConverters.js
@@ -19,6 +19,36 @@ exports.defaultConverters = {
const childType = typeMeta
? typeMeta.typeFunction()
: getPropType(meta.target.prototype, meta.propertyName);
+
+ const { options: { discriminator } } = typeMeta;
+
+ if (discriminator)
+ {
+ const { subTypes } = discriminator;
+
+ const discriminatorType = {
+ oneOf: subTypes.map(({value, name}) => targetToSchema(value, options)),
+ discriminator: {
+ propertyName: discriminator.property,
+ mapping: subTypes.reduce((acc, {value, name}) => {
+ if (!value || !name)
+ return acc;
+
+ const ref = targetToSchema(value, options).$ref;
+
+ if (!ref)
+ return acc;
+
+ acc[name] = ref;
+
+ return acc;
+ }, {})
+ }
+ }
+
+ return discriminatorType;
+ }
+
return targetToSchema(childType, options);
}
},This issue body was partially generated by patch-package.
Metadata
Metadata
Assignees
Labels
No labels