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

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.
@@ -1,669 +0,0 @@
1
- const require_Faker = require("./Faker-Ds2xP2-k.cjs");
2
- let _kubb_ast_utils = require("@kubb/ast/utils");
3
- let _kubb_core = require("@kubb/core");
4
- let _kubb_plugin_ts = require("@kubb/plugin-ts");
5
- let _kubb_renderer_jsx = require("@kubb/renderer-jsx");
6
- let _kubb_renderer_jsx_jsx_runtime = require("@kubb/renderer-jsx/jsx-runtime");
7
- //#region ../../internals/utils/src/imports.ts
8
- function escapeRegExp(value) {
9
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
10
- }
11
- function getImportNames(entry) {
12
- return (Array.isArray(entry.name) ? entry.name : [entry.name]).map((name) => {
13
- if (typeof name === "string") return name;
14
- return name.name ?? name.propertyName;
15
- }).filter((name) => Boolean(name));
16
- }
17
- function filterUsedImports(imports, text, skipImportNames = []) {
18
- const skip = new Set(skipImportNames);
19
- return imports.filter((entry) => {
20
- return getImportNames(entry).some((name) => {
21
- if (skip.has(name)) return false;
22
- return new RegExp(`\\b${escapeRegExp(name)}\\b(?=\\s*\\()`).test(text);
23
- });
24
- });
25
- }
26
- function aliasConflictingImports(imports, reservedNames) {
27
- const reservedNameSet = new Set(reservedNames);
28
- const aliases = /* @__PURE__ */ new Map();
29
- return {
30
- imports: imports.map((entry) => {
31
- const aliasedNames = (Array.isArray(entry.name) ? entry.name : [entry.name]).map((item) => {
32
- if (typeof item !== "string" || !reservedNameSet.has(item)) return item;
33
- const alias = `${item}Schema`;
34
- aliases.set(item, alias);
35
- return {
36
- propertyName: item,
37
- name: alias
38
- };
39
- });
40
- return aliasedNames.some((item) => typeof item === "object" && item.name) ? {
41
- ...entry,
42
- name: aliasedNames
43
- } : entry;
44
- }),
45
- aliases
46
- };
47
- }
48
- function rewriteAliasedImports(text, aliases) {
49
- return Array.from(aliases).reduce((acc, [name, alias]) => acc.replace(new RegExp(`\\b${escapeRegExp(name)}\\b`, "g"), alias), text);
50
- }
51
- //#endregion
52
- //#region ../../internals/shared/src/operation.ts
53
- /**
54
- * Maps a content type to the PascalCase suffix used to name per-content-type variants
55
- * (e.g. `application/json` → `Json`, `application/xml` → `Xml`, `multipart/form-data` → `FormData`).
56
- */
57
- function getContentTypeSuffix(contentType) {
58
- const baseType = contentType.split(";")[0].trim();
59
- if (baseType === "application/json") return "Json";
60
- if (baseType === "multipart/form-data") return "FormData";
61
- if (baseType === "application/x-www-form-urlencoded") return "FormUrlEncoded";
62
- const parts = (baseType.split("/").pop() ?? baseType).split(/[^a-zA-Z0-9]+/).filter(Boolean);
63
- if (parts.length === 0) return "Unknown";
64
- return parts.map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
65
- }
66
- /**
67
- * Appends a content-type suffix to a base name, keeping a trailing `Data` segment last
68
- * (e.g. `AddPetData` + `Json` → `AddPetJsonData`, `AddPetStatus200` + `Xml` → `AddPetStatus200Xml`).
69
- */
70
- function getPerContentTypeName(baseName, suffix) {
71
- if (baseName.endsWith("Data")) return suffix.endsWith("Data") ? baseName.slice(0, -4) + suffix : `${baseName.slice(0, -4)}${suffix}Data`;
72
- return baseName + suffix;
73
- }
74
- /**
75
- * Resolves per-content-type variant names for a set of content entries, deduplicating suffix
76
- * collisions with a numeric counter. Entries without a schema are skipped. The returned `suffix` is
77
- * the final (possibly counter-augmented) value, so callers can derive parallel names in another
78
- * namespace (e.g. plugin-faker deriving the matching plugin-ts type name).
79
- */
80
- function resolveContentTypeVariants(entries, baseName) {
81
- const usedNames = /* @__PURE__ */ new Set();
82
- return entries.filter((entry) => entry.schema).map((entry) => {
83
- const baseSuffix = getContentTypeSuffix(entry.contentType);
84
- let suffix = baseSuffix;
85
- let name = getPerContentTypeName(baseName, suffix);
86
- let counter = 2;
87
- while (usedNames.has(name)) {
88
- suffix = `${baseSuffix}${counter++}`;
89
- name = getPerContentTypeName(baseName, suffix);
90
- }
91
- usedNames.add(name);
92
- return {
93
- name,
94
- suffix,
95
- schema: entry.schema,
96
- keysToOmit: entry.keysToOmit,
97
- contentType: entry.contentType
98
- };
99
- });
100
- }
101
- //#endregion
102
- //#region src/printers/printerFaker.ts
103
- const fakerKeywordMapper = {
104
- any: () => "undefined",
105
- unknown: () => "undefined",
106
- void: () => "undefined",
107
- number: (min, max) => {
108
- if (max !== void 0 && min !== void 0) return `faker.number.float({ min: ${min}, max: ${max} })`;
109
- if (max !== void 0) return `faker.number.float({ max: ${max} })`;
110
- if (min !== void 0) return `faker.number.float({ min: ${min} })`;
111
- return "faker.number.float()";
112
- },
113
- integer: (min, max) => {
114
- if (max !== void 0 && min !== void 0) return `faker.number.int({ min: ${min}, max: ${max} })`;
115
- if (max !== void 0) return `faker.number.int({ max: ${max} })`;
116
- if (min !== void 0) return `faker.number.int({ min: ${min} })`;
117
- return "faker.number.int()";
118
- },
119
- bigint: () => "faker.number.bigInt()",
120
- string: (min, max) => {
121
- if (max !== void 0 && min !== void 0) return `faker.string.alpha({ length: { min: ${min}, max: ${max} } })`;
122
- if (max !== void 0) return `faker.string.alpha({ length: ${max} })`;
123
- if (min !== void 0) return `faker.string.alpha({ length: ${min} })`;
124
- return "faker.string.alpha()";
125
- },
126
- boolean: () => "faker.datatype.boolean()",
127
- null: () => "null",
128
- array: (items = [], min, max) => {
129
- if (items.length > 1) return `faker.helpers.arrayElements([${items.join(", ")}])`;
130
- const item = items.at(0);
131
- if (min !== void 0 && max !== void 0) return `faker.helpers.multiple(() => (${item}), { count: { min: ${min}, max: ${max} }})`;
132
- if (min !== void 0) return `faker.helpers.multiple(() => (${item}), { count: ${min} })`;
133
- if (max !== void 0) return `faker.helpers.multiple(() => (${item}), { count: { min: 0, max: ${max} }})`;
134
- return `faker.helpers.multiple(() => (${item}))`;
135
- },
136
- tuple: (items = []) => `[${items.join(", ")}]`,
137
- enum: (items = [], type = "any") => `faker.helpers.arrayElement<${type}>([${items.join(", ")}])`,
138
- union: (items = []) => `faker.helpers.arrayElement<any>([${items.join(", ")}])`,
139
- datetime: () => "faker.date.anytime().toISOString()",
140
- date: (representation = "string", parser = "faker") => {
141
- if (representation === "string") {
142
- if (parser !== "faker") return `${parser}(faker.date.anytime()).format("YYYY-MM-DD")`;
143
- return "faker.date.anytime().toISOString().substring(0, 10)";
144
- }
145
- if (parser !== "faker") throw new Error(`type '${representation}' and parser '${parser}' can not work together`);
146
- return "faker.date.anytime()";
147
- },
148
- time: (representation = "string", parser = "faker") => {
149
- if (representation === "string") {
150
- if (parser !== "faker") return `${parser}(faker.date.anytime()).format("HH:mm:ss")`;
151
- return "faker.date.anytime().toISOString().substring(11, 19)";
152
- }
153
- if (parser !== "faker") throw new Error(`type '${representation}' and parser '${parser}' can not work together`);
154
- return "faker.date.anytime()";
155
- },
156
- uuid: () => "faker.string.uuid()",
157
- url: () => "faker.internet.url()",
158
- and: (items = []) => {
159
- if (items.length === 0) return "{}";
160
- if (items.length === 1) return items[0] ?? "{}";
161
- return `{...${items.join(", ...")}}`;
162
- },
163
- matches: (value = "", regexGenerator = "faker") => {
164
- if (regexGenerator === "randexp") return `${(0, _kubb_ast_utils.toRegExpString)(value, "RandExp")}.gen()`;
165
- return `faker.helpers.fromRegExp("${value}")`;
166
- },
167
- email: () => "faker.internet.email()",
168
- blob: () => "faker.image.url() as unknown as Blob"
169
- };
170
- function getEnumValues(node) {
171
- if (node.namedEnumValues?.length) return node.namedEnumValues.map((item) => item.value);
172
- return node.enumValues ?? [];
173
- }
174
- function parseEnumValue(value) {
175
- if (typeof value === "string") return (0, _kubb_ast_utils.stringify)(value);
176
- return value;
177
- }
178
- /** Reads the discriminator literal off a variant, or `undefined` when it can't be determined. */
179
- function getDiscriminatorValue(member, discriminatorPropertyName) {
180
- const prop = _kubb_core.ast.narrowSchema(member, "object")?.properties?.find((p) => p.name === discriminatorPropertyName);
181
- const enumNode = prop ? _kubb_core.ast.narrowSchema(prop.schema, "enum") : null;
182
- return enumNode ? getEnumValues(enumNode)[0] : void 0;
183
- }
184
- /**
185
- * Type expression for an object property's value, indexed off the parent `typeName`.
186
- *
187
- * In a union (`oneOf`), a key that only some branches declare turns a plain `NonNullable<T>[K]`
188
- * into a TS2339 error, so union members guard the access. The breakdown is below.
189
- */
190
- function indexedTypeName(typeName, propertyName, nestedInUnion) {
191
- const key = JSON.stringify(propertyName);
192
- return nestedInUnion ? `(NonNullable<${typeName}> & Record<${key}, unknown>)[${key}]` : `NonNullable<${typeName}>[${key}]`;
193
- }
194
- /**
195
- * Creates a Faker printer that generates mock data generation code from schema nodes.
196
- * Handles circular references gracefully by emitting memoizing getters for cyclic properties.
197
- */
198
- const printerFaker = _kubb_core.ast.definePrinter((options) => {
199
- const printNested = (node, overrideOptions = {}) => {
200
- return printerFaker({
201
- ...options,
202
- ...overrideOptions,
203
- nodes: options.nodes
204
- }).print(node) ?? "undefined";
205
- };
206
- return {
207
- name: "faker",
208
- options,
209
- nodes: {
210
- any: () => fakerKeywordMapper.any(),
211
- unknown: () => fakerKeywordMapper.unknown(),
212
- void: () => fakerKeywordMapper.void(),
213
- boolean: () => fakerKeywordMapper.boolean(),
214
- null: () => fakerKeywordMapper.null(),
215
- string(node) {
216
- if (node.pattern) return fakerKeywordMapper.matches(node.pattern, this.options.regexGenerator);
217
- return fakerKeywordMapper.string(node.min, node.max);
218
- },
219
- email: () => fakerKeywordMapper.email(),
220
- url: () => fakerKeywordMapper.url(),
221
- uuid: () => fakerKeywordMapper.uuid(),
222
- number(node) {
223
- return fakerKeywordMapper.number(node.min, node.max);
224
- },
225
- integer(node) {
226
- return fakerKeywordMapper.integer(node.min, node.max);
227
- },
228
- bigint: () => fakerKeywordMapper.bigint(),
229
- blob: () => fakerKeywordMapper.blob(),
230
- datetime: () => fakerKeywordMapper.datetime(),
231
- date(node) {
232
- return fakerKeywordMapper.date(node.representation ?? "string", this.options.dateParser);
233
- },
234
- time(node) {
235
- return fakerKeywordMapper.time(node.representation ?? "string", this.options.dateParser);
236
- },
237
- ref(node) {
238
- const refName = node.ref ? (0, _kubb_ast_utils.extractRefName)(node.ref) ?? node.name ?? node.schema?.name : node.name ?? node.schema?.name;
239
- if (!refName) throw new Error("Name not defined for ref node");
240
- if (this.options.schemaName && refName === this.options.schemaName) return "undefined as any";
241
- const resolvedName = node.ref ? this.options.resolver.resolveName(refName) : refName;
242
- if (!this.options.nestedInObject) return `${resolvedName}(data)`;
243
- return `${resolvedName}()`;
244
- },
245
- enum(node) {
246
- return fakerKeywordMapper.enum(getEnumValues(node).map(parseEnumValue), this.options.typeName);
247
- },
248
- union(node) {
249
- const { discriminatorPropertyName } = node;
250
- const baseTypeName = this.options.typeName;
251
- const items = (0, _kubb_ast_utils.mapSchemaMembers)(node, (member) => {
252
- const value = discriminatorPropertyName ? getDiscriminatorValue(member, discriminatorPropertyName) : void 0;
253
- if (baseTypeName && value !== void 0) return printNested(member, {
254
- typeName: `Extract<NonNullable<${baseTypeName}>, { ${JSON.stringify(discriminatorPropertyName)}: ${parseEnumValue(value)} }>`,
255
- nestedInObject: true
256
- });
257
- return printNested(member, {
258
- typeName: baseTypeName,
259
- nestedInObject: true,
260
- nestedInUnion: true
261
- });
262
- }).map(({ output }) => output).filter((item) => Boolean(item));
263
- return fakerKeywordMapper.union(items);
264
- },
265
- intersection(node) {
266
- const items = (0, _kubb_ast_utils.mapSchemaMembers)(node, (member) => printNested(member, { nestedInObject: true })).map(({ output }) => output).filter((item) => Boolean(item));
267
- return fakerKeywordMapper.and(items);
268
- },
269
- array(node) {
270
- const items = (0, _kubb_ast_utils.mapSchemaItems)(node, (member) => printNested(member, {
271
- typeName: this.options.typeName ? `NonNullable<${this.options.typeName}>[number]` : void 0,
272
- nestedInObject: true
273
- })).map(({ output }) => output).filter((item) => Boolean(item));
274
- return fakerKeywordMapper.array(items, node.min, node.max);
275
- },
276
- tuple(node) {
277
- const items = (node.items ?? []).map((member, index) => printNested(member, {
278
- typeName: this.options.typeName ? `NonNullable<${this.options.typeName}>[${index}]` : void 0,
279
- nestedInObject: true
280
- })).filter((item) => Boolean(item));
281
- return fakerKeywordMapper.tuple(items);
282
- },
283
- object(node) {
284
- const cyclicSchemas = this.options.cyclicSchemas;
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]}`;
287
- const value = printNested(property.schema, {
288
- typeName: this.options.typeName ? indexedTypeName(this.options.typeName, property.name, this.options.nestedInUnion) : void 0,
289
- nestedInObject: true
290
- }) ?? "undefined";
291
- if (cyclicSchemas && (0, _kubb_ast_utils.containsCircularRef)(property.schema, {
292
- circularSchemas: cyclicSchemas,
293
- excludeName: this.options.schemaName
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
- }));
297
- },
298
- ...options.nodes
299
- },
300
- print(node) {
301
- return this.transform(node) ?? null;
302
- }
303
- };
304
- });
305
- //#endregion
306
- //#region src/generators/fakerGenerator.tsx
307
- /**
308
- * Built-in generator for `@kubb/plugin-faker`. Emits one `createX` factory
309
- * per schema in the spec plus per-operation request/response factories. Each
310
- * factory returns a value matching the corresponding TypeScript type from
311
- * `@kubb/plugin-ts`.
312
- */
313
- const fakerGenerator = (0, _kubb_core.defineGenerator)({
314
- name: "faker",
315
- renderer: _kubb_renderer_jsx.jsxRenderer,
316
- schema(node, ctx) {
317
- const { adapter, config, resolver, root } = ctx;
318
- const { output, group, dateParser, regexGenerator, mapper, seed, locale, printer } = ctx.options;
319
- const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
320
- if (!node.name || !pluginTs) return;
321
- const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
322
- const schemaName = node.name;
323
- const isEnumSchema = !!_kubb_core.ast.narrowSchema(node, _kubb_core.ast.schemaTypes.enum);
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);
327
- const meta = {
328
- name: resolver.resolveName(schemaName),
329
- file: resolver.resolveFile({
330
- name: schemaName,
331
- extname: ".ts"
332
- }, {
333
- root,
334
- output,
335
- group: group ?? void 0
336
- }),
337
- typeName: schemaTypeName,
338
- typeFile: tsResolver.resolveFile({
339
- name: schemaName,
340
- extname: ".ts"
341
- }, {
342
- root,
343
- output: pluginTs.options?.output ?? output,
344
- group: pluginTs.options?.group ?? void 0
345
- })
346
- };
347
- const canOverride = require_Faker.canOverrideSchema(node);
348
- const cyclicSchemas = new Set(ctx.meta.circularNames);
349
- const printerInstance = printerFaker({
350
- resolver,
351
- schemaName,
352
- typeName: meta.typeName,
353
- dateParser,
354
- regexGenerator,
355
- mapper,
356
- nodes: printer?.nodes,
357
- cyclicSchemas
358
- });
359
- const fakerText = printerInstance.print(node) ?? "undefined";
360
- const typeReference = require_Faker.resolveTypeReference({
361
- node,
362
- canOverride,
363
- name: meta.name,
364
- typeName: meta.typeName,
365
- filePath: meta.file.path,
366
- typeFilePath: meta.typeFile.path
367
- });
368
- const usedImports = filterUsedImports(adapter.getImports(node, (schemaName) => ({
369
- name: resolver.resolveName(schemaName),
370
- path: resolver.resolveFile({
371
- name: schemaName,
372
- extname: ".ts"
373
- }, {
374
- root,
375
- output,
376
- group: group ?? void 0
377
- }).path
378
- })), fakerText);
379
- return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
380
- baseName: meta.file.baseName,
381
- path: meta.file.path,
382
- meta: meta.file.meta,
383
- banner: resolver.resolveBanner(ctx.meta, {
384
- output,
385
- config,
386
- file: {
387
- path: meta.file.path,
388
- baseName: meta.file.baseName
389
- }
390
- }),
391
- footer: resolver.resolveFooter(ctx.meta, {
392
- output,
393
- config,
394
- file: {
395
- path: meta.file.path,
396
- baseName: meta.file.baseName
397
- }
398
- }),
399
- children: [
400
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
401
- name: locale ? [{
402
- propertyName: require_Faker.localeToFakerImport(locale),
403
- name: "faker"
404
- }] : ["faker"],
405
- path: "@faker-js/faker"
406
- }),
407
- regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
408
- name: "RandExp",
409
- path: "randexp"
410
- }),
411
- dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
412
- path: dateParser,
413
- name: dateParser
414
- }),
415
- typeReference.importPath && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
416
- isTypeOnly: true,
417
- root: meta.file.path,
418
- path: typeReference.importPath,
419
- name: [meta.typeName]
420
- }),
421
- usedImports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
422
- root: meta.file.path,
423
- path: imp.path,
424
- name: imp.name
425
- }, [
426
- schemaName,
427
- imp.path,
428
- imp.name
429
- ].join("-"))),
430
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_Faker.Faker, {
431
- name: meta.name,
432
- typeName: typeReference.typeName,
433
- description: node.description,
434
- node,
435
- printer: printerInstance,
436
- seed,
437
- canOverride
438
- })
439
- ]
440
- });
441
- },
442
- operation(node, ctx) {
443
- const { adapter, config, resolver, root } = ctx;
444
- const { output, group, paramsCasing, dateParser, regexGenerator, mapper, seed, locale, printer } = ctx.options;
445
- const pluginTs = ctx.driver.getPlugin(_kubb_plugin_ts.pluginTsName);
446
- if (!pluginTs) return;
447
- const tsResolver = ctx.driver.getResolver(_kubb_plugin_ts.pluginTsName);
448
- const paramEntries = (0, _kubb_ast_utils.caseParams)(node.parameters, paramsCasing).map((param) => ({
449
- param,
450
- name: require_Faker.resolveParamNameByLocation(resolver, node, param),
451
- typeName: require_Faker.resolveParamNameByLocation(tsResolver, node, param)
452
- }));
453
- function expandContentUnits(entries, baseName, tsBaseName, description, decorate) {
454
- const withSchema = entries.filter((entry) => entry.schema);
455
- if (withSchema.length <= 1) {
456
- const primary = withSchema[0] ?? entries[0];
457
- if (!primary?.schema) return [];
458
- return [{
459
- schema: decorate ? decorate(primary.schema) : primary.schema,
460
- name: baseName,
461
- typeName: tsBaseName,
462
- description,
463
- skipImportNames: []
464
- }];
465
- }
466
- const variants = resolveContentTypeVariants(entries, baseName);
467
- const unionSchema = _kubb_core.ast.factory.createSchema({
468
- type: "union",
469
- members: variants.map((variant) => _kubb_core.ast.factory.createSchema({
470
- type: "ref",
471
- name: variant.name
472
- }))
473
- });
474
- return [...variants.map((variant) => ({
475
- schema: decorate ? decorate(variant.schema) : variant.schema,
476
- name: variant.name,
477
- typeName: getPerContentTypeName(tsBaseName, variant.suffix),
478
- description,
479
- skipImportNames: []
480
- })), {
481
- schema: unionSchema,
482
- name: baseName,
483
- typeName: tsBaseName,
484
- description,
485
- skipImportNames: variants.map((variant) => variant.name)
486
- }];
487
- }
488
- const responseUnits = node.responses.flatMap((response) => expandContentUnits(response.content ?? [], resolver.resolveResponseStatusName(node, response.statusCode), tsResolver.resolveResponseStatusName(node, response.statusCode), response.description));
489
- const dataUnits = expandContentUnits(node.requestBody?.content ?? [], resolver.resolveDataName(node), tsResolver.resolveDataName(node), node.requestBody?.description, (schema) => ({
490
- ...schema,
491
- description: node.requestBody?.description ?? schema.description
492
- }));
493
- const responseName = resolver.resolveResponseName(node);
494
- const localHelperNames = new Set([
495
- ...paramEntries.map((entry) => entry.name),
496
- ...responseUnits.map((unit) => unit.name),
497
- ...dataUnits.map((unit) => unit.name),
498
- responseName
499
- ]);
500
- const cyclicSchemas = new Set(ctx.meta.circularNames);
501
- const meta = {
502
- file: resolver.resolveFile({
503
- name: node.operationId,
504
- extname: ".ts",
505
- tag: node.tags[0] ?? "default",
506
- path: node.path
507
- }, {
508
- root,
509
- output,
510
- group: group ?? void 0
511
- }),
512
- typeFile: tsResolver.resolveFile({
513
- name: node.operationId,
514
- extname: ".ts",
515
- tag: node.tags[0] ?? "default",
516
- path: node.path
517
- }, {
518
- root,
519
- output: pluginTs.options?.output ?? output,
520
- group: pluginTs.options?.group ?? void 0
521
- })
522
- };
523
- function resolveMockImports(schema) {
524
- return adapter.getImports(schema, (schemaName) => ({
525
- name: resolver.resolveName(schemaName),
526
- path: resolver.resolveFile({
527
- name: schemaName,
528
- extname: ".ts"
529
- }, {
530
- root,
531
- output,
532
- group: group ?? void 0
533
- }).path
534
- })).filter((entry) => entry.path !== meta.file.path);
535
- }
536
- function renderEntry({ schema, name, typeName, description, skipImportNames = [] }) {
537
- if (!schema) return null;
538
- const canOverride = require_Faker.canOverrideSchema(schema);
539
- const printerInstance = printerFaker({
540
- resolver,
541
- schemaName: name,
542
- typeName,
543
- dateParser,
544
- regexGenerator,
545
- mapper,
546
- nodes: printer?.nodes,
547
- cyclicSchemas
548
- });
549
- const fakerText = printerInstance.print(schema) ?? "undefined";
550
- const { imports, aliases } = aliasConflictingImports(filterUsedImports(resolveMockImports(schema), fakerText, skipImportNames), localHelperNames);
551
- const rewrittenFakerText = rewriteAliasedImports(fakerText, aliases);
552
- const typeReference = require_Faker.resolveTypeReference({
553
- node: schema,
554
- canOverride,
555
- name,
556
- typeName,
557
- filePath: meta.file.path,
558
- typeFilePath: meta.typeFile.path
559
- });
560
- return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx_jsx_runtime.Fragment, { children: [
561
- typeReference.importPath && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
562
- isTypeOnly: true,
563
- root: meta.file.path,
564
- path: typeReference.importPath,
565
- name: [typeName]
566
- }),
567
- imports.map((imp) => /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
568
- root: meta.file.path,
569
- path: imp.path,
570
- name: imp.name
571
- }, [
572
- name,
573
- imp.path,
574
- imp.name
575
- ].join("-"))),
576
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(require_Faker.Faker, {
577
- name,
578
- typeName: typeReference.typeName,
579
- description,
580
- node: schema,
581
- printer: {
582
- ...printerInstance,
583
- print: () => rewrittenFakerText
584
- },
585
- seed,
586
- canOverride
587
- })
588
- ] });
589
- }
590
- return /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsxs)(_kubb_renderer_jsx.File, {
591
- baseName: meta.file.baseName,
592
- path: meta.file.path,
593
- meta: meta.file.meta,
594
- banner: resolver.resolveBanner(ctx.meta, {
595
- output,
596
- config,
597
- file: {
598
- path: meta.file.path,
599
- baseName: meta.file.baseName
600
- }
601
- }),
602
- footer: resolver.resolveFooter(ctx.meta, {
603
- output,
604
- config,
605
- file: {
606
- path: meta.file.path,
607
- baseName: meta.file.baseName
608
- }
609
- }),
610
- children: [
611
- /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
612
- name: locale ? [{
613
- propertyName: require_Faker.localeToFakerImport(locale),
614
- name: "faker"
615
- }] : ["faker"],
616
- path: "@faker-js/faker"
617
- }),
618
- regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
619
- name: "RandExp",
620
- path: "randexp"
621
- }),
622
- dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_renderer_jsx_jsx_runtime.jsx)(_kubb_renderer_jsx.File.Import, {
623
- path: dateParser,
624
- name: dateParser
625
- }),
626
- paramEntries.map(({ param, name, typeName }) => renderEntry({
627
- schema: param.schema,
628
- name,
629
- typeName
630
- })),
631
- responseUnits.map((unit) => renderEntry({
632
- schema: unit.schema,
633
- name: unit.name,
634
- typeName: unit.typeName,
635
- description: unit.description,
636
- skipImportNames: unit.skipImportNames
637
- })),
638
- dataUnits.map((unit) => renderEntry({
639
- schema: unit.schema,
640
- name: unit.name,
641
- typeName: unit.typeName,
642
- description: unit.description,
643
- skipImportNames: unit.skipImportNames
644
- })),
645
- renderEntry({
646
- schema: require_Faker.buildResponseUnionSchema(node, resolver),
647
- name: responseName,
648
- typeName: tsResolver.resolveResponseName(node),
649
- skipImportNames: responseUnits.map((unit) => unit.name)
650
- })
651
- ]
652
- });
653
- }
654
- });
655
- //#endregion
656
- Object.defineProperty(exports, "fakerGenerator", {
657
- enumerable: true,
658
- get: function() {
659
- return fakerGenerator;
660
- }
661
- });
662
- Object.defineProperty(exports, "printerFaker", {
663
- enumerable: true,
664
- get: function() {
665
- return printerFaker;
666
- }
667
- });
668
-
669
- //# sourceMappingURL=fakerGenerator-BeKRKYuy.cjs.map