@kubb/plugin-faker 4.12.3 → 4.12.5
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/{components-CYQi2D8d.cjs → components-BW7xUtoJ.cjs} +42 -42
- package/dist/{components-CYQi2D8d.cjs.map → components-BW7xUtoJ.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/fakerGenerator-CDlH6RdG.cjs +203 -0
- package/dist/{fakerGenerator-CSSHNMRH.cjs.map → fakerGenerator-CDlH6RdG.cjs.map} +1 -1
- package/dist/generators.cjs +1 -1
- package/dist/index.cjs +15 -15
- package/dist/index.cjs.map +1 -1
- package/package.json +6 -9
- package/dist/fakerGenerator-CSSHNMRH.cjs +0 -203
|
@@ -25,11 +25,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
|
|
27
27
|
//#endregion
|
|
28
|
-
let
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
let
|
|
32
|
-
let
|
|
28
|
+
let _kubb_core_transformers = require("@kubb/core/transformers");
|
|
29
|
+
_kubb_core_transformers = __toESM(_kubb_core_transformers);
|
|
30
|
+
let _kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
31
|
+
let _kubb_react_fabric = require("@kubb/react-fabric");
|
|
32
|
+
let _kubb_react_fabric_jsx_runtime = require("@kubb/react-fabric/jsx-runtime");
|
|
33
33
|
|
|
34
34
|
//#region src/parser.ts
|
|
35
35
|
const fakerKeywordMapper = {
|
|
@@ -91,7 +91,7 @@ const fakerKeywordMapper = {
|
|
|
91
91
|
object: () => "object",
|
|
92
92
|
ref: () => "ref",
|
|
93
93
|
matches: (value = "", regexGenerator = "faker") => {
|
|
94
|
-
if (regexGenerator === "randexp") return `${
|
|
94
|
+
if (regexGenerator === "randexp") return `${_kubb_core_transformers.default.toRegExpString(value, "RandExp")}.gen()`;
|
|
95
95
|
return `faker.helpers.fromRegExp("${value}")`;
|
|
96
96
|
},
|
|
97
97
|
email: () => "faker.internet.email()",
|
|
@@ -133,12 +133,12 @@ function joinItems(items) {
|
|
|
133
133
|
default: return fakerKeywordMapper.union(items);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
|
-
const parse = (0,
|
|
136
|
+
const parse = (0, _kubb_plugin_oas.createParser)({
|
|
137
137
|
mapper: fakerKeywordMapper,
|
|
138
138
|
handlers: {
|
|
139
139
|
union(tree, options) {
|
|
140
140
|
const { current, schema, name, siblings } = tree;
|
|
141
|
-
if (!(0,
|
|
141
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.union)) return void 0;
|
|
142
142
|
if (Array.isArray(current.args) && !current.args.length) return "";
|
|
143
143
|
return fakerKeywordMapper.union(current.args.map((it) => this.parse({
|
|
144
144
|
schema,
|
|
@@ -153,7 +153,7 @@ const parse = (0, __kubb_plugin_oas.createParser)({
|
|
|
153
153
|
},
|
|
154
154
|
and(tree, options) {
|
|
155
155
|
const { current, schema, siblings } = tree;
|
|
156
|
-
if (!(0,
|
|
156
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.and)) return void 0;
|
|
157
157
|
return fakerKeywordMapper.and(current.args.map((it) => this.parse({
|
|
158
158
|
schema,
|
|
159
159
|
parent: current,
|
|
@@ -166,7 +166,7 @@ const parse = (0, __kubb_plugin_oas.createParser)({
|
|
|
166
166
|
},
|
|
167
167
|
array(tree, options) {
|
|
168
168
|
const { current, schema } = tree;
|
|
169
|
-
if (!(0,
|
|
169
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.array)) return void 0;
|
|
170
170
|
return fakerKeywordMapper.array(current.args.items.map((it) => this.parse({
|
|
171
171
|
schema,
|
|
172
172
|
parent: current,
|
|
@@ -180,33 +180,33 @@ const parse = (0, __kubb_plugin_oas.createParser)({
|
|
|
180
180
|
},
|
|
181
181
|
enum(tree, options) {
|
|
182
182
|
const { current, parent, name } = tree;
|
|
183
|
-
if (!(0,
|
|
184
|
-
if (parent ? (0,
|
|
183
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.enum)) return void 0;
|
|
184
|
+
if (parent ? (0, _kubb_plugin_oas.isKeyword)(parent, _kubb_plugin_oas.schemaKeywords.tuple) : false) return fakerKeywordMapper.enum(current.args.items.map((schema) => {
|
|
185
185
|
if (schema.format === "number") return schema.value;
|
|
186
186
|
if (schema.format === "boolean") return schema.value;
|
|
187
|
-
return
|
|
187
|
+
return _kubb_core_transformers.default.stringify(schema.value);
|
|
188
188
|
}));
|
|
189
189
|
return fakerKeywordMapper.enum(current.args.items.map((schema) => {
|
|
190
190
|
if (schema.format === "number") return schema.value;
|
|
191
191
|
if (schema.format === "boolean") return schema.value;
|
|
192
|
-
return
|
|
192
|
+
return _kubb_core_transformers.default.stringify(schema.value);
|
|
193
193
|
}), name ? options.typeName : void 0);
|
|
194
194
|
},
|
|
195
195
|
ref(tree, options) {
|
|
196
196
|
const { current } = tree;
|
|
197
|
-
if (!(0,
|
|
197
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.ref)) return void 0;
|
|
198
198
|
if (!current.args?.name) throw new Error(`Name not defined for keyword ${current.keyword}`);
|
|
199
199
|
if (options.canOverride) return `${current.args.name}(data)`;
|
|
200
200
|
return `${current.args.name}()`;
|
|
201
201
|
},
|
|
202
202
|
object(tree, options) {
|
|
203
203
|
const { current, schema } = tree;
|
|
204
|
-
if (!(0,
|
|
204
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.object)) return void 0;
|
|
205
205
|
return `{${Object.entries(current.args?.properties || {}).filter((item) => {
|
|
206
206
|
const schema$1 = item[1];
|
|
207
207
|
return schema$1 && typeof schema$1.map === "function";
|
|
208
208
|
}).map(([name, schemas]) => {
|
|
209
|
-
const mappedName = schemas.find((schema$1) => schema$1.keyword ===
|
|
209
|
+
const mappedName = schemas.find((schema$1) => schema$1.keyword === _kubb_plugin_oas.schemaKeywords.name)?.args || name;
|
|
210
210
|
if (options.mapper?.[mappedName]) return `"${name}": ${options.mapper?.[mappedName]}`;
|
|
211
211
|
return `"${name}": ${joinItems(schemas.sort(schemaKeywordSorter).map((it) => this.parse({
|
|
212
212
|
schema,
|
|
@@ -223,7 +223,7 @@ const parse = (0, __kubb_plugin_oas.createParser)({
|
|
|
223
223
|
},
|
|
224
224
|
tuple(tree, options) {
|
|
225
225
|
const { current, schema, siblings } = tree;
|
|
226
|
-
if (!(0,
|
|
226
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.tuple)) return void 0;
|
|
227
227
|
if (Array.isArray(current.args.items)) return fakerKeywordMapper.tuple(current.args.items.map((it) => this.parse({
|
|
228
228
|
schema,
|
|
229
229
|
parent: current,
|
|
@@ -245,73 +245,73 @@ const parse = (0, __kubb_plugin_oas.createParser)({
|
|
|
245
245
|
},
|
|
246
246
|
const(tree, _options) {
|
|
247
247
|
const { current } = tree;
|
|
248
|
-
if (!(0,
|
|
248
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.const)) return void 0;
|
|
249
249
|
if (current.args.format === "number" && current.args.name !== void 0) return fakerKeywordMapper.const(current.args.name?.toString());
|
|
250
|
-
return fakerKeywordMapper.const(
|
|
250
|
+
return fakerKeywordMapper.const(_kubb_core_transformers.default.stringify(current.args.value));
|
|
251
251
|
},
|
|
252
252
|
matches(tree, options) {
|
|
253
253
|
const { current } = tree;
|
|
254
|
-
if (!(0,
|
|
254
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.matches)) return void 0;
|
|
255
255
|
if (current.args) return fakerKeywordMapper.matches(current.args, options.regexGenerator);
|
|
256
256
|
},
|
|
257
257
|
null(tree) {
|
|
258
258
|
const { current } = tree;
|
|
259
|
-
if (!(0,
|
|
259
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.null)) return void 0;
|
|
260
260
|
return fakerKeywordMapper.null();
|
|
261
261
|
},
|
|
262
262
|
undefined(tree) {
|
|
263
263
|
const { current } = tree;
|
|
264
|
-
if (!(0,
|
|
264
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.undefined)) return void 0;
|
|
265
265
|
return fakerKeywordMapper.undefined();
|
|
266
266
|
},
|
|
267
267
|
any(tree) {
|
|
268
268
|
const { current } = tree;
|
|
269
|
-
if (!(0,
|
|
269
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.any)) return void 0;
|
|
270
270
|
return fakerKeywordMapper.any();
|
|
271
271
|
},
|
|
272
272
|
string(tree, _options) {
|
|
273
273
|
const { current, siblings } = tree;
|
|
274
|
-
if (!(0,
|
|
274
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.string)) return void 0;
|
|
275
275
|
if (siblings) {
|
|
276
|
-
const minSchema = (0,
|
|
277
|
-
const maxSchema = (0,
|
|
276
|
+
const minSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
277
|
+
const maxSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
278
278
|
return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args);
|
|
279
279
|
}
|
|
280
280
|
return fakerKeywordMapper.string();
|
|
281
281
|
},
|
|
282
282
|
number(tree, _options) {
|
|
283
283
|
const { current, siblings } = tree;
|
|
284
|
-
if (!(0,
|
|
284
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.number)) return void 0;
|
|
285
285
|
if (siblings) {
|
|
286
|
-
const minSchema = (0,
|
|
287
|
-
const maxSchema = (0,
|
|
286
|
+
const minSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
287
|
+
const maxSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
288
288
|
return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args);
|
|
289
289
|
}
|
|
290
290
|
return fakerKeywordMapper.number();
|
|
291
291
|
},
|
|
292
292
|
integer(tree, _options) {
|
|
293
293
|
const { current, siblings } = tree;
|
|
294
|
-
if (!(0,
|
|
294
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.integer)) return void 0;
|
|
295
295
|
if (siblings) {
|
|
296
|
-
const minSchema = (0,
|
|
297
|
-
const maxSchema = (0,
|
|
296
|
+
const minSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "min");
|
|
297
|
+
const maxSchema = (0, _kubb_plugin_oas.findSchemaKeyword)(siblings, "max");
|
|
298
298
|
return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args);
|
|
299
299
|
}
|
|
300
300
|
return fakerKeywordMapper.integer();
|
|
301
301
|
},
|
|
302
302
|
datetime(tree) {
|
|
303
303
|
const { current } = tree;
|
|
304
|
-
if (!(0,
|
|
304
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.datetime)) return void 0;
|
|
305
305
|
return fakerKeywordMapper.datetime();
|
|
306
306
|
},
|
|
307
307
|
date(tree, options) {
|
|
308
308
|
const { current } = tree;
|
|
309
|
-
if (!(0,
|
|
309
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.date)) return void 0;
|
|
310
310
|
return fakerKeywordMapper.date(current.args.type, options.dateParser);
|
|
311
311
|
},
|
|
312
312
|
time(tree, options) {
|
|
313
313
|
const { current } = tree;
|
|
314
|
-
if (!(0,
|
|
314
|
+
if (!(0, _kubb_plugin_oas.isKeyword)(current, _kubb_plugin_oas.schemaKeywords.time)) return void 0;
|
|
315
315
|
return fakerKeywordMapper.time(current.args.type, options.dateParser);
|
|
316
316
|
}
|
|
317
317
|
}
|
|
@@ -356,25 +356,25 @@ function Faker({ tree, description, name, typeName, seed, regexGenerator, canOve
|
|
|
356
356
|
if (isArray) type = typeName;
|
|
357
357
|
else if (isSimpleString) type = name;
|
|
358
358
|
else if (isSimpleInt || isSimpleFloat) type = "number";
|
|
359
|
-
const params =
|
|
359
|
+
const params = _kubb_react_fabric.FunctionParams.factory({ data: {
|
|
360
360
|
type,
|
|
361
361
|
optional: true
|
|
362
362
|
} });
|
|
363
363
|
let returnType = canOverride ? typeName : void 0;
|
|
364
364
|
if (isSimpleString || isSimpleInt || isSimpleFloat) returnType = type;
|
|
365
|
-
return /* @__PURE__ */ (0,
|
|
365
|
+
return /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Source, {
|
|
366
366
|
name,
|
|
367
367
|
isExportable: true,
|
|
368
368
|
isIndexable: true,
|
|
369
|
-
children: /* @__PURE__ */ (0,
|
|
369
|
+
children: /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsxs)(_kubb_react_fabric.Function, {
|
|
370
370
|
export: true,
|
|
371
371
|
name,
|
|
372
|
-
JSDoc: { comments: [description ? `@description ${
|
|
372
|
+
JSDoc: { comments: [description ? `@description ${_kubb_core_transformers.default.jsStringEscape(description)}` : void 0].filter(Boolean) },
|
|
373
373
|
params: canOverride ? params.toConstructor() : void 0,
|
|
374
374
|
returnType,
|
|
375
375
|
children: [
|
|
376
376
|
seed ? `faker.seed(${JSON.stringify(seed)})` : void 0,
|
|
377
|
-
/* @__PURE__ */ (0,
|
|
377
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)("br", {}),
|
|
378
378
|
`return ${fakerTextWithOverride}`
|
|
379
379
|
]
|
|
380
380
|
})
|
|
@@ -394,4 +394,4 @@ Object.defineProperty(exports, '__toESM', {
|
|
|
394
394
|
return __toESM;
|
|
395
395
|
}
|
|
396
396
|
});
|
|
397
|
-
//# sourceMappingURL=components-
|
|
397
|
+
//# sourceMappingURL=components-BW7xUtoJ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components-CYQi2D8d.cjs","names":["transformers","schemaKeywords","schema","parserFaker.joinItems","parserFaker.parse","FunctionParams","File","Function","transformers"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, schemaKeywords } from '@kubb/plugin-oas'\nimport type { Options } from './types.ts'\n\nconst fakerKeywordMapper = {\n any: () => 'undefined',\n unknown: () => 'undefined',\n void: () => 'undefined',\n number: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.float({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.float({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.float({ min: ${min} })`\n }\n\n return 'faker.number.float()'\n },\n integer: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.int({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.int({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.int({ min: ${min} })`\n }\n\n return 'faker.number.int()'\n },\n string: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.string.alpha({ length: { min: ${min}, max: ${max} } })`\n }\n\n if (max !== undefined) {\n return `faker.string.alpha({ length: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.string.alpha({ length: ${min} })`\n }\n\n return 'faker.string.alpha()'\n },\n boolean: () => 'faker.datatype.boolean()',\n undefined: () => 'undefined',\n null: () => 'null',\n array: (items: string[] = [], min?: number, max?: number) => {\n if (items.length > 1) {\n return `faker.helpers.arrayElements([${items.join(', ')}])`\n }\n const item = items.at(0)\n\n if (min !== undefined && max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: ${min}, max: ${max} }})`\n }\n if (min !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: ${min} })`\n }\n if (max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: 0, max: ${max} }})`\n }\n\n return `faker.helpers.multiple(() => (${item}))`\n },\n tuple: (items: string[] = []) => `[${items.join(', ')}]`,\n enum: (items: Array<string | number | boolean | undefined> = [], type = 'any') => `faker.helpers.arrayElement<${type}>([${items.join(', ')}])`,\n union: (items: string[] = []) => `faker.helpers.arrayElement<any>([${items.join(', ')}])`,\n /**\n * ISO 8601\n */\n datetime: () => 'faker.date.anytime().toISOString()',\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"YYYY-MM-DD\")`\n }\n return 'faker.date.anytime().toISOString().substring(0, 10)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"HH:mm:ss\")`\n }\n return 'faker.date.anytime().toISOString().substring(11, 19)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n uuid: () => 'faker.string.uuid()',\n url: () => 'faker.internet.url()',\n and: (items: string[] = []) => `{...${items.join(', ...')}}`,\n object: () => 'object',\n ref: () => 'ref',\n matches: (value = '', regexGenerator: 'faker' | 'randexp' = 'faker') => {\n if (regexGenerator === 'randexp') {\n return `${transformers.toRegExpString(value, 'RandExp')}.gen()`\n }\n return `faker.helpers.fromRegExp(\"${value}\")`\n },\n email: () => 'faker.internet.email()',\n firstName: () => 'faker.person.firstName()',\n lastName: () => 'faker.person.lastName()',\n password: () => 'faker.internet.password()',\n phone: () => 'faker.phone.number()',\n blob: () => 'faker.image.url() as unknown as Blob',\n default: undefined,\n describe: undefined,\n const: (value?: string | number) => (value as string) ?? '',\n max: undefined,\n min: undefined,\n nullable: undefined,\n nullish: undefined,\n optional: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n interface: undefined,\n exclusiveMaximum: undefined,\n exclusiveMinimum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nfunction schemaKeywordSorter(_a: Schema, b: Schema) {\n if (b.keyword === 'null') {\n return -1\n }\n\n return 0\n}\n\nexport function joinItems(items: string[]): string {\n switch (items.length) {\n case 0:\n return 'undefined'\n case 1:\n return items[0]!\n default:\n return fakerKeywordMapper.union(items)\n }\n}\n\ntype ParserOptions = {\n typeName?: string\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport const parse = createParser<string, ParserOptions>({\n mapper: fakerKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, name, siblings } = tree\n if (!isKeyword(current, schemaKeywords.union)) return undefined\n\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((it) => this.parse({ schema, parent: current, name, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.and)) return undefined\n\n return fakerKeywordMapper.and(\n current.args.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n array(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.array)) return undefined\n\n return fakerKeywordMapper.array(\n current.args.items\n .map((it) =>\n this.parse(\n { schema, parent: current, current: it, siblings: current.args.items },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[number]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n current.args.min,\n current.args.max,\n )\n },\n enum(tree, options) {\n const { current, parent, name } = tree\n if (!isKeyword(current, schemaKeywords.enum)) return undefined\n\n const isParentTuple = parent ? isKeyword(parent, schemaKeywords.tuple) : false\n\n if (isParentTuple) {\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n )\n }\n\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n // TODO replace this with getEnumNameFromSchema\n name ? options.typeName : undefined,\n )\n },\n ref(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.ref)) return undefined\n\n if (!current.args?.name) {\n throw new Error(`Name not defined for keyword ${current.keyword}`)\n }\n\n if (options.canOverride) {\n return `${current.args.name}(data)`\n }\n\n return `${current.args.name}()`\n },\n object(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.object)) return undefined\n\n const argsObject = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n .map(([name, schemas]) => {\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return `\"${name}\": ${options.mapper?.[mappedName]}`\n }\n\n return `\"${name}\": ${joinItems(\n schemas\n .sort(schemaKeywordSorter)\n .map((it) =>\n this.parse(\n { schema, name, parent: current, current: it, siblings: schemas },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[${JSON.stringify(name)}]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n )}`\n })\n .join(',')\n\n return `{${argsObject}}`\n },\n tuple(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.tuple)) return undefined\n\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return this.parse({ schema, parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n },\n const(tree, _options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.const)) return undefined\n\n if (current.args.format === 'number' && current.args.name !== undefined) {\n return fakerKeywordMapper.const(current.args.name?.toString())\n }\n return fakerKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.matches)) return undefined\n\n if (current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n return undefined\n },\n null(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.null)) return undefined\n\n return fakerKeywordMapper.null()\n },\n undefined(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.undefined)) return undefined\n\n return fakerKeywordMapper.undefined()\n },\n any(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.any)) return undefined\n\n return fakerKeywordMapper.any()\n },\n string(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.string)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n },\n number(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.number)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n },\n integer(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.integer)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n },\n datetime(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.datetime)) return undefined\n\n return fakerKeywordMapper.datetime()\n },\n date(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.date)) return undefined\n\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n },\n time(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.time)) return undefined\n\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\nimport { File, Function, FunctionParams } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserFaker from '../parser.ts'\nimport type { PluginFaker } from '../types.ts'\n\ntype Props = {\n name: string\n typeName: string\n tree: Array<Schema>\n seed?: PluginFaker['options']['seed']\n description?: string\n regexGenerator?: PluginFaker['options']['regexGenerator']\n mapper?: PluginFaker['options']['mapper']\n dateParser?: PluginFaker['options']['dateParser']\n canOverride: boolean\n}\n\nexport function Faker({ tree, description, name, typeName, seed, regexGenerator, canOverride, mapper, dateParser }: Props): KubbNode {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { name, schema, parent: undefined, current: schema, siblings },\n {\n typeName,\n regexGenerator,\n mapper,\n canOverride,\n dateParser,\n },\n ),\n )\n .filter(Boolean),\n )\n\n const isArray = fakerText.startsWith('faker.helpers.arrayElements') || fakerText.startsWith('faker.helpers.multiple')\n const isObject = fakerText.startsWith('{')\n const isTuple = fakerText.startsWith('faker.helpers.arrayElement')\n\n const isSimpleString = name === 'string'\n const isSimpleInt = name === 'integer'\n const isSimpleFloat = name === 'float'\n\n let fakerTextWithOverride = fakerText\n\n if (canOverride && isObject) {\n fakerTextWithOverride = `{\n ...${fakerText},\n ...data || {}\n}`\n }\n\n if (canOverride && isTuple) {\n fakerTextWithOverride = `data || ${fakerText}`\n }\n\n if (canOverride && isArray) {\n fakerTextWithOverride = `[\n ...${fakerText},\n ...data || []\n ]`\n }\n\n if (canOverride && isSimpleString) {\n fakerTextWithOverride = 'data ?? faker.string.alpha()'\n }\n\n if (canOverride && isSimpleInt) {\n fakerTextWithOverride = 'data ?? faker.number.int()'\n }\n\n if (canOverride && isSimpleFloat) {\n fakerTextWithOverride = 'data ?? faker.number.float()'\n }\n\n let type = `Partial<${typeName}>`\n\n if (isArray) type = typeName\n else if (isSimpleString) type = name\n else if (isSimpleInt || isSimpleFloat) type = 'number'\n\n const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type,\n optional: true,\n },\n })\n\n let returnType = canOverride ? typeName : undefined\n\n if (isSimpleString || isSimpleInt || isSimpleFloat) returnType = type\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function\n export\n name={name}\n JSDoc={{ comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean) }}\n params={canOverride ? params.toConstructor() : undefined}\n returnType={returnType}\n >\n {seed ? `faker.seed(${JSON.stringify(seed)})` : undefined}\n <br />\n {`return ${fakerTextWithOverride}`}\n </Function>\n </File.Source>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,qBAAqB;CACzB,WAAW;CACX,eAAe;CACf,YAAY;CACZ,SAAS,KAAc,QAAiB;AACtC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,6BAA6B,IAAI,SAAS,IAAI;AAGvD,MAAI,QAAQ,OACV,QAAO,6BAA6B,IAAI;AAG1C,MAAI,QAAQ,OACV,QAAO,6BAA6B,IAAI;AAG1C,SAAO;;CAET,UAAU,KAAc,QAAiB;AACvC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,2BAA2B,IAAI,SAAS,IAAI;AAGrD,MAAI,QAAQ,OACV,QAAO,2BAA2B,IAAI;AAGxC,MAAI,QAAQ,OACV,QAAO,2BAA2B,IAAI;AAGxC,SAAO;;CAET,SAAS,KAAc,QAAiB;AACtC,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,uCAAuC,IAAI,SAAS,IAAI;AAGjE,MAAI,QAAQ,OACV,QAAO,gCAAgC,IAAI;AAG7C,MAAI,QAAQ,OACV,QAAO,gCAAgC,IAAI;AAG7C,SAAO;;CAET,eAAe;CACf,iBAAiB;CACjB,YAAY;CACZ,QAAQ,QAAkB,EAAE,EAAE,KAAc,QAAiB;AAC3D,MAAI,MAAM,SAAS,EACjB,QAAO,gCAAgC,MAAM,KAAK,KAAK,CAAC;EAE1D,MAAM,OAAO,MAAM,GAAG,EAAE;AAExB,MAAI,QAAQ,UAAa,QAAQ,OAC/B,QAAO,iCAAiC,KAAK,qBAAqB,IAAI,SAAS,IAAI;AAErF,MAAI,QAAQ,OACV,QAAO,iCAAiC,KAAK,cAAc,IAAI;AAEjE,MAAI,QAAQ,OACV,QAAO,iCAAiC,KAAK,6BAA6B,IAAI;AAGhF,SAAO,iCAAiC,KAAK;;CAE/C,QAAQ,QAAkB,EAAE,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;CACtD,OAAO,QAAsD,EAAE,EAAE,OAAO,UAAU,8BAA8B,KAAK,KAAK,MAAM,KAAK,KAAK,CAAC;CAC3I,QAAQ,QAAkB,EAAE,KAAK,oCAAoC,MAAM,KAAK,KAAK,CAAC;CAItF,gBAAgB;CAMhB,OAAO,OAA0B,UAAU,SAAgC,YAAY;AACrF,MAAI,SAAS,UAAU;AACrB,OAAI,WAAW,QACb,QAAO,GAAG,OAAO;AAEnB,UAAO;;AAGT,MAAI,WAAW,QACb,OAAM,IAAI,MAAM,SAAS,KAAK,gBAAgB,OAAO,yBAAyB;AAGhF,SAAO;;CAOT,OAAO,OAA0B,UAAU,SAAgC,YAAY;AACrF,MAAI,SAAS,UAAU;AACrB,OAAI,WAAW,QACb,QAAO,GAAG,OAAO;AAEnB,UAAO;;AAGT,MAAI,WAAW,QACb,OAAM,IAAI,MAAM,SAAS,KAAK,gBAAgB,OAAO,yBAAyB;AAGhF,SAAO;;CAET,YAAY;CACZ,WAAW;CACX,MAAM,QAAkB,EAAE,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC;CAC1D,cAAc;CACd,WAAW;CACX,UAAU,QAAQ,IAAI,iBAAsC,YAAY;AACtE,MAAI,mBAAmB,UACrB,QAAO,GAAGA,iCAAa,eAAe,OAAO,UAAU,CAAC;AAE1D,SAAO,6BAA6B,MAAM;;CAE5C,aAAa;CACb,iBAAiB;CACjB,gBAAgB;CAChB,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ,SAAS;CACT,UAAU;CACV,QAAQ,UAA6B,SAAoB;CACzD,KAAK;CACL,KAAK;CACL,UAAU;CACV,SAAS;CACT,UAAU;CACV,UAAU;CACV,WAAW;CACX,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,UAAU;CACV,MAAM;CACN,WAAW;CACX,kBAAkB;CAClB,kBAAkB;CACnB;;;;AAMD,SAAS,oBAAoB,IAAY,GAAW;AAClD,KAAI,EAAE,YAAY,OAChB,QAAO;AAGT,QAAO;;AAGT,SAAgB,UAAU,OAAyB;AACjD,SAAQ,MAAM,QAAd;EACE,KAAK,EACH,QAAO;EACT,KAAK,EACH,QAAO,MAAM;EACf,QACE,QAAO,mBAAmB,MAAM,MAAM;;;AAY5C,MAAa,4CAA4C;CACvD,QAAQ;CACR,UAAU;EACR,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,QAAQ,MAAM,aAAa;AAC5C,OAAI,kCAAW,SAASC,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,MAAM,QAAQ,QAAQ,KAAK,IAAI,CAAC,QAAQ,KAAK,OAC/C,QAAO;AAGT,UAAO,mBAAmB,MACxB,QAAQ,KAAK,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS;IAAM,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CACnJ;;EAEH,IAAI,MAAM,SAAS;GACjB,MAAM,EAAE,SAAS,QAAQ,aAAa;AACtC,OAAI,kCAAW,SAASA,iCAAe,IAAI,CAAE,QAAO;AAEpD,UAAO,mBAAmB,IACxB,QAAQ,KAAK,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CAC7I;;EAEH,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,WAAW;AAC5B,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,UAAO,mBAAmB,MACxB,QAAQ,KAAK,MACV,KAAK,OACJ,KAAK,MACH;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI,UAAU,QAAQ,KAAK;IAAO,EACtE;IACE,GAAG;IACH,UAAU,eAAe,QAAQ,SAAS;IAC1C,aAAa;IACd,CACF,CACF,CACA,OAAO,QAAQ,EAClB,QAAQ,KAAK,KACb,QAAQ,KAAK,IACd;;EAEH,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,SAAS,QAAQ,SAAS;AAClC,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAIrD,OAFsB,0CAAmB,QAAQA,iCAAe,MAAM,GAAG,MAGvE,QAAO,mBAAmB,KACxB,QAAQ,KAAK,MAAM,KAAK,WAAW;AACjC,QAAI,OAAO,WAAW,SACpB,QAAO,OAAO;AAGhB,QAAI,OAAO,WAAW,UACpB,QAAO,OAAO;AAEhB,WAAOD,iCAAa,UAAU,OAAO,MAAM;KAC3C,CACH;AAGH,UAAO,mBAAmB,KACxB,QAAQ,KAAK,MAAM,KAAK,WAAW;AACjC,QAAI,OAAO,WAAW,SACpB,QAAO,OAAO;AAEhB,QAAI,OAAO,WAAW,UACpB,QAAO,OAAO;AAEhB,WAAOA,iCAAa,UAAU,OAAO,MAAM;KAC3C,EAEF,OAAO,QAAQ,WAAW,OAC3B;;EAEH,IAAI,MAAM,SAAS;GACjB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASC,iCAAe,IAAI,CAAE,QAAO;AAEpD,OAAI,CAAC,QAAQ,MAAM,KACjB,OAAM,IAAI,MAAM,gCAAgC,QAAQ,UAAU;AAGpE,OAAI,QAAQ,YACV,QAAO,GAAG,QAAQ,KAAK,KAAK;AAG9B,UAAO,GAAG,QAAQ,KAAK,KAAK;;EAE9B,OAAO,MAAM,SAAS;GACpB,MAAM,EAAE,SAAS,WAAW;AAC5B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAkCvD,UAAO,IAhCY,OAAO,QAAQ,QAAQ,MAAM,cAAc,EAAE,CAAC,CAC9D,QAAQ,SAAS;IAChB,MAAMC,WAAS,KAAK;AACpB,WAAOA,YAAU,OAAOA,SAAO,QAAQ;KACvC,CACD,KAAK,CAAC,MAAM,aAAa;IAExB,MAAM,aADa,QAAQ,MAAM,aAAWA,SAAO,YAAYD,iCAAe,KAAK,EACpD,QAAQ;AAGvC,QAAI,QAAQ,SAAS,YACnB,QAAO,IAAI,KAAK,KAAK,QAAQ,SAAS;AAGxC,WAAO,IAAI,KAAK,KAAK,UACnB,QACG,KAAK,oBAAoB,CACzB,KAAK,OACJ,KAAK,MACH;KAAE;KAAQ;KAAM,QAAQ;KAAS,SAAS;KAAI,UAAU;KAAS,EACjE;KACE,GAAG;KACH,UAAU,eAAe,QAAQ,SAAS,IAAI,KAAK,UAAU,KAAK,CAAC;KACnE,aAAa;KACd,CACF,CACF,CACA,OAAO,QAAQ,CACnB;KACD,CACD,KAAK,IAAI,CAEU;;EAExB,MAAM,MAAM,SAAS;GACnB,MAAM,EAAE,SAAS,QAAQ,aAAa;AACtC,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,MAAM,QAAQ,QAAQ,KAAK,MAAM,CACnC,QAAO,mBAAmB,MACxB,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS;IAAI;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC,CAAC,CAAC,OAAO,QAAQ,CACnJ;AAGH,UAAO,KAAK,MAAM;IAAE;IAAQ,QAAQ;IAAS,SAAS,QAAQ,KAAK;IAAO;IAAU,EAAE;IAAE,GAAG;IAAS,aAAa;IAAO,CAAC;;EAE3H,MAAM,MAAM,UAAU;GACpB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,MAAM,CAAE,QAAO;AAEtD,OAAI,QAAQ,KAAK,WAAW,YAAY,QAAQ,KAAK,SAAS,OAC5D,QAAO,mBAAmB,MAAM,QAAQ,KAAK,MAAM,UAAU,CAAC;AAEhE,UAAO,mBAAmB,MAAMD,iCAAa,UAAU,QAAQ,KAAK,MAAM,CAAC;;EAE7E,QAAQ,MAAM,SAAS;GACrB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASC,iCAAe,QAAQ,CAAE,QAAO;AAExD,OAAI,QAAQ,KACV,QAAO,mBAAmB,QAAQ,QAAQ,MAAM,QAAQ,eAAe;;EAI3E,KAAK,MAAM;GACT,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,MAAM;;EAElC,UAAU,MAAM;GACd,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,UAAU,CAAE,QAAO;AAE1D,UAAO,mBAAmB,WAAW;;EAEvC,IAAI,MAAM;GACR,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,IAAI,CAAE,QAAO;AAEpD,UAAO,mBAAmB,KAAK;;EAEjC,OAAO,MAAM,UAAU;GACrB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAEvD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,OAAO,WAAW,MAAM,WAAW,KAAK;;AAGpE,UAAO,mBAAmB,QAAQ;;EAEpC,OAAO,MAAM,UAAU;GACrB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,OAAO,CAAE,QAAO;AAEvD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,OAAO,WAAW,MAAM,WAAW,KAAK;;AAGpE,UAAO,mBAAmB,QAAQ;;EAEpC,QAAQ,MAAM,UAAU;GACtB,MAAM,EAAE,SAAS,aAAa;AAC9B,OAAI,kCAAW,SAASA,iCAAe,QAAQ,CAAE,QAAO;AAExD,OAAI,UAAU;IACZ,MAAM,qDAA8B,UAAU,MAAM;IACpD,MAAM,qDAA8B,UAAU,MAAM;AAEpD,WAAO,mBAAmB,QAAQ,WAAW,MAAM,WAAW,KAAK;;AAGrE,UAAO,mBAAmB,SAAS;;EAErC,SAAS,MAAM;GACb,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,SAAS,CAAE,QAAO;AAEzD,UAAO,mBAAmB,UAAU;;EAEtC,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,KAAK,QAAQ,KAAK,MAAM,QAAQ,WAAW;;EAEvE,KAAK,MAAM,SAAS;GAClB,MAAM,EAAE,YAAY;AACpB,OAAI,kCAAW,SAASA,iCAAe,KAAK,CAAE,QAAO;AAErD,UAAO,mBAAmB,KAAK,QAAQ,KAAK,MAAM,QAAQ,WAAW;;EAExE;CACF,CAAC;;;;ACtZF,SAAgB,MAAM,EAAE,MAAM,aAAa,MAAM,UAAU,MAAM,gBAAgB,aAAa,QAAQ,cAA+B;CACnI,MAAM,YAAYE,UAChB,KACG,KAAK,QAAQ,QAAQ,aACpBC,MACE;EAAE;EAAM;EAAQ,QAAQ;EAAW,SAAS;EAAQ;EAAU,EAC9D;EACE;EACA;EACA;EACA;EACA;EACD,CACF,CACF,CACA,OAAO,QAAQ,CACnB;CAED,MAAM,UAAU,UAAU,WAAW,8BAA8B,IAAI,UAAU,WAAW,yBAAyB;CACrH,MAAM,WAAW,UAAU,WAAW,IAAI;CAC1C,MAAM,UAAU,UAAU,WAAW,6BAA6B;CAElE,MAAM,iBAAiB,SAAS;CAChC,MAAM,cAAc,SAAS;CAC7B,MAAM,gBAAgB,SAAS;CAE/B,IAAI,wBAAwB;AAE5B,KAAI,eAAe,SACjB,yBAAwB;OACrB,UAAU;;;AAKf,KAAI,eAAe,QACjB,yBAAwB,WAAW;AAGrC,KAAI,eAAe,QACjB,yBAAwB;WACjB,UAAU;;;AAKnB,KAAI,eAAe,eACjB,yBAAwB;AAG1B,KAAI,eAAe,YACjB,yBAAwB;AAG1B,KAAI,eAAe,cACjB,yBAAwB;CAG1B,IAAI,OAAO,WAAW,SAAS;AAE/B,KAAI,QAAS,QAAO;UACX,eAAgB,QAAO;UACvB,eAAe,cAAe,QAAO;CAE9C,MAAM,SAASC,mCAAe,QAAQ,EACpC,MAAM;EAEJ;EACA,UAAU;EACX,EACF,CAAC;CAEF,IAAI,aAAa,cAAc,WAAW;AAE1C,KAAI,kBAAkB,eAAe,cAAe,cAAa;AAEjE,QACE,yDAACC,yBAAK;EAAa;EAAM;EAAa;YACpC,0DAACC;GACC;GACM;GACN,OAAO,EAAE,UAAU,CAAC,cAAc,gBAAgBC,iCAAa,eAAe,YAAY,KAAK,OAAU,CAAC,OAAO,QAAQ,EAAE;GAC3H,QAAQ,cAAc,OAAO,eAAe,GAAG;GACnC;;IAEX,OAAO,cAAc,KAAK,UAAU,KAAK,CAAC,KAAK;IAChD,yDAAC,SAAK;IACL,UAAU;;IACF;GACC"}
|
|
1
|
+
{"version":3,"file":"components-BW7xUtoJ.cjs","names":["transformers","schemaKeywords","schema","parserFaker.joinItems","parserFaker.parse","FunctionParams","File","Function","transformers"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { createParser, findSchemaKeyword, isKeyword, schemaKeywords } from '@kubb/plugin-oas'\nimport type { Options } from './types.ts'\n\nconst fakerKeywordMapper = {\n any: () => 'undefined',\n unknown: () => 'undefined',\n void: () => 'undefined',\n number: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.float({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.float({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.float({ min: ${min} })`\n }\n\n return 'faker.number.float()'\n },\n integer: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.number.int({ min: ${min}, max: ${max} })`\n }\n\n if (max !== undefined) {\n return `faker.number.int({ max: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.number.int({ min: ${min} })`\n }\n\n return 'faker.number.int()'\n },\n string: (min?: number, max?: number) => {\n if (max !== undefined && min !== undefined) {\n return `faker.string.alpha({ length: { min: ${min}, max: ${max} } })`\n }\n\n if (max !== undefined) {\n return `faker.string.alpha({ length: ${max} })`\n }\n\n if (min !== undefined) {\n return `faker.string.alpha({ length: ${min} })`\n }\n\n return 'faker.string.alpha()'\n },\n boolean: () => 'faker.datatype.boolean()',\n undefined: () => 'undefined',\n null: () => 'null',\n array: (items: string[] = [], min?: number, max?: number) => {\n if (items.length > 1) {\n return `faker.helpers.arrayElements([${items.join(', ')}])`\n }\n const item = items.at(0)\n\n if (min !== undefined && max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: ${min}, max: ${max} }})`\n }\n if (min !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: ${min} })`\n }\n if (max !== undefined) {\n return `faker.helpers.multiple(() => (${item}), { count: { min: 0, max: ${max} }})`\n }\n\n return `faker.helpers.multiple(() => (${item}))`\n },\n tuple: (items: string[] = []) => `[${items.join(', ')}]`,\n enum: (items: Array<string | number | boolean | undefined> = [], type = 'any') => `faker.helpers.arrayElement<${type}>([${items.join(', ')}])`,\n union: (items: string[] = []) => `faker.helpers.arrayElement<any>([${items.join(', ')}])`,\n /**\n * ISO 8601\n */\n datetime: () => 'faker.date.anytime().toISOString()',\n /**\n * Type `'date'` Date\n * Type `'string'` ISO date format (YYYY-MM-DD)\n * @default ISO date format (YYYY-MM-DD)\n */\n date: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"YYYY-MM-DD\")`\n }\n return 'faker.date.anytime().toISOString().substring(0, 10)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n /**\n * Type `'date'` Date\n * Type `'string'` ISO time format (HH:mm:ss[.SSSSSS])\n * @default ISO time format (HH:mm:ss[.SSSSSS])\n */\n time: (type: 'date' | 'string' = 'string', parser: Options['dateParser'] = 'faker') => {\n if (type === 'string') {\n if (parser !== 'faker') {\n return `${parser}(faker.date.anytime()).format(\"HH:mm:ss\")`\n }\n return 'faker.date.anytime().toISOString().substring(11, 19)'\n }\n\n if (parser !== 'faker') {\n throw new Error(`type '${type}' and parser '${parser}' can not work together`)\n }\n\n return 'faker.date.anytime()'\n },\n uuid: () => 'faker.string.uuid()',\n url: () => 'faker.internet.url()',\n and: (items: string[] = []) => `{...${items.join(', ...')}}`,\n object: () => 'object',\n ref: () => 'ref',\n matches: (value = '', regexGenerator: 'faker' | 'randexp' = 'faker') => {\n if (regexGenerator === 'randexp') {\n return `${transformers.toRegExpString(value, 'RandExp')}.gen()`\n }\n return `faker.helpers.fromRegExp(\"${value}\")`\n },\n email: () => 'faker.internet.email()',\n firstName: () => 'faker.person.firstName()',\n lastName: () => 'faker.person.lastName()',\n password: () => 'faker.internet.password()',\n phone: () => 'faker.phone.number()',\n blob: () => 'faker.image.url() as unknown as Blob',\n default: undefined,\n describe: undefined,\n const: (value?: string | number) => (value as string) ?? '',\n max: undefined,\n min: undefined,\n nullable: undefined,\n nullish: undefined,\n optional: undefined,\n readOnly: undefined,\n writeOnly: undefined,\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: undefined,\n interface: undefined,\n exclusiveMaximum: undefined,\n exclusiveMinimum: undefined,\n} satisfies SchemaMapper<string | null | undefined>\n\n/**\n * @link based on https://github.com/cellular/oazapfts/blob/7ba226ebb15374e8483cc53e7532f1663179a22c/src/codegen/generate.ts#L398\n */\n\nfunction schemaKeywordSorter(_a: Schema, b: Schema) {\n if (b.keyword === 'null') {\n return -1\n }\n\n return 0\n}\n\nexport function joinItems(items: string[]): string {\n switch (items.length) {\n case 0:\n return 'undefined'\n case 1:\n return items[0]!\n default:\n return fakerKeywordMapper.union(items)\n }\n}\n\ntype ParserOptions = {\n typeName?: string\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport const parse = createParser<string, ParserOptions>({\n mapper: fakerKeywordMapper,\n handlers: {\n union(tree, options) {\n const { current, schema, name, siblings } = tree\n if (!isKeyword(current, schemaKeywords.union)) return undefined\n\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((it) => this.parse({ schema, parent: current, name, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n and(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.and)) return undefined\n\n return fakerKeywordMapper.and(\n current.args.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n },\n array(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.array)) return undefined\n\n return fakerKeywordMapper.array(\n current.args.items\n .map((it) =>\n this.parse(\n { schema, parent: current, current: it, siblings: current.args.items },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[number]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n current.args.min,\n current.args.max,\n )\n },\n enum(tree, options) {\n const { current, parent, name } = tree\n if (!isKeyword(current, schemaKeywords.enum)) return undefined\n\n const isParentTuple = parent ? isKeyword(parent, schemaKeywords.tuple) : false\n\n if (isParentTuple) {\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n )\n }\n\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.value\n }\n if (schema.format === 'boolean') {\n return schema.value\n }\n return transformers.stringify(schema.value)\n }),\n // TODO replace this with getEnumNameFromSchema\n name ? options.typeName : undefined,\n )\n },\n ref(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.ref)) return undefined\n\n if (!current.args?.name) {\n throw new Error(`Name not defined for keyword ${current.keyword}`)\n }\n\n if (options.canOverride) {\n return `${current.args.name}(data)`\n }\n\n return `${current.args.name}()`\n },\n object(tree, options) {\n const { current, schema } = tree\n if (!isKeyword(current, schemaKeywords.object)) return undefined\n\n const argsObject = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schema = item[1]\n return schema && typeof schema.map === 'function'\n })\n .map(([name, schemas]) => {\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n const mappedName = nameSchema?.args || name\n\n // custom mapper(pluginOptions)\n if (options.mapper?.[mappedName]) {\n return `\"${name}\": ${options.mapper?.[mappedName]}`\n }\n\n return `\"${name}\": ${joinItems(\n schemas\n .sort(schemaKeywordSorter)\n .map((it) =>\n this.parse(\n { schema, name, parent: current, current: it, siblings: schemas },\n {\n ...options,\n typeName: `NonNullable<${options.typeName}>[${JSON.stringify(name)}]`,\n canOverride: false,\n },\n ),\n )\n .filter(Boolean),\n )}`\n })\n .join(',')\n\n return `{${argsObject}}`\n },\n tuple(tree, options) {\n const { current, schema, siblings } = tree\n if (!isKeyword(current, schemaKeywords.tuple)) return undefined\n\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((it) => this.parse({ schema, parent: current, current: it, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return this.parse({ schema, parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n },\n const(tree, _options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.const)) return undefined\n\n if (current.args.format === 'number' && current.args.name !== undefined) {\n return fakerKeywordMapper.const(current.args.name?.toString())\n }\n return fakerKeywordMapper.const(transformers.stringify(current.args.value))\n },\n matches(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.matches)) return undefined\n\n if (current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n return undefined\n },\n null(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.null)) return undefined\n\n return fakerKeywordMapper.null()\n },\n undefined(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.undefined)) return undefined\n\n return fakerKeywordMapper.undefined()\n },\n any(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.any)) return undefined\n\n return fakerKeywordMapper.any()\n },\n string(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.string)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n },\n number(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.number)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n },\n integer(tree, _options) {\n const { current, siblings } = tree\n if (!isKeyword(current, schemaKeywords.integer)) return undefined\n\n if (siblings) {\n const minSchema = findSchemaKeyword(siblings, 'min')\n const maxSchema = findSchemaKeyword(siblings, 'max')\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n },\n datetime(tree) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.datetime)) return undefined\n\n return fakerKeywordMapper.datetime()\n },\n date(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.date)) return undefined\n\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n },\n time(tree, options) {\n const { current } = tree\n if (!isKeyword(current, schemaKeywords.time)) return undefined\n\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n },\n },\n})\n","import transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\nimport { File, Function, FunctionParams } from '@kubb/react-fabric'\nimport type { KubbNode } from '@kubb/react-fabric/types'\nimport * as parserFaker from '../parser.ts'\nimport type { PluginFaker } from '../types.ts'\n\ntype Props = {\n name: string\n typeName: string\n tree: Array<Schema>\n seed?: PluginFaker['options']['seed']\n description?: string\n regexGenerator?: PluginFaker['options']['regexGenerator']\n mapper?: PluginFaker['options']['mapper']\n dateParser?: PluginFaker['options']['dateParser']\n canOverride: boolean\n}\n\nexport function Faker({ tree, description, name, typeName, seed, regexGenerator, canOverride, mapper, dateParser }: Props): KubbNode {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { name, schema, parent: undefined, current: schema, siblings },\n {\n typeName,\n regexGenerator,\n mapper,\n canOverride,\n dateParser,\n },\n ),\n )\n .filter(Boolean),\n )\n\n const isArray = fakerText.startsWith('faker.helpers.arrayElements') || fakerText.startsWith('faker.helpers.multiple')\n const isObject = fakerText.startsWith('{')\n const isTuple = fakerText.startsWith('faker.helpers.arrayElement')\n\n const isSimpleString = name === 'string'\n const isSimpleInt = name === 'integer'\n const isSimpleFloat = name === 'float'\n\n let fakerTextWithOverride = fakerText\n\n if (canOverride && isObject) {\n fakerTextWithOverride = `{\n ...${fakerText},\n ...data || {}\n}`\n }\n\n if (canOverride && isTuple) {\n fakerTextWithOverride = `data || ${fakerText}`\n }\n\n if (canOverride && isArray) {\n fakerTextWithOverride = `[\n ...${fakerText},\n ...data || []\n ]`\n }\n\n if (canOverride && isSimpleString) {\n fakerTextWithOverride = 'data ?? faker.string.alpha()'\n }\n\n if (canOverride && isSimpleInt) {\n fakerTextWithOverride = 'data ?? faker.number.int()'\n }\n\n if (canOverride && isSimpleFloat) {\n fakerTextWithOverride = 'data ?? faker.number.float()'\n }\n\n let type = `Partial<${typeName}>`\n\n if (isArray) type = typeName\n else if (isSimpleString) type = name\n else if (isSimpleInt || isSimpleFloat) type = 'number'\n\n const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type,\n optional: true,\n },\n })\n\n let returnType = canOverride ? typeName : undefined\n\n if (isSimpleString || isSimpleInt || isSimpleFloat) returnType = type\n\n return (\n <File.Source name={name} isExportable isIndexable>\n <Function\n export\n name={name}\n JSDoc={{ comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean) }}\n params={canOverride ? params.toConstructor() : undefined}\n returnType={returnType}\n >\n {seed ? `faker.seed(${JSON.stringify(seed)})` : undefined}\n <br />\n {`return ${fakerTextWithOverride}`}\n </Function>\n </File.Source>\n )\n}\n"],"mappings":"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"}
|
package/dist/components.cjs
CHANGED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
const require_components = require('./components-BW7xUtoJ.cjs');
|
|
2
|
+
let _kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
3
|
+
let _kubb_plugin_ts = require("@kubb/plugin-ts");
|
|
4
|
+
let _kubb_core_hooks = require("@kubb/core/hooks");
|
|
5
|
+
let _kubb_plugin_oas_generators = require("@kubb/plugin-oas/generators");
|
|
6
|
+
let _kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
|
|
7
|
+
let _kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
|
|
8
|
+
let _kubb_react_fabric = require("@kubb/react-fabric");
|
|
9
|
+
let _kubb_react_fabric_jsx_runtime = require("@kubb/react-fabric/jsx-runtime");
|
|
10
|
+
|
|
11
|
+
//#region src/generators/fakerGenerator.tsx
|
|
12
|
+
const fakerGenerator = (0, _kubb_plugin_oas_generators.createReactGenerator)({
|
|
13
|
+
name: "faker",
|
|
14
|
+
Operation({ operation, generator, plugin }) {
|
|
15
|
+
const { options, options: { dateParser, regexGenerator, seed, mapper } } = plugin;
|
|
16
|
+
const mode = (0, _kubb_core_hooks.useMode)();
|
|
17
|
+
const pluginManager = (0, _kubb_core_hooks.usePluginManager)();
|
|
18
|
+
const oas = (0, _kubb_plugin_oas_hooks.useOas)();
|
|
19
|
+
const { getSchemas, getFile, getGroup } = (0, _kubb_plugin_oas_hooks.useOperationManager)(generator);
|
|
20
|
+
const schemaManager = (0, _kubb_plugin_oas_hooks.useSchemaManager)();
|
|
21
|
+
const file = getFile(operation);
|
|
22
|
+
const schemas = getSchemas(operation);
|
|
23
|
+
const schemaGenerator = new _kubb_plugin_oas.SchemaGenerator(options, {
|
|
24
|
+
fabric: generator.context.fabric,
|
|
25
|
+
oas,
|
|
26
|
+
plugin,
|
|
27
|
+
events: generator.context.events,
|
|
28
|
+
pluginManager,
|
|
29
|
+
mode,
|
|
30
|
+
override: options.override
|
|
31
|
+
});
|
|
32
|
+
const operationSchemas = [
|
|
33
|
+
schemas.pathParams,
|
|
34
|
+
schemas.queryParams,
|
|
35
|
+
schemas.headerParams,
|
|
36
|
+
schemas.statusCodes,
|
|
37
|
+
schemas.request,
|
|
38
|
+
schemas.response
|
|
39
|
+
].flat().filter(Boolean);
|
|
40
|
+
const mapOperationSchema = ({ name, schema: schemaObject, description, ...options$1 }) => {
|
|
41
|
+
const tree = schemaGenerator.parse({
|
|
42
|
+
schemaObject,
|
|
43
|
+
name
|
|
44
|
+
});
|
|
45
|
+
const imports = schemaManager.getImports(tree);
|
|
46
|
+
const group = options$1.operation ? getGroup(options$1.operation) : void 0;
|
|
47
|
+
const faker = {
|
|
48
|
+
name: schemaManager.getName(name, { type: "function" }),
|
|
49
|
+
file: schemaManager.getFile(name)
|
|
50
|
+
};
|
|
51
|
+
const type = {
|
|
52
|
+
name: schemaManager.getName(name, {
|
|
53
|
+
type: "type",
|
|
54
|
+
pluginKey: [_kubb_plugin_ts.pluginTsName]
|
|
55
|
+
}),
|
|
56
|
+
file: schemaManager.getFile(options$1.operationName || name, {
|
|
57
|
+
pluginKey: [_kubb_plugin_ts.pluginTsName],
|
|
58
|
+
group
|
|
59
|
+
})
|
|
60
|
+
};
|
|
61
|
+
const canOverride = tree.some(({ keyword }) => keyword === _kubb_plugin_oas.schemaKeywords.array || keyword === _kubb_plugin_oas.schemaKeywords.and || keyword === _kubb_plugin_oas.schemaKeywords.object || keyword === _kubb_plugin_oas.schemaKeywords.union || keyword === _kubb_plugin_oas.schemaKeywords.tuple);
|
|
62
|
+
return /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsxs)(_kubb_react_fabric.Fragment, { children: [
|
|
63
|
+
canOverride && /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
64
|
+
isTypeOnly: true,
|
|
65
|
+
root: file.path,
|
|
66
|
+
path: type.file.path,
|
|
67
|
+
name: [type.name]
|
|
68
|
+
}),
|
|
69
|
+
imports.map((imp) => /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
70
|
+
root: file.path,
|
|
71
|
+
path: imp.path,
|
|
72
|
+
name: imp.name
|
|
73
|
+
}, [
|
|
74
|
+
imp.path,
|
|
75
|
+
imp.name,
|
|
76
|
+
imp.isTypeOnly
|
|
77
|
+
].join("-"))),
|
|
78
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(require_components.Faker, {
|
|
79
|
+
name: faker.name,
|
|
80
|
+
typeName: type.name,
|
|
81
|
+
description,
|
|
82
|
+
tree,
|
|
83
|
+
regexGenerator,
|
|
84
|
+
dateParser,
|
|
85
|
+
mapper,
|
|
86
|
+
seed,
|
|
87
|
+
canOverride
|
|
88
|
+
})
|
|
89
|
+
] });
|
|
90
|
+
};
|
|
91
|
+
return /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsxs)(_kubb_react_fabric.File, {
|
|
92
|
+
baseName: file.baseName,
|
|
93
|
+
path: file.path,
|
|
94
|
+
meta: file.meta,
|
|
95
|
+
banner: (0, _kubb_plugin_oas_utils.getBanner)({
|
|
96
|
+
oas,
|
|
97
|
+
output: plugin.options.output,
|
|
98
|
+
config: pluginManager.config
|
|
99
|
+
}),
|
|
100
|
+
footer: (0, _kubb_plugin_oas_utils.getFooter)({
|
|
101
|
+
oas,
|
|
102
|
+
output: plugin.options.output
|
|
103
|
+
}),
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
106
|
+
name: ["faker"],
|
|
107
|
+
path: "@faker-js/faker"
|
|
108
|
+
}),
|
|
109
|
+
regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
110
|
+
name: "RandExp",
|
|
111
|
+
path: "randexp"
|
|
112
|
+
}),
|
|
113
|
+
dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
114
|
+
path: dateParser,
|
|
115
|
+
name: dateParser
|
|
116
|
+
}),
|
|
117
|
+
operationSchemas.map(mapOperationSchema)
|
|
118
|
+
]
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
Schema({ schema, plugin }) {
|
|
122
|
+
const { getName, getFile, getImports } = (0, _kubb_plugin_oas_hooks.useSchemaManager)();
|
|
123
|
+
const { options: { output, dateParser, regexGenerator, seed, mapper } } = plugin;
|
|
124
|
+
const pluginManager = (0, _kubb_core_hooks.usePluginManager)();
|
|
125
|
+
const oas = (0, _kubb_plugin_oas_hooks.useOas)();
|
|
126
|
+
const imports = getImports(schema.tree);
|
|
127
|
+
const faker = {
|
|
128
|
+
name: getName(schema.name, { type: "function" }),
|
|
129
|
+
file: getFile(schema.name)
|
|
130
|
+
};
|
|
131
|
+
const type = {
|
|
132
|
+
name: getName(schema.name, {
|
|
133
|
+
type: "type",
|
|
134
|
+
pluginKey: [_kubb_plugin_ts.pluginTsName]
|
|
135
|
+
}),
|
|
136
|
+
file: getFile(schema.name, { pluginKey: [_kubb_plugin_ts.pluginTsName] })
|
|
137
|
+
};
|
|
138
|
+
const canOverride = schema.tree.some(({ keyword }) => keyword === _kubb_plugin_oas.schemaKeywords.array || keyword === _kubb_plugin_oas.schemaKeywords.and || keyword === _kubb_plugin_oas.schemaKeywords.object || keyword === _kubb_plugin_oas.schemaKeywords.union || keyword === _kubb_plugin_oas.schemaKeywords.tuple || keyword === _kubb_plugin_oas.schemaKeywords.string || keyword === _kubb_plugin_oas.schemaKeywords.integer || keyword === _kubb_plugin_oas.schemaKeywords.number);
|
|
139
|
+
return /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsxs)(_kubb_react_fabric.File, {
|
|
140
|
+
baseName: faker.file.baseName,
|
|
141
|
+
path: faker.file.path,
|
|
142
|
+
meta: faker.file.meta,
|
|
143
|
+
banner: (0, _kubb_plugin_oas_utils.getBanner)({
|
|
144
|
+
oas,
|
|
145
|
+
output,
|
|
146
|
+
config: pluginManager.config
|
|
147
|
+
}),
|
|
148
|
+
footer: (0, _kubb_plugin_oas_utils.getFooter)({
|
|
149
|
+
oas,
|
|
150
|
+
output
|
|
151
|
+
}),
|
|
152
|
+
children: [
|
|
153
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
154
|
+
name: ["faker"],
|
|
155
|
+
path: "@faker-js/faker"
|
|
156
|
+
}),
|
|
157
|
+
regexGenerator === "randexp" && /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
158
|
+
name: "RandExp",
|
|
159
|
+
path: "randexp"
|
|
160
|
+
}),
|
|
161
|
+
dateParser !== "faker" && /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
162
|
+
path: dateParser,
|
|
163
|
+
name: dateParser
|
|
164
|
+
}),
|
|
165
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
166
|
+
isTypeOnly: true,
|
|
167
|
+
root: faker.file.path,
|
|
168
|
+
path: type.file.path,
|
|
169
|
+
name: [type.name]
|
|
170
|
+
}),
|
|
171
|
+
imports.map((imp) => /* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(_kubb_react_fabric.File.Import, {
|
|
172
|
+
root: faker.file.path,
|
|
173
|
+
path: imp.path,
|
|
174
|
+
name: imp.name
|
|
175
|
+
}, [
|
|
176
|
+
imp.path,
|
|
177
|
+
imp.name,
|
|
178
|
+
imp.isTypeOnly
|
|
179
|
+
].join("-"))),
|
|
180
|
+
/* @__PURE__ */ (0, _kubb_react_fabric_jsx_runtime.jsx)(require_components.Faker, {
|
|
181
|
+
name: faker.name,
|
|
182
|
+
typeName: type.name,
|
|
183
|
+
description: schema.value.description,
|
|
184
|
+
tree: schema.tree,
|
|
185
|
+
regexGenerator,
|
|
186
|
+
dateParser,
|
|
187
|
+
mapper,
|
|
188
|
+
seed,
|
|
189
|
+
canOverride
|
|
190
|
+
})
|
|
191
|
+
]
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
//#endregion
|
|
197
|
+
Object.defineProperty(exports, 'fakerGenerator', {
|
|
198
|
+
enumerable: true,
|
|
199
|
+
get: function () {
|
|
200
|
+
return fakerGenerator;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=fakerGenerator-CDlH6RdG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fakerGenerator-
|
|
1
|
+
{"version":3,"file":"fakerGenerator-CDlH6RdG.cjs","names":["SchemaGenerator","options","pluginTsName","schemaKeywords","Fragment","File","Faker"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { useMode, usePluginManager } from '@kubb/core/hooks'\nimport { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Fragment } from '@kubb/react-fabric'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, generator, plugin }) {\n const {\n options,\n options: { dateParser, regexGenerator, seed, mapper },\n } = plugin\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager(generator)\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: generator.context.fabric,\n oas,\n plugin,\n events: generator.context.events,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, ...options }: OperationSchemaType) => {\n const tree = schemaGenerator.parse({ schemaObject, name })\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const faker = {\n name: schemaManager.getName(name, { type: 'function' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, { type: 'type', pluginKey: [pluginTsName] }),\n file: schemaManager.getFile(options.operationName || name, { pluginKey: [pluginTsName], group }),\n }\n\n const canOverride = tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple,\n )\n\n return (\n <Fragment>\n {canOverride && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Faker\n name={faker.name}\n typeName={type.name}\n description={description}\n tree={tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </Fragment>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, plugin }) {\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output, dateParser, regexGenerator, seed, mapper },\n } = plugin\n const pluginManager = usePluginManager()\n const oas = useOas()\n const imports = getImports(schema.tree)\n\n const faker = {\n name: getName(schema.name, { type: 'function' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n const canOverride = schema.tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple ||\n keyword === schemaKeywords.string ||\n keyword === schemaKeywords.integer ||\n keyword === schemaKeywords.number,\n )\n\n return (\n <File\n baseName={faker.file.baseName}\n path={faker.file.path}\n meta={faker.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n <File.Import isTypeOnly root={faker.file.path} path={type.file.path} name={[type.name]} />\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={faker.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Faker\n name={faker.name}\n typeName={type.name}\n description={schema.value.description}\n tree={schema.tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
|
package/dist/generators.cjs
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
const require_components = require('./components-
|
|
2
|
-
const require_fakerGenerator = require('./fakerGenerator-
|
|
1
|
+
const require_components = require('./components-BW7xUtoJ.cjs');
|
|
2
|
+
const require_fakerGenerator = require('./fakerGenerator-CDlH6RdG.cjs');
|
|
3
3
|
let node_path = require("node:path");
|
|
4
4
|
node_path = require_components.__toESM(node_path);
|
|
5
|
-
let
|
|
6
|
-
let
|
|
7
|
-
let
|
|
8
|
-
let
|
|
5
|
+
let _kubb_core = require("@kubb/core");
|
|
6
|
+
let _kubb_core_transformers = require("@kubb/core/transformers");
|
|
7
|
+
let _kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
8
|
+
let _kubb_plugin_ts = require("@kubb/plugin-ts");
|
|
9
9
|
|
|
10
10
|
//#region src/plugin.ts
|
|
11
11
|
const pluginFakerName = "plugin-faker";
|
|
12
|
-
const pluginFaker = (0,
|
|
12
|
+
const pluginFaker = (0, _kubb_core.definePlugin)((options) => {
|
|
13
13
|
const { output = {
|
|
14
14
|
path: "mocks",
|
|
15
15
|
barrelType: "named"
|
|
@@ -30,10 +30,10 @@ const pluginFaker = (0, __kubb_core.definePlugin)((options) => {
|
|
|
30
30
|
group,
|
|
31
31
|
usedEnumNames: {}
|
|
32
32
|
},
|
|
33
|
-
pre: [
|
|
33
|
+
pre: [_kubb_plugin_oas.pluginOasName, _kubb_plugin_ts.pluginTsName],
|
|
34
34
|
resolvePath(baseName, pathMode, options$1) {
|
|
35
35
|
const root = node_path.default.resolve(this.config.root, this.config.output.path);
|
|
36
|
-
if ((pathMode ?? (0,
|
|
36
|
+
if ((pathMode ?? (0, _kubb_core.getMode)(node_path.default.resolve(root, output.path))) === "single")
|
|
37
37
|
/**
|
|
38
38
|
* when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
|
|
39
39
|
* Other plugins then need to call addOrAppend instead of just add from the fileManager class
|
|
@@ -42,14 +42,14 @@ const pluginFaker = (0, __kubb_core.definePlugin)((options) => {
|
|
|
42
42
|
if (group && (options$1?.group?.path || options$1?.group?.tag)) {
|
|
43
43
|
const groupName = group?.name ? group.name : (ctx) => {
|
|
44
44
|
if (group?.type === "path") return `${ctx.group.split("/")[1]}`;
|
|
45
|
-
return `${(0,
|
|
45
|
+
return `${(0, _kubb_core_transformers.camelCase)(ctx.group)}Controller`;
|
|
46
46
|
};
|
|
47
47
|
return node_path.default.resolve(root, output.path, groupName({ group: group.type === "path" ? options$1.group.path : options$1.group.tag }), baseName);
|
|
48
48
|
}
|
|
49
49
|
return node_path.default.resolve(root, output.path, baseName);
|
|
50
50
|
},
|
|
51
51
|
resolveName(name, type) {
|
|
52
|
-
const resolvedName = (0,
|
|
52
|
+
const resolvedName = (0, _kubb_core_transformers.camelCase)(name, {
|
|
53
53
|
prefix: type ? "create" : void 0,
|
|
54
54
|
isFile: type === "file"
|
|
55
55
|
});
|
|
@@ -58,9 +58,9 @@ const pluginFaker = (0, __kubb_core.definePlugin)((options) => {
|
|
|
58
58
|
},
|
|
59
59
|
async install() {
|
|
60
60
|
const root = node_path.default.resolve(this.config.root, this.config.output.path);
|
|
61
|
-
const mode = (0,
|
|
61
|
+
const mode = (0, _kubb_core.getMode)(node_path.default.resolve(root, output.path));
|
|
62
62
|
const oas = await this.getOas();
|
|
63
|
-
const schemaFiles = await new
|
|
63
|
+
const schemaFiles = await new _kubb_plugin_oas.SchemaGenerator(this.plugin.options, {
|
|
64
64
|
fabric: this.fabric,
|
|
65
65
|
oas,
|
|
66
66
|
pluginManager: this.pluginManager,
|
|
@@ -73,7 +73,7 @@ const pluginFaker = (0, __kubb_core.definePlugin)((options) => {
|
|
|
73
73
|
output: output.path
|
|
74
74
|
}).build(...generators);
|
|
75
75
|
await this.upsertFile(...schemaFiles);
|
|
76
|
-
const operationFiles = await new
|
|
76
|
+
const operationFiles = await new _kubb_plugin_oas.OperationGenerator(this.plugin.options, {
|
|
77
77
|
fabric: this.fabric,
|
|
78
78
|
oas,
|
|
79
79
|
pluginManager: this.pluginManager,
|
|
@@ -86,7 +86,7 @@ const pluginFaker = (0, __kubb_core.definePlugin)((options) => {
|
|
|
86
86
|
mode
|
|
87
87
|
}).build(...generators);
|
|
88
88
|
await this.upsertFile(...operationFiles);
|
|
89
|
-
const barrelFiles = await (0,
|
|
89
|
+
const barrelFiles = await (0, _kubb_core.getBarrelFiles)(this.fabric.files, {
|
|
90
90
|
type: output.barrelType ?? "named",
|
|
91
91
|
root,
|
|
92
92
|
output,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["fakerGenerator","pluginOasName","pluginTsName","path","options","groupName: Group['name']","SchemaGenerator","OperationGenerator"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { definePlugin, type Group, getBarrelFiles, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { fakerGenerator } from './generators/fakerGenerator.tsx'\nimport type { PluginFaker } from './types.ts'\n\nexport const pluginFakerName = 'plugin-faker' satisfies PluginFaker['name']\n\nexport const pluginFaker = definePlugin<PluginFaker>((options) => {\n const {\n output = { path: 'mocks', barrelType: 'named' },\n seed,\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n mapper = {},\n unknownType = 'any',\n emptySchemaType = unknownType,\n dateType = 'string',\n dateParser = 'faker',\n generators = [fakerGenerator].filter(Boolean),\n regexGenerator = 'faker',\n contentType,\n } = options\n\n const usedEnumNames = {}\n\n return {\n name: pluginFakerName,\n options: {\n output,\n transformers,\n seed,\n dateType,\n unknownType,\n emptySchemaType,\n dateParser,\n mapper,\n override,\n regexGenerator,\n group,\n usedEnumNames,\n },\n pre: [pluginOasName, pluginTsName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n prefix: type ? 'create' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async install() {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n const oas = await this.getOas()\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.upsertFile(...operationFiles)\n\n const barrelFiles = await getBarrelFiles(this.fabric.files, {\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":";;;;;;;;;;AAQA,MAAa,kBAAkB;AAE/B,MAAa,
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["fakerGenerator","pluginOasName","pluginTsName","path","options","groupName: Group['name']","SchemaGenerator","OperationGenerator"],"sources":["../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { definePlugin, type Group, getBarrelFiles, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { OperationGenerator, pluginOasName, SchemaGenerator } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { fakerGenerator } from './generators/fakerGenerator.tsx'\nimport type { PluginFaker } from './types.ts'\n\nexport const pluginFakerName = 'plugin-faker' satisfies PluginFaker['name']\n\nexport const pluginFaker = definePlugin<PluginFaker>((options) => {\n const {\n output = { path: 'mocks', barrelType: 'named' },\n seed,\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n mapper = {},\n unknownType = 'any',\n emptySchemaType = unknownType,\n dateType = 'string',\n dateParser = 'faker',\n generators = [fakerGenerator].filter(Boolean),\n regexGenerator = 'faker',\n contentType,\n } = options\n\n const usedEnumNames = {}\n\n return {\n name: pluginFakerName,\n options: {\n output,\n transformers,\n seed,\n dateType,\n unknownType,\n emptySchemaType,\n dateParser,\n mapper,\n override,\n regexGenerator,\n group,\n usedEnumNames,\n },\n pre: [pluginOasName, pluginTsName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n prefix: type ? 'create' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async install() {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n const oas = await this.getOas()\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n events: this.events,\n plugin: this.plugin,\n contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n await this.upsertFile(...operationFiles)\n\n const barrelFiles = await getBarrelFiles(this.fabric.files, {\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginKey: this.plugin.key,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":";;;;;;;;;;AAQA,MAAa,kBAAkB;AAE/B,MAAa,4CAAyC,YAAY;CAChE,MAAM,EACJ,SAAS;EAAE,MAAM;EAAS,YAAY;EAAS,EAC/C,MACA,OACA,UAAU,EAAE,EACZ,SACA,WAAW,EAAE,EACb,eAAe,EAAE,EACjB,SAAS,EAAE,EACX,cAAc,OACd,kBAAkB,aAClB,WAAW,UACX,aAAa,SACb,aAAa,CAACA,sCAAe,CAAC,OAAO,QAAQ,EAC7C,iBAAiB,SACjB,gBACE;AAIJ,QAAO;EACL,MAAM;EACN,SAAS;GACP;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,eAhBkB,EAAE;GAiBrB;EACD,KAAK,CAACC,gCAAeC,6BAAa;EAClC,YAAY,UAAU,UAAU,WAAS;GACvC,MAAM,OAAOC,kBAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK;AAGpE,QAFa,oCAAoBA,kBAAK,QAAQ,MAAM,OAAO,KAAK,CAAC,MAEpD;;;;;AAKX,UAAOA,kBAAK,QAAQ,MAAM,OAAO,KAAK;AAGxC,OAAI,UAAUC,WAAS,OAAO,QAAQA,WAAS,OAAO,MAAM;IAC1D,MAAMC,YAA2B,OAAO,OACpC,MAAM,QACL,QAAQ;AACP,SAAI,OAAO,SAAS,OAClB,QAAO,GAAG,IAAI,MAAM,MAAM,IAAI,CAAC;AAEjC,YAAO,0CAAa,IAAI,MAAM,CAAC;;AAGrC,WAAOF,kBAAK,QACV,MACA,OAAO,MACP,UAAU,EACR,OAAO,MAAM,SAAS,SAASC,UAAQ,MAAM,OAAQA,UAAQ,MAAM,KACpE,CAAC,EACF,SACD;;AAGH,UAAOD,kBAAK,QAAQ,MAAM,OAAO,MAAM,SAAS;;EAElD,YAAY,MAAM,MAAM;GACtB,MAAM,sDAAyB,MAAM;IACnC,QAAQ,OAAO,WAAW;IAC1B,QAAQ,SAAS;IAClB,CAAC;AAEF,OAAI,KACF,QAAO,cAAc,OAAO,cAAc,KAAK,IAAI;AAGrD,UAAO;;EAET,MAAM,UAAU;GACd,MAAM,OAAOA,kBAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK;GACpE,MAAM,+BAAeA,kBAAK,QAAQ,MAAM,OAAO,KAAK,CAAC;GACrD,MAAM,MAAM,MAAM,KAAK,QAAQ;GAe/B,MAAM,cAAc,MAbI,IAAIG,iCAAgB,KAAK,OAAO,SAAS;IAC/D,QAAQ,KAAK;IACb;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb;IACA,SAAS;IACT;IACA;IACA,QAAQ,OAAO;IAChB,CAAC,CAEwC,MAAM,GAAG,WAAW;AAC9D,SAAM,KAAK,WAAW,GAAG,YAAY;GAerC,MAAM,iBAAiB,MAbI,IAAIC,oCAAmB,KAAK,OAAO,SAAS;IACrE,QAAQ,KAAK;IACb;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb;IACA;IACA;IACA;IACA;IACD,CAAC,CAE8C,MAAM,GAAG,WAAW;AACpE,SAAM,KAAK,WAAW,GAAG,eAAe;GAExC,MAAM,cAAc,qCAAqB,KAAK,OAAO,OAAO;IAC1D,MAAM,OAAO,cAAc;IAC3B;IACA;IACA,MAAM,EACJ,WAAW,KAAK,OAAO,KACxB;IACF,CAAC;AAEF,SAAM,KAAK,WAAW,GAAG,YAAY;;EAExC;EACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/plugin-faker",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.5",
|
|
4
4
|
"description": "Faker.js data generator plugin for Kubb, creating realistic mock data from OpenAPI specifications for development and testing.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"faker",
|
|
@@ -68,14 +68,11 @@
|
|
|
68
68
|
}
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@kubb/react-fabric": "0.7.
|
|
72
|
-
"@kubb/core": "4.12.
|
|
73
|
-
"@kubb/oas": "4.12.
|
|
74
|
-
"@kubb/plugin-oas": "4.12.
|
|
75
|
-
"@kubb/plugin-ts": "4.12.
|
|
76
|
-
},
|
|
77
|
-
"devDependencies": {
|
|
78
|
-
"@kubb/plugin-oas": "4.12.3"
|
|
71
|
+
"@kubb/react-fabric": "0.7.1",
|
|
72
|
+
"@kubb/core": "4.12.5",
|
|
73
|
+
"@kubb/oas": "4.12.5",
|
|
74
|
+
"@kubb/plugin-oas": "4.12.5",
|
|
75
|
+
"@kubb/plugin-ts": "4.12.5"
|
|
79
76
|
},
|
|
80
77
|
"engines": {
|
|
81
78
|
"node": ">=20"
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
const require_components = require('./components-CYQi2D8d.cjs');
|
|
2
|
-
let __kubb_plugin_oas = require("@kubb/plugin-oas");
|
|
3
|
-
let __kubb_plugin_ts = require("@kubb/plugin-ts");
|
|
4
|
-
let __kubb_core_hooks = require("@kubb/core/hooks");
|
|
5
|
-
let __kubb_plugin_oas_generators = require("@kubb/plugin-oas/generators");
|
|
6
|
-
let __kubb_plugin_oas_hooks = require("@kubb/plugin-oas/hooks");
|
|
7
|
-
let __kubb_plugin_oas_utils = require("@kubb/plugin-oas/utils");
|
|
8
|
-
let __kubb_react_fabric = require("@kubb/react-fabric");
|
|
9
|
-
let __kubb_react_fabric_jsx_runtime = require("@kubb/react-fabric/jsx-runtime");
|
|
10
|
-
|
|
11
|
-
//#region src/generators/fakerGenerator.tsx
|
|
12
|
-
const fakerGenerator = (0, __kubb_plugin_oas_generators.createReactGenerator)({
|
|
13
|
-
name: "faker",
|
|
14
|
-
Operation({ operation, generator, plugin }) {
|
|
15
|
-
const { options, options: { dateParser, regexGenerator, seed, mapper } } = plugin;
|
|
16
|
-
const mode = (0, __kubb_core_hooks.useMode)();
|
|
17
|
-
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
18
|
-
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
19
|
-
const { getSchemas, getFile, getGroup } = (0, __kubb_plugin_oas_hooks.useOperationManager)(generator);
|
|
20
|
-
const schemaManager = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
|
|
21
|
-
const file = getFile(operation);
|
|
22
|
-
const schemas = getSchemas(operation);
|
|
23
|
-
const schemaGenerator = new __kubb_plugin_oas.SchemaGenerator(options, {
|
|
24
|
-
fabric: generator.context.fabric,
|
|
25
|
-
oas,
|
|
26
|
-
plugin,
|
|
27
|
-
events: generator.context.events,
|
|
28
|
-
pluginManager,
|
|
29
|
-
mode,
|
|
30
|
-
override: options.override
|
|
31
|
-
});
|
|
32
|
-
const operationSchemas = [
|
|
33
|
-
schemas.pathParams,
|
|
34
|
-
schemas.queryParams,
|
|
35
|
-
schemas.headerParams,
|
|
36
|
-
schemas.statusCodes,
|
|
37
|
-
schemas.request,
|
|
38
|
-
schemas.response
|
|
39
|
-
].flat().filter(Boolean);
|
|
40
|
-
const mapOperationSchema = ({ name, schema: schemaObject, description, ...options$1 }) => {
|
|
41
|
-
const tree = schemaGenerator.parse({
|
|
42
|
-
schemaObject,
|
|
43
|
-
name
|
|
44
|
-
});
|
|
45
|
-
const imports = schemaManager.getImports(tree);
|
|
46
|
-
const group = options$1.operation ? getGroup(options$1.operation) : void 0;
|
|
47
|
-
const faker = {
|
|
48
|
-
name: schemaManager.getName(name, { type: "function" }),
|
|
49
|
-
file: schemaManager.getFile(name)
|
|
50
|
-
};
|
|
51
|
-
const type = {
|
|
52
|
-
name: schemaManager.getName(name, {
|
|
53
|
-
type: "type",
|
|
54
|
-
pluginKey: [__kubb_plugin_ts.pluginTsName]
|
|
55
|
-
}),
|
|
56
|
-
file: schemaManager.getFile(options$1.operationName || name, {
|
|
57
|
-
pluginKey: [__kubb_plugin_ts.pluginTsName],
|
|
58
|
-
group
|
|
59
|
-
})
|
|
60
|
-
};
|
|
61
|
-
const canOverride = tree.some(({ keyword }) => keyword === __kubb_plugin_oas.schemaKeywords.array || keyword === __kubb_plugin_oas.schemaKeywords.and || keyword === __kubb_plugin_oas.schemaKeywords.object || keyword === __kubb_plugin_oas.schemaKeywords.union || keyword === __kubb_plugin_oas.schemaKeywords.tuple);
|
|
62
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.Fragment, { children: [
|
|
63
|
-
canOverride && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
64
|
-
isTypeOnly: true,
|
|
65
|
-
root: file.path,
|
|
66
|
-
path: type.file.path,
|
|
67
|
-
name: [type.name]
|
|
68
|
-
}),
|
|
69
|
-
imports.map((imp) => /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
70
|
-
root: file.path,
|
|
71
|
-
path: imp.path,
|
|
72
|
-
name: imp.name
|
|
73
|
-
}, [
|
|
74
|
-
imp.path,
|
|
75
|
-
imp.name,
|
|
76
|
-
imp.isTypeOnly
|
|
77
|
-
].join("-"))),
|
|
78
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Faker, {
|
|
79
|
-
name: faker.name,
|
|
80
|
-
typeName: type.name,
|
|
81
|
-
description,
|
|
82
|
-
tree,
|
|
83
|
-
regexGenerator,
|
|
84
|
-
dateParser,
|
|
85
|
-
mapper,
|
|
86
|
-
seed,
|
|
87
|
-
canOverride
|
|
88
|
-
})
|
|
89
|
-
] });
|
|
90
|
-
};
|
|
91
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
92
|
-
baseName: file.baseName,
|
|
93
|
-
path: file.path,
|
|
94
|
-
meta: file.meta,
|
|
95
|
-
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
96
|
-
oas,
|
|
97
|
-
output: plugin.options.output,
|
|
98
|
-
config: pluginManager.config
|
|
99
|
-
}),
|
|
100
|
-
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
101
|
-
oas,
|
|
102
|
-
output: plugin.options.output
|
|
103
|
-
}),
|
|
104
|
-
children: [
|
|
105
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
106
|
-
name: ["faker"],
|
|
107
|
-
path: "@faker-js/faker"
|
|
108
|
-
}),
|
|
109
|
-
regexGenerator === "randexp" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
110
|
-
name: "RandExp",
|
|
111
|
-
path: "randexp"
|
|
112
|
-
}),
|
|
113
|
-
dateParser !== "faker" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
114
|
-
path: dateParser,
|
|
115
|
-
name: dateParser
|
|
116
|
-
}),
|
|
117
|
-
operationSchemas.map(mapOperationSchema)
|
|
118
|
-
]
|
|
119
|
-
});
|
|
120
|
-
},
|
|
121
|
-
Schema({ schema, plugin }) {
|
|
122
|
-
const { getName, getFile, getImports } = (0, __kubb_plugin_oas_hooks.useSchemaManager)();
|
|
123
|
-
const { options: { output, dateParser, regexGenerator, seed, mapper } } = plugin;
|
|
124
|
-
const pluginManager = (0, __kubb_core_hooks.usePluginManager)();
|
|
125
|
-
const oas = (0, __kubb_plugin_oas_hooks.useOas)();
|
|
126
|
-
const imports = getImports(schema.tree);
|
|
127
|
-
const faker = {
|
|
128
|
-
name: getName(schema.name, { type: "function" }),
|
|
129
|
-
file: getFile(schema.name)
|
|
130
|
-
};
|
|
131
|
-
const type = {
|
|
132
|
-
name: getName(schema.name, {
|
|
133
|
-
type: "type",
|
|
134
|
-
pluginKey: [__kubb_plugin_ts.pluginTsName]
|
|
135
|
-
}),
|
|
136
|
-
file: getFile(schema.name, { pluginKey: [__kubb_plugin_ts.pluginTsName] })
|
|
137
|
-
};
|
|
138
|
-
const canOverride = schema.tree.some(({ keyword }) => keyword === __kubb_plugin_oas.schemaKeywords.array || keyword === __kubb_plugin_oas.schemaKeywords.and || keyword === __kubb_plugin_oas.schemaKeywords.object || keyword === __kubb_plugin_oas.schemaKeywords.union || keyword === __kubb_plugin_oas.schemaKeywords.tuple || keyword === __kubb_plugin_oas.schemaKeywords.string || keyword === __kubb_plugin_oas.schemaKeywords.integer || keyword === __kubb_plugin_oas.schemaKeywords.number);
|
|
139
|
-
return /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsxs)(__kubb_react_fabric.File, {
|
|
140
|
-
baseName: faker.file.baseName,
|
|
141
|
-
path: faker.file.path,
|
|
142
|
-
meta: faker.file.meta,
|
|
143
|
-
banner: (0, __kubb_plugin_oas_utils.getBanner)({
|
|
144
|
-
oas,
|
|
145
|
-
output,
|
|
146
|
-
config: pluginManager.config
|
|
147
|
-
}),
|
|
148
|
-
footer: (0, __kubb_plugin_oas_utils.getFooter)({
|
|
149
|
-
oas,
|
|
150
|
-
output
|
|
151
|
-
}),
|
|
152
|
-
children: [
|
|
153
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
154
|
-
name: ["faker"],
|
|
155
|
-
path: "@faker-js/faker"
|
|
156
|
-
}),
|
|
157
|
-
regexGenerator === "randexp" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
158
|
-
name: "RandExp",
|
|
159
|
-
path: "randexp"
|
|
160
|
-
}),
|
|
161
|
-
dateParser !== "faker" && /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
162
|
-
path: dateParser,
|
|
163
|
-
name: dateParser
|
|
164
|
-
}),
|
|
165
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
166
|
-
isTypeOnly: true,
|
|
167
|
-
root: faker.file.path,
|
|
168
|
-
path: type.file.path,
|
|
169
|
-
name: [type.name]
|
|
170
|
-
}),
|
|
171
|
-
imports.map((imp) => /* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(__kubb_react_fabric.File.Import, {
|
|
172
|
-
root: faker.file.path,
|
|
173
|
-
path: imp.path,
|
|
174
|
-
name: imp.name
|
|
175
|
-
}, [
|
|
176
|
-
imp.path,
|
|
177
|
-
imp.name,
|
|
178
|
-
imp.isTypeOnly
|
|
179
|
-
].join("-"))),
|
|
180
|
-
/* @__PURE__ */ (0, __kubb_react_fabric_jsx_runtime.jsx)(require_components.Faker, {
|
|
181
|
-
name: faker.name,
|
|
182
|
-
typeName: type.name,
|
|
183
|
-
description: schema.value.description,
|
|
184
|
-
tree: schema.tree,
|
|
185
|
-
regexGenerator,
|
|
186
|
-
dateParser,
|
|
187
|
-
mapper,
|
|
188
|
-
seed,
|
|
189
|
-
canOverride
|
|
190
|
-
})
|
|
191
|
-
]
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
//#endregion
|
|
197
|
-
Object.defineProperty(exports, 'fakerGenerator', {
|
|
198
|
-
enumerable: true,
|
|
199
|
-
get: function () {
|
|
200
|
-
return fakerGenerator;
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
//# sourceMappingURL=fakerGenerator-CSSHNMRH.cjs.map
|