@kubb/plugin-faker 5.0.0-beta.42 → 5.0.0-beta.64

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.
Files changed (38) hide show
  1. package/dist/{Faker-SBhWTdC7.d.ts → Faker-BA4l8DTe.d.ts} +2 -2
  2. package/dist/{Faker-DBPx_MVh.js → Faker-DUx7jvCo.js} +10 -55
  3. package/dist/Faker-DUx7jvCo.js.map +1 -0
  4. package/dist/{Faker-DRL0W5Lt.cjs → Faker-Ds2xP2-k.cjs} +11 -62
  5. package/dist/Faker-Ds2xP2-k.cjs.map +1 -0
  6. package/dist/components.cjs +1 -1
  7. package/dist/components.d.ts +1 -1
  8. package/dist/components.js +1 -1
  9. package/dist/{fakerGenerator-Duc28_FK.d.ts → fakerGenerator-BNysC6rh.d.ts} +2 -2
  10. package/dist/{fakerGenerator-CVOr0Pwm.cjs → fakerGenerator-BeKRKYuy.cjs} +26 -60
  11. package/dist/fakerGenerator-BeKRKYuy.cjs.map +1 -0
  12. package/dist/{fakerGenerator-DNJ61yLj.js → fakerGenerator-D5Bcy5WY.js} +25 -59
  13. package/dist/fakerGenerator-D5Bcy5WY.js.map +1 -0
  14. package/dist/generators.cjs +1 -1
  15. package/dist/generators.d.ts +1 -1
  16. package/dist/generators.js +1 -1
  17. package/dist/index.cjs +47 -44
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.ts +3 -3
  20. package/dist/index.js +47 -44
  21. package/dist/index.js.map +1 -1
  22. package/dist/{printerFaker-DXS861Q0.d.ts → printerFaker-BzEB43Jz.d.ts} +11 -15
  23. package/package.json +8 -16
  24. package/dist/Faker-DBPx_MVh.js.map +0 -1
  25. package/dist/Faker-DRL0W5Lt.cjs.map +0 -1
  26. package/dist/fakerGenerator-CVOr0Pwm.cjs.map +0 -1
  27. package/dist/fakerGenerator-DNJ61yLj.js.map +0 -1
  28. package/extension.yaml +0 -819
  29. package/src/components/Faker.tsx +0 -139
  30. package/src/components/index.ts +0 -1
  31. package/src/generators/fakerGenerator.tsx +0 -311
  32. package/src/generators/index.ts +0 -1
  33. package/src/index.ts +0 -7
  34. package/src/plugin.ts +0 -92
  35. package/src/printers/printerFaker.ts +0 -405
  36. package/src/resolvers/resolverFaker.ts +0 -84
  37. package/src/types.ts +0 -185
  38. package/src/utils.ts +0 -257
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk-C0LytTxp.js";
2
- import { o as PluginFaker, t as PrinterFakerFactory } from "./printerFaker-DXS861Q0.js";
2
+ import { o as PluginFaker, t as PrinterFakerFactory } from "./printerFaker-BzEB43Jz.js";
3
3
  import { ast } from "@kubb/core";
4
4
  import { KubbReactNode } from "@kubb/renderer-jsx/types";
5
5
 
@@ -24,4 +24,4 @@ declare function Faker({
24
24
  }: Props): KubbReactNode;
25
25
  //#endregion
26
26
  export { Faker as t };
27
- //# sourceMappingURL=Faker-SBhWTdC7.d.ts.map
27
+ //# sourceMappingURL=Faker-BA4l8DTe.d.ts.map
@@ -1,52 +1,10 @@
1
1
  import "./chunk-C0LytTxp.js";
2
- import { posix } from "node:path";
2
+ import { containsCircularRef, jsStringEscape } from "@kubb/ast/utils";
3
3
  import { ast } from "@kubb/core";
4
4
  import { functionPrinter } from "@kubb/plugin-ts";
5
5
  import { File, Function } from "@kubb/renderer-jsx";
6
+ import { posix } from "node:path";
6
7
  import { Fragment, jsx, jsxs } from "@kubb/renderer-jsx/jsx-runtime";
7
- //#region ../../internals/utils/src/string.ts
8
- /**
9
- * Strips a single matching pair of `"..."`, `'...'`, or `` `...` `` from both ends of `text`.
10
- * Returns the string unchanged when no balanced quote pair is found.
11
- *
12
- * @example
13
- * trimQuotes('"hello"') // 'hello'
14
- * trimQuotes('hello') // 'hello'
15
- */
16
- function trimQuotes(text) {
17
- if (text.length >= 2) {
18
- const first = text[0];
19
- const last = text[text.length - 1];
20
- if (first === "\"" && last === "\"" || first === "'" && last === "'" || first === "`" && last === "`") return text.slice(1, -1);
21
- }
22
- return text;
23
- }
24
- /**
25
- * Escapes characters that are not allowed inside JS string literals.
26
- * Handles quotes, backslashes, and Unicode line terminators (U+2028 / U+2029).
27
- *
28
- * @see http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
29
- *
30
- * @example
31
- * ```ts
32
- * jsStringEscape('say "hi"\nbye') // 'say \\"hi\\"\\nbye'
33
- * ```
34
- */
35
- function jsStringEscape(input) {
36
- return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
37
- switch (character) {
38
- case "\"":
39
- case "'":
40
- case "\\": return `\\${character}`;
41
- case "\n": return "\\n";
42
- case "\r": return "\\r";
43
- case "\u2028": return "\\u2028";
44
- case "\u2029": return "\\u2029";
45
- default: return "";
46
- }
47
- });
48
- }
49
- //#endregion
50
8
  //#region src/utils.ts
51
9
  /**
52
10
  * Returns the `@faker-js/faker` named export for a locale code.
@@ -140,14 +98,14 @@ function buildResponseUnionSchema(node, resolver) {
140
98
  if (responses.length === 1) {
141
99
  const schema = responses[0].content?.[0]?.schema;
142
100
  if (schema && shouldInlineSingleResponseSchema(schema)) return schema;
143
- return ast.createSchema({
101
+ return ast.factory.createSchema({
144
102
  type: "ref",
145
103
  name: resolver.resolveResponseStatusName(node, responses[0].statusCode)
146
104
  });
147
105
  }
148
- return ast.createSchema({
106
+ return ast.factory.createSchema({
149
107
  type: "union",
150
- members: responses.map((response) => ast.createSchema({
108
+ members: responses.map((response) => ast.factory.createSchema({
151
109
  type: "ref",
152
110
  name: resolver.resolveResponseStatusName(node, response.statusCode)
153
111
  }))
@@ -263,12 +221,9 @@ function Faker({ node, description, name, typeName, printer, seed, canOverride }
263
221
  const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
264
222
  if (!useGenericOverride) {
265
223
  const dataParamName = /\bdata\b/.test(fakerTextWithOverride) ? "data" : "_data";
266
- const params = ast.createFunctionParameters({ params: [ast.createFunctionParameter({
224
+ const params = ast.factory.createFunctionParameters({ params: [ast.factory.createFunctionParameter({
267
225
  name: dataParamName,
268
- type: ast.createParamsType({
269
- variant: "reference",
270
- name: dataType
271
- }),
226
+ type: dataType,
272
227
  optional: true
273
228
  })] });
274
229
  const paramsSignature = declarationPrinter.print(params) ?? "";
@@ -291,7 +246,7 @@ function Faker({ node, description, name, typeName, printer, seed, canOverride }
291
246
  const functionSignature = `${description ? `/**\n * @description ${jsStringEscape(description)}\n */\n ` : ""}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
292
247
  const seedCode = seed ? `faker.seed(${JSON.stringify(seed)})\n ` : "";
293
248
  const { cyclicSchemas, schemaName } = printer.options;
294
- const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => ast.containsCircularRef(p.schema, {
249
+ const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => containsCircularRef(p.schema, {
295
250
  circularSchemas: cyclicSchemas,
296
251
  excludeName: schemaName
297
252
  })) ? `{
@@ -317,6 +272,6 @@ function Faker({ node, description, name, typeName, printer, seed, canOverride }
317
272
  });
