@kubb/plugin-oas 3.10.15 → 3.12.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.
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var chunkRSHQODEK_cjs = require('./chunk-RSHQODEK.cjs');
4
4
  var chunkS3UPJP7I_cjs = require('./chunk-S3UPJP7I.cjs');
5
5
  require('./chunk-DTD4ZUDA.cjs');
6
- var chunkWAB2O4DX_cjs = require('./chunk-WAB2O4DX.cjs');
6
+ var chunkPYDQQCUW_cjs = require('./chunk-PYDQQCUW.cjs');
7
7
  var chunkYWMMI3MO_cjs = require('./chunk-YWMMI3MO.cjs');
8
8
  require('./chunk-ZVFL3NXX.cjs');
9
9
  require('./chunk-Z2NREI4X.cjs');
@@ -277,11 +277,16 @@ var pluginOas = core.createPlugin((options) => {
277
277
  generators = [chunkS3UPJP7I_cjs.jsonGenerator],
278
278
  serverIndex,
279
279
  contentType,
280
- oasClass
280
+ oasClass,
281
+ discriminator = "strict"
281
282
  } = options;
282
283
  let oas;
283
284
  const getOas = async ({ config, logger }) => {
284
285
  oas = await chunkRSHQODEK_cjs.parseFromConfig(config, oasClass);
286
+ oas.setOptions({
287
+ contentType,
288
+ discriminator
289
+ });
285
290
  try {
286
291
  if (validate) {
287
292
  await oas.valdiate();
@@ -296,6 +301,8 @@ var pluginOas = core.createPlugin((options) => {
296
301
  name: pluginOasName,
297
302
  options: {
298
303
  output,
304
+ validate,
305
+ discriminator,
299
306
  ...options
300
307
  },
301
308
  context() {
@@ -346,7 +353,7 @@ var pluginOas = core.createPlugin((options) => {
346
353
  logger: this.logger
347
354
  });
348
355
  await oas2.dereference();
349
- const schemaGenerator = new chunkWAB2O4DX_cjs.SchemaGenerator(
356
+ const schemaGenerator = new chunkPYDQQCUW_cjs.SchemaGenerator(
350
357
  {
351
358
  unknownType: "unknown",
352
359
  dateType: "date",
@@ -392,7 +399,7 @@ Object.defineProperty(exports, "createReactGenerator", {
392
399
  });
393
400
  Object.defineProperty(exports, "SchemaGenerator", {
394
401
  enumerable: true,
395
- get: function () { return chunkWAB2O4DX_cjs.SchemaGenerator; }
402
+ get: function () { return chunkPYDQQCUW_cjs.SchemaGenerator; }
396
403
  });
397
404
  Object.defineProperty(exports, "isKeyword", {
398
405
  enumerable: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["BaseGenerator","transformers","path","method","item","createPlugin","jsonGenerator","parseFromConfig","options","FileManager","camelCase","oas","SchemaGenerator"],"mappings":"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","file":"index.cjs","sourcesContent":["import { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type { KubbFile } from '@kubb/core/fs'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, SchemaObject, contentType } from '@kubb/oas'\nimport type { Generator } from './generator.tsx'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n if (type === 'contentType') {\n return !!operation.getContentType().match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n return !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n matched = !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n keysToOmit: schema?.properties\n ? Object.keys(schema.properties).filter((key) => {\n const item = schema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n }\n })\n const hasResponses = statusCodes.some((item) => item.statusCode?.toString().startsWith('2'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`),\n ),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`),\n ),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: {\n oneOf: hasResponses\n ? statusCodes\n .filter((item) => item.statusCode?.toString().startsWith('2'))\n .map((item) => {\n return {\n ...item.schema,\n $ref: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${item.statusCode}`)),\n }\n })\n : undefined,\n } as SchemaObject,\n },\n responses: statusCodes.filter((item) => item.statusCode?.toString().startsWith('2')),\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation && method === operation.method) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n generators?.forEach((generator) => {\n const promise = generator.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n generators?.forEach((generator) => {\n const promise = generator.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(_operation: Operation, _options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(_operations: Operation[], _paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import { FileManager, type Group, createPlugin } from '@kubb/core'\n\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nimport path from 'node:path'\nimport type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport { jsonGenerator } from './generators'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n } = options\n let oas: Oas\n\n const getOas = async ({ config, logger }: { config: Config; logger: Logger }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n oas = await parseFromConfig(config, oasClass)\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n ...options,\n },\n context() {\n const { config, logger } = this\n\n return {\n getOas() {\n return getOas({ config, logger })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n if (serverIndex) {\n return oasInstance.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\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 (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n })\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\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,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.addFile(...operationFiles)\n },\n }\n})\n"]}
1
+ {"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["BaseGenerator","transformers","path","method","item","createPlugin","jsonGenerator","parseFromConfig","options","FileManager","camelCase","oas","SchemaGenerator"],"mappings":"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","file":"index.cjs","sourcesContent":["import { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type { KubbFile } from '@kubb/core/fs'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, SchemaObject, contentType } from '@kubb/oas'\nimport type { Generator } from './generator.tsx'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n if (type === 'contentType') {\n return !!operation.getContentType().match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n return !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n matched = !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n keysToOmit: schema?.properties\n ? Object.keys(schema.properties).filter((key) => {\n const item = schema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n }\n })\n const hasResponses = statusCodes.some((item) => item.statusCode?.toString().startsWith('2'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`),\n ),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`),\n ),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: {\n oneOf: hasResponses\n ? statusCodes\n .filter((item) => item.statusCode?.toString().startsWith('2'))\n .map((item) => {\n return {\n ...item.schema,\n $ref: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${item.statusCode}`)),\n }\n })\n : undefined,\n } as SchemaObject,\n },\n responses: statusCodes.filter((item) => item.statusCode?.toString().startsWith('2')),\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation && method === operation.method) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n generators?.forEach((generator) => {\n const promise = generator.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n generators?.forEach((generator) => {\n const promise = generator.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(_operation: Operation, _options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(_operations: Operation[], _paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import path from 'node:path'\nimport type { Config } from '@kubb/core'\nimport { createPlugin, FileManager, type Group } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n let oas: Oas\n\n const getOas = async ({ config, logger }: { config: Config; logger: Logger }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n context() {\n const { config, logger } = this\n\n return {\n getOas() {\n return getOas({ config, logger })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n if (serverIndex) {\n return oasInstance.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\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 (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n })\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\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,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.addFile(...operationFiles)\n },\n }\n})\n"]}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as Options, P as PluginOas } from './OperationGenerator-DxdJDBEc.cjs';
2
- export { A as API, E as Exclude, h as Generator, i as GeneratorOptions, G as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, n as OperationSchema, o as OperationSchemas, p as OperationsByMethod, q as Override, R as ReactGeneratorOptions, k as Ref, l as Refs, j as ResolvePathOptions, m as Resolver, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createGenerator, g as createReactGenerator } from './OperationGenerator-DxdJDBEc.cjs';
1
+ import { O as Options, P as PluginOas } from './OperationGenerator-D-kbZvnt.cjs';
2
+ export { A as API, E as Exclude, h as Generator, i as GeneratorOptions, G as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, n as OperationSchema, o as OperationSchemas, p as OperationsByMethod, q as Override, R as ReactGeneratorOptions, k as Ref, l as Refs, j as ResolvePathOptions, m as Resolver, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createGenerator, g as createReactGenerator } from './OperationGenerator-D-kbZvnt.cjs';
3
3
  import * as _kubb_core from '@kubb/core';
4
4
  export { S as Schema, b as SchemaKeyword, c as SchemaKeywordBase, d as SchemaKeywordMapper, e as SchemaMapper, a as SchemaTree, i as isKeyword, s as schemaKeywords } from './SchemaMapper-B21ZmWag.cjs';
5
5
  import '@kubb/core/fs';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { O as Options, P as PluginOas } from './OperationGenerator-CF1rxGSV.js';
2
- export { A as API, E as Exclude, h as Generator, i as GeneratorOptions, G as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, n as OperationSchema, o as OperationSchemas, p as OperationsByMethod, q as Override, R as ReactGeneratorOptions, k as Ref, l as Refs, j as ResolvePathOptions, m as Resolver, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createGenerator, g as createReactGenerator } from './OperationGenerator-CF1rxGSV.js';
1
+ import { O as Options, P as PluginOas } from './OperationGenerator-CnnaaJwx.js';
2
+ export { A as API, E as Exclude, h as Generator, i as GeneratorOptions, G as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, n as OperationSchema, o as OperationSchemas, p as OperationsByMethod, q as Override, R as ReactGeneratorOptions, k as Ref, l as Refs, j as ResolvePathOptions, m as Resolver, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createGenerator, g as createReactGenerator } from './OperationGenerator-CnnaaJwx.js';
3
3
  import * as _kubb_core from '@kubb/core';
4
4
  export { S as Schema, b as SchemaKeyword, c as SchemaKeywordBase, d as SchemaKeywordMapper, e as SchemaMapper, a as SchemaTree, i as isKeyword, s as schemaKeywords } from './SchemaMapper-B21ZmWag.js';
5
5
  import '@kubb/core/fs';
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@ import { parseFromConfig } from './chunk-QF3E6S2N.js';
2
2
  import { jsonGenerator } from './chunk-S7ZYTJXL.js';
3
3
  export { createGenerator, createReactGenerator } from './chunk-S7ZYTJXL.js';
4
4
  import './chunk-6S7YFY6F.js';
5
- import { SchemaGenerator } from './chunk-HLZZQQYR.js';
6
- export { SchemaGenerator } from './chunk-HLZZQQYR.js';
5
+ import { SchemaGenerator } from './chunk-B64QE4UB.js';
6
+ export { SchemaGenerator } from './chunk-B64QE4UB.js';
7
7
  export { isKeyword, schemaKeywords } from './chunk-76E35IZ2.js';
8
8
  import './chunk-PORSNYI5.js';
9
9
  import './chunk-JNN4JPWK.js';
@@ -272,11 +272,16 @@ var pluginOas = createPlugin((options) => {
272
272
  generators = [jsonGenerator],
273
273
  serverIndex,
274
274
  contentType,
275
- oasClass
275
+ oasClass,
276
+ discriminator = "strict"
276
277
  } = options;
277
278
  let oas;
278
279
  const getOas = async ({ config, logger }) => {
279
280
  oas = await parseFromConfig(config, oasClass);
281
+ oas.setOptions({
282
+ contentType,
283
+ discriminator
284
+ });
280
285
  try {
281
286
  if (validate) {
282
287
  await oas.valdiate();
@@ -291,6 +296,8 @@ var pluginOas = createPlugin((options) => {
291
296
  name: pluginOasName,
292
297
  options: {
293
298
  output,
299
+ validate,
300
+ discriminator,
294
301
  ...options
295
302
  },
296
303
  context() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["path","method","item","options","oas"],"mappings":"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","file":"index.js","sourcesContent":["import { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type { KubbFile } from '@kubb/core/fs'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, SchemaObject, contentType } from '@kubb/oas'\nimport type { Generator } from './generator.tsx'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n if (type === 'contentType') {\n return !!operation.getContentType().match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n return !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n matched = !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n keysToOmit: schema?.properties\n ? Object.keys(schema.properties).filter((key) => {\n const item = schema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n }\n })\n const hasResponses = statusCodes.some((item) => item.statusCode?.toString().startsWith('2'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`),\n ),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`),\n ),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: {\n oneOf: hasResponses\n ? statusCodes\n .filter((item) => item.statusCode?.toString().startsWith('2'))\n .map((item) => {\n return {\n ...item.schema,\n $ref: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${item.statusCode}`)),\n }\n })\n : undefined,\n } as SchemaObject,\n },\n responses: statusCodes.filter((item) => item.statusCode?.toString().startsWith('2')),\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation && method === operation.method) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n generators?.forEach((generator) => {\n const promise = generator.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n generators?.forEach((generator) => {\n const promise = generator.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(_operation: Operation, _options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(_operations: Operation[], _paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import { FileManager, type Group, createPlugin } from '@kubb/core'\n\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nimport path from 'node:path'\nimport type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport { jsonGenerator } from './generators'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n } = options\n let oas: Oas\n\n const getOas = async ({ config, logger }: { config: Config; logger: Logger }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n oas = await parseFromConfig(config, oasClass)\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n ...options,\n },\n context() {\n const { config, logger } = this\n\n return {\n getOas() {\n return getOas({ config, logger })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n if (serverIndex) {\n return oasInstance.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\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 (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n })\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\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,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.addFile(...operationFiles)\n },\n }\n})\n"]}
1
+ {"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["path","method","item","options","oas"],"mappings":"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","file":"index.js","sourcesContent":["import { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type { KubbFile } from '@kubb/core/fs'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, SchemaObject, contentType } from '@kubb/oas'\nimport type { Generator } from './generator.tsx'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n if (type === 'contentType') {\n return !!operation.getContentType().match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n return !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags().some((tag) => tag.name.match(pattern))\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId({ friendlyCase: true }).match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n\n if (type === 'contentType' && !matched) {\n matched = !!operation.getContentType().match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n keysToOmit: schema?.properties\n ? Object.keys(schema.properties).filter((key) => {\n const item = schema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n }\n })\n const hasResponses = statusCodes.some((item) => item.statusCode?.toString().startsWith('2'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`),\n ),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(\n transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`),\n ),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })}`),\n schema: {\n oneOf: hasResponses\n ? statusCodes\n .filter((item) => item.statusCode?.toString().startsWith('2'))\n .map((item) => {\n return {\n ...item.schema,\n $ref: resolveName(transformers.pascalCase(`${operation.getOperationId({ friendlyCase: true })} ${item.statusCode}`)),\n }\n })\n : undefined,\n } as SchemaObject,\n },\n responses: statusCodes.filter((item) => item.statusCode?.toString().startsWith('2')),\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation && method === operation.method) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n generators?.forEach((generator) => {\n const promise = generator.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n generators?.forEach((generator) => {\n const promise = generator.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(_operation: Operation, _options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(_operations: Operation[], _paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import path from 'node:path'\nimport type { Config } from '@kubb/core'\nimport { createPlugin, FileManager, type Group } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n let oas: Oas\n\n const getOas = async ({ config, logger }: { config: Config; logger: Logger }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n context() {\n const { config, logger } = this\n\n return {\n getOas() {\n return getOas({ config, logger })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n if (serverIndex) {\n return oasInstance.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\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 (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n })\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\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,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.addFile(...operationFiles)\n },\n }\n})\n"]}
package/dist/utils.d.cts CHANGED
@@ -2,7 +2,7 @@ import { Operation, Oas, SchemaObject, OpenAPIV3, OpenAPIV3_1, contentType, OasT
2
2
  export { isOptional } from '@kubb/oas';
3
3
  import { FunctionParamsAST } from '@kubb/core/utils';
4
4
  import { Params } from '@kubb/react/types';
5
- import { n as OperationSchema } from './OperationGenerator-DxdJDBEc.cjs';
5
+ import { n as OperationSchema } from './OperationGenerator-D-kbZvnt.cjs';
6
6
  import { Config, Output } from '@kubb/core';
7
7
  import '@kubb/core/fs';
8
8
  import './SchemaMapper-B21ZmWag.cjs';
package/dist/utils.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Operation, Oas, SchemaObject, OpenAPIV3, OpenAPIV3_1, contentType, OasT
2
2
  export { isOptional } from '@kubb/oas';
3
3
  import { FunctionParamsAST } from '@kubb/core/utils';
4
4
  import { Params } from '@kubb/react/types';
5
- import { n as OperationSchema } from './OperationGenerator-CF1rxGSV.js';
5
+ import { n as OperationSchema } from './OperationGenerator-CnnaaJwx.js';
6
6
  import { Config, Output } from '@kubb/core';
7
7
  import '@kubb/core/fs';
8
8
  import './SchemaMapper-B21ZmWag.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-oas",
3
- "version": "3.10.15",
3
+ "version": "3.12.0",
4
4
  "description": "Generator swagger",
5
5
  "keywords": [
6
6
  "typescript",
@@ -83,18 +83,18 @@
83
83
  ],
84
84
  "dependencies": {
85
85
  "@stoplight/yaml": "^4.3.0",
86
- "remeda": "^2.23.0",
87
- "@kubb/core": "3.10.15",
88
- "@kubb/oas": "3.10.15",
89
- "@kubb/react": "3.10.15"
86
+ "remeda": "^2.23.1",
87
+ "@kubb/core": "3.12.0",
88
+ "@kubb/oas": "3.12.0",
89
+ "@kubb/react": "3.12.0"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@types/react": "^18.3.23",
93
93
  "react": "^18.3.1",
94
94
  "tsup": "^8.5.0",
95
95
  "typescript": "^5.8.3",
96
- "@kubb/config-ts": "3.10.15",
97
- "@kubb/config-tsup": "3.10.15"
96
+ "@kubb/config-ts": "3.12.0",
97
+ "@kubb/config-tsup": "3.12.0"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "@kubb/react": "^3.0.0"
@@ -1,21 +1,18 @@
1
+ import type { Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from '@kubb/core'
1
2
  import { BaseGenerator, type FileMetaBase } from '@kubb/core'
3
+ import type { KubbFile } from '@kubb/core/fs'
2
4
  import transformers, { pascalCase } from '@kubb/core/transformers'
3
5
  import { getUniqueName } from '@kubb/core/utils'
4
-
6
+ import type { contentType, Oas, OpenAPIV3, SchemaObject } from '@kubb/oas'
5
7
  import { isDiscriminator, isNullable, isReference } from '@kubb/oas'
6
8
  import { isDeepEqual, isNumber, uniqueWith } from 'remeda'
9
+ import type { Generator } from './generator.tsx'
10
+ import type { Schema, SchemaKeywordMapper } from './SchemaMapper.ts'
7
11
  import { isKeyword, schemaKeywords } from './SchemaMapper.ts'
12
+ import type { OperationSchema, Override, Refs } from './types.ts'
8
13
  import { getSchemaFactory } from './utils/getSchemaFactory.ts'
9
14
  import { getSchemas } from './utils/getSchemas.ts'
10
15
 
11
- import type { Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from '@kubb/core'
12
- import type { KubbFile } from '@kubb/core/fs'
13
-
14
- import type { Oas, OpenAPIV3, SchemaObject, contentType } from '@kubb/oas'
15
- import type { Schema, SchemaKeywordMapper } from './SchemaMapper.ts'
16
- import type { Generator } from './generator.tsx'
17
- import type { OperationSchema, Override, Refs } from './types.ts'
18
-
19
16
  export type GetSchemaGeneratorOptions<T extends SchemaGenerator<any, any, any>> = T extends SchemaGenerator<infer Options, any, any> ? Options : never
20
17
 
21
18
  export type SchemaMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>
@@ -567,14 +564,14 @@ export class SchemaGenerator<
567
564
  ].filter(Boolean)
568
565
  }
569
566
 
570
- if (schemaObject.oneOf) {
567
+ if (schemaObject.oneOf || schemaObject.anyOf) {
571
568
  // union
572
- const schemaWithoutOneOf = { ...schemaObject, oneOf: undefined }
569
+ const schemaWithoutOneOf = { ...schemaObject, oneOf: undefined, anyOf: undefined }
573
570
  const discriminator = this.context.oas.getDiscriminator(schemaObject)
574
571
 
575
572
  const union: SchemaKeywordMapper['union'] = {
576
573
  keyword: schemaKeywords.union,
577
- args: schemaObject.oneOf
574
+ args: (schemaObject.oneOf || schemaObject.anyOf)!
578
575
  .map((item) => {
579
576
  // first item, this will be ref
580
577
  return item && this.parse({ schemaObject: item as SchemaObject, name, parentName })[0]
@@ -584,7 +581,7 @@ export class SchemaGenerator<
584
581
  }
585
582
 
586
583
  if (discriminator) {
587
- return [this.#addDiscriminatorToSchema({ schemaObject: schemaWithoutOneOf, schema: union, discriminator }), ...baseItems]
584
+ if (this.context) return [this.#addDiscriminatorToSchema({ schemaObject: schemaWithoutOneOf, schema: union, discriminator }), ...baseItems]
588
585
  }
589
586
 
590
587
  if (schemaWithoutOneOf.properties) {
@@ -605,56 +602,6 @@ export class SchemaGenerator<
605
602
  return [union, ...baseItems]
606
603
  }
607
604
 
608
- if (schemaObject.anyOf) {
609
- // union
610
- const schemaWithoutAnyOf = { ...schemaObject, anyOf: undefined }
611
-
612
- const union: SchemaKeywordMapper['union'] = {
613
- keyword: schemaKeywords.union,
614
- args: schemaObject.anyOf
615
- .map((item) => {
616
- // first item, this will be ref
617
- return item && this.parse({ schemaObject: item as SchemaObject, name, parentName })[0]
618
- })
619
- .filter(Boolean)
620
- .filter((item) => !isKeyword(item, schemaKeywords.unknown))
621
- .map((item) => {
622
- if (isKeyword(item, schemaKeywords.object)) {
623
- return {
624
- ...item,
625
- args: {
626
- ...item.args,
627
- strict: true,
628
- },
629
- }
630
- }
631
- return item
632
- }),
633
- }
634
-
635
- const discriminator = this.context.oas.getDiscriminator(schemaObject)
636
-
637
- if (discriminator) {
638
- return [this.#addDiscriminatorToSchema({ schemaObject: schemaWithoutAnyOf, schema: union, discriminator }), ...baseItems]
639
- }
640
-
641
- if (schemaWithoutAnyOf.properties) {
642
- const propertySchemas = this.parse({ schemaObject: schemaWithoutAnyOf, name, parentName })
643
-
644
- union.args = [
645
- ...union.args.map((arg) => {
646
- return {
647
- keyword: schemaKeywords.and,
648
- args: [arg, ...propertySchemas],
649
- }
650
- }),
651
- ]
652
-
653
- return [union, ...baseItems]
654
- }
655
-
656
- return [union, ...baseItems]
657
- }
658
605
  if (schemaObject.allOf) {
659
606
  // intersection/add
660
607
  const schemaWithoutAllOf = { ...schemaObject, allOf: undefined }