@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 CHANGED
@@ -981,9 +981,16 @@ function parseEnumValue(value) {
981
981
  * Reads the discriminator literal off a variant, or `undefined` when it can't be determined.
982
982
  */
983
983
  function getDiscriminatorValue(member, discriminatorPropertyName) {
984
- const prop = kubb_kit.ast.narrowSchema(member, "object")?.properties?.find((p) => p.name === discriminatorPropertyName);
984
+ const prop = kubb_kit.ast.narrowSchema(member, "object")?.properties?.find((property) => property.name === discriminatorPropertyName);
985
985
  const enumNode = prop ? kubb_kit.ast.narrowSchema(prop.schema, "enum") : null;
986
- return enumNode ? getEnumValues(enumNode)[0] : void 0;
986
+ if (enumNode) return getEnumValues(enumNode)[0];
987
+ const refNode = kubb_kit.ast.narrowSchema(member, "ref");
988
+ if (refNode?.schema) return getDiscriminatorValue(refNode.schema, discriminatorPropertyName);
989
+ const intersectionNode = kubb_kit.ast.narrowSchema(member, "intersection");
990
+ for (const intersectionMember of intersectionNode?.members ?? []) {
991
+ const value = getDiscriminatorValue(intersectionMember, discriminatorPropertyName);
992
+ if (value !== void 0) return value;
993
+ }
987
994
  }
988
995
  /**
989
996
  * Type expression for an object property's value, indexed off the parent `typeName`.
@@ -1059,7 +1066,8 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1059
1066
  const typeName = `Extract<NonNullable<${baseTypeName}>, { ${JSON.stringify(discriminatorPropertyName)}: ${parseEnumValue(value)} }>`;
1060
1067
  return printNested(member, {
1061
1068
  typeName,
1062
- nestedInObject: true
1069
+ nestedInObject: true,
1070
+ nestedInUnion: true
1063
1071
  });
1064
1072
  }
1065
1073
  return printNested(member, {