@kubb/plugin-faker 5.1.0-canary.20261008T111956 → 5.1.0

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
@@ -574,14 +574,14 @@ const SCALAR_TYPES = /* @__PURE__ */ new Set([
574
574
  "enum"
575
575
  ]);
576
576
  const declarationPrinter = (0, _kubb_plugin_ts.functionPrinter)({ mode: "declaration" });
577
- function Faker({ node, description, name, typeName, printer, canOverride }) {
577
+ function Faker({ node, description, name, typeName, printer, canOverride, typeMode = "inferred" }) {
578
578
  const fakerText = printer.print(node) ?? "undefined";
579
579
  const isArray = node.type === "array";
580
580
  const isObject = OBJECT_TYPES.has(node.type);
581
581
  const isTuple = node.type === "tuple";
582
582
  const isScalar = SCALAR_TYPES.has(node.type);
583
583
  const isUnion = node.type === "union";
584
- const useGenericOverride = canOverride && isObject;
584
+ const useObjectOverride = canOverride && isObject;
585
585
  const fakerTextWithOverride = (() => {
586
586
  if (canOverride && node.type === "tuple") return `data && data.length === ${node.items?.length ?? 0} && !data.includes(undefined) ? data : ${fakerText}`;
587
587
  if (canOverride && isArray) return `[\n ...${fakerText},\n ...(data || []).filter((item) => item !== undefined),\n]`;
@@ -589,7 +589,7 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
589
589
  return fakerText;
590
590
  })();
591
591
  const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
592
- if (!useGenericOverride) {
592
+ if (!useObjectOverride) {
593
593
  const dataParamName = /\bdata\b/.test(fakerTextWithOverride) ? "data" : "_data";
594
594
  const params = (0, _kubb_plugin_ts.createFunctionParameters)({ params: [(0, _kubb_plugin_ts.createFunctionParameter)({
595
595
  name: dataParamName,
@@ -613,7 +613,9 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
613
613
  })
614
614
  });
615
615
  }
616
- const functionSignature = `${description ? `/**\n * @description ${jsStringEscape(description)}\n */\n ` : ""}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
616
+ const jsdoc = description ? `/**\n * @description ${jsStringEscape(description)}\n */\n ` : "";
617
+ const functionSignature = typeMode === "schema" ? `${jsdoc}export function ${name}(data?: Partial<${typeName}>): ${typeName}` : `${jsdoc}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
618
+ const returnType = typeMode === "schema" ? typeName : "Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>";
617
619
  const { cyclicSchemas, schemaName } = printer.options;
618
620
  const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, kubb_kit.containsCircularRef)(p.schema, {
619
621
  circularSchemas: cyclicSchemas,
@@ -625,13 +627,13 @@ function Faker({ node, description, name, typeName, printer, canOverride }) {
625
627
  Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
626
628
  }
627
629
  }
628
- return defaultFakeData as Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>
630
+ return defaultFakeData as ${returnType}
629
631
  }` : `{
630
632
  const defaultFakeData = ${fakerText}
631
633
  return {
632
634
  ...defaultFakeData,
633
635
  ...(data || {}),
634
- } as Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>
636
+ } as ${returnType}
635
637
  }`;
636
638
  return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File.Source, {
637
639
  name,
@@ -1150,7 +1152,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1150
1152
  renderer: kubb_jsx.jsxRenderer,
1151
1153
  schema(node, ctx) {
1152
1154
  const { config, resolver, root } = ctx;
1153
- const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
1155
+ const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
1154
1156
  const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
1155
1157
  if (!node.name || !pluginTs) return;
1156
1158
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
@@ -1264,14 +1266,15 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1264
1266
  description: node.description,
1265
1267
  node,
1266
1268
  printer: printerInstance,
1267
- canOverride
1269
+ canOverride,
1270
+ typeMode
1268
1271
  })
1269
1272
  ]
1270
1273
  });
1271
1274
  },
1272
1275
  operation(node, ctx) {
1273
1276
  const { config, resolver, root } = ctx;
1274
- const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
1277
+ const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
1275
1278
  const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
1276
1279
  if (!pluginTs) return;
1277
1280
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
@@ -1422,7 +1425,8 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1422
1425
  ...printerInstance,
1423
1426
  print: () => rewrittenFakerText
1424
1427
  },
1425
- canOverride
1428
+ canOverride,
1429
+ typeMode
1426
1430
  })
1427
1431
  ] });
1428
1432
  }
@@ -1549,7 +1553,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
1549
1553
  const { output = {
1550
1554
  path: "mocks",
1551
1555
  barrel: { type: "named" }
1552
- }, seed, locale = "en", group, exclude = [], include, override = [], dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
1556
+ }, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
1553
1557
  const groupConfig = createGroupConfig(group);
1554
1558
  return {
1555
1559
  name: pluginFakerName,
@@ -1563,6 +1567,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
1563
1567
  exclude,
1564
1568
  include,
1565
1569
  override,
1570
+ typeMode,
1566
1571
  group: groupConfig,
1567
1572
  dateParser,
1568
1573
  regexGenerator,