318
273
  }
319
274
  //#endregion
320
- export { resolveParamNameByLocation as a, localeToFakerImport as i, buildResponseUnionSchema as n, resolveTypeReference as o, canOverrideSchema as r, trimQuotes as s, Faker as t };
275
+ export { resolveParamNameByLocation as a, localeToFakerImport as i, buildResponseUnionSchema as n, resolveTypeReference as o, canOverrideSchema as r, Faker as t };
321
276
 
322
- //# sourceMappingURL=Faker-DBPx_MVh.js.map
277
+ //# sourceMappingURL=Faker-DUx7jvCo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Faker-DUx7jvCo.js","names":["SCALAR_TYPES","ARRAY_TYPES"],"sources":["../src/utils.ts","../src/components/Faker.tsx"],"sourcesContent":["import { posix } from 'node:path'\nimport { ast } from '@kubb/core'\nimport type { ResolverFaker } from './types.ts'\n\n/**\n * Returns the `@faker-js/faker` named export for a locale code.\n *\n * Without a locale, returns `'faker'` for the default English instance.\n * With a locale, the language code is converted to upper case and joined with any region suffix.\n *\n * @example Default\n * `localeToFakerImport() // 'faker'`\n *\n * @example Simple locale\n * `localeToFakerImport('de') // 'fakerDE'`\n *\n * @example Compound locale\n * `localeToFakerImport('de_AT') // 'fakerDE_AT'`\n */\nexport function localeToFakerImport(locale?: string): string {\n if (!locale) {\n return 'faker'\n }\n\n const parts = locale.split('_')\n parts[0] = parts[0]!.toUpperCase()\n return `faker${parts.join('_')}`\n}\n\n/**\n * Determines if a schema node can be overridden during faker generation.\n */\nexport function canOverrideSchema(node: ast.SchemaNode): boolean {\n return new Set<ast.SchemaNode['type']>([\n 'array',\n 'tuple',\n 'object',\n 'intersection',\n 'union',\n 'enum',\n 'ref',\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n ]).has(node.type)\n}\n\n/**\n * Resolves a parameter name based on its location (path, query, header, etc.) using the provided resolver.\n */\nexport function resolveParamNameByLocation(\n resolver: Pick<ResolverFaker, 'resolvePathParamsName' | 'resolveQueryParamsName' | 'resolveHeaderParamsName' | 'resolveParamName'>,\n node: ast.OperationNode,\n param: ast.ParameterNode,\n): string {\n switch (param.in) {\n case 'path':\n return resolver.resolvePathParamsName(node, param)\n case 'query':\n return resolver.resolveQueryParamsName(node, param)\n case 'header':\n return resolver.resolveHeaderParamsName(node, param)\n default:\n return resolver.resolveParamName(node, param)\n }\n}\n\nfunction shouldInlineSingleResponseSchema(schema: ast.SchemaNode): boolean {\n return new Set<ast.SchemaNode['type']>([\n 'any',\n 'unknown',\n 'void',\n 'null',\n 'array',\n 'tuple',\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n 'union',\n ]).has(schema.type)\n}\n\n/**\n * Builds a response schema as a union of all response statuses.\n * Returns null if no responses are provided, or embeds single simple responses inline.\n */\nexport function buildResponseUnionSchema(node: ast.OperationNode, resolver: ResolverFaker): ast.SchemaNode | null {\n const responses = node.responses.filter((response) => response.content?.[0]?.schema)\n\n if (!responses.length) {\n return null\n }\n\n if (responses.length === 1) {\n const schema = responses[0]!.content?.[0]?.schema\n if (schema && shouldInlineSingleResponseSchema(schema)) {\n return schema\n }\n\n return ast.factory.createSchema({ type: 'ref', name: resolver.resolveResponseStatusName(node, responses[0]!.statusCode) })\n }\n\n return ast.factory.createSchema({\n type: 'union',\n members: responses.map((response) => ast.factory.createSchema({ type: 'ref', name: resolver.resolveResponseStatusName(node, response.statusCode) })),\n })\n}\n\nconst SCALAR_TYPES = new Set<ast.SchemaNode['type']>([\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n])\nconst ARRAY_TYPES = new Set<ast.SchemaNode['type']>(['array'])\n\nfunction toRelativeImportPath(from: string, to: string): string {\n const relativePath = posix.relative(posix.dirname(from), to)\n return relativePath.startsWith('../') ? relativePath : `./${relativePath}`\n}\n\n/**\n * Resolves a type reference, determining if it needs an import statement or inline type reference.\n * Takes into account whether the type can be overridden and the file paths.\n */\nexport function resolveTypeReference({\n node,\n canOverride,\n name,\n typeName,\n filePath,\n typeFilePath,\n}: {\n node: ast.SchemaNode\n canOverride: boolean\n name: string\n typeName: string\n filePath: string\n typeFilePath: string\n}): { importPath?: string; typeName: string } {\n const { usesTypeName } = resolveFakerTypeUsage(node, typeName, canOverride)\n\n if (!usesTypeName) {\n return { typeName }\n }\n\n if (name === typeName) {\n return {\n typeName: `import('${toRelativeImportPath(filePath, typeFilePath)}').${typeName}`,\n }\n }\n\n return {\n importPath: typeFilePath,\n typeName,\n }\n}\n\n/**\n * Maps a schema node type to its corresponding scalar type representation.\n * Returns the type name for enums or the base type (string, number, etc.) for primitives.\n */\nfunction getScalarType(node: ast.SchemaNode, typeName: string): string {\n switch (node.type) {\n case 'string':\n case 'email':\n case 'url':\n case 'uuid':\n return 'string'\n case 'number':\n case 'integer':\n return 'number'\n case 'bigint':\n return 'bigint'\n case 'boolean':\n return 'boolean'\n case 'date':\n case 'time':\n return node.representation === 'date' ? 'Date' : 'string'\n case 'datetime':\n return 'string'\n case 'blob':\n return 'Blob'\n case 'enum':\n return typeName\n default:\n return typeName\n }\n}\n\n/**\n * Resolves faker type usage information for a schema.\n * Determines the data type, return type, and whether it uses the type name.\n */\nexport function resolveFakerTypeUsage(\n node: ast.SchemaNode,\n typeName: string,\n canOverride: boolean,\n): {\n dataType: string\n returnType: string | null\n usesTypeName: boolean\n} {\n const isArray = ARRAY_TYPES.has(node.type)\n const isTuple = node.type === 'tuple'\n const isScalar = SCALAR_TYPES.has(node.type)\n\n let dataType = `Partial<${typeName}>`\n\n if (isArray || isTuple || node.type === 'union' || node.type === 'enum') {\n dataType = typeName\n }\n\n if (isScalar) {\n dataType = getScalarType(node, typeName)\n }\n\n let returnType = canOverride ? typeName : null\n\n if (isScalar) {\n returnType = getScalarType(node, typeName)\n }\n\n return {\n dataType,\n returnType,\n usesTypeName: dataType.includes(typeName) || Boolean(returnType?.includes(typeName)),\n }\n}\n","import { jsStringEscape } from '@kubb/ast/utils'\nimport { ast } from '@kubb/core'\nimport { containsCircularRef } from '@kubb/ast/utils'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { PrinterFakerFactory } from '../printers/printerFaker.ts'\nimport type { PluginFaker } from '../types.ts'\nimport { resolveFakerTypeUsage } from '../utils.ts'\n\ntype Props = {\n name: string\n typeName: string\n node: ast.SchemaNode\n printer: ast.Printer<PrinterFakerFactory>\n seed?: PluginFaker['options']['seed']\n description?: string\n canOverride: boolean\n}\n\nconst OBJECT_TYPES = new Set<ast.SchemaNode['type']>(['object', 'intersection'])\nconst ARRAY_TYPES = new Set<ast.SchemaNode['type']>(['array'])\nconst SCALAR_TYPES = new Set<ast.SchemaNode['type']>([\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n])\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\n\nexport function Faker({ node, description, name, typeName, printer, seed, canOverride }: Props): KubbReactNode {\n const fakerText = printer.print(node) ?? 'undefined'\n\n const isArray = ARRAY_TYPES.has(node.type)\n const isObject = OBJECT_TYPES.has(node.type)\n const isTuple = node.type === 'tuple'\n const isScalar = SCALAR_TYPES.has(node.type)\n\n const useGenericOverride = canOverride && isObject\n const fakerTextWithOverride = (() => {\n if (canOverride && isTuple) return `data || ${fakerText}`\n if (canOverride && isArray) return `[\\n ...${fakerText},\\n ...(data || [])\\n]`\n if (canOverride && isScalar) return `data ?? ${fakerText}`\n return fakerText\n })()\n\n const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride)\n\n if (!useGenericOverride) {\n const usesData = /\\bdata\\b/.test(fakerTextWithOverride)\n const dataParamName = usesData ? 'data' : '_data'\n const params = ast.factory.createFunctionParameters({\n params: [\n ast.factory.createFunctionParameter({\n name: dataParamName,\n type: dataType,\n optional: true,\n }),\n ],\n })\n const paramsSignature = declarationPrinter.print(params) ?? ''\n const returnType = resolvedReturnType\n\n // A `ref` wrapper delegates to another faker. Object fakers are now generic and\n // widen to `Partial<T>` when called with a `Partial<T>`-typed argument, so cast\n // back to the wrapper's declared return type to keep it assignable.\n const returnExpression = node.type === 'ref' && canOverride && returnType ? `${fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function\n export\n name={name}\n JSDoc={{ comments: description ? [`@description ${jsStringEscape(description)}`] : [] }}\n params={canOverride ? paramsSignature : undefined}\n returnType={returnType ?? undefined}\n >\n {seed ? (\n <>\n {`faker.seed(${JSON.stringify(seed)})`}\n <br />\n </>\n ) : undefined}\n {`return ${returnExpression}`}\n </Function>\n </File.Source>\n )\n }\n\n // Generate function with defaultFakeData structure\n const jsdoc = description ? `/**\\n * @description ${jsStringEscape(description)}\\n */\\n ` : ''\n const functionSignature = `${jsdoc}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`\n\n const seedCode = seed ? `faker.seed(${JSON.stringify(seed)})\\n ` : ''\n\n // When the object node has properties that transitively reference a cyclic schema,\n // the printer emits memoizing getters for those properties. Spreading the object\n // literal would immediately invoke those getters, triggering recursive faker calls\n // and causing a stack overflow. Detect this upfront via ast helpers so we can\n // use Object.defineProperty-based merging instead of spread.\n const { cyclicSchemas, schemaName } = printer.options\n const hasGetters =\n node.type === 'object' &&\n !!cyclicSchemas &&\n (node.properties ?? []).some((p) => containsCircularRef(p.schema, { circularSchemas: cyclicSchemas, excludeName: schemaName }))\n\n const functionBody = hasGetters\n ? `{\n ${seedCode}const defaultFakeData = ${fakerText}\n if (data) {\n for (const [key, value] of Object.entries(data)) {\n Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })\n }\n }\n return defaultFakeData as Omit<typeof defaultFakeData, keyof TData> & TData\n}`\n : `{\n ${seedCode}const defaultFakeData = ${fakerText}\n return {\n ...defaultFakeData,\n ...(data || {}),\n } as Omit<typeof defaultFakeData, keyof TData> & TData\n}`\n\n return (\n <File.Source name={name} isExportable isIndexable>\n {functionSignature}\n {functionBody}\n </File.Source>\n )\n}\n"],"mappings":"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"}
@@ -24,54 +24,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  enumerable: true
25
25
  }) : target, mod));
