@kubb/plugin-oas
Version:
OpenAPI Specification (OAS) plugin for Kubb, providing core functionality for parsing and processing OpenAPI/Swagger schemas for code generation.
1 lines • 25.1 kB
Source Map (JSON)
{"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["BaseGenerator","transformers","path","pLimit","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'\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, Override } from './types.ts'\nimport pLimit from 'p-limit'\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 #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return (\n override.find(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return exclude.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return include.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const operationId = operation.getOperationId({ friendlyCase: true })\n const method = operation.method\n const operationName = transformers.pascalCase(operationId)\n\n const resolveKeys = (schema?: SchemaObject) => (schema?.properties ? Object.keys(schema.properties) : undefined)\n\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 const name = statusCode === 'default' ? 'error' : statusCode\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n const keys = resolveKeys(schema)\n\n return {\n name: resolveName(transformers.pascalCase(`${operationId} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName,\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys,\n keysToOmit: keys?.filter((key) => (schema?.properties?.[key] as OasTypes.SchemaObject)?.writeOnly),\n }\n })\n\n const successful = statusCodes.filter((item) => item.statusCode?.toString().startsWith('2'))\n const errors = statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} PathParams`)),\n operation,\n operationName,\n schema: pathParamsSchema,\n keys: resolveKeys(pathParamsSchema),\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} QueryParams`)),\n operation,\n operationName,\n schema: queryParamsSchema,\n keys: resolveKeys(queryParamsSchema) || [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} HeaderParams`)),\n operation,\n operationName,\n schema: headerParamsSchema,\n keys: resolveKeys(headerParamsSchema),\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName,\n schema: requestSchema,\n keys: resolveKeys(requestSchema),\n keysToOmit: resolveKeys(requestSchema)?.filter((key) => (requestSchema.properties?.[key] as OasTypes.SchemaObject)?.readOnly),\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n operation,\n operationName,\n schema: {\n oneOf: successful.map((item) => ({ ...item.schema, $ref: item.name })) || undefined,\n } as SchemaObject,\n },\n responses: successful,\n errors,\n statusCodes,\n }\n }\n\n async getOperations(): Promise<Array<{ path: string; method: HttpMethod; operation: Operation }>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n\n return Object.entries(paths).flatMap(([path, methods]) =>\n Object.entries(methods)\n .map((values) => {\n const [method, operation] = values as [HttpMethod, Operation]\n if (this.#isExcluded(operation, method)) {\n return null\n }\n\n if (this.context.include && !this.#isIncluded(operation, method)) {\n return null\n }\n\n return operation ? { path, method: method as HttpMethod, operation } : null\n })\n .filter(Boolean),\n )\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const operations = await this.getOperations()\n\n const generatorLimit = pLimit(1)\n const operationLimit = pLimit(10)\n\n const writeTasks = generators.map((generator) =>\n generatorLimit(async () => {\n const operationTasks = operations.map(({ operation, method }) =>\n operationLimit(async () => {\n const options = this.#getOptions(operation, method)\n\n const result = await generator.operation?.({\n instance: this,\n operation,\n options: { ...this.options, ...options },\n })\n\n return result ?? []\n }),\n )\n\n const operationResults = await Promise.all(operationTasks)\n const opResultsFlat = operationResults.flat()\n\n const operationsResult = await generator.operations?.({\n instance: this,\n operations: operations.map((op) => op.operation),\n options: this.options,\n })\n\n return [...opResultsFlat, ...(operationsResult ?? [])] as unknown as KubbFile.File<TFileMeta>\n }),\n )\n\n const nestedResults = await Promise.all(writeTasks)\n\n return nestedResults.flat()\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 emptySchemaType: '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"]}