@kubb/plugin-faker 5.0.2 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +11 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -977,9 +977,16 @@ function parseEnumValue(value) {
|
|
|
977
977
|
* Reads the discriminator literal off a variant, or `undefined` when it can't be determined.
|
|
978
978
|
*/
|
|
979
979
|
function getDiscriminatorValue(member, discriminatorPropertyName) {
|
|
980
|
-
const prop = ast.narrowSchema(member, "object")?.properties?.find((
|
|
980
|
+
const prop = ast.narrowSchema(member, "object")?.properties?.find((property) => property.name === discriminatorPropertyName);
|
|
981
981
|
const enumNode = prop ? ast.narrowSchema(prop.schema, "enum") : null;
|
|
982
|
-
|
|
982
|
+
if (enumNode) return getEnumValues(enumNode)[0];
|
|
983
|
+
const refNode = ast.narrowSchema(member, "ref");
|
|
984
|
+
if (refNode?.schema) return getDiscriminatorValue(refNode.schema, discriminatorPropertyName);
|
|
985
|
+
const intersectionNode = ast.narrowSchema(member, "intersection");
|
|
986
|
+
for (const intersectionMember of intersectionNode?.members ?? []) {
|
|
987
|
+
const value = getDiscriminatorValue(intersectionMember, discriminatorPropertyName);
|
|
988
|
+
if (value !== void 0) return value;
|
|
989
|
+
}
|
|
983
990
|
}
|
|
984
991
|
/**
|
|
985
992
|
* Type expression for an object property's value, indexed off the parent `typeName`.
|
|
@@ -1055,7 +1062,8 @@ const printerFaker = ast.createPrinter((options) => {
|
|
|
1055
1062
|
const typeName = `Extract<NonNullable<${baseTypeName}>, { ${JSON.stringify(discriminatorPropertyName)}: ${parseEnumValue(value)} }>`;
|
|
1056
1063
|
return printNested(member, {
|
|
1057
1064
|
typeName,
|
|
1058
|
-
nestedInObject: true
|
|
1065
|
+
nestedInObject: true,
|
|
1066
|
+
nestedInUnion: true
|
|
1059
1067
|
});
|
|
1060
1068
|
}
|
|
1061
1069
|
return printNested(member, {
|