26
26
  //#endregion
27
- let node_path = require("node:path");
27
+ let _kubb_ast_utils = require("@kubb/ast/utils");
28
28
  let _kubb_core = require("@kubb/core");
29
29
  let _kubb_plugin_ts = require("@kubb/plugin-ts");
30
30
  let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
31
+ let node_path = require("node:path");
31
32
  let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
32
- //#region ../../internals/utils/src/string.ts
33
- /**
34
- * Strips a single matching pair of `"..."`, `'...'`, or `` `...` `` from both ends of `text`.
35
- * Returns the string unchanged when no balanced quote pair is found.
36
- *
37
- * @example
38
- * trimQuotes('"hello"') // 'hello'
39
- * trimQuotes('hello') // 'hello'
40
- */
41
- function trimQuotes(text) {
42
- if (text.length >= 2) {
43
- const first = text[0];
44
- const last = text[text.length - 1];
45
- if (first === "\"" && last === "\"" || first === "'" && last === "'" || first === "`" && last === "`") return text.slice(1, -1);
46
- }
47
- return text;
48
- }
49
- /**
50
- * Escapes characters that are not allowed inside JS string literals.
51
- * Handles quotes, backslashes, and Unicode line terminators (U+2028 / U+2029).
52
- *
53
- * @see http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4
54
- *
55
- * @example
56
- * ```ts
57
- * jsStringEscape('say "hi"\nbye') // 'say \\"hi\\"\\nbye'
58
- * ```
59
- */
60
- function jsStringEscape(input) {
61
- return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
62
- switch (character) {
63
- case "\"":
64
- case "'":
65
- case "\\": return `\\${character}`;
66
- case "\n": return "\\n";
67
- case "\r": return "\\r";
68
- case "\u2028": return "\\u2028";
69
- case "\u2029": return "\\u2029";
70
- default: return "";
71
- }
72
- });
73
- }
74
- //#endregion
75
33
  //#region src/utils.ts
