@kubb/plugin-faker 5.0.5 → 5.0.7

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
@@ -467,10 +467,14 @@ function buildResponseUnionSchema(node, resolver) {
467
467
  }
468
468
  return kubb_kit.ast.factory.createSchema({
469
469
  type: "union",
470
- members: responses.map((response) => kubb_kit.ast.factory.createSchema({
471
- type: "ref",
472
- name: resolver.response.status(node, response.statusCode)
473
- }))
470
+ members: responses.map((response) => {
471
+ const schema = (response.content?.length ?? 0) === 1 ? response.content?.[0]?.schema : void 0;
472
+ return kubb_kit.ast.factory.createSchema({
473
+ type: "ref",
474
+ name: resolver.response.status(node, response.statusCode),
475
+ schema
476
+ });
477
+ })
474
478
  });
475
479
  }
476
480
  const SCALAR_TYPES$1 = /* @__PURE__ */ new Set([
@@ -532,11 +536,8 @@ function getScalarType(node, typeName) {
532
536
  * Determines the data type, return type, and whether it uses the type name.
533
537
  */
534
538
  function resolveFakerTypeUsage(node, typeName, canOverride) {
535
- const isArray = node.type === "array";
536
- const isTuple = node.type === "tuple";
537
539
  const isScalar = SCALAR_TYPES$1.has(node.type);
538
540
  let dataType = `Partial<${typeName}>`;
539
- if (isArray || isTuple || node.type === "union" || node.type === "enum") dataType = typeName;
540
541
  if (isScalar) dataType = getScalarType(node, typeName);
541
542
  let returnType = canOverride ? typeName : null;
542
543
  if (isScalar) returnType = getScalarType(node, typeName);
@@ -571,11 +572,12 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
571
572
  const isObject = OBJECT_TYPES.has(node.type);
572
573
  const isTuple = node.type === "tuple";
573
574
  const isScalar = SCALAR_TYPES.has(node.type);
575
+ const isUnion = node.type === "union";
574
576
  const useGenericOverride = canOverride && isObject;
575
577
  const fakerTextWithOverride = (() => {
576
- if (canOverride && isTuple) return `data || ${fakerText}`;
577
- if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || [])\n]`;
578
- if (canOverride && isScalar) return `data ?? ${fakerText}`;
578
+ if (canOverride && node.type === "tuple") return `data && data.length === ${node.items?.length ?? 0} && !data.includes(undefined) ? data : ${fakerText}`;
579
+ if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || []).filter((item) => item !== undefined),\n]`;
580
+ if (canOverride && (isScalar || isUnion)) return `data ?? ${fakerText}`;
579
581
  return fakerText;
580
582
  })();
581
583
  const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
@@ -588,7 +590,7 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
588
590
  })] });
589
591
  const paramsSignature = declarationPrinter.print(params) ?? "";
590
592
  const returnType = resolvedReturnType;
591
- const returnExpression = node.type === "ref" && canOverride && returnType ? `${fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride;
593
+ const returnExpression = canOverride && !!returnType && (node.type === "ref" || isArray || isTuple || isUnion) ? `${isTuple || isUnion ? `(${fakerTextWithOverride})` : fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride;
592
594
  return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
593
595
  name,
594
596
  isExportable: true,
@@ -1291,7 +1293,8 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1291
1293
  type: "union",
1292
1294
  members: variants.map((variant) => kubb_kit.ast.factory.createSchema({
1293
1295
  type: "ref",
1294
- name: variant.name
1296
+ name: variant.name,
1297
+ schema: variant.schema
1295
1298
  }))
1296
1299
  });
1297
1300
  return [...variants.map((variant) => ({