@kubb/plugin-faker 3.0.0-alpha.10 → 3.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-faker/dist/components.cjs","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/plugin.ts","../src/OperationGenerator.tsx"],"names":["value","options","transformers","pluginTsName","schema","jsx","SchemaGenerator"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-faker/dist/components.cjs","sourcesContent":[null,"import { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginFaker } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\ntype Props = {\n description?: string\n}\n\nexport function OperationSchema({ description }: Props): ReactNode {\n return <Schema withData={false} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n\n const oas = useOas()\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, ...options }: OperationSchemaType, i: number) => {\n // used for this.options.typed\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n const typeFileName = pluginManager.resolveName({\n name: options.operationName || name,\n pluginKey: [pluginTsName],\n type: 'file',\n })\n\n // todo replace by getFile\n const typePath = pluginManager.resolvePath({\n baseName: typeFileName,\n pluginKey: [pluginTsName],\n options: { tag: options.operation?.getTags()[0]?.name },\n })\n\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {typeName && typePath && <File.Import isTypeOnly root={file.path} path={typePath} name={[typeName]} />}\n {plugin.options.dateParser && <File.Import path={plugin.options.dateParser} name={plugin.options.dateParser} />}\n\n {mode === 'split' && <Oas.Schema.Imports />}\n <OperationSchema description={description} />\n </Oas.Schema>\n )\n }\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {plugin.options.regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {items.map(mapItem)}\n </File>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginFaker } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginFaker['resolvedOptions'], PluginFaker> {\n async schema(name: string, schema: SchemaObject, options: PluginFaker['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Function, useApp, useFile } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport * as parserFaker from '../parser/index.ts'\nimport { pluginFakerName } from '../plugin.ts'\nimport type { PluginFaker } from '../types.ts'\n\ntype Props = {\n description?: string\n withData?: boolean\n}\n\nexport function Schema(props: Props): ReactNode {\n const { withData, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { dateParser, regexGenerator, mapper, seed },\n },\n } = useApp<PluginFaker>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginFakerName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema) => parserFaker.parse(undefined, schema, { name: resolvedName, typeName, seed, regexGenerator, mapper, withData, dateParser }))\n .filter(Boolean),\n )\n\n let fakerDefaultOverride: '' | '[]' | '{}' | undefined = undefined\n let fakerTextWithOverride = fakerText\n\n if (withData && fakerText.startsWith('{')) {\n fakerDefaultOverride = '{}'\n fakerTextWithOverride = `{\n ...${fakerText},\n ...data\n}`\n }\n\n if (withData && fakerText.startsWith('faker.helpers.arrayElements')) {\n fakerDefaultOverride = '[]'\n fakerTextWithOverride = `[\n ...${fakerText},\n ...data\n ]`\n }\n\n const params = fakerDefaultOverride ? `data: NonNullable<Partial<${typeName}>> = ${fakerDefaultOverride}` : `data?: NonNullable<Partial<${typeName}>>`\n\n return (\n <File.Source name={resolvedName} isExportable isIndexable>\n <Function\n export\n name={resolvedName}\n JSDoc={{ comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean) }}\n params={withData ? params : ''}\n returnType={typeName ? `NonNullable<${typeName}>` : ''}\n >\n {seed ? `faker.seed(${JSON.stringify(seed)})` : ''}\n <br />\n <Function.Return>{fakerTextWithOverride}</Function.Return>\n </Function>\n <br />\n </File.Source>\n )\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginFaker>()\n const { tree, schema } = useSchema()\n\n const withData = tree.some(\n (schema) =>\n schema.keyword === schemaKeywords.array ||\n schema.keyword === schemaKeywords.and ||\n schema.keyword === schemaKeywords.object ||\n schema.keyword === schemaKeywords.union ||\n schema.keyword === schemaKeywords.tuple,\n )\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <Schema.Imports />\n <Schema description={schema?.description} withData={withData} />\n </Oas.Schema.File>\n )\n}\nSchema.Imports = (): ReactNode => {\n const {\n pluginManager,\n plugin: {\n options: { extName, dateParser, regexGenerator },\n },\n } = useApp<PluginFaker>()\n const { path: root } = useFile()\n const { name, tree, schema } = useSchema()\n\n // used for this.options.typed\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const typeFileName = pluginManager.resolveName({\n name: name,\n pluginKey: [pluginTsName],\n type: 'file',\n })\n\n const typePath = pluginManager.resolvePath({\n baseName: typeFileName,\n pluginKey: [pluginTsName],\n })\n\n return (\n <>\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser && <File.Import path={dateParser} name={dateParser} />}\n {typeName && typePath && <File.Import isTypeOnly root={root} path={typePath} name={[typeName]} />}\n </>\n )\n}\n","import transformers from '@kubb/core/transformers'\nimport { SchemaGenerator, isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport type { Options } from '../types.ts'\n\nexport const fakerKeywordMapper = {\n any: () => 'undefined',\n unknown: () => 'unknown',\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 (min !== undefined) {\n return `faker.number.float({ min: ${min} })`\n }\n\n if (max !== undefined) {\n return `faker.number.float({ max: ${max} })`\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 (min !== undefined) {\n return `faker.number.int({ min: ${min} })`\n }\n\n if (max !== undefined) {\n return `faker.number.int({ max: ${max} })`\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 (min !== undefined) {\n return `faker.string.alpha({ length: { min: ${min} } })`\n }\n\n if (max !== undefined) {\n return `faker.string.alpha({ length: { max: ${max} } })`\n }\n\n return 'faker.string.alpha()'\n },\n boolean: () => 'faker.datatype.boolean()',\n undefined: () => 'undefined',\n null: () => 'null',\n array: (items: string[] = []) => `faker.helpers.arrayElements([${items.join(', ')}]) as any`,\n tuple: (items: string[] = []) => `faker.helpers.arrayElements([${items.join(', ')}]) as any`,\n enum: (items: Array<string | number> = []) => `faker.helpers.arrayElement<any>([${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?: string) => {\n if (type === 'string') {\n if (parser) {\n return `${parser}(faker.date.anytime()).format(\"YYYY-MM-DD\")`\n }\n return 'faker.date.anytime().toString()'\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?: string) => {\n if (type === 'string') {\n if (parser) {\n return `${parser}(faker.date.anytime()).format(\"HH:mm:ss\")`\n }\n return 'faker.date.anytime().toString()'\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.imageUrl() 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 strict: undefined,\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: 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 withData?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, 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 return fakerKeywordMapper.union(current.args.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(current.args.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.name\n }\n return transformers.stringify(schema.name)\n }),\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.withData) {\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) => parse(current, schema, { ...options, withData: false }))\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(current.args.items.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n return parse(current, current.args.items, { ...options, withData: 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas } from '@kubb/plugin-oas'\nimport type { PluginFaker } from './types.ts'\n\nexport const pluginFakerName = 'plugin-faker' satisfies PluginFaker['name']\n\nexport const pluginFaker = createPlugin<PluginFaker>((options) => {\n const {\n output = { path: 'mocks' },\n seed,\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n mapper = {},\n dateType = 'string',\n unknownType = 'any',\n dateParser,\n regexGenerator = 'faker',\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginFakerName,\n output: {\n exportType: 'barrelNamed',\n ...output,\n },\n options: {\n extName: output.extName,\n transformers,\n dateType,\n seed,\n unknownType,\n dateParser,\n mapper,\n override,\n regexGenerator,\n },\n pre: [pluginOasName, pluginTsName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n prefix: type ? 'create' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<PluginOas>] = PluginManager.getDependedPlugins<PluginOas>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n\n if (this.config.output.exportType) {\n const barrelFiles = await this.fileManager.getBarrelFiles({\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n }\n },\n }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginFaker } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginFaker['resolvedOptions'], PluginFaker> {\n async operation(operation: Operation, options: PluginFaker['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/parser/index.ts","../src/OperationGenerator.tsx","../src/plugin.ts","../src/components/Schema.tsx","../src/SchemaGenerator.tsx","../src/components/OperationSchema.tsx"],"names":["transformers","isKeyword","schemaKeywords","SchemaGenerator","value","options","Generator","createRoot","jsx","App","Oas","createPlugin","pluginOasName","pluginTsName","path","FileManager","camelCase","renderTemplate","PluginManager","useSchema","useApp","jsxs","Fragment","File","Function","schema","useFile","useOas","useOperationManager","useOperation"],"mappings":"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","file":"components.cjs","sourcesContent":["import transformers from '@kubb/core/transformers'\nimport { SchemaGenerator, isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { Schema, SchemaKeywordBase, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport type { Options } from '../types.ts'\n\nexport const fakerKeywordMapper = {\n any: () => 'undefined',\n unknown: () => 'unknown',\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 (min !== undefined) {\n return `faker.number.float({ min: ${min} })`\n }\n\n if (max !== undefined) {\n return `faker.number.float({ max: ${max} })`\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 (min !== undefined) {\n return `faker.number.int({ min: ${min} })`\n }\n\n if (max !== undefined) {\n return `faker.number.int({ max: ${max} })`\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 (min !== undefined) {\n return `faker.string.alpha({ length: { min: ${min} } })`\n }\n\n if (max !== undefined) {\n return `faker.string.alpha({ length: { max: ${max} } })`\n }\n\n return 'faker.string.alpha()'\n },\n boolean: () => 'faker.datatype.boolean()',\n undefined: () => 'undefined',\n null: () => 'null',\n array: (items: string[] = []) => `faker.helpers.arrayElements([${items.join(', ')}]) as any`,\n tuple: (items: string[] = []) => `faker.helpers.arrayElements([${items.join(', ')}]) as any`,\n enum: (items: Array<string | number> = []) => `faker.helpers.arrayElement<any>([${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?: string) => {\n if (type === 'string') {\n if (parser) {\n return `${parser}(faker.date.anytime()).format(\"YYYY-MM-DD\")`\n }\n return 'faker.date.anytime().toString()'\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?: string) => {\n if (type === 'string') {\n if (parser) {\n return `${parser}(faker.date.anytime()).format(\"HH:mm:ss\")`\n }\n return 'faker.date.anytime().toString()'\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.imageUrl() 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 strict: undefined,\n deprecated: undefined,\n example: undefined,\n schema: undefined,\n catchall: undefined,\n name: 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 withData?: boolean\n dateParser?: Options['dateParser']\n mapper?: Record<string, string>\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, 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 return fakerKeywordMapper.union(current.args.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return fakerKeywordMapper.and(current.args.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return fakerKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return fakerKeywordMapper.enum(\n current.args.items.map((schema) => {\n if (schema.format === 'number') {\n return schema.name\n }\n return transformers.stringify(schema.name)\n }),\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.withData) {\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) => parse(current, schema, { ...options, withData: false }))\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(current.args.items.map((schema) => parse(current, schema, { ...options, withData: false })).filter(Boolean))\n }\n\n return parse(current, current.args.items, { ...options, withData: 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 (parent) {\n const minSchema = SchemaGenerator.find([parent], schemaKeywords.min)\n const maxSchema = SchemaGenerator.find([parent], 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 { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginFaker } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginFaker['resolvedOptions'], PluginFaker> {\n async operation(operation: Operation, options: PluginFaker['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={this}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { pluginTsName } from '@kubb/plugin-ts'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas } from '@kubb/plugin-oas'\nimport type { PluginFaker } from './types.ts'\n\nexport const pluginFakerName = 'plugin-faker' satisfies PluginFaker['name']\n\nexport const pluginFaker = createPlugin<PluginFaker>((options) => {\n const {\n output = { path: 'mocks' },\n seed,\n group,\n exclude = [],\n include,\n override = [],\n transformers = {},\n mapper = {},\n dateType = 'string',\n unknownType = 'any',\n dateParser,\n regexGenerator = 'faker',\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginFakerName,\n output: {\n exportType: 'barrelNamed',\n ...output,\n },\n options: {\n extName: output.extName,\n transformers,\n dateType,\n seed,\n unknownType,\n dateParser,\n mapper,\n override,\n regexGenerator,\n },\n pre: [pluginOasName, pluginTsName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = camelCase(name, {\n prefix: type ? 'create' : undefined,\n isFile: type === 'file',\n })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<PluginOas>] = PluginManager.getDependedPlugins<PluginOas>(this.plugins, [pluginOasName])\n\n const oas = await swaggerPlugin.context.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n include: undefined,\n override,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.context.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n\n if (this.config.output.exportType) {\n const barrelFiles = await this.fileManager.getBarrelFiles({\n root,\n output,\n files: this.fileManager.files,\n meta: {\n pluginKey: this.plugin.key,\n },\n logger: this.logger,\n })\n\n await this.addFile(...barrelFiles)\n }\n },\n }\n})\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, Function, useApp, useFile } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport * as parserFaker from '../parser/index.ts'\nimport { pluginFakerName } from '../plugin.ts'\nimport type { PluginFaker } from '../types.ts'\n\ntype Props = {\n description?: string\n withData?: boolean\n}\n\nexport function Schema(props: Props): ReactNode {\n const { withData, description } = props\n const { tree, name } = useSchema()\n const {\n pluginManager,\n plugin: {\n options: { dateParser, regexGenerator, mapper, seed },\n },\n } = useApp<PluginFaker>()\n\n // all checks are also inside this.schema(React)\n const resolvedName = pluginManager.resolveName({\n name,\n pluginKey: [pluginFakerName],\n type: 'function',\n })\n\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const fakerText = parserFaker.joinItems(\n tree\n .map((schema) => parserFaker.parse(undefined, schema, { name: resolvedName, typeName, seed, regexGenerator, mapper, withData, dateParser }))\n .filter(Boolean),\n )\n\n let fakerDefaultOverride: '' | '[]' | '{}' | undefined = undefined\n let fakerTextWithOverride = fakerText\n\n if (withData && fakerText.startsWith('{')) {\n fakerDefaultOverride = '{}'\n fakerTextWithOverride = `{\n ...${fakerText},\n ...data\n}`\n }\n\n if (withData && fakerText.startsWith('faker.helpers.arrayElements')) {\n fakerDefaultOverride = '[]'\n fakerTextWithOverride = `[\n ...${fakerText},\n ...data\n ]`\n }\n\n const params = fakerDefaultOverride ? `data: NonNullable<Partial<${typeName}>> = ${fakerDefaultOverride}` : `data?: NonNullable<Partial<${typeName}>>`\n\n const containsFaker = !!fakerTextWithOverride.match(/faker/) || !!seed\n\n return (\n <>\n {containsFaker && <File.Import name={['faker']} path=\"@faker-js/faker\" />}\n <File.Source name={resolvedName} isExportable isIndexable>\n <Function\n export\n name={resolvedName}\n JSDoc={{ comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean) }}\n params={withData ? params : ''}\n returnType={typeName ? `NonNullable<${typeName}>` : ''}\n >\n {seed ? `faker.seed(${JSON.stringify(seed)})` : ''}\n <br />\n <Function.Return>{fakerTextWithOverride}</Function.Return>\n </Function>\n <br />\n </File.Source>\n </>\n )\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager } = useApp<PluginFaker>()\n const { tree, schema } = useSchema()\n\n const withData = tree.some(\n (schema) =>\n schema.keyword === schemaKeywords.array ||\n schema.keyword === schemaKeywords.and ||\n schema.keyword === schemaKeywords.object ||\n schema.keyword === schemaKeywords.union ||\n schema.keyword === schemaKeywords.tuple,\n )\n\n return (\n <Oas.Schema.File output={pluginManager.config.output.path}>\n <Schema.Imports />\n <Schema description={schema?.description} withData={withData} />\n </Oas.Schema.File>\n )\n}\nSchema.Imports = (): ReactNode => {\n const {\n pluginManager,\n plugin: {\n options: { extName, dateParser, regexGenerator },\n },\n } = useApp<PluginFaker>()\n const { path: root } = useFile()\n const { name, tree, schema } = useSchema()\n\n // used for this.options.typed\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const typeFileName = pluginManager.resolveName({\n name: name,\n pluginKey: [pluginTsName],\n type: 'file',\n })\n\n const typePath = pluginManager.resolvePath({\n baseName: typeFileName,\n pluginKey: [pluginTsName],\n })\n\n return (\n <>\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser && <File.Import path={dateParser} name={dateParser} />}\n {typeName && typePath && <File.Import isTypeOnly root={root} path={typePath} name={[typeName]} />}\n </>\n )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginFaker } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginFaker['resolvedOptions'], PluginFaker> {\n async schema(name: string, schema: SchemaObject, options: PluginFaker['resolvedOptions']): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = this.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <Schema.File />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginFaker } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\ntype Props = {\n description?: string\n}\n\nexport function OperationSchema({ description }: Props): ReactNode {\n return <Schema withData={false} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { plugin, pluginManager, mode } = useApp<PluginFaker>()\n\n const oas = useOas()\n const { getSchemas, getFile } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n override: plugin.options.override,\n })\n\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema, description, ...options }: OperationSchemaType, i: number) => {\n // used for this.options.typed\n const typeName = pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n const typeFileName = pluginManager.resolveName({\n name: options.operationName || name,\n pluginKey: [pluginTsName],\n type: 'file',\n })\n\n // todo replace by getFile\n const typePath = pluginManager.resolvePath({\n baseName: typeFileName,\n pluginKey: [pluginTsName],\n options: { tag: options.operation?.getTags()[0]?.name },\n })\n\n const tree = generator.parse({ schema, name })\n\n return (\n <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n {typeName && typePath && <File.Import isTypeOnly root={file.path} path={typePath} name={[typeName]} />}\n {plugin.options.dateParser && <File.Import path={plugin.options.dateParser} name={plugin.options.dateParser} />}\n\n {mode === 'split' && <Oas.Schema.Imports />}\n <OperationSchema description={description} />\n </Oas.Schema>\n )\n }\n\n return (\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {plugin.options.regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {items.map(mapItem)}\n </File>\n )\n}\n"]}
@@ -1,25 +1,15 @@
1
- // src/components/OperationSchema.tsx
2
- import { Oas as Oas4 } from "@kubb/plugin-oas/components";
3
- import { useOas, useOperation, useOperationManager } from "@kubb/plugin-oas/hooks";
4
- import { pluginTsName as pluginTsName3 } from "@kubb/plugin-ts";
5
- import { File as File2, useApp as useApp2 } from "@kubb/react";
6
-
7
- // src/SchemaGenerator.tsx
8
- import { SchemaGenerator as Generator2 } from "@kubb/plugin-oas";
9
- import { Oas as Oas3 } from "@kubb/plugin-oas/components";
10
- import { App as App2, createRoot as createRoot2 } from "@kubb/react";
11
-
12
- // src/components/Schema.tsx
13
- import { Oas as Oas2 } from "@kubb/plugin-oas/components";
14
- import { pluginTsName as pluginTsName2 } from "@kubb/plugin-ts";
15
- import { File, Function, useApp, useFile } from "@kubb/react";
16
- import transformers2 from "@kubb/core/transformers";
17
- import { schemaKeywords as schemaKeywords2 } from "@kubb/plugin-oas";
18
- import { useSchema } from "@kubb/plugin-oas/hooks";
1
+ import { Oas } from '@kubb/plugin-oas/components';
2
+ import { useSchema, useOas, useOperationManager, useOperation } from '@kubb/plugin-oas/hooks';
3
+ import { pluginTsName } from '@kubb/plugin-ts';
4
+ import { createRoot, App, useApp, File, Function, useFile } from '@kubb/react';
5
+ import { pluginOasName, SchemaGenerator, OperationGenerator as OperationGenerator$1, schemaKeywords, isKeyword } from '@kubb/plugin-oas';
6
+ import transformers, { camelCase } from '@kubb/core/transformers';
7
+ import path from 'node:path';
8
+ import { createPlugin, FileManager, PluginManager } from '@kubb/core';
9
+ import { renderTemplate } from '@kubb/core/utils';
10
+ import { jsx, jsxs, Fragment } from '@kubb/react/jsx-runtime';
19
11
 