76
34
  /**
77
35
  * Returns the `@faker-js/faker` named export for a locale code.
@@ -165,14 +123,14 @@ function buildResponseUnionSchema(node, resolver) {
165
123
  if (responses.length === 1) {
166
124
  const schema = responses[0].content?.[0]?.schema;
167
125
  if (schema && shouldInlineSingleResponseSchema(schema)) return schema;
168
- return _kubb_core.ast.createSchema({
126
+ return _kubb_core.ast.factory.createSchema({
169
127
  type: "ref",
170
128
  name: resolver.resolveResponseStatusName(node, responses[0].statusCode)
171
129
  });
172
130
  }
173
- return _kubb_core.ast.createSchema({
131
+ return _kubb_core.ast.factory.createSchema({
174
132
  type: "union",
175
- members: responses.map((response) => _kubb_core.ast.createSchema({
133
+ members: responses.map((response) => _kubb_core.ast.factory.createSchema({
176
134
  type: "ref",
177
135
  name: resolver.resolveResponseStatusName(node, response.statusCode)
178
136
  }))
@@ -288,12 +246,9 @@ function Faker({ node, description, name, typeName, printer, seed, canOverride }
288
246
  const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride);
289
247
  if (!useGenericOverride) {
290
248
  const dataParamName = /\bdata\b/.test(fakerTextWithOverride) ? "data" : "_data";
291
- const params = _kubb_core.ast.createFunctionParameters({ params: [_kubb_core.ast.createFunctionParameter({
249
+ const params = _kubb_core.ast.factory.createFunctionParameters({ params: [_kubb_core.ast.factory.createFunctionParameter({
292
250
  name: dataParamName,
293
- type: _kubb_core.ast.createParamsType({
294
- variant: "reference",
295
- name: dataType
296
- }),
251
+ type: dataType,
297
252
  optional: true
298
253
  })] });
299
254
  const paramsSignature = declarationPrinter.print(params) ?? "";
@@ -306,17 +261,17 @@ function Faker({ node, description, name, typeName, printer, seed, canOverride }
306
261
  children: /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.Function, {
307
262
  export: true,
308
263
  name,
309
- JSDoc: { comments: description ? [`@description ${jsStringEscape(description)}`] : [] },
264
+ JSDoc: { comments: description ? [`@description ${(0, _kubb_ast_utils.jsStringEscape)(description)}`] : [] },
310
265
  params: canOverride ? paramsSignature : void 0,
311
266
  returnType: returnType ?? void 0,
312
267
  children: [seed ? /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [`faker.seed(${JSON.stringify(seed)})`, /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)("br", {})] }) : void 0, `return ${returnExpression}`]
313
268
  })
314
269
  });
315
270
  }
316
- const functionSignature = `${description ? `/**\n * @description ${jsStringEscape(description)}\n */\n ` : ""}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
271
+ const functionSignature = `${description ? `/**\n * @description ${(0, _kubb_ast_utils.jsStringEscape)(description)}\n */\n ` : ""}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`;
317
272
  const seedCode = seed ? `faker.seed(${JSON.stringify(seed)})\n ` : "";
318
273
  const { cyclicSchemas, schemaName } = printer.options;
319
- const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => _kubb_core.ast.containsCircularRef(p.schema, {
274
+ const functionBody = node.type === "object" && !!cyclicSchemas && (node.properties ?? []).some((p) => (0, _kubb_ast_utils.containsCircularRef)(p.schema, {
320
275
  circularSchemas: cyclicSchemas,
321
276
  excludeName: schemaName
322
277
  })) ? `{
@@ -390,11 +345,5 @@ Object.defineProperty(exports, "resolveTypeReference", {
390
345
  return resolveTypeReference;
391
346
  }
392
347
  });
393
- Object.defineProperty(exports, "trimQuotes", {
394
- enumerable: true,
395
- get: function() {
396
- return trimQuotes;
397
- }
398
- });
399
348
 
