@kubb/plugin-faker 3.17.0 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/{components-BpyQzZAY.cjs → components-CS6YqEIx.cjs} +2 -2
  2. package/dist/components-CS6YqEIx.cjs.map +1 -0
  3. package/dist/{components-BwSq4Ikw.js → components-D8OzxwU7.js} +2 -2
  4. package/dist/components-D8OzxwU7.js.map +1 -0
  5. package/dist/components.cjs +1 -1
  6. package/dist/components.d.cts +1 -1
  7. package/dist/components.d.ts +1 -1
  8. package/dist/components.js +1 -1
  9. package/dist/{fakerGenerator-CXR9ksYA.js → fakerGenerator-CfyhULJV.js} +2 -2
  10. package/dist/{fakerGenerator-CXR9ksYA.js.map → fakerGenerator-CfyhULJV.js.map} +1 -1
  11. package/dist/{fakerGenerator-S8sgrtl5.cjs → fakerGenerator-D9Vhfkyi.cjs} +2 -2
  12. package/dist/{fakerGenerator-S8sgrtl5.cjs.map → fakerGenerator-D9Vhfkyi.cjs.map} +1 -1
  13. package/dist/generators.cjs +2 -2
  14. package/dist/generators.d.cts +1 -1
  15. package/dist/generators.d.ts +1 -1
  16. package/dist/generators.js +2 -2
  17. package/dist/index.cjs +2 -2
  18. package/dist/index.d.cts +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +2 -2
  21. package/dist/{types-DYUKPbgH.d.ts → types-B1Xb1ZXg.d.cts} +22 -1
  22. package/dist/{types-Bh_6SttY.d.cts → types-DsDfBfOk.d.ts} +22 -1
  23. package/package.json +8 -8
  24. package/src/generators/__snapshots__/pet.ts +1 -1
  25. package/src/generators/__snapshots__/petWithDateString.ts +1 -1
  26. package/src/generators/__snapshots__/petWithDayjs.ts +1 -1
  27. package/src/generators/__snapshots__/petWithMapper.ts +1 -1
  28. package/src/parser.ts +1 -1
  29. package/dist/components-BpyQzZAY.cjs.map +0 -1
  30. package/dist/components-BwSq4Ikw.js.map +0 -1
@@ -87,7 +87,7 @@ const fakerKeywordMapper = {
87
87
  ref: () => "ref",
88
88
  matches: (value = "", regexGenerator = "faker") => {
89
89
  if (regexGenerator === "randexp") return `${__kubb_core_transformers.default.toRegExpString(value, "RandExp")}.gen()`;
90
- return `faker.helpers.fromRegExp(${__kubb_core_transformers.default.toRegExpString(value)})`;
90
+ return `faker.helpers.fromRegExp("${value}")`;
91
91
  },
92
92
  email: () => "faker.internet.email()",
93
93
  firstName: () => "faker.person.firstName()",
@@ -321,4 +321,4 @@ Object.defineProperty(exports, '__toESM', {
321
321
  return __toESM;
322
322
  }
323
323
  });
