@kubb/plugin-faker 5.3.0-canary.20261029T124214 → 5.3.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
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  let node_path = require("node:path");
6
- let kubb_kit = require("kubb/kit");
7
- let kubb_jsx = require("kubb/jsx");
8
- let kubb_jsx_jsx_runtime = require("kubb/jsx/jsx-runtime");
6
+ let _kubb_kit = require("@kubb/kit");
7
+ let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
8
+ let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
9
9
  let _kubb_plugin_ts = require("@kubb/plugin-ts");
10
10
  // ../../internals/utils/src/reserved.ts
11
11
  /**
@@ -330,9 +330,9 @@ function getRelativePath(rootDir, filePath) {
330
330
  * @example Suffix applied to the final segment only
331
331
  * `toFilePath('tag.tag', (part) => camelCase(part, { suffix: 'schema' })) // 'tag/tagSchema'`
332
332
  */
333
- function toFilePath(name, caseLast = kubb_kit.camelCase) {
333
+ function toFilePath(name, caseLast = _kubb_kit.camelCase) {
334
334
  const parts = name.split(/\.(?=[a-zA-Z])/);
335
- return parts.map((part, i) => i === parts.length - 1 ? caseLast(part) : (0, kubb_kit.camelCase)(part)).filter(Boolean).join("/");
335
+ return parts.map((part, i) => i === parts.length - 1 ? caseLast(part) : (0, _kubb_kit.camelCase)(part)).filter(Boolean).join("/");
336
336
  }
337
337
  // src/utils.ts
338
338
  /**
@@ -389,13 +389,13 @@ function canOverrideSchema(node) {
389
389
  * Whether a schema can supply object properties when merging faker values.
390
390
  */
391
391
  function isObjectSchema(node, seen = /* @__PURE__ */ new Set()) {
392
- const resolved = kubb_kit.ast.resolveRef(node);
392
+ const resolved = _kubb_kit.ast.resolveRef(node);
393
393
  if (seen.has(resolved)) return false;
394
394
  seen.add(resolved);
395
- if (kubb_kit.ast.narrowSchema(resolved, kubb_kit.ast.schemaTypes.object) || kubb_kit.ast.narrowSchema(resolved, kubb_kit.ast.schemaTypes.ref)) return true;
396
- const composition = kubb_kit.ast.narrowSchema(resolved, kubb_kit.ast.schemaTypes.intersection) ?? kubb_kit.ast.narrowSchema(resolved, kubb_kit.ast.schemaTypes.union);
395
+ if (_kubb_kit.ast.narrowSchema(resolved, _kubb_kit.ast.schemaTypes.object) || _kubb_kit.ast.narrowSchema(resolved, _kubb_kit.ast.schemaTypes.ref)) return true;
396
+ const composition = _kubb_kit.ast.narrowSchema(resolved, _kubb_kit.ast.schemaTypes.intersection) ?? _kubb_kit.ast.narrowSchema(resolved, _kubb_kit.ast.schemaTypes.union);
397
397
  if (!composition) return false;
398
- return composition.type === kubb_kit.ast.schemaTypes.intersection && !composition.members?.length || (composition.members ?? []).some((member) => isObjectSchema(member, seen));
398
+ return composition.type === _kubb_kit.ast.schemaTypes.intersection && !composition.members?.length || (composition.members ?? []).some((member) => isObjectSchema(member, seen));
399
399
  }
400
400
  function shouldInlineSingleResponseSchema(schema) {
401
401
  return !NON_INLINABLE_RESPONSE_TYPES.has(schema.type);
@@ -409,22 +409,22 @@ function buildResponseUnionSchema(node, resolver) {
409
409
  if (!responses.length) return null;
410
410
  if (responses.length === 1) {
411
411
  const schemas = responses[0].content?.flatMap((content) => content.schema ? [content.schema] : []) ?? [];
412
- const schema = schemas.length > 1 ? kubb_kit.ast.factory.createSchema({
412
+ const schema = schemas.length > 1 ? _kubb_kit.ast.factory.createSchema({
413
413
  type: "union",
414
414
  members: schemas
415
415
  }) : schemas[0];
416
416
  if (schema && shouldInlineSingleResponseSchema(schema)) return schema;
417
- return kubb_kit.ast.factory.createSchema({
417
+ return _kubb_kit.ast.factory.createSchema({
418
418
  type: "ref",
419
419
  name: resolver.response.status(node, responses[0].statusCode),
420
420
  schema: responses[0].content?.length === 1 ? schema : void 0
421
421
  });
422
422
  }
423
- return kubb_kit.ast.factory.createSchema({
423
+ return _kubb_kit.ast.factory.createSchema({
424
424
  type: "union",
425
425
  members: responses.map((response) => {
426
426
  const schema = (response.content?.length ?? 0) === 1 ? response.content?.[0]?.schema : void 0;
427
- return kubb_kit.ast.factory.createSchema({
427
+ return _kubb_kit.ast.factory.createSchema({
428
428
  type: "ref",
429
429
  name: resolver.response.status(node, response.statusCode),
430
430
  schema
@@ -486,7 +486,7 @@ function getScalarType(node, typeName) {
486
486
  * Determines the data type, return type, and whether it uses the type name.
487
487
  */
488
488
  function resolveFakerTypeUsage(node, typeName, canOverride) {
489
- const resolvedNode = kubb_kit.ast.resolveRef(node);
489
+ const resolvedNode = _kubb_kit.ast.resolveRef(node);
490
490
  const scalarType = SCALAR_TYPES.has(resolvedNode.type) ? `${getScalarType(resolvedNode, typeName)}${node.nullable || resolvedNode.nullable ? " | null" : ""}` : void 0;
491
491
  const dataType = scalarType ?? `Partial<${typeName}>`;
492
492
  const returnType = scalarType ?? (canOverride ? typeName : null);
@@ -499,14 +499,14 @@ function resolveFakerTypeUsage(node, typeName, canOverride) {
499
499
  // src/components/Faker.tsx
500
500
  function Faker({ node, description, name, typeName, printer, canOverride, typeMode = "inferred", keysToOmit }) {
501
501
  const fakerText = printer.print(node) ?? "undefined";
502
- const imports = printer.drainImports().map((imp) => /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, { ...imp }, [
502
+ const imports = printer.drainImports().map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, { ...imp }, [
503
503
  name,
504
504
  imp.path,
505
505
  imp.name
506
506
  ].join("-")));
507
507
  const isArray = node.type === "array";
508
- const isObject = !!kubb_kit.ast.narrowSchema(node, kubb_kit.ast.schemaTypes.object) || node.type === kubb_kit.ast.schemaTypes.intersection && isObjectSchema(node);
509
- const isValueIntersection = node.type === kubb_kit.ast.schemaTypes.intersection && !isObject;
508
+ const isObject = !!_kubb_kit.ast.narrowSchema(node, _kubb_kit.ast.schemaTypes.object) || node.type === _kubb_kit.ast.schemaTypes.intersection && isObjectSchema(node);
509
+ const isValueIntersection = node.type === _kubb_kit.ast.schemaTypes.intersection && !isObject;
510
510
  const isTuple = node.type === "tuple";
511
511
  const isScalar = SCALAR_TYPES.has(node.type);
512
512
  const isUnion = node.type === "union";
@@ -521,12 +521,12 @@ function Faker({ node, description, name, typeName, printer, canOverride, typeMo
521
521
  if (!useObjectOverride) {
522
522
  const paramsSignature = `${/\bdata\b/.test(fakerTextWithOverride) ? "data" : "_data"}?: ${dataType}`;
523
523
  const returnType = resolvedReturnType;
524
- const returnExpression = canOverride && !!returnType && (node.type === "ref" && !SCALAR_TYPES.has(kubb_kit.ast.resolveRef(node).type) || isArray || isTuple || isUnion) ? `${isTuple || isUnion ? `(${fakerTextWithOverride})` : fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride;
525
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx_jsx_runtime.Fragment, { children: [imports, /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
524
+ const returnExpression = canOverride && !!returnType && (node.type === "ref" && !SCALAR_TYPES.has(_kubb_kit.ast.resolveRef(node).type) || isArray || isTuple || isUnion) ? `${isTuple || isUnion ? `(${fakerTextWithOverride})` : fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride;
525
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [imports, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
526
526
  name,
527
527
  isExportable: true,
528
528
  isIndexable: true,
529
- children: /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.Function, {
529
+ children: /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
530
530
  export: true,
531
531
  name,
532
532
  JSDoc: { comments: description ? [`@description ${jsDocEscape(description)}`] : [] },
@@ -539,7 +539,7 @@ function Faker({ node, description, name, typeName, printer, canOverride, typeMo
539
539
  const { cyclicSchemas, schemaName } = printer.options;
540
540
  const isCyclic = !!schemaName && !!cyclicSchemas?.has(schemaName);
541
541
  const returnType = typeMode === "schema" ? typeName : `Omit<${isCyclic ? typeName : "typeof defaultFakeData"}, keyof NoInfer<TData>> & NoInfer<TData>`;
542
- const hasGetters = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, kubb_kit.containsCircularRef)(p.schema, {
542
+ const hasGetters = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, _kubb_kit.containsCircularRef)(p.schema, {
543
543
  circularSchemas: cyclicSchemas,
544
544
  excludeName: schemaName
545
545
  }));
@@ -555,11 +555,11 @@ return {
555
555
  ...defaultFakeData,
556
556
  ...(data || {}),
557
557
  } as ${returnType}`;
558
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx_jsx_runtime.Fragment, { children: [imports, /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
558
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [imports, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
559
559
  name,
560
560
  isExportable: true,
561
561
  isIndexable: true,
562
- children: /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.Function, {
562
+ children: /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.Function, {
563
563
  export: true,
564
564
  name,
565
565
  JSDoc: { comments: description ? [`@description ${jsDocEscape(description)}`] : [] },
@@ -591,19 +591,19 @@ function operationFileEntry(node, name, extname = ".ts") {
591
591
  };
592
592
  }
593
593
  /**
594
- * Resolves a dependency plugin's generated file for `node.operationId`, cached in `cache` (the
595
- * current node's `ctx.cache`) under the resolver's own plugin name. Several dependents reading the
594
+ * Resolves a dependency plugin's generated file for `node.operationId`, cached in `memo` (the
595
+ * build's `ctx.memo`) under the resolver's own plugin name and the operation. Several dependents reading the
596
596
  * same dependency for the same operation in one pass (a query plugin's several hook generators, the
597
597
  * MCP handler, ...) share one computed name and path instead of each calling `resolver.file` again.
598
598
  *
599
599
  * @example Cache `plugin-ts`'s file for the current operation
600
600
  * ```ts
601
- * const fileTs = resolveDependencyOperationFile({ cache: ctx.cache, node, resolver: tsResolver, root, output })
601
+ * const fileTs = resolveDependencyOperationFile({ memo: ctx.memo, node, resolver: tsResolver, root, output })
602
602
  * ```
603
603
  */
604
604
  function resolveDependencyOperationFile(options) {
605
- const { cache, node, resolver, root, output, group } = options;
606
- return cache.ensureItem(`${resolver.pluginName}:operationFile`, () => resolver.file({
605
+ const { memo, node, resolver, root, output, group } = options;
606
+ return memo(`${resolver.pluginName}:operationFile:${node.operationId}`, () => resolver.file({
607
607
  ...operationFileEntry(node, node.operationId),
608
608
  root,
609
609
  output,
@@ -660,6 +660,22 @@ function resolveContentTypeVariants(entries, baseName) {
660
660
  }
661
661
  const operationParameterGroupsByNode = /* @__PURE__ */ new WeakMap();
662
662
  /**
663
+ * An OpenAPI 3.2 `querystring` parameter is the whole query string, so a form-encoded object becomes one query parameter
664
+ * per property, typed and serialized like any other.
665
+ * Another content type, such as JSON, stays one parameter named after it, and the runtime sends its value as the whole query string.
666
+ */
667
+ function spreadQuerystring(param) {
668
+ const schema = param.schema.type === "ref" ? param.schema.schema : param.schema;
669
+ const formEncoded = !param.contentType || param.contentType.split(";")[0].trim().toLowerCase() === "application/x-www-form-urlencoded";
670
+ if (schema?.type !== "object" || !formEncoded) return [param];
671
+ return schema.properties.map((property) => _kubb_kit.ast.factory.createParameter({
672
+ name: property.name,
673
+ in: "query",
674
+ schema: property.schema,
675
+ required: param.required && property.required
676
+ }));
677
+ }
678
+ /**
663
679
  * Groups an operation's parameters by location (`path`/`query`/`header`/`cookie`), deduping each
664
680
  * group by name. Every plugin generator visiting the same `OperationNode` shares one AST instance
665
681
  * (see `KubbDriver`), so the result is cached per node to avoid re-filtering and re-deduping the
@@ -668,17 +684,18 @@ const operationParameterGroupsByNode = /* @__PURE__ */ new WeakMap();
668
684
  function getOperationParameters(node) {
669
685
  const cached = operationParameterGroupsByNode.get(node);
670
686
  if (cached) return cached;
671
- const group = (location) => {
687
+ const dedupe = (params) => {
672
688
  const seen = /* @__PURE__ */ new Set();
673
- return node.parameters.filter((param) => {
674
- if (param.in !== location || seen.has(param.name)) return false;
689
+ return params.filter((param) => {
690
+ if (seen.has(param.name)) return false;
675
691
  seen.add(param.name);
676
692
  return true;
677
693
  });
678
694
  };
695
+ const group = (location) => dedupe(node.parameters.filter((param) => param.in === location));
679
696
  const groups = {
680
697
  path: group("path"),
681
- query: group("query"),
698
+ query: dedupe([...group("query"), ...group("querystring").flatMap(spreadQuerystring)]),
682
699
  header: group("header"),
683
700
  cookie: group("cookie")
684
701
  };
@@ -805,7 +822,7 @@ function createCasedFile(caseLast) {
805
822
  * Names of the schemas in a circular reference chain, computed once per build.
806
823
  */
807
824
  function getCircularNames(ctx) {
808
- return ctx.memo("circularNames:set", () => kubb_kit.ast.findCircularSchemas(ctx.driver.inputNode?.schemas ?? []));
825
+ return ctx.memo("circularNames:set", () => _kubb_kit.ast.findCircularSchemas(ctx.driver.inputNode?.schemas ?? []));
809
826
  }
810
827
  // ../../internals/shared/src/group.ts
811
828
  /**
@@ -830,7 +847,7 @@ function createGroupConfig(group) {
830
847
  if (!group) return null;
831
848
  const defaultName = (ctx) => {
832
849
  if (group.type === "path") return `${ctx.group.split("/")[1]}`;
833
- return (0, kubb_kit.camelCase)(ctx.group);
850
+ return (0, _kubb_kit.camelCase)(ctx.group);
834
851
  };
835
852
  return {
836
853
  ...group,
@@ -931,8 +948,8 @@ function numberCall(kind, min, max) {
931
948
  */
932
949
  function dateTimeCall(representation, { format, substring }, parser = "faker", schemaName) {
933
950
  if (representation === "string") return parser !== "faker" ? `${parser}(faker.date.anytime()).format("${format}")` : `faker.date.anytime().toISOString().substring(${substring})`;
934
- if (parser !== "faker") throw new kubb_kit.Diagnostics.Error({
935
- code: kubb_kit.Diagnostics.code.invalidPluginOptions,
951
+ if (parser !== "faker") throw new _kubb_kit.Diagnostics.Error({
952
+ code: _kubb_kit.Diagnostics.code.invalidPluginOptions,
936
953
  severity: "error",
937
954
  message: `Option \`dateParser: '${parser}'\` cannot format the adapter's \`dateType: 'date'\` values${schemaName ? ` in schema "${schemaName}"` : ""}.`,
938
955
  help: "Set adapterOas({ dateType: 'string' }) or remove `dateParser`.",
@@ -957,11 +974,11 @@ function parseEnumValue(value) {
957
974
  * (a `ref` to the enum shared by every branch, say) identifies no branch and narrows nothing.
958
975
  */
959
976
  function getDiscriminator(member, discriminatorPropertyName) {
960
- for (const property of kubb_kit.ast.resolveSchemaProperties({
977
+ for (const property of _kubb_kit.ast.resolveSchemaProperties({
961
978
  node: member,
962
979
  propertyName: discriminatorPropertyName
963
980
  })) {
964
- const values = kubb_kit.ast.getSchemaLiteralValues(property.schema);
981
+ const values = _kubb_kit.ast.getSchemaLiteralValues(property.schema);
965
982
  if (values.length === 1) return {
966
983
  value: values[0],
967
984
  required: property.required
@@ -982,7 +999,7 @@ function indexedTypeName(typeName, propertyName, nestedInUnion) {
982
999
  * Creates a Faker printer that generates mock data generation code from schema nodes.
983
1000
  * Handles circular references gracefully by emitting memoizing getters for cyclic properties.
984
1001
  */
985
- const printerFaker = kubb_kit.ast.createPrinter((options) => {
1002
+ const printerFaker = _kubb_kit.ast.createPrinter((options) => {
986
1003
  const printNested = (node, overrideOptions = {}) => {
987
1004
  return printerFaker({
988
1005
  ...options,
@@ -1028,21 +1045,21 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1028
1045
  }, this.options.dateParser, this.options.schemaName);
1029
1046
  },
1030
1047
  ref(node) {
1031
- const refName = kubb_kit.ast.resolveRefName(node);
1032
- if (!refName) throw new kubb_kit.Diagnostics.Error({
1033
- code: kubb_kit.Diagnostics.code.pluginFailed,
1048
+ const refName = _kubb_kit.ast.resolveRefName(node);
1049
+ if (!refName) throw new _kubb_kit.Diagnostics.Error({
1050
+ code: _kubb_kit.Diagnostics.code.pluginFailed,
1034
1051
  severity: "error",
1035
1052
  message: `Ref node "${node.ref ?? node.name ?? "unknown"}"${this.options.schemaName ? ` in schema "${this.options.schemaName}"` : ""} has no name.`,
1036
1053
  plugin: "plugin-faker"
1037
1054
  });
1038
1055
  if (this.options.schemaName && refName === this.options.schemaName) return this.options.typeName ? `undefined as unknown as ${this.options.typeName}` : "undefined as unknown";
1039
1056
  const resolvedName = node.ref ? this.options.resolver.name(refName) : refName;
1040
- if (!this.options.nestedInObject && canOverrideSchema(kubb_kit.ast.resolveRef(node))) return `${resolvedName}(data)`;
1057
+ if (!this.options.nestedInObject && canOverrideSchema(_kubb_kit.ast.resolveRef(node))) return `${resolvedName}(data)`;
1041
1058
  return `${resolvedName}()`;
1042
1059
  },
1043
1060
  enum(node) {
1044
1061
  const { typeName } = this.options;
1045
- const values = kubb_kit.ast.getSchemaLiteralValues(node);
1062
+ const values = _kubb_kit.ast.getSchemaLiteralValues(node);
1046
1063
  if (values.length === 1 && values[0] !== null && typeof values[0] === "object") return JSON.stringify(values[0]);
1047
1064
  return `faker.helpers.arrayElement${typeName ? `<${typeName}>` : ""}([${values.map(parseEnumValue).join(", ")}])`;
1048
1065
  },
@@ -1098,9 +1115,9 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1098
1115
  },
1099
1116
  object(node) {
1100
1117
  const cyclicSchemas = this.options.cyclicSchemas;
1101
- const keySchema = node.propertyNames && (0, kubb_kit.syncSchemaRef)(node.propertyNames);
1118
+ const keySchema = node.propertyNames && (0, _kubb_kit.syncSchemaRef)(node.propertyNames);
1102
1119
  const valueSchema = node.additionalProperties;
1103
- const recordProperties = keySchema?.type === "enum" && typeof valueSchema === "object" ? kubb_kit.ast.getSchemaLiteralValues(keySchema).filter((key) => typeof key === "string" && !node.properties.some((property) => property.name === key)).map((name) => kubb_kit.ast.factory.createProperty({
1120
+ const recordProperties = keySchema?.type === "enum" && typeof valueSchema === "object" ? _kubb_kit.ast.getSchemaLiteralValues(keySchema).filter((key) => typeof key === "string" && !node.properties.some((property) => property.name === key)).map((name) => _kubb_kit.ast.factory.createProperty({
1104
1121
  name,
1105
1122
  schema: valueSchema
1106
1123
  })) : [];
@@ -1109,7 +1126,7 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1109
1126
  typeName: this.options.typeName ? indexedTypeName(this.options.typeName, property.name, this.options.nestedInUnion) : void 0,
1110
1127
  nestedInObject: true
1111
1128
  }) ?? "undefined";
1112
- if (cyclicSchemas && (0, kubb_kit.containsCircularRef)(property.schema, {
1129
+ if (cyclicSchemas && (0, _kubb_kit.containsCircularRef)(property.schema, {
1113
1130
  circularSchemas: cyclicSchemas,
1114
1131
  excludeName: this.options.schemaName
1115
1132
  })) 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 }`;
@@ -1127,9 +1144,9 @@ const printerFaker = kubb_kit.ast.createPrinter((options) => {
1127
1144
  * factory returns a value matching the corresponding TypeScript type from
1128
1145
  * `@kubb/plugin-ts`.
1129
1146
  */
1130
- const fakerGenerator = (0, kubb_kit.defineGenerator)({
1147
+ const fakerGenerator = (0, _kubb_kit.defineGenerator)({
1131
1148
  name: "faker",
1132
- renderer: kubb_jsx.jsxRenderer,
1149
+ renderer: _kubb_renderer_jsx.jsxRenderer,
1133
1150
  schema(node, ctx) {
1134
1151
  const { config, resolver, root } = ctx;
1135
1152
  const { output, group, dateParser, regexGenerator, seed, locale, printer, typeMode } = ctx.options;
@@ -1137,7 +1154,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1137
1154
  if (!node.name) return;
1138
1155
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
1139
1156
  const schemaName = node.name;
1140
- const isEnumSchema = !!kubb_kit.ast.narrowSchema(node, kubb_kit.ast.schemaTypes.enum);
1157
+ const isEnumSchema = !!_kubb_kit.ast.narrowSchema(node, _kubb_kit.ast.schemaTypes.enum);
1141
1158
  const schemaTypeName = (0, _kubb_plugin_ts.enumTypeName)({
1142
1159
  resolver: tsResolver,
1143
1160
  name: schemaName,
@@ -1188,7 +1205,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1188
1205
  output,
1189
1206
  group: group ?? void 0
1190
1207
  }), fakerText);
1191
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File, {
1208
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
1192
1209
  baseName: meta.file.baseName,
1193
1210
  path: meta.file.path,
1194
1211
  meta: meta.file.meta,
@@ -1209,28 +1226,28 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1209
1226
  }
1210
1227
  }),
1211
1228
  children: [
1212
- /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1229
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1213
1230
  name: locale ? [{
1214
1231
  propertyName: localeToFakerImport(locale),
1215
1232
  name: "faker"
1216
1233
  }] : ["faker"],
1217
1234
  path: "@faker-js/faker"
1218
1235
  }),
1219
- regexGenerator === "randexp" && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1236
+ regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1220
1237
  name: "RandExp",
1221
1238
  path: "randexp"
1222
1239
  }),
1223
- dateParser !== "faker" && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1240
+ dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1224
1241
  path: dateParser,
1225
1242
  name: dateParser
1226
1243
  }),
1227
- typeReference.importPath && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1244
+ typeReference.importPath && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1228
1245
  isTypeOnly: true,
1229
1246
  root: meta.file.path,
1230
1247
  path: typeReference.importPath,
1231
1248
  name: [meta.typeName]
1232
1249
  }),
1233
- usedImports.map((imp) => /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1250
+ usedImports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1234
1251
  root: meta.file.path,
1235
1252
  path: imp.path,
1236
1253
  name: imp.name
@@ -1239,11 +1256,11 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1239
1256
  imp.path,
1240
1257
  imp.name
1241
1258
  ].join("-"))),
1242
- seed ? /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
1259
+ seed ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
1243
1260
  name: "faker-seed",
1244
1261
  children: `faker.seed(${JSON.stringify(seed)})`
1245
1262
  }) : void 0,
1246
- /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(Faker, {
1263
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(Faker, {
1247
1264
  name: meta.name,
1248
1265
  typeName: typeReference.typeName,
1249
1266
  description: node.description,
@@ -1296,9 +1313,9 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1296
1313
  }];
1297
1314
  }
1298
1315
  const variants = resolveContentTypeVariants(entries, baseName);
1299
- const unionSchema = kubb_kit.ast.factory.createSchema({
1316
+ const unionSchema = _kubb_kit.ast.factory.createSchema({
1300
1317
  type: "union",
1301
- members: variants.map((variant) => kubb_kit.ast.factory.createSchema({
1318
+ members: variants.map((variant) => _kubb_kit.ast.factory.createSchema({
1302
1319
  type: "ref",
1303
1320
  name: variant.name,
1304
1321
  schema: variant.schema
@@ -1324,7 +1341,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1324
1341
  description: node.requestBody?.description ?? schema.description
1325
1342
  }));
1326
1343
  const responseName = resolver.response.response(node);
1327
- const hasResponseNameCollision = new Set(node.responses.flatMap((response) => (response.content ?? []).flatMap((entry) => entry.schema ? kubb_kit.ast.collectImportedRefNames(entry.schema).map((name) => resolver.name(name)) : []))).has(responseName);
1344
+ const hasResponseNameCollision = new Set(node.responses.flatMap((response) => (response.content ?? []).flatMap((entry) => entry.schema ? _kubb_kit.ast.collectImportedRefNames(entry.schema).map((name) => resolver.name(name)) : []))).has(responseName);
1328
1345
  const localHelperNames = /* @__PURE__ */ new Set([
1329
1346
  ...paramGroups.map((group) => group.name),
1330
1347
  ...responseUnits.map((unit) => unit.name),
@@ -1343,7 +1360,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1343
1360
  group: group ?? void 0
1344
1361
  }),
1345
1362
  typeFile: resolveDependencyOperationFile({
1346
- cache: ctx.cache,
1363
+ memo: ctx.memo,
1347
1364
  node,
1348
1365
  resolver: tsResolver,
1349
1366
  root,
@@ -1361,7 +1378,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1361
1378
  }
1362
1379
  function renderEntry({ schema, name, typeName, description, keysToOmit, skipImportNames = [] }) {
1363
1380
  if (!schema) return null;
1364
- if (schema.type === kubb_kit.ast.schemaTypes.object && keysToOmit?.length) {
1381
+ if (schema.type === _kubb_kit.ast.schemaTypes.object && keysToOmit?.length) {
1365
1382
  schema = {
1366
1383
  ...schema,
1367
1384
  properties: schema.properties.filter((property) => !keysToOmit?.includes(property.name))
@@ -1390,14 +1407,14 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1390
1407
  filePath: meta.file.path,
1391
1408
  typeFilePath: meta.typeFile.path
1392
1409
  });
1393
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx_jsx_runtime.Fragment, { children: [
1394
- typeReference.importPath && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1410
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
1411
+ typeReference.importPath && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1395
1412
  isTypeOnly: true,
1396
1413
  root: meta.file.path,
1397
1414
  path: typeReference.importPath,
1398
1415
  name: [typeName]
1399
1416
  }),
1400
- imports.map((imp) => /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1417
+ imports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1401
1418
  root: meta.file.path,
1402
1419
  path: imp.path,
1403
1420
  name: imp.name
@@ -1406,7 +1423,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1406
1423
  imp.path,
1407
1424
  imp.name
1408
1425
  ].join("-"))),
1409
- /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(Faker, {
1426
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(Faker, {
1410
1427
  name,
1411
1428
  typeName: typeReference.typeName,
1412
1429
  description,
@@ -1421,7 +1438,7 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1421
1438
  })
1422
1439
  ] });
1423
1440
  }
1424
- return /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsxs)(kubb_jsx.File, {
1441
+ return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
1425
1442
  baseName: meta.file.baseName,
1426
1443
  path: meta.file.path,
1427
1444
  meta: meta.file.meta,
@@ -1442,22 +1459,22 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1442
1459
  }
1443
1460
  }),
1444
1461
  children: [
1445
- /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1462
+ /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1446
1463
  name: locale ? [{
1447
1464
  propertyName: localeToFakerImport(locale),
1448
1465
  name: "faker"
1449
1466
  }] : ["faker"],
1450
1467
  path: "@faker-js/faker"
1451
1468
  }),
1452
- regexGenerator === "randexp" && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1469
+ regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1453
1470
  name: "RandExp",
1454
1471
  path: "randexp"
1455
1472
  }),
1456
- dateParser !== "faker" && /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Import, {
1473
+ dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
1457
1474
  path: dateParser,
1458
1475
  name: dateParser
1459
1476
  }),
1460
- seed ? /* @__PURE__ */ (0, kubb_jsx_jsx_runtime.jsx)(kubb_jsx.File.Source, {
1477
+ seed ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Source, {
1461
1478
  name: "faker-seed",
1462
1479
  children: `faker.seed(${JSON.stringify(seed)})`
1463
1480
  }) : void 0,
@@ -1476,11 +1493,11 @@ const fakerGenerator = (0, kubb_kit.defineGenerator)({
1476
1493
  });
1477
1494
  // kubb-extension.json
1478
1495
  var compatibility = {
1479
- "kubb": ">=5.14.6",
1496
+ "kubb": ">=5.16.0",
1480
1497
  "node": ">=22.22"
1481
1498
  };
1482
1499
  // package.json
1483
- var version = "5.3.0-canary.20261029T124214";
1500
+ var version = "5.3.1";
1484
1501
  // src/resolvers/resolverFaker.ts
1485
1502
  /**
1486
1503
  * Default resolver used by `@kubb/plugin-faker`. Decides the names and file
@@ -1494,12 +1511,12 @@ var version = "5.3.0-canary.20261029T124214";
1494
1511
  * resolverFaker.name('list pets') // 'createListPets'
1495
1512
  * ```
1496
1513
  */
1497
- const resolverFaker = (0, kubb_kit.createResolver)({
1514
+ const resolverFaker = (0, _kubb_kit.createResolver)({
1498
1515
  pluginName: "plugin-faker",
1499
1516
  name(name) {
1500
- return this.memo(`name:${name}`, () => ensureValidVarName((0, kubb_kit.camelCase)(name, { prefix: "create" })));
1517
+ return this.memo(`name:${name}`, () => ensureValidVarName((0, _kubb_kit.camelCase)(name, { prefix: "create" })));
1501
1518
  },
1502
- file: createCasedFile((part) => (0, kubb_kit.camelCase)(part, { prefix: "create" })),
1519
+ file: createCasedFile((part) => (0, _kubb_kit.camelCase)(part, { prefix: "create" })),
1503
1520
  param: createOperationParamResolver(),
1504
1521
  response: createOperationResponseResolver()
1505
1522
  });
@@ -1533,7 +1550,7 @@ const pluginFakerName = "plugin-faker";
1533
1550
  * })
1534
1551
  * ```
1535
1552
  */
1536
- const pluginFaker = (0, kubb_kit.defineExtension)({
1553
+ const pluginFaker = (0, _kubb_kit.defineExtension)({
1537
1554
  kind: "plugin",
1538
1555
  meta: {
1539
1556
  name: pluginFakerName,
@@ -1546,9 +1563,9 @@ const pluginFaker = (0, kubb_kit.defineExtension)({
1546
1563
  path: "mocks",
1547
1564
  barrel: { type: "named" }
1548
1565
  }, seed, locale = "en", group, exclude = [], include, override = [], typeMode = "inferred", dateParser = "faker", regexGenerator = "faker", printer, resolver: userResolver, macros: userMacros } = options;
1549
- (0, kubb_kit.setResolver)(userResolver ? kubb_kit.Resolver.merge(resolverFaker, userResolver) : resolverFaker);
1550
- if (userMacros?.length) (0, kubb_kit.setMacros)(userMacros);
1551
- (0, kubb_kit.addGenerator)(fakerGenerator);
1566
+ (0, _kubb_kit.setResolver)(userResolver ? _kubb_kit.Resolver.merge(resolverFaker, userResolver) : resolverFaker);
1567
+ if (userMacros?.length) (0, _kubb_kit.setMacros)(userMacros);
1568
+ (0, _kubb_kit.addGenerator)(fakerGenerator);
1552
1569
  return {
1553
1570
  output,
1554
1571
  seed,