@kubb/plugin-faker 5.1.0-canary.20261008T204013 → 5.1.1

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,31 +613,35 @@ 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 returnType = typeMode === "schema" ? typeName : "Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>";
617
617
  const { cyclicSchemas, schemaName } = printer.options;
618
618
  const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, kubb_kit.containsCircularRef)(p.schema, {
619
619
  circularSchemas: cyclicSchemas,
620
620
  excludeName: schemaName
621
- })) ? `{
622
- const defaultFakeData = ${fakerText}
623
- if (data) {
624
- for (const [key, value] of Object.entries(data)) {
625
- Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
626
- }
621
+ })) ? `const defaultFakeData = ${fakerText}
622
+ if (data) {
623
+ for (const [key, value] of Object.entries(data)) {
624
+ Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })
627
625
  }
628
- return defaultFakeData as Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>
629
- }` : `{
630
- const defaultFakeData = ${fakerText}
631
- return {
632
- ...defaultFakeData,
633
- ...(data || {}),
634
- } as Omit<typeof defaultFakeData, keyof NoInfer<TData>> & NoInfer<TData>
635
- }`;
636
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File.Source, {
626
+ }
627
+ return defaultFakeData as ${returnType}` : `const defaultFakeData = ${fakerText}
628
+ return {
629
+ ...defaultFakeData,
630
+ ...(data || {}),
631
+ } as ${returnType}`;
632
+ return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
637
633
  name,
638
634
  isExportable: true,
639
635
  isIndexable: true,
640
- children: [functionSignature, functionBody]
636
+ children: /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.Function, {
637
+ export: true,
638
+ name,
639
+ JSDoc: { comments: description ? [`@description ${jsStringEscape(description)}`] : [] },
640
+ generics: typeMode === "schema" ? void 0 : `TData extends Partial<${typeName}> = object`,
641
+ params: typeMode === "schema" ? `data?: Partial<${typeName}>` : "data?: TData",
642
+ returnType: typeMode === "schema" ? typeName : void 0,
643
+ children: functionBody
644
+ })
641
645
  });
642
646
  }
643
647
  //#endregion
@@ -1150,9 +1154,9 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1150
1154
  renderer: kubb_jsx.jsxRenderer,
1151
1155
  schema(node, ctx) {
1152
1156
  const { config, resolver, root } = ctx;
1153
- const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
1154
- const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
1155
- if (!node.name || !pluginTs) return;
1157
+ const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
1158
+ const pluginTs = ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
1159
+ if (!node.name) return;
1156
1160
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
1157
1161
  const schemaName = node.name;
1158
1162
  const isEnumSchema = !!kubb_kit.ast.narrowSchema(node, kubb_kit.ast.schemaTypes.enum);
@@ -1264,16 +1268,16 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1264
1268
  description: node.description,
1265
1269
  node,
1266
1270
  printer: printerInstance,
1267
- canOverride
1271
+ canOverride,
1272
+ typeMode
1268
1273
  })
1269
1274
  ]
1270
1275
  });
1271
1276
  },
1272
1277
  operation(node, ctx) {
1273
1278
  const { config, resolver, root } = ctx;
1274
- const { output, group, dateParser, regexGenerator, seed, locale, printer } = ctx.options;
1275
- const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
1276
- if (!pluginTs) return;
1279
+ const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
1280
+ const pluginTs = ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
1277
1281
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
1278
1282
  const { path: pathParams, query: queryParams, header: headerParams } = getOperationParameters(node);
1279
1283
  const paramGroups = [
@@ -1422,7 +1426,8 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1422
1426
  ...printerInstance,
1423
1427
  print: () => rewrittenFakerText
1424
1428
  },
1425
- canOverride
1429
+ canOverride,
1430
+ typeMode
1426
1431
  })
1427
1432
  ] });
1428
1433
  }
@@ -1549,13 +1554,14 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
1549
1554
  const { output = {
1550
1555
  path: "mocks",
1551
1556
  barrel: { type: "named" }
1552
- }, seed, locale = "en", group, exclude = [], include, override = [], dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
1557
+ }, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
1553
1558
  const groupConfig = createGroupConfig(group);
1554
1559
  return {
1555
1560
  name: pluginFakerName,
1556
1561
  options,
1557
1562
  dependencies: [_kubb_plugin_ts.pluginTsName],
1558
1563
  hooks: { "kubb:plugin:setup"(ctx) {
1564
+ ctx.requirePlugin(_kubb_plugin_ts.pluginTsName);
1559
1565
  ctx.setOptions({
1560
1566
  output,
1561
1567
  seed,
@@ -1563,6 +1569,7 @@ const pluginFaker = (0, kubb_kit.definePlugin)((options) => {
1563
1569
  exclude,
1564
1570
  include,
1565
1571
  override,
1572
+ typeMode,
1566
1573
  group: groupConfig,
1567
1574
  dateParser,
1568
1575
  regexGenerator,