@kubb/plugin-faker 5.0.9 → 5.0.11

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
@@ -532,15 +532,23 @@ function getScalarType(node, typeName) {
532
532
  }
533
533
  }
534
534
  /**
535
+ * A nullable scalar inlines its primitive instead of naming the generated type, so the
536
+ * nullability the type plugin emitted has to be reapplied here. Non-scalars keep `typeName`,
537
+ * which already carries it.
538
+ */
539
+ function withNullability(type, node) {
540
+ return node.nullable ? `${type} | null` : type;
541
+ }
542
+ /**
535
543
  * Resolves faker type usage information for a schema.
536
544
  * Determines the data type, return type, and whether it uses the type name.
537
545
  */
538
546
  function resolveFakerTypeUsage(node, typeName, canOverride) {
539
547
  const isScalar = SCALAR_TYPES$1.has(node.type);
540
548
  let dataType = `Partial<${typeName}>`;
541
- if (isScalar) dataType = getScalarType(node, typeName);
549
+ if (isScalar) dataType = withNullability(getScalarType(node, typeName), node);
542
550
  let returnType = canOverride ? typeName : null;
543
- if (isScalar) returnType = getScalarType(node, typeName);
551
+ if (isScalar) returnType = withNullability(getScalarType(node, typeName), node);
544
552
  return {
545
553
  dataType,
546
554
  returnType,
@@ -577,7 +585,7 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
577
585
  const fakerTextWithOverride = (() => {
578
586
  if (canOverride && node.type === "tuple") return `data && data.length === ${node.items?.length ?? 0} && !data.includes(undefined) ? data : ${fakerText}`;
579
587
  if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || []).filter((item) => item !== undefined),\n]`;
580
- if (canOverride && (isScalar || isUnion)) return `data ?? ${fakerText}`;
588
+ if (canOverride && (isScalar || isUnion)) return node.nullable ? `data !== undefined ? data : ${fakerText}` : `data ?? ${fakerText}`;
581
589
  return fakerText;
582
590
  })();
583
591
  const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
@@ -1121,9 +1129,9 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1121
1129
  })) return `get ${objectKey(property.name)}() { const _value = ${value}; Object.defineProperty(this, ${JSON.stringify(property.name)}, { value: _value, configurable: true, writable: true, enumerable: true }); return _value }`;
1122
1130
  return `${objectKey(property.name)}: ${value}`;
1123
1131
  }));
1124
- },
1125
- ...options.nodes
1132
+ }
1126
1133
  },
1134
+ overrides: options.nodes,
1127
1135
  print(node) {
1128
1136
  return this.transform(node) ?? null;
1129
1137
  }