324
- //# sourceMappingURL=components-BpyQzZAY.cjs.map
324
+ //# sourceMappingURL=components-CS6YqEIx.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-CS6YqEIx.cjs","names":["transformers","schemaKeywords","name","SchemaGenerator","value","options","FunctionParams","File","Function","transformers"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaTree, 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[] = []) => `Object.assign({}, ${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} 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 name: string\n typeName?: string\n description?: string\n\n seed?: number | number[]\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse({ current, parent, name, siblings }: SchemaTree, options: ParserOptions): string | null | undefined {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(\n current.args.items\n .map((schema) =>\n parse(\n { parent: current, current: schema, siblings },\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\n if (isKeyword(current, schemaKeywords.enum)) {\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\n if (isKeyword(current, schemaKeywords.ref)) {\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\n if (isKeyword(current, schemaKeywords.object)) {\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((schema) =>\n parse(\n { name, parent: current, current: schema, 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\n if (isKeyword(current, schemaKeywords.tuple)) {\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return parse({ parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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\n if (isKeyword(current, schemaKeywords.matches) && current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n\n if (isKeyword(current, schemaKeywords.null) || isKeyword(current, schemaKeywords.undefined) || isKeyword(current, schemaKeywords.any)) {\n return value() || ''\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return fakerKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n }\n\n if (current.keyword in fakerKeywordMapper && 'args' in current) {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper] as (typeof fakerKeywordMapper)['const']\n\n const options = JSON.stringify((current as SchemaKeywordBase<unknown>).args)\n\n return value(options)\n }\n\n if (current.keyword in fakerKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { File, Function, FunctionParams } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\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) {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { parent: undefined, current: schema, siblings },\n {\n name,\n typeName,\n seed,\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 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 const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type: isArray ? typeName : `Partial<${typeName}>`,\n optional: true,\n },\n })\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={canOverride ? typeName : undefined}\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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"}
@@ -64,7 +64,7 @@ const fakerKeywordMapper = {
64
64
  ref: () => "ref",
65
65
  matches: (value = "", regexGenerator = "faker") => {
66
66
  if (regexGenerator === "randexp") return `${transformers.toRegExpString(value, "RandExp")}.gen()`;
67
- return `faker.helpers.fromRegExp(${transformers.toRegExpString(value)})`;
67
+ return `faker.helpers.fromRegExp("${value}")`;
68
68
  },
69
69
  email: () => "faker.internet.email()",
70
70
  firstName: () => "faker.person.firstName()",
@@ -287,4 +287,4 @@ function Faker({ tree, description, name, typeName, seed, regexGenerator, canOve
287
287
 
288
288
  //#endregion
289
289
  export { Faker };
290
- //# sourceMappingURL=components-BwSq4Ikw.js.map
290
+ //# sourceMappingURL=components-D8OzxwU7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-D8OzxwU7.js","names":["name","value","options"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaTree, 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[] = []) => `Object.assign({}, ${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} 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 name: string\n typeName?: string\n description?: string\n\n seed?: number | number[]\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse({ current, parent, name, siblings }: SchemaTree, options: ParserOptions): string | null | undefined {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(\n current.args.items\n .map((schema) =>\n parse(\n { parent: current, current: schema, siblings },\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\n if (isKeyword(current, schemaKeywords.enum)) {\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\n if (isKeyword(current, schemaKeywords.ref)) {\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\n if (isKeyword(current, schemaKeywords.object)) {\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((schema) =>\n parse(\n { name, parent: current, current: schema, 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\n if (isKeyword(current, schemaKeywords.tuple)) {\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return parse({ parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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\n if (isKeyword(current, schemaKeywords.matches) && current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n\n if (isKeyword(current, schemaKeywords.null) || isKeyword(current, schemaKeywords.undefined) || isKeyword(current, schemaKeywords.any)) {\n return value() || ''\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return fakerKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n }\n\n if (current.keyword in fakerKeywordMapper && 'args' in current) {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper] as (typeof fakerKeywordMapper)['const']\n\n const options = JSON.stringify((current as SchemaKeywordBase<unknown>).args)\n\n return value(options)\n }\n\n if (current.keyword in fakerKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { File, Function, FunctionParams } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\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) {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { parent: undefined, current: schema, siblings },\n {\n name,\n typeName,\n seed,\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 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 const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type: isArray ? typeName : `Partial<${typeName}>`,\n optional: true,\n },\n })\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={canOverride ? typeName : undefined}\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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"}
@@ -1,3 +1,3 @@
1
- const require_components = require('./components-BpyQzZAY.cjs');
1
+ const require_components = require('./components-CS6YqEIx.cjs');
2
2
 
3
3
  exports.Faker = require_components.Faker;
@@ -1,4 +1,4 @@
1
- import { PluginFaker, Schema } from "./types-Bh_6SttY.cjs";
1
+ import { PluginFaker, Schema } from "./types-B1Xb1ZXg.cjs";
2
2
 
3
3
  //#region src/components/Faker.d.ts
4
4
  type Props = {
@@ -1,4 +1,4 @@
1
- import { PluginFaker, Schema } from "./types-DYUKPbgH.js";
1
+ import { PluginFaker, Schema } from "./types-DsDfBfOk.js";
2
2
 
3
3
  //#region src/components/Faker.d.ts
4
4
  type Props = {
@@ -1,3 +1,3 @@
1
- import { Faker } from "./components-BwSq4Ikw.js";
1
+ import { Faker } from "./components-D8OzxwU7.js";
2
2
 
3
3
  export { Faker };
@@ -1,4 +1,4 @@
1
- import { Faker } from "./components-BwSq4Ikw.js";
1
+ import { Faker } from "./components-D8OzxwU7.js";
2
2
  import { SchemaGenerator, createReactGenerator, schemaKeywords } from "@kubb/plugin-oas";
3
3
  import { pluginTsName } from "@kubb/plugin-ts";
4
4
  import { Oas } from "@kubb/plugin-oas/components";
@@ -196,4 +196,4 @@ const fakerGenerator = createReactGenerator({
196
196
 
197
197
  //#endregion
198
198
  export { fakerGenerator };
199
- //# sourceMappingURL=fakerGenerator-CXR9ksYA.js.map
199
+ //# sourceMappingURL=fakerGenerator-CfyhULJV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fakerGenerator-CXR9ksYA.js","names":["options"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\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, useApp } from '@kubb/react'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\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, i: number) => {\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 <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\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 </Oas.Schema>\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, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output },\n },\n } = useApp<PluginFaker>()\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 )\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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"}
1
+ {"version":3,"file":"fakerGenerator-CfyhULJV.js","names":["options"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\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, useApp } from '@kubb/react'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\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, i: number) => {\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 <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\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 </Oas.Schema>\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, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output },\n },\n } = useApp<PluginFaker>()\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 )\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":";;;;;;;;;;AASA,MAAa,iBAAiB,qBAAkC;CAC9D,MAAM;CACN,UAAU,EAAE,WAAW,SAAS,EAAE;EAChC,MAAM,EAAE,YAAY,gBAAgB,MAAM,QAAQ,GAAG;EAErD,MAAM,EAAE,QAAQ,eAAe,MAAM,GAAG;EACxC,MAAM,MAAM;EACZ,MAAM,EAAE,YAAY,SAAS,UAAU,GAAG;EAC1C,MAAM,gBAAgB;EAEtB,MAAM,OAAO,QAAQ;EACrB,MAAM,UAAU,WAAW;EAC3B,MAAM,kBAAkB,IAAI,gBAAgB,SAAS;GACnD;GACA;GACA;GACA;GACA,UAAU,QAAQ;GACnB;EAED,MAAM,mBAAmB;GAAC,QAAQ;GAAY,QAAQ;GAAa,QAAQ;GAAc,QAAQ;GAAa,QAAQ;GAAS,QAAQ;GAAS,CAC7I,OACA,OAAO;EAEV,MAAM,sBAAsB,EAAE,MAAM,QAAQ,cAAc,YAAa,GAAGA,WAA8B,EAAE,MAAc;GACtH,MAAM,OAAO,gBAAgB,MAAM;IAAE;IAAc;IAAM;GACzD,MAAM,UAAU,cAAc,WAAW;GACzC,MAAM,QAAQA,UAAQ,YAAY,SAASA,UAAQ,aAAa;GAEhE,MAAM,QAAQ;IACZ,MAAM,cAAc,QAAQ,MAAM,EAAE,MAAM,YAAY;IACtD,MAAM,cAAc,QAAQ;IAC7B;GAED,MAAM,OAAO;IACX,MAAM,cAAc,QAAQ,MAAM;KAAE,MAAM;KAAQ,WAAW,CAAC,aAAa;KAAE;IAC7E,MAAM,cAAc,QAAQA,UAAQ,iBAAiB,MAAM;KAAE,WAAW,CAAC,aAAa;KAAE;KAAO;IAChG;GAED,MAAM,cAAc,KAAK,MACtB,EAAE,SAAS,KACV,YAAY,eAAe,SAC3B,YAAY,eAAe,OAC3B,YAAY,eAAe,UAC3B,YAAY,eAAe,SAC3B,YAAY,eAAe;AAG/B,UACE,qBAAC,IAAI;IAAqB;IAAoB;IAAoB;;KAC/D,eAAe,oBAAC,KAAK;MAAO;MAAW,MAAM,KAAK;MAAM,MAAM,KAAK,KAAK;MAAM,MAAM,CAAC,KAAK,KAAK;;KAC/F,QAAQ,KAAK,QACZ,oBAAC,KAAK;MAA4D,MAAM,KAAK;MAAM,MAAM,IAAI;MAAM,MAAM,IAAI;QAA3F;MAAC,IAAI;MAAM,IAAI;MAAM,IAAI;MAAW,CAAC,KAAK;KAE9D,oBAAC;MACC,MAAM,MAAM;MACZ,UAAU,KAAK;MACF;MACP;MACU;MACJ;MACJ;MACF;MACO;;;MAdA;EAkBpB;AAED,SACE,qBAAC;GACC,UAAU,KAAK;GACf,MAAM,KAAK;GACX,MAAM,KAAK;GACX,QAAQ,UAAU;IAAE;IAAK,QAAQ,OAAO,QAAQ;IAAQ,QAAQ,cAAc;IAAQ;GACtF,QAAQ,UAAU;IAAE;IAAK,QAAQ,OAAO,QAAQ;IAAQ;;IAExD,oBAAC,KAAK;KAAO,MAAM,CAAC,QAAQ;KAAE,MAAK;;IAClC,mBAAmB,aAAa,oBAAC,KAAK;KAAO,MAAM;KAAW,MAAM;;IACpE,eAAe,WAAW,oBAAC,KAAK;KAAO,MAAM;KAAY,MAAM;;IAC/D,iBAAiB,IAAI;;;CAG3B;CACD,OAAO,EAAE,QAAQ,SAAS,EAAE;EAC1B,MAAM,EAAE,YAAY,gBAAgB,MAAM,QAAQ,GAAG;EAErD,MAAM,EAAE,SAAS,SAAS,YAAY,GAAG;EACzC,MAAM,EACJ,eACA,QAAQ,EACN,SAAS,EAAE,QAAQ,EACpB,EACF,GAAG;EACJ,MAAM,MAAM;EACZ,MAAM,UAAU,WAAW,OAAO;EAElC,MAAM,QAAQ;GACZ,MAAM,QAAQ,OAAO,MAAM,EAAE,MAAM,YAAY;GAC/C,MAAM,QAAQ,OAAO;GACtB;EAED,MAAM,OAAO;GACX,MAAM,QAAQ,OAAO,MAAM;IAAE,MAAM;IAAQ,WAAW,CAAC,aAAa;IAAE;GACtE,MAAM,QAAQ,OAAO,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE;GACzD;EAED,MAAM,cAAc,OAAO,KAAK,MAC7B,EAAE,SAAS,KACV,YAAY,eAAe,SAC3B,YAAY,eAAe,OAC3B,YAAY,eAAe,UAC3B,YAAY,eAAe,SAC3B,YAAY,eAAe;AAG/B,SACE,qBAAC;GACC,UAAU,MAAM,KAAK;GACrB,MAAM,MAAM,KAAK;GACjB,MAAM,MAAM,KAAK;GACjB,QAAQ,UAAU;IAAE;IAAK;IAAQ,QAAQ,cAAc;IAAQ;GAC/D,QAAQ,UAAU;IAAE;IAAK;IAAQ;;IAEjC,oBAAC,KAAK;KAAO,MAAM,CAAC,QAAQ;KAAE,MAAK;;IAClC,mBAAmB,aAAa,oBAAC,KAAK;KAAO,MAAM;KAAW,MAAM;;IACpE,eAAe,WAAW,oBAAC,KAAK;KAAO,MAAM;KAAY,MAAM;;IAChE,oBAAC,KAAK;KAAO;KAAW,MAAM,MAAM,KAAK;KAAM,MAAM,KAAK,KAAK;KAAM,MAAM,CAAC,KAAK,KAAK;;IACrF,QAAQ,KAAK,QACZ,oBAAC,KAAK;KAA4D,MAAM,MAAM,KAAK;KAAM,MAAM,IAAI;KAAM,MAAM,IAAI;OAAjG;KAAC,IAAI;KAAM,IAAI;KAAM,IAAI;KAAW,CAAC,KAAK;IAG9D,oBAAC;KACC,MAAM,MAAM;KACZ,UAAU,KAAK;KACf,aAAa,OAAO,MAAM;KAC1B,MAAM,OAAO;KACG;KACJ;KACJ;KACF;KACO;;;;CAIpB;CACF"}
@@ -1,4 +1,4 @@
1
- const require_components = require('./components-BpyQzZAY.cjs');
1
+ const require_components = require('./components-CS6YqEIx.cjs');
2
2
  const __kubb_plugin_oas = require_components.__toESM(require("@kubb/plugin-oas"));
3
3
  const __kubb_plugin_ts = require_components.__toESM(require("@kubb/plugin-ts"));
4
4
  const __kubb_plugin_oas_components = require_components.__toESM(require("@kubb/plugin-oas/components"));
@@ -201,4 +201,4 @@ Object.defineProperty(exports, 'fakerGenerator', {
201
201
  return fakerGenerator;
202
202
  }
203
203
  });
204
- //# sourceMappingURL=fakerGenerator-S8sgrtl5.cjs.map
204
+ //# sourceMappingURL=fakerGenerator-D9Vhfkyi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fakerGenerator-S8sgrtl5.cjs","names":["SchemaGenerator","options","pluginTsName","schemaKeywords","Oas","File","Faker"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\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, useApp } from '@kubb/react'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\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, i: number) => {\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 <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\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 </Oas.Schema>\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, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output },\n },\n } = useApp<PluginFaker>()\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 )\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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"}
1
+ {"version":3,"file":"fakerGenerator-D9Vhfkyi.cjs","names":["SchemaGenerator","options","pluginTsName","schemaKeywords","Oas","File","Faker"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\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, useApp } from '@kubb/react'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n oas,\n plugin,\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, i: number) => {\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 <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\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 </Oas.Schema>\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, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n pluginManager,\n plugin: {\n options: { output },\n },\n } = useApp<PluginFaker>()\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 )\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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"}
@@ -1,4 +1,4 @@
1
- require('./components-BpyQzZAY.cjs');
2
- const require_fakerGenerator = require('./fakerGenerator-S8sgrtl5.cjs');
1
+ require('./components-CS6YqEIx.cjs');
2
+ const require_fakerGenerator = require('./fakerGenerator-D9Vhfkyi.cjs');
3
3
 
4
4
  exports.fakerGenerator = require_fakerGenerator.fakerGenerator;
@@ -1,4 +1,4 @@
1
- import { Generator, PluginFaker } from "./types-Bh_6SttY.cjs";
1
+ import { Generator, PluginFaker } from "./types-B1Xb1ZXg.cjs";
2
2
 
3
3
  //#region src/generators/fakerGenerator.d.ts
4
4
  declare const fakerGenerator: Generator<PluginFaker>;
@@ -1,4 +1,4 @@
1
- import { Generator, PluginFaker } from "./types-DYUKPbgH.js";
1
+ import { Generator, PluginFaker } from "./types-DsDfBfOk.js";
2
2
 
3
3
  //#region src/generators/fakerGenerator.d.ts
4
4
  declare const fakerGenerator: Generator<PluginFaker>;
@@ -1,4 +1,4 @@
1
- import "./components-BwSq4Ikw.js";
2
- import { fakerGenerator } from "./fakerGenerator-CXR9ksYA.js";
1
+ import "./components-D8OzxwU7.js";
2
+ import { fakerGenerator } from "./fakerGenerator-CfyhULJV.js";
3
3
 
4
4
  export { fakerGenerator };
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_components = require('./components-BpyQzZAY.cjs');
2
- const require_fakerGenerator = require('./fakerGenerator-S8sgrtl5.cjs');
1
+ const require_components = require('./components-CS6YqEIx.cjs');
2
+ const require_fakerGenerator = require('./fakerGenerator-D9Vhfkyi.cjs');
3
3
  const node_path = require_components.__toESM(require("node:path"));
4
4
  const __kubb_core = require_components.__toESM(require("@kubb/core"));
5
5
  const __kubb_core_transformers = require_components.__toESM(require("@kubb/core/transformers"));
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { Options, PluginFaker, UserPluginWithLifeCycle } from "./types-Bh_6SttY.cjs";
1
+ import { Options, PluginFaker, UserPluginWithLifeCycle } from "./types-B1Xb1ZXg.cjs";
2
2
 
3
3
  //#region src/plugin.d.ts
4
4
  declare const pluginFakerName = "plugin-faker";
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Options, PluginFaker, UserPluginWithLifeCycle } from "./types-DYUKPbgH.js";
1
+ import { Options, PluginFaker, UserPluginWithLifeCycle } from "./types-DsDfBfOk.js";
2
2
 
3
3
  //#region src/plugin.d.ts
4
4
  declare const pluginFakerName = "plugin-faker";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import "./components-BwSq4Ikw.js";
2
- import { fakerGenerator } from "./fakerGenerator-CXR9ksYA.js";
1
+ import "./components-D8OzxwU7.js";
2
+ import { fakerGenerator } from "./fakerGenerator-CfyhULJV.js";
3
3
  import path from "node:path";
4
4
  import { FileManager, PluginManager, createPlugin } from "@kubb/core";
5
5
  import { camelCase } from "@kubb/core/transformers";
@@ -235,6 +235,27 @@ type Config<TInput = Input> = {
235
235
  * @default true
236
236
  */
237
237
  write?: boolean;
238
+ /**
239
+ * Specifies the formatting tool to be used.
240
+ * @default prettier
241
+ *
242
+ * Possible values:
243
+ * - 'prettier': Uses Prettier for code formatting.
244
+ * - 'biome': Uses Biome for code formatting.
245
+ *
246
+ */
247
+ format?: 'prettier' | 'biome' | false;
248
+ /**
249
+ * Specifies the linter that should be used to analyze the code.
250
+ * The accepted values indicate different linting tools.
251
+ *
252
+ * Possible values:
253
+ * - 'eslint': Represents the use of ESLint, a widely used JavaScript linter.
254
+ * - 'biome': Represents the Biome linter, a modern tool for code scanning.
255
+ * - 'oxlint': Represents the Oxlint tool for linting purposes.
256
+ *
257
+ */
258
+ lint?: 'eslint' | 'biome' | 'oxlint' | false;
238
259
  /**
239
260
  * Override the extension to the generated imports and exports, by default each plugin will add an extension
240
261
  * @default { '.ts': '.ts'}
@@ -1211,4 +1232,4 @@ type ResolvedOptions = {
1211
1232
  type PluginFaker = PluginFactoryOptions<'plugin-faker', Options$1, ResolvedOptions, never, ResolvePathOptions>;
1212
1233
  //#endregion
1213
1234
  export { Generator, Options$1 as Options, PluginFaker, Schema, UserPluginWithLifeCycle };
1214
- //# sourceMappingURL=types-DYUKPbgH.d.ts.map
1235
+ //# sourceMappingURL=types-B1Xb1ZXg.d.cts.map
@@ -235,6 +235,27 @@ type Config<TInput = Input> = {
235
235
  * @default true
236
236
  */
237
237
  write?: boolean;
238
+ /**
239
+ * Specifies the formatting tool to be used.
240
+ * @default prettier
241
+ *
242
+ * Possible values:
243
+ * - 'prettier': Uses Prettier for code formatting.
244
+ * - 'biome': Uses Biome for code formatting.
245
+ *
246
+ */
247
+ format?: 'prettier' | 'biome' | false;
248
+ /**
249
+ * Specifies the linter that should be used to analyze the code.
250
+ * The accepted values indicate different linting tools.
251
+ *
252
+ * Possible values:
253
+ * - 'eslint': Represents the use of ESLint, a widely used JavaScript linter.
254
+ * - 'biome': Represents the Biome linter, a modern tool for code scanning.
255
+ * - 'oxlint': Represents the Oxlint tool for linting purposes.
256
+ *
257
+ */
258
+ lint?: 'eslint' | 'biome' | 'oxlint' | false;
238
259
  /**
239
260
  * Override the extension to the generated imports and exports, by default each plugin will add an extension
240
261
  * @default { '.ts': '.ts'}
@@ -1211,4 +1232,4 @@ type ResolvedOptions = {
1211
1232
  type PluginFaker = PluginFactoryOptions<'plugin-faker', Options$1, ResolvedOptions, never, ResolvePathOptions>;
1212
1233
  //#endregion
1213
1234
  export { Generator, Options$1 as Options, PluginFaker, Schema, UserPluginWithLifeCycle };
1214
- //# sourceMappingURL=types-Bh_6SttY.d.cts.map
1235
+ //# sourceMappingURL=types-DsDfBfOk.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-faker",
3
- "version": "3.17.0",
3
+ "version": "3.18.0",
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",
@@ -61,17 +61,17 @@
61
61
  "!/**/__tests__/**"
62
62
  ],
63
63
  "dependencies": {
64
- "@kubb/core": "3.17.0",
65
- "@kubb/oas": "3.17.0",
66
- "@kubb/plugin-oas": "3.17.0",
67
- "@kubb/plugin-ts": "3.17.0",
68
- "@kubb/react": "3.17.0"
64
+ "@kubb/core": "3.18.0",
65
+ "@kubb/oas": "3.18.0",
66
+ "@kubb/plugin-oas": "3.18.0",
67
+ "@kubb/plugin-ts": "3.18.0",
68
+ "@kubb/react": "3.18.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "tsdown": "^0.14.1",
72
72
  "typescript": "^5.9.2",
73
- "@kubb/config-ts": "3.17.0",
74
- "@kubb/plugin-oas": "3.17.0"
73
+ "@kubb/config-ts": "3.18.0",
74
+ "@kubb/plugin-oas": "3.18.0"
75
75
  },
76
76
  "peerDependencies": {
77
77
  "@kubb/react": "^3.0.0"
@@ -10,7 +10,7 @@ export function pet(data?: Partial<Pet>): Pet {
10
10
  id: faker.number.int(),
11
11
  name: faker.string.alpha(),
12
12
  tag: faker.string.alpha(),
13
- code: faker.helpers.fromRegExp(new RegExp('\\b[1-9]\\b')),
13
+ code: faker.helpers.fromRegExp('\b[1-9]\b'),
14
14
  shipDate: faker.date.anytime(),
15
15
  shipTime: faker.date.anytime(),
16
16
  info: { animal: faker.helpers.arrayElement<NonNullable<NonNullable<Pet>['info']>['animal']>(['dog', 'cat', 'ant']) },
@@ -10,7 +10,7 @@ export function pet(data?: Partial<Pet>): Pet {
10
10
  id: faker.number.int(),
11
11
  name: faker.string.alpha(),
12
12
  tag: faker.string.alpha(),
13
- code: faker.helpers.fromRegExp(new RegExp('\\b[1-9]\\b')),
13
+ code: faker.helpers.fromRegExp('\b[1-9]\b'),
14
14
  shipDate: faker.date.anytime().toISOString().substring(0, 10),
15
15
  shipTime: faker.date.anytime().toISOString().substring(11, 19),
16
16
  info: { animal: faker.helpers.arrayElement<NonNullable<NonNullable<Pet>['info']>['animal']>(['dog', 'cat', 'ant']) },
@@ -11,7 +11,7 @@ export function pet(data?: Partial<Pet>): Pet {
11
11
  id: faker.number.int(),
12
12
  name: faker.string.alpha(),
13
13
  tag: faker.string.alpha(),
14
- code: faker.helpers.fromRegExp(new RegExp('\\b[1-9]\\b')),
14
+ code: faker.helpers.fromRegExp('\b[1-9]\b'),
15
15
  shipDate: dayjs(faker.date.anytime()).format('YYYY-MM-DD'),
16
16
  shipTime: dayjs(faker.date.anytime()).format('HH:mm:ss'),
17
17
  info: { animal: faker.helpers.arrayElement<NonNullable<NonNullable<Pet>['info']>['animal']>(['dog', 'cat', 'ant']) },
@@ -10,7 +10,7 @@ export function pet(data?: Partial<Pet>): Pet {
10
10
  id: faker.string.fromCharacters('abc'),
11
11
  name: faker.string.alpha({ casing: 'lower' }),
12
12
  tag: faker.string.alpha(),
13
- code: faker.helpers.fromRegExp(new RegExp('\\b[1-9]\\b')),
13
+ code: faker.helpers.fromRegExp('\b[1-9]\b'),
14
14
  shipDate: faker.date.anytime(),
15
15
  shipTime: faker.date.anytime(),
16
16
  info: { animal: faker.helpers.arrayElement<NonNullable<NonNullable<Pet>['info']>['animal']>(['dog', 'cat', 'ant']) },
package/src/parser.ts CHANGED
@@ -127,7 +127,7 @@ const fakerKeywordMapper = {
127
127
  if (regexGenerator === 'randexp') {
128
128
  return `${transformers.toRegExpString(value, 'RandExp')}.gen()`
129
129
  }
130
- return `faker.helpers.fromRegExp(${transformers.toRegExpString(value)})`
130
+ return `faker.helpers.fromRegExp("${value}")`
131
131
  },
132
132
  email: () => 'faker.internet.email()',
133
133
  firstName: () => 'faker.person.firstName()',
@@ -1 +0,0 @@
1
- {"version":3,"file":"components-BpyQzZAY.cjs","names":["transformers","schemaKeywords","name","SchemaGenerator","value","options","FunctionParams","File","Function","transformers"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaTree, 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[] = []) => `Object.assign({}, ${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(${transformers.toRegExpString(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} 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 name: string\n typeName?: string\n description?: string\n\n seed?: number | number[]\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse({ current, parent, name, siblings }: SchemaTree, options: ParserOptions): string | null | undefined {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(\n current.args.items\n .map((schema) =>\n parse(\n { parent: current, current: schema, siblings },\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\n if (isKeyword(current, schemaKeywords.enum)) {\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\n if (isKeyword(current, schemaKeywords.ref)) {\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\n if (isKeyword(current, schemaKeywords.object)) {\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((schema) =>\n parse(\n { name, parent: current, current: schema, 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\n if (isKeyword(current, schemaKeywords.tuple)) {\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return parse({ parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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\n if (isKeyword(current, schemaKeywords.matches) && current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n\n if (isKeyword(current, schemaKeywords.null) || isKeyword(current, schemaKeywords.undefined) || isKeyword(current, schemaKeywords.any)) {\n return value() || ''\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return fakerKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n }\n\n if (current.keyword in fakerKeywordMapper && 'args' in current) {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper] as (typeof fakerKeywordMapper)['const']\n\n const options = JSON.stringify((current as SchemaKeywordBase<unknown>).args)\n\n return value(options)\n }\n\n if (current.keyword in fakerKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { File, Function, FunctionParams } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\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) {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { parent: undefined, current: schema, siblings },\n {\n name,\n typeName,\n seed,\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 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 const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type: isArray ? typeName : `Partial<${typeName}>`,\n optional: true,\n },\n })\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={canOverride ? typeName : undefined}\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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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"components-BwSq4Ikw.js","names":["name","value","options"],"sources":["../src/parser.ts","../src/components/Faker.tsx"],"sourcesContent":["import transformers from '@kubb/core/transformers'\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport { isKeyword, SchemaGenerator, type SchemaTree, 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[] = []) => `Object.assign({}, ${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(${transformers.toRegExpString(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} 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 name: string\n typeName?: string\n description?: string\n\n seed?: number | number[]\n regexGenerator?: 'faker' | 'randexp'\n canOverride?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse({ current, parent, name, siblings }: SchemaTree, options: ParserOptions): string | null | undefined {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n if (Array.isArray(current.args) && !current.args.length) {\n return ''\n }\n\n return fakerKeywordMapper.union(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(\n current.args.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(\n current.args.items\n .map((schema) =>\n parse(\n { parent: current, current: schema, siblings },\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\n if (isKeyword(current, schemaKeywords.enum)) {\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\n if (isKeyword(current, schemaKeywords.ref)) {\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\n if (isKeyword(current, schemaKeywords.object)) {\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((schema) =>\n parse(\n { name, parent: current, current: schema, 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\n if (isKeyword(current, schemaKeywords.tuple)) {\n if (Array.isArray(current.args.items)) {\n return fakerKeywordMapper.tuple(\n current.args.items.map((schema) => parse({ parent: current, current: schema, siblings }, { ...options, canOverride: false })).filter(Boolean),\n )\n }\n\n return parse({ parent: current, current: current.args.items, siblings }, { ...options, canOverride: false })\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\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\n if (isKeyword(current, schemaKeywords.matches) && current.args) {\n return fakerKeywordMapper.matches(current.args, options.regexGenerator)\n }\n\n if (isKeyword(current, schemaKeywords.null) || isKeyword(current, schemaKeywords.undefined) || isKeyword(current, schemaKeywords.any)) {\n return value() || ''\n }\n\n if (isKeyword(current, schemaKeywords.string)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.string(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.string()\n }\n\n if (isKeyword(current, schemaKeywords.number)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.number(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.number()\n }\n\n if (isKeyword(current, schemaKeywords.integer)) {\n if (siblings) {\n const minSchema = SchemaGenerator.find(siblings, schemaKeywords.min)\n const maxSchema = SchemaGenerator.find(siblings, schemaKeywords.max)\n\n return fakerKeywordMapper.integer(minSchema?.args, maxSchema?.args)\n }\n\n return fakerKeywordMapper.integer()\n }\n\n if (isKeyword(current, schemaKeywords.datetime)) {\n return fakerKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return fakerKeywordMapper.date(current.args.type, options.dateParser)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return fakerKeywordMapper.time(current.args.type, options.dateParser)\n }\n\n if (current.keyword in fakerKeywordMapper && 'args' in current) {\n const value = fakerKeywordMapper[current.keyword as keyof typeof fakerKeywordMapper] as (typeof fakerKeywordMapper)['const']\n\n const options = JSON.stringify((current as SchemaKeywordBase<unknown>).args)\n\n return value(options)\n }\n\n if (current.keyword in fakerKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n","import { File, Function, FunctionParams } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport type { Schema } from '@kubb/plugin-oas'\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) {\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema, _index, siblings) =>\n parserFaker.parse(\n { parent: undefined, current: schema, siblings },\n {\n name,\n typeName,\n seed,\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 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 const params = FunctionParams.factory({\n data: {\n // making a partial out of an array does not make sense\n type: isArray ? typeName : `Partial<${typeName}>`,\n optional: true,\n },\n })\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={canOverride ? typeName : undefined}\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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"}