400
- //# sourceMappingURL=Faker-DRL0W5Lt.cjs.map
349
+ //# sourceMappingURL=Faker-Ds2xP2-k.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Faker-Ds2xP2-k.cjs","names":["ast","SCALAR_TYPES","ARRAY_TYPES","posix","ast","File","Function"],"sources":["../src/utils.ts","../src/components/Faker.tsx"],"sourcesContent":["import { posix } from 'node:path'\nimport { ast } from '@kubb/core'\nimport type { ResolverFaker } from './types.ts'\n\n/**\n * Returns the `@faker-js/faker` named export for a locale code.\n *\n * Without a locale, returns `'faker'` for the default English instance.\n * With a locale, the language code is converted to upper case and joined with any region suffix.\n *\n * @example Default\n * `localeToFakerImport() // 'faker'`\n *\n * @example Simple locale\n * `localeToFakerImport('de') // 'fakerDE'`\n *\n * @example Compound locale\n * `localeToFakerImport('de_AT') // 'fakerDE_AT'`\n */\nexport function localeToFakerImport(locale?: string): string {\n if (!locale) {\n return 'faker'\n }\n\n const parts = locale.split('_')\n parts[0] = parts[0]!.toUpperCase()\n return `faker${parts.join('_')}`\n}\n\n/**\n * Determines if a schema node can be overridden during faker generation.\n */\nexport function canOverrideSchema(node: ast.SchemaNode): boolean {\n return new Set<ast.SchemaNode['type']>([\n 'array',\n 'tuple',\n 'object',\n 'intersection',\n 'union',\n 'enum',\n 'ref',\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n ]).has(node.type)\n}\n\n/**\n * Resolves a parameter name based on its location (path, query, header, etc.) using the provided resolver.\n */\nexport function resolveParamNameByLocation(\n resolver: Pick<ResolverFaker, 'resolvePathParamsName' | 'resolveQueryParamsName' | 'resolveHeaderParamsName' | 'resolveParamName'>,\n node: ast.OperationNode,\n param: ast.ParameterNode,\n): string {\n switch (param.in) {\n case 'path':\n return resolver.resolvePathParamsName(node, param)\n case 'query':\n return resolver.resolveQueryParamsName(node, param)\n case 'header':\n return resolver.resolveHeaderParamsName(node, param)\n default:\n return resolver.resolveParamName(node, param)\n }\n}\n\nfunction shouldInlineSingleResponseSchema(schema: ast.SchemaNode): boolean {\n return new Set<ast.SchemaNode['type']>([\n 'any',\n 'unknown',\n 'void',\n 'null',\n 'array',\n 'tuple',\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n 'union',\n ]).has(schema.type)\n}\n\n/**\n * Builds a response schema as a union of all response statuses.\n * Returns null if no responses are provided, or embeds single simple responses inline.\n */\nexport function buildResponseUnionSchema(node: ast.OperationNode, resolver: ResolverFaker): ast.SchemaNode | null {\n const responses = node.responses.filter((response) => response.content?.[0]?.schema)\n\n if (!responses.length) {\n return null\n }\n\n if (responses.length === 1) {\n const schema = responses[0]!.content?.[0]?.schema\n if (schema && shouldInlineSingleResponseSchema(schema)) {\n return schema\n }\n\n return ast.factory.createSchema({ type: 'ref', name: resolver.resolveResponseStatusName(node, responses[0]!.statusCode) })\n }\n\n return ast.factory.createSchema({\n type: 'union',\n members: responses.map((response) => ast.factory.createSchema({ type: 'ref', name: resolver.resolveResponseStatusName(node, response.statusCode) })),\n })\n}\n\nconst SCALAR_TYPES = new Set<ast.SchemaNode['type']>([\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n])\nconst ARRAY_TYPES = new Set<ast.SchemaNode['type']>(['array'])\n\nfunction toRelativeImportPath(from: string, to: string): string {\n const relativePath = posix.relative(posix.dirname(from), to)\n return relativePath.startsWith('../') ? relativePath : `./${relativePath}`\n}\n\n/**\n * Resolves a type reference, determining if it needs an import statement or inline type reference.\n * Takes into account whether the type can be overridden and the file paths.\n */\nexport function resolveTypeReference({\n node,\n canOverride,\n name,\n typeName,\n filePath,\n typeFilePath,\n}: {\n node: ast.SchemaNode\n canOverride: boolean\n name: string\n typeName: string\n filePath: string\n typeFilePath: string\n}): { importPath?: string; typeName: string } {\n const { usesTypeName } = resolveFakerTypeUsage(node, typeName, canOverride)\n\n if (!usesTypeName) {\n return { typeName }\n }\n\n if (name === typeName) {\n return {\n typeName: `import('${toRelativeImportPath(filePath, typeFilePath)}').${typeName}`,\n }\n }\n\n return {\n importPath: typeFilePath,\n typeName,\n }\n}\n\n/**\n * Maps a schema node type to its corresponding scalar type representation.\n * Returns the type name for enums or the base type (string, number, etc.) for primitives.\n */\nfunction getScalarType(node: ast.SchemaNode, typeName: string): string {\n switch (node.type) {\n case 'string':\n case 'email':\n case 'url':\n case 'uuid':\n return 'string'\n case 'number':\n case 'integer':\n return 'number'\n case 'bigint':\n return 'bigint'\n case 'boolean':\n return 'boolean'\n case 'date':\n case 'time':\n return node.representation === 'date' ? 'Date' : 'string'\n case 'datetime':\n return 'string'\n case 'blob':\n return 'Blob'\n case 'enum':\n return typeName\n default:\n return typeName\n }\n}\n\n/**\n * Resolves faker type usage information for a schema.\n * Determines the data type, return type, and whether it uses the type name.\n */\nexport function resolveFakerTypeUsage(\n node: ast.SchemaNode,\n typeName: string,\n canOverride: boolean,\n): {\n dataType: string\n returnType: string | null\n usesTypeName: boolean\n} {\n const isArray = ARRAY_TYPES.has(node.type)\n const isTuple = node.type === 'tuple'\n const isScalar = SCALAR_TYPES.has(node.type)\n\n let dataType = `Partial<${typeName}>`\n\n if (isArray || isTuple || node.type === 'union' || node.type === 'enum') {\n dataType = typeName\n }\n\n if (isScalar) {\n dataType = getScalarType(node, typeName)\n }\n\n let returnType = canOverride ? typeName : null\n\n if (isScalar) {\n returnType = getScalarType(node, typeName)\n }\n\n return {\n dataType,\n returnType,\n usesTypeName: dataType.includes(typeName) || Boolean(returnType?.includes(typeName)),\n }\n}\n","import { jsStringEscape } from '@kubb/ast/utils'\nimport { ast } from '@kubb/core'\nimport { containsCircularRef } from '@kubb/ast/utils'\nimport { functionPrinter } from '@kubb/plugin-ts'\nimport { File, Function } from '@kubb/renderer-jsx'\nimport type { KubbReactNode } from '@kubb/renderer-jsx/types'\nimport type { PrinterFakerFactory } from '../printers/printerFaker.ts'\nimport type { PluginFaker } from '../types.ts'\nimport { resolveFakerTypeUsage } from '../utils.ts'\n\ntype Props = {\n name: string\n typeName: string\n node: ast.SchemaNode\n printer: ast.Printer<PrinterFakerFactory>\n seed?: PluginFaker['options']['seed']\n description?: string\n canOverride: boolean\n}\n\nconst OBJECT_TYPES = new Set<ast.SchemaNode['type']>(['object', 'intersection'])\nconst ARRAY_TYPES = new Set<ast.SchemaNode['type']>(['array'])\nconst SCALAR_TYPES = new Set<ast.SchemaNode['type']>([\n 'string',\n 'email',\n 'url',\n 'uuid',\n 'number',\n 'integer',\n 'bigint',\n 'boolean',\n 'date',\n 'time',\n 'datetime',\n 'blob',\n 'enum',\n])\nconst declarationPrinter = functionPrinter({ mode: 'declaration' })\n\nexport function Faker({ node, description, name, typeName, printer, seed, canOverride }: Props): KubbReactNode {\n const fakerText = printer.print(node) ?? 'undefined'\n\n const isArray = ARRAY_TYPES.has(node.type)\n const isObject = OBJECT_TYPES.has(node.type)\n const isTuple = node.type === 'tuple'\n const isScalar = SCALAR_TYPES.has(node.type)\n\n const useGenericOverride = canOverride && isObject\n const fakerTextWithOverride = (() => {\n if (canOverride && isTuple) return `data || ${fakerText}`\n if (canOverride && isArray) return `[\\n ...${fakerText},\\n ...(data || [])\\n]`\n if (canOverride && isScalar) return `data ?? ${fakerText}`\n return fakerText\n })()\n\n const { dataType, returnType: resolvedReturnType } = resolveFakerTypeUsage(node, typeName, canOverride)\n\n if (!useGenericOverride) {\n const usesData = /\\bdata\\b/.test(fakerTextWithOverride)\n const dataParamName = usesData ? 'data' : '_data'\n const params = ast.factory.createFunctionParameters({\n params: [\n ast.factory.createFunctionParameter({\n name: dataParamName,\n type: dataType,\n optional: true,\n }),\n ],\n })\n const paramsSignature = declarationPrinter.print(params) ?? ''\n const returnType = resolvedReturnType\n\n // A `ref` wrapper delegates to another faker. Object fakers are now generic and\n // widen to `Partial<T>` when called with a `Partial<T>`-typed argument, so cast\n // back to the wrapper's declared return type to keep it assignable.\n const returnExpression = node.type === 'ref' && canOverride && returnType ? `${fakerTextWithOverride} as ${returnType}` : fakerTextWithOverride\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function\n export\n name={name}\n JSDoc={{ comments: description ? [`@description ${jsStringEscape(description)}`] : [] }}\n params={canOverride ? paramsSignature : undefined}\n returnType={returnType ?? undefined}\n >\n {seed ? (\n <>\n {`faker.seed(${JSON.stringify(seed)})`}\n <br />\n </>\n ) : undefined}\n {`return ${returnExpression}`}\n </Function>\n </File.Source>\n )\n }\n\n // Generate function with defaultFakeData structure\n const jsdoc = description ? `/**\\n * @description ${jsStringEscape(description)}\\n */\\n ` : ''\n const functionSignature = `${jsdoc}export function ${name}<TData extends Partial<${typeName}> = object>(data?: TData)`\n\n const seedCode = seed ? `faker.seed(${JSON.stringify(seed)})\\n ` : ''\n\n // When the object node has properties that transitively reference a cyclic schema,\n // the printer emits memoizing getters for those properties. Spreading the object\n // literal would immediately invoke those getters, triggering recursive faker calls\n // and causing a stack overflow. Detect this upfront via ast helpers so we can\n // use Object.defineProperty-based merging instead of spread.\n const { cyclicSchemas, schemaName } = printer.options\n const hasGetters =\n node.type === 'object' &&\n !!cyclicSchemas &&\n (node.properties ?? []).some((p) => containsCircularRef(p.schema, { circularSchemas: cyclicSchemas, excludeName: schemaName }))\n\n const functionBody = hasGetters\n ? `{\n ${seedCode}const defaultFakeData = ${fakerText}\n if (data) {\n for (const [key, value] of Object.entries(data)) {\n Object.defineProperty(defaultFakeData, key, { value, configurable: true, writable: true, enumerable: true })\n }\n }\n return defaultFakeData as Omit<typeof defaultFakeData, keyof TData> & TData\n}`\n : `{\n ${seedCode}const defaultFakeData = ${fakerText}\n return {\n ...defaultFakeData,\n ...(data || {}),\n } as Omit<typeof defaultFakeData, keyof TData> & TData\n}`\n\n return (\n <File.Source name={name} isExportable isIndexable>\n {functionSignature}\n {functionBody}\n </File.Source>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,oBAAoB,QAAyB;CAC3D,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,QAAQ,OAAO,MAAM,GAAG;CAC9B,MAAM,KAAK,MAAM,EAAE,CAAE,YAAY;CACjC,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC/B;;;;AAKA,SAAgB,kBAAkB,MAA+B;CAC/D,OAAO,IAAI,IAA4B;EACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;AAClB;;;;AAKA,SAAgB,2BACd,UACA,MACA,OACQ;CACR,QAAQ,MAAM,IAAd;EACE,KAAK,QACH,OAAO,SAAS,sBAAsB,MAAM,KAAK;EACnD,KAAK,SACH,OAAO,SAAS,uBAAuB,MAAM,KAAK;EACpD,KAAK,UACH,OAAO,SAAS,wBAAwB,MAAM,KAAK;EACrD,SACE,OAAO,SAAS,iBAAiB,MAAM,KAAK;CAChD;AACF;AAEA,SAAS,iCAAiC,QAAiC;CACzE,OAAO,IAAI,IAA4B;EACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI;AACpB;;;;;AAMA,SAAgB,yBAAyB,MAAyB,UAAgD;CAChH,MAAM,YAAY,KAAK,UAAU,QAAQ,aAAa,SAAS,UAAU,EAAE,EAAE,MAAM;CAEnF,IAAI,CAAC,UAAU,QACb,OAAO;CAGT,IAAI,UAAU,WAAW,GAAG;EAC1B,MAAM,SAAS,UAAU,EAAE,CAAE,UAAU,EAAE,EAAE;EAC3C,IAAI,UAAU,iCAAiC,MAAM,GACnD,OAAO;EAGT,OAAOA,WAAAA,IAAI,QAAQ,aAAa;GAAE,MAAM;GAAO,MAAM,SAAS,0BAA0B,MAAM,UAAU,EAAE,CAAE,UAAU;EAAE,CAAC;CAC3H;CAEA,OAAOA,WAAAA,IAAI,QAAQ,aAAa;EAC9B,MAAM;EACN,SAAS,UAAU,KAAK,aAAaA,WAAAA,IAAI,QAAQ,aAAa;GAAE,MAAM;GAAO,MAAM,SAAS,0BAA0B,MAAM,SAAS,UAAU;EAAE,CAAC,CAAC;CACrJ,CAAC;AACH;AAEA,MAAMC,iBAAe,IAAI,IAA4B;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAMC,gBAAc,IAAI,IAA4B,CAAC,OAAO,CAAC;AAE7D,SAAS,qBAAqB,MAAc,IAAoB;CAC9D,MAAM,eAAeC,UAAAA,MAAM,SAASA,UAAAA,MAAM,QAAQ,IAAI,GAAG,EAAE;CAC3D,OAAO,aAAa,WAAW,KAAK,IAAI,eAAe,KAAK;AAC9D;;;;;AAMA,SAAgB,qBAAqB,EACnC,MACA,aACA,MACA,UACA,UACA,gBAQ4C;CAC5C,MAAM,EAAE,iBAAiB,sBAAsB,MAAM,UAAU,WAAW;CAE1E,IAAI,CAAC,cACH,OAAO,EAAE,SAAS;CAGpB,IAAI,SAAS,UACX,OAAO,EACL,UAAU,WAAW,qBAAqB,UAAU,YAAY,EAAE,KAAK,WACzE;CAGF,OAAO;EACL,YAAY;EACZ;CACF;AACF;;;;;AAMA,SAAS,cAAc,MAAsB,UAA0B;CACrE,QAAQ,KAAK,MAAb;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,QACH,OAAO;EACT,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,KAAK;EACL,KAAK,QACH,OAAO,KAAK,mBAAmB,SAAS,SAAS;EACnD,KAAK,YACH,OAAO;EACT,KAAK,QACH,OAAO;EACT,KAAK,QACH,OAAO;EACT,SACE,OAAO;CACX;AACF;;;;;AAMA,SAAgB,sBACd,MACA,UACA,aAKA;CACA,MAAM,UAAUD,cAAY,IAAI,KAAK,IAAI;CACzC,MAAM,UAAU,KAAK,SAAS;CAC9B,MAAM,WAAWD,eAAa,IAAI,KAAK,IAAI;CAE3C,IAAI,WAAW,WAAW,SAAS;CAEnC,IAAI,WAAW,WAAW,KAAK,SAAS,WAAW,KAAK,SAAS,QAC/D,WAAW;CAGb,IAAI,UACF,WAAW,cAAc,MAAM,QAAQ;CAGzC,IAAI,aAAa,cAAc,WAAW;CAE1C,IAAI,UACF,aAAa,cAAc,MAAM,QAAQ;CAG3C,OAAO;EACL;EACA;EACA,cAAc,SAAS,SAAS,QAAQ,KAAK,QAAQ,YAAY,SAAS,QAAQ,CAAC;CACrF;AACF;;;AC5OA,MAAM,eAAe,IAAI,IAA4B,CAAC,UAAU,cAAc,CAAC;AAC/E,MAAM,cAAc,IAAI,IAA4B,CAAC,OAAO,CAAC;AAC7D,MAAM,eAAe,IAAI,IAA4B;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AACD,MAAM,sBAAA,GAAA,gBAAA,gBAAA,CAAqC,EAAE,MAAM,cAAc,CAAC;AAElE,SAAgB,MAAM,EAAE,MAAM,aAAa,MAAM,UAAU,SAAS,MAAM,eAAqC;CAC7G,MAAM,YAAY,QAAQ,MAAM,IAAI,KAAK;CAEzC,MAAM,UAAU,YAAY,IAAI,KAAK,IAAI;CACzC,MAAM,WAAW,aAAa,IAAI,KAAK,IAAI;CAC3C,MAAM,UAAU,KAAK,SAAS;CAC9B,MAAM,WAAW,aAAa,IAAI,KAAK,IAAI;CAE3C,MAAM,qBAAqB,eAAe;CAC1C,MAAM,+BAA+B;EACnC,IAAI,eAAe,SAAS,OAAO,WAAW;EAC9C,IAAI,eAAe,SAAS,OAAO,WAAW,UAAU;EACxD,IAAI,eAAe,UAAU,OAAO,WAAW;EAC/C,OAAO;CACT,EAAA,CAAG;CAEH,MAAM,EAAE,UAAU,YAAY,uBAAuB,sBAAsB,MAAM,UAAU,WAAW;CAEtG,IAAI,CAAC,oBAAoB;EAEvB,MAAM,gBADW,WAAW,KAAK,qBACJ,IAAI,SAAS;EAC1C,MAAM,SAASG,WAAAA,IAAI,QAAQ,yBAAyB,EAClD,QAAQ,CACNA,WAAAA,IAAI,QAAQ,wBAAwB;GAClC,MAAM;GACN,MAAM;GACN,UAAU;EACZ,CAAC,CACH,EACF,CAAC;EACD,MAAM,kBAAkB,mBAAmB,MAAM,MAAM,KAAK;EAC5D,MAAM,aAAa;EAKnB,MAAM,mBAAmB,KAAK,SAAS,SAAS,eAAe,aAAa,GAAG,sBAAsB,MAAM,eAAe;EAE1H,OACE,iBAAA,GAAA,+BAAA,IAAA,CAACC,mBAAAA,KAAK,QAAN;GAAmB;GAAM,cAAA;GAAa,aAAA;aACpC,iBAAA,GAAA,+BAAA,KAAA,CAACC,mBAAAA,UAAD;IACE,QAAA;IACM;IACN,OAAO,EAAE,UAAU,cAAc,CAAC,iBAAA,GAAA,gBAAA,eAAA,CAA+B,WAAW,GAAG,IAAI,CAAC,EAAE;IACtF,QAAQ,cAAc,kBAAkB,KAAA;IACxC,YAAY,cAAc,KAAA;cAL5B,CAOG,OACC,iBAAA,GAAA,+BAAA,KAAA,CAAA,+BAAA,UAAA,EAAA,UAAA,CACG,cAAc,KAAK,UAAU,IAAI,EAAE,IACpC,iBAAA,GAAA,+BAAA,IAAA,CAAC,MAAD,CAAK,CAAA,CACL,EAAA,CAAA,IACA,KAAA,GACH,UAAU,kBACH;;EACC,CAAA;CAEjB;CAIA,MAAM,oBAAoB,GADZ,cAAc,2BAAA,GAAA,gBAAA,eAAA,CAAyC,WAAW,EAAE,eAAe,GAC9D,kBAAkB,KAAK,yBAAyB,SAAS;CAE5F,MAAM,WAAW,OAAO,cAAc,KAAK,UAAU,IAAI,EAAE,SAAS;CAOpE,MAAM,EAAE,eAAe,eAAe,QAAQ;CAM9C,MAAM,eAJJ,KAAK,SAAS,YACd,CAAC,CAAC,kBACD,KAAK,cAAc,CAAC,EAAA,CAAG,MAAM,OAAA,GAAA,gBAAA,oBAAA,CAA0B,EAAE,QAAQ;EAAE,iBAAiB;EAAe,aAAa;CAAW,CAAC,CAAC,IAG5H;IACF,SAAS,0BAA0B,UAAU;;;;;;;KAQ3C;IACF,SAAS,0BAA0B,UAAU;;;;;;CAO/C,OACE,iBAAA,GAAA,+BAAA,KAAA,CAACD,mBAAAA,KAAK,QAAN;EAAmB;EAAM,cAAA;EAAa,aAAA;YAAtC,CACG,mBACA,YACU;;AAEjB"}
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Faker = require("./Faker-DRL0W5Lt.cjs");
2
+ const require_Faker = require("./Faker-Ds2xP2-k.cjs");
3
3
  exports.Faker = require_Faker.Faker;