20
- // src/parser/index.ts
21
- import transformers from "@kubb/core/transformers";
22
- import { SchemaGenerator, isKeyword, schemaKeywords } from "@kubb/plugin-oas";
12
+ // src/components/OperationSchema.tsx
23
13
  var fakerKeywordMapper = {
24
14
  any: () => "undefined",
25
15
  unknown: () => "unknown",
@@ -257,21 +247,7 @@ function parse(parent, current, options) {
257
247
  }
258
248
  return void 0;
259
249
  }
260
-
261
- // src/plugin.ts
262
- import path from "node:path";
263
- import { FileManager, PluginManager, createPlugin } from "@kubb/core";
264
- import { camelCase } from "@kubb/core/transformers";
265
- import { renderTemplate } from "@kubb/core/utils";
266
- import { pluginOasName } from "@kubb/plugin-oas";
267
- import { pluginTsName } from "@kubb/plugin-ts";
268
-
269
- // src/OperationGenerator.tsx
270
- import { OperationGenerator as Generator } from "@kubb/plugin-oas";
271
- import { Oas } from "@kubb/plugin-oas/components";
272
- import { App, createRoot } from "@kubb/react";
273
- import { jsx } from "@kubb/react/jsx-runtime";
274
- var OperationGenerator = class extends Generator {
250
+ var OperationGenerator = class extends OperationGenerator$1 {
275
251
  async operation(operation, options) {
276
252
  const { oas, pluginManager, plugin, mode } = this.context;
277
253
  const root = createRoot({
@@ -286,7 +262,7 @@ var OperationGenerator = class extends Generator {
286
262
 
287
263
  // src/plugin.ts
288
264
  var pluginFakerName = "plugin-faker";
289
- var pluginFaker = createPlugin((options) => {
265
+ createPlugin((options) => {
290
266
  const {
291
267
  output = { path: "mocks" },
292
268
  seed,
@@ -386,9 +362,6 @@ var pluginFaker = createPlugin((options) => {
386
362
  }
387
363
  };
388
364
  });
389
-
390
- // src/components/Schema.tsx
391
- import { Fragment, jsx as jsx2, jsxs } from "@kubb/react/jsx-runtime";
392
365
  function Schema(props) {
393
366
  const { withData, description } = props;
394
367
  const { tree, name } = useSchema();
@@ -405,7 +378,7 @@ function Schema(props) {
405
378
  });
406
379
  const typeName = pluginManager.resolveName({
407
380
  name,
408
- pluginKey: [pluginTsName2],
381
+ pluginKey: [pluginTsName],
409
382
  type: "type"
410
383
  });
411
384
  const fakerText = joinItems(
@@ -428,34 +401,38 @@ function Schema(props) {
428
401
  ]`;
429
402
  }
430
403
  const params = fakerDefaultOverride ? `data: NonNullable<Partial<${typeName}>> = ${fakerDefaultOverride}` : `data?: NonNullable<Partial<${typeName}>>`;
431
- return /* @__PURE__ */ jsxs(File.Source, { name: resolvedName, isExportable: true, isIndexable: true, children: [
432
- /* @__PURE__ */ jsxs(
433
- Function,
434
- {
435
- export: true,
436
- name: resolvedName,
437
- JSDoc: { comments: [description ? `@description ${transformers2.jsStringEscape(description)}` : void 0].filter(Boolean) },
438
- params: withData ? params : "",
439
- returnType: typeName ? `NonNullable<${typeName}>` : "",
440
- children: [
441
- seed ? `faker.seed(${JSON.stringify(seed)})` : "",
442
- /* @__PURE__ */ jsx2("br", {}),
443
- /* @__PURE__ */ jsx2(Function.Return, { children: fakerTextWithOverride })
444
- ]
445
- }
446
- ),
447
- /* @__PURE__ */ jsx2("br", {})
404
+ const containsFaker = !!fakerTextWithOverride.match(/faker/) || !!seed;
405
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
406
+ containsFaker && /* @__PURE__ */ jsx(File.Import, { name: ["faker"], path: "@faker-js/faker" }),
407
+ /* @__PURE__ */ jsxs(File.Source, { name: resolvedName, isExportable: true, isIndexable: true, children: [
408
+ /* @__PURE__ */ jsxs(
409
+ Function,
410
+ {
411
+ export: true,
412
+ name: resolvedName,
413
+ JSDoc: { comments: [description ? `@description ${transformers.jsStringEscape(description)}` : void 0].filter(Boolean) },
414
+ params: withData ? params : "",
415
+ returnType: typeName ? `NonNullable<${typeName}>` : "",
416
+ children: [
417
+ seed ? `faker.seed(${JSON.stringify(seed)})` : "",
418
+ /* @__PURE__ */ jsx("br", {}),
419
+ /* @__PURE__ */ jsx(Function.Return, { children: fakerTextWithOverride })
420
+ ]
421
+ }
422
+ ),
423
+ /* @__PURE__ */ jsx("br", {})
424
+ ] })
448
425
  ] });
449
426
  }
450
427
  Schema.File = function({}) {
451
428
  const { pluginManager } = useApp();
452
429
  const { tree, schema } = useSchema();
453
430
  const withData = tree.some(
454
- (schema2) => schema2.keyword === schemaKeywords2.array || schema2.keyword === schemaKeywords2.and || schema2.keyword === schemaKeywords2.object || schema2.keyword === schemaKeywords2.union || schema2.keyword === schemaKeywords2.tuple
431
+ (schema2) => schema2.keyword === schemaKeywords.array || schema2.keyword === schemaKeywords.and || schema2.keyword === schemaKeywords.object || schema2.keyword === schemaKeywords.union || schema2.keyword === schemaKeywords.tuple
455
432
  );
456
- return /* @__PURE__ */ jsxs(Oas2.Schema.File, { output: pluginManager.config.output.path, children: [
457
- /* @__PURE__ */ jsx2(Schema.Imports, {}),
458
- /* @__PURE__ */ jsx2(Schema, { description: schema?.description, withData })
433
+ return /* @__PURE__ */ jsxs(Oas.Schema.File, { output: pluginManager.config.output.path, children: [
434
+ /* @__PURE__ */ jsx(Schema.Imports, {}),
435
+ /* @__PURE__ */ jsx(Schema, { description: schema?.description, withData })
459
436
  ] });
460
437
  };
461
438
  Schema.Imports = () => {
@@ -469,49 +446,42 @@ Schema.Imports = () => {
469
446
  const { name, tree, schema } = useSchema();
470
447
  const typeName = pluginManager.resolveName({
471
448
  name,
472
- pluginKey: [pluginTsName2],
449
+ pluginKey: [pluginTsName],
473
450
  type: "type"
474
451
  });
475
452
  const typeFileName = pluginManager.resolveName({
476
453
  name,
477
- pluginKey: [pluginTsName2],
454
+ pluginKey: [pluginTsName],
478
455
  type: "file"
479
456
  });
480
457
  const typePath = pluginManager.resolvePath({
481
458
  baseName: typeFileName,
482
- pluginKey: [pluginTsName2]
459
+ pluginKey: [pluginTsName]
483
460
  });
484
461
  return /* @__PURE__ */ jsxs(Fragment, { children: [
485
- /* @__PURE__ */ jsx2(File.Import, { name: ["faker"], path: "@faker-js/faker" }),
486
- regexGenerator === "randexp" && /* @__PURE__ */ jsx2(File.Import, { name: "RandExp", path: "randexp" }),
487
- dateParser && /* @__PURE__ */ jsx2(File.Import, { path: dateParser, name: dateParser }),
488
- typeName && typePath && /* @__PURE__ */ jsx2(File.Import, { isTypeOnly: true, root, path: typePath, name: [typeName] })
462
+ regexGenerator === "randexp" && /* @__PURE__ */ jsx(File.Import, { name: "RandExp", path: "randexp" }),
463
+ dateParser && /* @__PURE__ */ jsx(File.Import, { path: dateParser, name: dateParser }),
464
+ typeName && typePath && /* @__PURE__ */ jsx(File.Import, { isTypeOnly: true, root, path: typePath, name: [typeName] })
489
465
  ] });
490
466
  };
491
-
492
- // src/SchemaGenerator.tsx
493
- import { jsx as jsx3 } from "@kubb/react/jsx-runtime";
494
- var SchemaGenerator2 = class extends Generator2 {
467
+ var SchemaGenerator2 = class extends SchemaGenerator {
495
468
  async schema(name, schema, options) {
496
469
  const { oas, pluginManager, plugin, mode, output } = this.context;
497
- const root = createRoot2({
470
+ const root = createRoot({
498
471
  logger: pluginManager.logger
499
472
  });
500
473
  const tree = this.parse({ schema, name });
501
474
  root.render(
502
- /* @__PURE__ */ jsx3(App2, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ jsx3(Oas3, { oas, children: /* @__PURE__ */ jsx3(Oas3.Schema, { name, value: schema, tree, children: /* @__PURE__ */ jsx3(Schema.File, {}) }) }) })
475
+ /* @__PURE__ */ jsx(App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ jsx(Oas, { oas, children: /* @__PURE__ */ jsx(Oas.Schema, { name, value: schema, tree, children: /* @__PURE__ */ jsx(Schema.File, {}) }) }) })
503
476
  );
504
477
  return root.files;
505
478
  }
506
479
  };
507
-
508
- // src/components/OperationSchema.tsx
509
- import { jsx as jsx4, jsxs as jsxs2 } from "@kubb/react/jsx-runtime";
510
480
  function OperationSchema({ description }) {
511
- return /* @__PURE__ */ jsx4(Schema, { withData: false, description });
481
+ return /* @__PURE__ */ jsx(Schema, { withData: false, description });
512
482
  }
513
483
  OperationSchema.File = function({}) {
514
- const { plugin, pluginManager, mode } = useApp2();
484
+ const { plugin, pluginManager, mode } = useApp();
515
485
  const oas = useOas();
516
486
  const { getSchemas, getFile } = useOperationManager();
517
487
  const operation = useOperation();
@@ -528,35 +498,33 @@ OperationSchema.File = function({}) {
528
498
  const mapItem = ({ name, schema, description, ...options }, i) => {
529
499
  const typeName = pluginManager.resolveName({
530
500
  name,
531
- pluginKey: [pluginTsName3],
501
+ pluginKey: [pluginTsName],
532
502
  type: "type"
533
503
  });
534
504
  const typeFileName = pluginManager.resolveName({
535
505
  name: options.operationName || name,
536
- pluginKey: [pluginTsName3],
506
+ pluginKey: [pluginTsName],
537
507
  type: "file"
538
508
  });
539
509
  const typePath = pluginManager.resolvePath({
540
510
  baseName: typeFileName,
541
- pluginKey: [pluginTsName3],
511
+ pluginKey: [pluginTsName],
542
512
  options: { tag: options.operation?.getTags()[0]?.name }
543
513
  });
544
514
  const tree = generator.parse({ schema, name });
545
- return /* @__PURE__ */ jsxs2(Oas4.Schema, { name, value: schema, tree, children: [
546
- typeName && typePath && /* @__PURE__ */ jsx4(File2.Import, { isTypeOnly: true, root: file.path, path: typePath, name: [typeName] }),
547
- plugin.options.dateParser && /* @__PURE__ */ jsx4(File2.Import, { path: plugin.options.dateParser, name: plugin.options.dateParser }),
548
- mode === "split" && /* @__PURE__ */ jsx4(Oas4.Schema.Imports, {}),
549
- /* @__PURE__ */ jsx4(OperationSchema, { description })
515
+ return /* @__PURE__ */ jsxs(Oas.Schema, { name, value: schema, tree, children: [
516
+ typeName && typePath && /* @__PURE__ */ jsx(File.Import, { isTypeOnly: true, root: file.path, path: typePath, name: [typeName] }),
517
+ plugin.options.dateParser && /* @__PURE__ */ jsx(File.Import, { path: plugin.options.dateParser, name: plugin.options.dateParser }),
518
+ mode === "split" && /* @__PURE__ */ jsx(Oas.Schema.Imports, {}),
519
+ /* @__PURE__ */ jsx(OperationSchema, { description })
550
520
  ] }, i);
551
521
  };
552
- return /* @__PURE__ */ jsxs2(File2, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
553
- /* @__PURE__ */ jsx4(File2.Import, { name: ["faker"], path: "@faker-js/faker" }),
554
- plugin.options.regexGenerator === "randexp" && /* @__PURE__ */ jsx4(File2.Import, { name: "RandExp", path: "randexp" }),
522
+ return /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
523
+ plugin.options.regexGenerator === "randexp" && /* @__PURE__ */ jsx(File.Import, { name: "RandExp", path: "randexp" }),
555
524
  items.map(mapItem)
556
525
  ] });
557
526
  };
558
- export {
559
- OperationSchema,
560
- Schema
561
- };
527
+
528
+ export { OperationSchema, Schema };
529
+ //# sourceMappingURL=components.js.map
562
530
  //# sourceMappingURL=components.js.map