@kubb/plugin-faker 5.0.3 → 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.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((p) => p.name === discriminatorPropertyName);
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
- return enumNode ? getEnumValues(enumNode)[0] : void 0;
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, {