@@ -1,2 +1,2 @@
1
- import { t as Faker } from "./Faker-SBhWTdC7.js";
1
+ import { t as Faker } from "./Faker-BA4l8DTe.js";
2
2
  export { Faker };
@@ -1,2 +1,2 @@
1
- import { t as Faker } from "./Faker-DBPx_MVh.js";
1
+ import { t as Faker } from "./Faker-DUx7jvCo.js";
2
2
  export { Faker };
@@ -1,5 +1,5 @@
1
1
  import { t as __name } from "./chunk-C0LytTxp.js";
2
- import { o as PluginFaker } from "./printerFaker-DXS861Q0.js";
2
+ import { o as PluginFaker } from "./printerFaker-BzEB43Jz.js";
3
3
 
4
4
  //#region src/generators/fakerGenerator.d.ts
5
5
  /**
@@ -11,4 +11,4 @@ import { o as PluginFaker } from "./printerFaker-DXS861Q0.js";
11
11
  declare const fakerGenerator: import("@kubb/core").Generator<PluginFaker, unknown>;
12
12
  //#endregion
13
13
  export { fakerGenerator as t };
14
- //# sourceMappingURL=fakerGenerator-Duc28_FK.d.ts.map
14
+ //# sourceMappingURL=fakerGenerator-BNysC6rh.d.ts.map
@@ -1,4 +1,5 @@
1
- const require_Faker = require("./Faker-DRL0W5Lt.cjs");
1
+ const require_Faker = require("./Faker-Ds2xP2-k.cjs");
2
+ let _kubb_ast_utils = require("@kubb/ast/utils");
2
3
  let _kubb_core = require("@kubb/core");
3
4
  let _kubb_plugin_ts = require("@kubb/plugin-ts");
4
5
  let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
@@ -48,40 +49,6 @@ function rewriteAliasedImports(text, aliases) {
48
49
  return Array.from(aliases).reduce((acc, [name, alias]) => acc.replace(new RegExp(`\\b${escapeRegExp(name)}\\b`, "g"), alias), text);
49
50
  }
50
51
  //#endregion
51
- //#region ../../internals/utils/src/object.ts
52
- /**
53
- * Serializes a primitive value to a JSON string literal, stripping any surrounding quote characters first.
54
- *
55
- * @example
56
- * stringify('hello') // '"hello"'
57
- * stringify('"hello"') // '"hello"'
58
- */
59
- function stringify(value) {
60
- if (value === void 0 || value === null) return "\"\"";
61
- return JSON.stringify(require_Faker.trimQuotes(value.toString()));
62
- }
63
- //#endregion
64
- //#region ../../internals/utils/src/regexp.ts
65
- /**
66
- * Converts a pattern string into a `new RegExp(...)` constructor call or a regex literal string.
67
- * Inline flags expressed as `^(?im)` prefixes are extracted and applied to the resulting expression.
68
- * Pass `null` as the second argument to emit a `/pattern/flags` literal instead.
69
- *
70
- * @example
71
- * toRegExpString('^(?im)foo') // → 'new RegExp("foo", "im")'
72
- * toRegExpString('^(?im)foo', null) // → '/foo/im'
73
- */
74
- function toRegExpString(text, func = "RegExp") {
75
- const raw = require_Faker.trimQuotes(text);
76
- const match = raw.match(/^\^(\(\?([igmsuy]+)\))/i);
77
- const replacementTarget = match?.[1] ?? "";
78
- const matchedFlags = match?.[2];
79
- const cleaned = raw.replace(/^\\?\//, "").replace(/\\?\/$/, "").replace(replacementTarget, "");
80
- const { source, flags } = new RegExp(cleaned, matchedFlags);
81
- if (func === null) return `/${source}/${flags}`;
82
- return `new ${func}(${JSON.stringify(source)}${flags ? `, ${JSON.stringify(flags)}` : ""})`;
83
- }
84
- //#endregion
85
52
  //#region ../../internals/shared/src/operation.ts
86
53
  /**
87
54
  * Maps a content type to the PascalCase suffix used to name per-content-type variants
@@ -194,7 +161,7 @@ const fakerKeywordMapper = {
194
161
  return `{...${items.join(", ...")}}`;
195
162
  },
196
163
  matches: (value = "", regexGenerator = "faker") => {
197
- if (regexGenerator === "randexp") return `${toRegExpString(value, "RandExp")}.gen()`;
164
+ if (regexGenerator === "randexp") return `${(0, _kubb_ast_utils.toRegExpString)(value, "RandExp")}.gen()`;
198
165
  return `faker.helpers.fromRegExp("${value}")`;
199
166
  },
200
167
  email: () => "faker.internet.email()",
@@ -205,7 +172,7 @@ function getEnumValues(node) {
205
172
  return node.enumValues ?? [];
206
173
  }
207
174
  function parseEnumValue(value) {
208
- if (typeof value === "string") return stringify(value);
175
+ if (typeof value === "string") return (0, _kubb_ast_utils.stringify)(value);
209
176
  return value;
210
177
  }
211
178
  /** Reads the discriminator literal off a variant, or `undefined` when it can't be determined. */
@@ -268,7 +235,7 @@ const printerFaker = _kubb_core.ast.definePrinter((options) => {
268
235
  return fakerKeywordMapper.time(node.representation ?? "string", this.options.dateParser);
269
236
  },
270
237
  ref(node) {
271
- const refName = node.ref ? _kubb_core.ast.extractRefName(node.ref) ?? node.name ?? node.schema?.name : node.name ?? node.schema?.name;
238
+ const refName = node.ref ? (0, _kubb_ast_utils.extractRefName)(node.ref) ?? node.name ?? node.schema?.name : node.name ?? node.schema?.name;
272
239
  if (!refName) throw new Error("Name not defined for ref node");
273
240
  if (this.options.schemaName && refName === this.options.schemaName) return "undefined as any";
274
241
  const resolvedName = node.ref ? this.options.resolver.resolveName(refName) : refName;
@@ -281,7 +248,7 @@ const printerFaker = _kubb_core.ast.definePrinter((options) => {
281
248
  union(node) {
282
249
  const { discriminatorPropertyName } = node;
283
250
  const baseTypeName = this.options.typeName;
284
- const items = (node.members ?? []).map((member) => {
251
+ const items = (0, _kubb_ast_utils.mapSchemaMembers)(node, (member) => {
285
252
  const value = discriminatorPropertyName ? getDiscriminatorValue(member, discriminatorPropertyName) : void 0;
286
253
  if (baseTypeName && value !== void 0) return printNested(member, {
287
254
  typeName: `Extract<NonNullable<${baseTypeName}>, { ${JSON.stringify(discriminatorPropertyName)}: ${parseEnumValue(value)} }>`,
@@ -292,18 +259,18 @@ const printerFaker = _kubb_core.ast.definePrinter((options) => {
292
259
  nestedInObject: true,
293
260
  nestedInUnion: true
294
261
  });
295
- }).filter((item) => Boolean(item));
262
+ }).map(({ output }) => output).filter((item) => Boolean(item));
296
263
  return fakerKeywordMapper.union(items);
297
264
  },
298
265
  intersection(node) {
299
- const items = (node.members ?? []).map((member) => printNested(member, { nestedInObject: true })).filter((item) => Boolean(item));
266
+ const items = (0, _kubb_ast_utils.mapSchemaMembers)(node, (member) => printNested(member, { nestedInObject: true })).map(({ output }) => output).filter((item) => Boolean(item));
300
267
  return fakerKeywordMapper.and(items);
301
268
  },
302
269
  array(node) {
303
- const items = (node.items ?? []).map((member) => printNested(member, {
270
+ const items = (0, _kubb_ast_utils.mapSchemaItems)(node, (member) => printNested(member, {
304
271
  typeName: this.options.typeName ? `NonNullable<${this.options.typeName}>[number]` : void 0,
305
272
  nestedInObject: true
306
- })).filter((item) => Boolean(item));
273
+ })).map(({ output }) => output).filter((item) => Boolean(item));
307
274
  return fakerKeywordMapper.array(items, node.min, node.max);
308
275
  },
309
276
  tuple(node) {
@@ -315,18 +282,18 @@ const printerFaker = _kubb_core.ast.definePrinter((options) => {
315
282
  },
316
283
  object(node) {
317
284
  const cyclicSchemas = this.options.cyclicSchemas;
318
- return `{${(node.properties ?? []).map((property) => {
319
- if (this.options.mapper && Object.hasOwn(this.options.mapper, property.name)) return `"${property.name}": ${this.options.mapper[property.name]}`;
285
+ return (0, _kubb_ast_utils.buildObject)((node.properties ?? []).map((property) => {
286
+ if (this.options.mapper && Object.hasOwn(this.options.mapper, property.name)) return `${(0, _kubb_ast_utils.objectKey)(property.name)}: ${this.options.mapper[property.name]}`;
320
287
  const value = printNested(property.schema, {
321
288
  typeName: this.options.typeName ? indexedTypeName(this.options.typeName, property.name, this.options.nestedInUnion) : void 0,
322
289
  nestedInObject: true
323
290
  }) ?? "undefined";
324
- if (cyclicSchemas && _kubb_core.ast.containsCircularRef(property.schema, {
291
+ if (cyclicSchemas && (0, _kubb_ast_utils.containsCircularRef)(property.schema, {
325
292
  circularSchemas: cyclicSchemas,
326
293
  excludeName: this.options.schemaName
327
- })) return `get ${property.name}() { const _value = ${value}; Object.defineProperty(this, ${JSON.stringify(property.name)}, { value: _value, configurable: true, writable: true, enumerable: true }); return _value }`;
328
- return `"${property.name}": ${value}`;
329
- }).join(",")}}`;
294
+ })) return `get ${(0, _kubb_ast_utils.objectKey)(property.name)}() { const _value = ${value}; Object.defineProperty(this, ${JSON.stringify(property.name)}, { value: _value, configurable: true, writable: true, enumerable: true }); return _value }`;
295
+ return `${(0, _kubb_ast_utils.objectKey)(property.name)}: ${value}`;
296
+ }));
330
297
  },
331
298
  ...options.nodes
332
299
  },
@@ -345,7 +312,7 @@ const printerFaker = _kubb_core.ast.definePrinter((options) => {
345
312
  */
346
313
  const fakerGenerator = (0, _kubb_core.defineGenerator)({
347
314
  name: "faker",
348
- renderer: _kubb_renderer_jsx.jsxRendererSync,
315
+ renderer: _kubb_renderer_jsx.jsxRenderer,
349
316
  schema(node, ctx) {
350
317
  const { adapter, config, resolver, root } = ctx;
351
318
  const { output, group, dateParser, regexGenerator, mapper, seed, locale, printer } = ctx.options;
@@ -353,11 +320,10 @@ const fakerGenerator = (0, _kubb_core.defineGenerator)({
353
320
  if (!node.name || !pluginTs) return;
354
321
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
355
322
  const schemaName = node.name;
356
- const mode = ctx.getMode(output);
357
323
  const isEnumSchema = !!_kubb_core.ast.narrowSchema(node, _kubb_core.ast.schemaTypes.enum);
358
- const tsEnumType = pluginTs.options?.enumType;
359
- const tsEnumTypeSuffix = pluginTs.options?.enumTypeSuffix ?? "Key";
360
- const schemaTypeName = isEnumSchema && (tsEnumType === "asConst" || tsEnumType === "asPascalConst") ? tsResolver.resolveEnumKeyName({ name: schemaName }, tsEnumTypeSuffix) : tsResolver.resolveTypeName(schemaName);
324
+ const tsEnumType = pluginTs.options?.enum?.type;
325
+ const tsEnumTypeSuffix = pluginTs.options?.enum?.typeSuffix ?? "Key";
326
+ const schemaTypeName = isEnumSchema && tsEnumType === "asConst" ? tsResolver.resolveEnumKeyName({ name: schemaName }, tsEnumTypeSuffix) : tsResolver.resolveTypeName(schemaName);
361
327
  const meta = {
362
328
  name: resolver.resolveName(schemaName),
363
329
  file: resolver.resolveFile({
@@ -409,7 +375,7 @@ const fakerGenerator = (0, _kubb_core.defineGenerator)({
409
375
  output,
410
376
  group: group ?? void 0
411
377
  }).path
412
- })).filter((entry) => entry.path !== meta.file.path), fakerText);
378
+ })), fakerText);
413
379
  return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
414
380
  baseName: meta.file.baseName,
415
381
  path: meta.file.path,
@@ -452,7 +418,7 @@ const fakerGenerator = (0, _kubb_core.defineGenerator)({
452
418
  path: typeReference.importPath,
453
419
  name: [meta.typeName]
454
420
  }),
455
- mode === "split" && usedImports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
421
+ usedImports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
456
422
  root: meta.file.path,
457
423
  path: imp.path,
458
424
  name: imp.name
@@ -479,7 +445,7 @@ const fakerGenerator = (0, _kubb_core.defineGenerator)({
479
445
  const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
480
446
  if (!pluginTs) return;
481
447
  const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
482
- const paramEntries = _kubb_core.ast.caseParams(node.parameters, paramsCasing).map((param) => ({
448
+ const paramEntries = (0, _kubb_ast_utils.caseParams)(node.parameters, paramsCasing).map((param) => ({
483
449
  param,
484
450
  name: require_Faker.resolveParamNameByLocation(resolver, node, param),
485
451
  typeName: require_Faker.resolveParamNameByLocation(tsResolver, node, param)
@@ -498,9 +464,9 @@ const fakerGenerator = (0, _kubb_core.defineGenerator)({
498
464
  }];
499
465
  }
500
466
  const variants = resolveContentTypeVariants(entries, baseName);
501
- const unionSchema = _kubb_core.ast.createSchema({
467
+ const unionSchema = _kubb_core.ast.factory.createSchema({
502
468
  type: "union",
503
- members: variants.map((variant) => _kubb_core.ast.createSchema({
469
+ members: variants.map((variant) => _kubb_core.ast.factory.createSchema({
504
470
  type: "ref",
505
471
  name: variant.name
506
472
  }))
@@ -700,4 +666,4 @@ Object.defineProperty(exports, "printerFaker", {
700
666
  }
701
667
  });
702
668
 
703
- //# sourceMappingURL=fakerGenerator-CVOr0Pwm.cjs.map
669
+ //# sourceMappingURL=fakerGenerator-BeKRKYuy.cjs.map