@kubb/plugin-oas 3.0.0-alpha.8 → 3.0.0-beta.1
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/README.md +14 -5
- package/dist/OperationGenerator-BgQeGRzk.d.cts +550 -0
- package/dist/OperationGenerator-BgQeGRzk.d.ts +550 -0
- package/dist/{Schema-B1vcPGiK.d.ts → Schema-1iM2I0dK.d.ts} +1 -12
- package/dist/{Schema-DoSFh7Qd.d.cts → Schema-5o-c5UOy.d.cts} +1 -12
- package/dist/chunk-ABOQ73FL.cjs +36 -0
- package/dist/chunk-ABOQ73FL.cjs.map +1 -0
- package/dist/chunk-BG77DP54.js +30 -0
- package/dist/chunk-BG77DP54.js.map +1 -0
- package/dist/chunk-GF26SDHQ.js +28 -0
- package/dist/chunk-GF26SDHQ.js.map +1 -0
- package/dist/chunk-PADR76WZ.cjs +4 -0
- package/dist/chunk-PADR76WZ.cjs.map +1 -0
- package/dist/chunk-QAFBZLJA.cjs +48 -0
- package/dist/chunk-QAFBZLJA.cjs.map +1 -0
- package/dist/chunk-QT6ZFRNJ.cjs +752 -0
- package/dist/chunk-QT6ZFRNJ.cjs.map +1 -0
- package/dist/chunk-QWO5NQGQ.js +88 -0
- package/dist/chunk-QWO5NQGQ.js.map +1 -0
- package/dist/chunk-R47XMJ32.js +3 -0
- package/dist/chunk-R47XMJ32.js.map +1 -0
- package/dist/chunk-SR63CBLH.cjs +92 -0
- package/dist/chunk-SR63CBLH.cjs.map +1 -0
- package/dist/chunk-V2JO6RHI.js +744 -0
- package/dist/chunk-V2JO6RHI.js.map +1 -0
- package/dist/chunk-XNCEFOE6.js +45 -0
- package/dist/chunk-XNCEFOE6.js.map +1 -0
- package/dist/chunk-ZWHQ54JM.cjs +32 -0
- package/dist/chunk-ZWHQ54JM.cjs.map +1 -0
- package/dist/components.cjs +20 -12
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +3 -6
- package/dist/components.d.ts +3 -6
- package/dist/components.js +3 -12
- package/dist/components.js.map +1 -1
- package/dist/generators.cjs +14 -0
- package/dist/generators.cjs.map +1 -0
- package/dist/generators.d.cts +9 -0
- package/dist/generators.d.ts +9 -0
- package/dist/generators.js +5 -0
- package/dist/generators.js.map +1 -0
- package/dist/hooks.cjs +102 -57
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.cts +41 -10
- package/dist/hooks.d.ts +41 -10
- package/dist/hooks.js +91 -53
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +137 -187
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -5
- package/dist/index.d.ts +2 -5
- package/dist/index.js +76 -153
- package/dist/index.js.map +1 -1
- package/dist/utils.cjs +32 -41
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +5 -13
- package/dist/utils.d.ts +5 -13
- package/dist/utils.js +8 -40
- package/dist/utils.js.map +1 -1
- package/package.json +20 -14
- package/src/OperationGenerator.ts +23 -30
- package/src/SchemaGenerator.ts +79 -22
- package/src/SchemaMapper.ts +6 -4
- package/src/components/Schema.tsx +1 -99
- package/src/{parser.tsx → generator.tsx} +30 -22
- package/src/generators/index.ts +1 -0
- package/src/generators/jsonGenerator.ts +32 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useOperationManager.ts +77 -30
- package/src/hooks/useSchemaManager.ts +77 -0
- package/src/index.ts +3 -3
- package/src/plugin.ts +69 -56
- package/src/types.ts +24 -18
- package/src/utils/getParams.ts +1 -1
- package/src/utils/getSchemaFactory.ts +1 -1
- package/src/utils/index.ts +2 -1
- package/src/utils/parseFromConfig.ts +7 -7
- package/dist/OperationGenerator-DeXrfGDC.d.ts +0 -158
- package/dist/OperationGenerator-DhJ0MBKc.d.cts +0 -158
- package/dist/SchemaMapper-sGcY1xL5.d.cts +0 -247
- package/dist/SchemaMapper-sGcY1xL5.d.ts +0 -247
- package/dist/chunk-75BIOXB7.cjs +0 -7
- package/dist/chunk-75BIOXB7.cjs.map +0 -1
- package/dist/chunk-MUI5DWM3.js +0 -3966
- package/dist/chunk-MUI5DWM3.js.map +0 -1
- package/dist/chunk-N7EEVJA6.js +0 -35
- package/dist/chunk-N7EEVJA6.js.map +0 -1
- package/dist/chunk-NU4F7G47.cjs +0 -89
- package/dist/chunk-NU4F7G47.cjs.map +0 -1
- package/dist/chunk-O76YQFZB.cjs +0 -35
- package/dist/chunk-O76YQFZB.cjs.map +0 -1
- package/dist/chunk-SQ64ESS4.js +0 -7
- package/dist/chunk-SQ64ESS4.js.map +0 -1
- package/dist/chunk-SZDO532A.js +0 -89
- package/dist/chunk-SZDO532A.js.map +0 -1
- package/dist/chunk-VSVVTCQB.cjs +0 -3966
- package/dist/chunk-VSVVTCQB.cjs.map +0 -1
- package/dist/types-CZTUCaE5.d.cts +0 -145
- package/dist/types-CZTUCaE5.d.ts +0 -145
- package/src/utils/refSorter.ts +0 -13
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","../src/index.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/parser.tsx"],"names":["method"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","sourcesContent":[null,"export type {\n GetOperationGeneratorOptions,\n OperationMethodResult,\n} from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n} from './SchemaGenerator.ts'\nexport type { SchemaMethodResult } from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { createParser, createReactParser } from './parser.tsx'\nexport type { ParserReactOptions } from './parser.tsx'\nexport type { Parser, ParserOptions } from './parser.tsx'\n","import { type FileMetaBase, Generator } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, contentType } from '@kubb/oas'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\nimport type { Parser } from './parser.tsx'\n\nexport type GetOperationGeneratorOptions<T extends OperationGenerator<any, any, any>> = T extends OperationGenerator<infer Options, any, any> ? Options : never\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 TOptions = unknown,\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends Generator<TOptions, Context<TOptions, 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<TOptions> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId().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 return false\n })?.options || {}\n )\n }\n\n /**\n *\n * @deprecated\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()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().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\n return matched\n }\n\n /**\n *\n * @deprecated\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()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().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\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n forStatusCode,\n resolveName = (name) => name,\n }: {\n forStatusCode?: string | number\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 responseStatusCode =\n forStatusCode || (operation.schema.responses && Object.keys(operation.schema.responses).find((key) => key.startsWith('2'))) || 200\n const responseSchema = this.context.oas.getResponseSchema(operation, responseStatusCode)\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()} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n }\n })\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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()} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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()} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n description: operation.getResponseAsJSONSchema(responseStatusCode)?.at(0)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: responseSchema,\n statusCode: Number(responseStatusCode),\n keys: responseSchema?.properties ? Object.keys(responseSchema.properties) : undefined,\n keysToOmit: responseSchema?.properties\n ? Object.keys(responseSchema.properties).filter((key) => {\n const item = responseSchema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n },\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...parsers: Array<Parser<Extract<TOptions, PluginFactoryOptions>>>): 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) {\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 parsers?.forEach((parser) => {\n const promise = parser.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 parsers?.forEach((parser) => {\n const promise = parser.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: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\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'\n\nimport { createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\n\nimport { getSchemas } from './utils/getSchemas.ts'\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nimport type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport type { Oas, OasTypes } from '@kubb/oas'\nimport type { FormatOptions } from '@kubb/oas/parser'\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 = { path: 'schemas', export: false },\n experimentalFilter: filter,\n experimentalSort: sort,\n validate = true,\n serverIndex = 0,\n contentType,\n oasClass,\n } = options\n\n const getOas = async ({ config, logger, formatOptions }: { config: Config; logger: Logger; formatOptions?: FormatOptions }): Promise<Oas> => {\n try {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, formatOptions, oasClass)\n\n if (validate) {\n await oas.valdiate()\n }\n\n return oas\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n return parseFromConfig(config, {}, oasClass)\n }\n }\n\n return {\n name: pluginOasName,\n output:\n output === false\n ? {\n path: '',\n exportType: false,\n }\n : {\n exportType: 'barrelNamed',\n ...output,\n },\n options,\n context() {\n const { config, logger } = this\n\n return {\n getOas(formatOptions) {\n return getOas({ config, logger, formatOptions })\n },\n async getSchemas({ includes } = {}) {\n const oas = await this.getOas()\n return getSchemas({ oas, contentType, includes })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n const baseURL = oasInstance.api.servers?.at(serverIndex)?.url\n return baseURL\n },\n contentType,\n }\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 formatOptions: {\n filterSet: filter,\n sortSet: sort,\n },\n })\n await oas.dereference()\n\n const root = path.resolve(this.config.root, this.config.output.path)\n const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const baseName = `${camelCase(name)}.json` as `${string}.json`\n const resolvedPath = path.resolve(root, output.path, baseName)\n\n await this.addFile({\n path: resolvedPath,\n baseName,\n meta: {\n pluginKey: this.plugin.key,\n },\n sources: [\n {\n name: camelCase(name),\n isExportable: false,\n isIndexable: false,\n value: JSON.stringify(schema),\n },\n ],\n })\n }\n\n const promises = Object.entries(schemas).map(mapSchema)\n await Promise.all(promises)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport type { Operation, SchemaObject } from '@kubb/oas'\nimport { App, createRoot } from '@kubb/react'\nimport type { KubbNode } from '@kubb/react/types'\nimport type * as KubbFile from '@kubb/fs/types'\nimport type { OperationsByMethod } from './types.ts'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport type { OperationGenerator } from './OperationGenerator.ts'\nimport type { SchemaGenerator, SchemaGeneratorOptions } from './SchemaGenerator.ts'\n\ntype OperationsProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operations: Array<Operation>\n operationsByMethod: OperationsByMethod\n}\n\ntype OperationProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operation: Operation\n}\n\ntype SchemaProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>\n name: string\n schema: SchemaObject\n options: TOptions['resolvedOptions']\n}\n\nexport type ParserOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n operations?: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>\n operation?: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>\n schema?: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>\n}\n\nexport type Parser<TOptions extends PluginFactoryOptions> = ParserOptions<TOptions>\n\nexport function createParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserOptions<TOptions>): Parser<TOptions> {\n return parseOptions\n}\n\nexport type ParserReactOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n Operations?: (props: OperationsProps<TOptions>) => KubbNode\n Operation?: (props: OperationProps<TOptions>) => KubbNode\n Schema?: (props: SchemaProps<TOptions>) => KubbNode\n}\n\nexport function createReactParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserReactOptions<TOptions>): Parser<TOptions> {\n return {\n ...parseOptions,\n async operations({ instance, options, operations, operationsByMethod }) {\n if (!parseOptions.Operations) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={instance}>\n <parseOptions.Operations operations={operations} instance={instance} operationsByMethod={operationsByMethod} options={options} />\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async operation({ instance, operation, options }) {\n if (!parseOptions.Operation) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\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={instance}>\n <Oas.Operation operation={operation}>\n <parseOptions.Operation operation={operation} options={options} instance={instance} />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async schema({ instance, schema, name, options }) {\n if (!parseOptions.Schema) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = instance.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 <parseOptions.Schema schema={schema} options={options} instance={instance} name={name} />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/OperationGenerator.ts","../src/plugin.ts"],"names":["BaseGenerator","transformers","path","method","methods","item","createPlugin","jsonGenerator","parseFromConfig","getSchemas","options","FileManager","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 * as KubbFile from '@kubb/fs/types'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, contentType } from '@kubb/oas'\nimport type { Generator } from './generator.tsx'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\n\n/**\n * @deprecated\n */\nexport type GetOperationGeneratorOptions<T = any> = any\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()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId().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 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()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().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\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()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().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\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 responseStatusCode = (operation.schema.responses && Object.keys(operation.schema.responses).find((key) => key.startsWith('2'))) || 200\n const responseSchema = this.context.oas.getResponseSchema(operation, responseStatusCode)\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()} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n }\n })\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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()} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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()} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\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(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n description: operation.getResponseAsJSONSchema(responseStatusCode)?.at(0)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: responseSchema,\n statusCode: Number(responseStatusCode),\n keys: responseSchema?.properties ? Object.keys(responseSchema.properties) : undefined,\n keysToOmit: responseSchema?.properties\n ? Object.keys(responseSchema.properties).filter((key) => {\n const item = responseSchema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n },\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n #methods = ['get', 'post', 'patch', 'put', 'delete']\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 && [this.#methods].some((methods) => 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 /**\n * GET\n */\n async get(operation: Operation, options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TPluginOptions['resolvedOptions']): OperationMethodResult<TFileMeta> {\n return []\n }\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, createPlugin } from '@kubb/core'\n\nimport { getSchemas } from './utils/getSchemas.ts'\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 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 validate = true,\n generators = [jsonGenerator],\n serverIndex = 0,\n contentType,\n oasClass,\n } = options\n\n const getOas = async ({ config, logger }: { config: Config; logger: Logger }): Promise<Oas> => {\n try {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, oasClass)\n\n if (validate) {\n await oas.valdiate()\n }\n\n return oas\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n return parseFromConfig(config, oasClass)\n }\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 getSchemas({ includes } = {}) {\n const oas = await this.getOas()\n return getSchemas({ oas, contentType, includes })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n return oasInstance.api.servers?.at(serverIndex)?.url\n },\n contentType,\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 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,12 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { O as Options, P as PluginOas } from './OperationGenerator-BgQeGRzk.cjs';
|
|
2
|
+
export { A as API, E as Exclude, o as Generator, p as GeneratorOptions, G as GetOperationGeneratorOptions, c as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, v as OperationSchema, w as OperationSchemas, x as OperationsByMethod, y as Override, R as ReactGeneratorOptions, r as Ref, t as Refs, q as ResolvePathOptions, u as Resolver, g as Schema, f as SchemaGenerator, S as SchemaGeneratorBuildOptions, d as SchemaGeneratorOptions, h as SchemaKeyword, i as SchemaKeywordBase, j as SchemaKeywordMapper, k as SchemaMapper, e as SchemaMethodResult, m as createGenerator, n as createReactGenerator, l as isKeyword, s as schemaKeywords } from './OperationGenerator-BgQeGRzk.cjs';
|
|
2
3
|
import * as _kubb_core from '@kubb/core';
|
|
3
|
-
import { O as Options, P as PluginOas } from './types-CZTUCaE5.cjs';
|
|
4
|
-
export { A as API, E as Exclude, I as Include, d as OperationSchema, e as OperationSchemas, f as OperationsByMethod, g as Override, a as Ref, b as Refs, R as ResolvePathOptions, c as Resolver } from './types-CZTUCaE5.cjs';
|
|
5
|
-
export { S as Schema, a as SchemaKeyword, b as SchemaKeywordBase, c as SchemaKeywordMapper, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-sGcY1xL5.cjs';
|
|
6
4
|
import '@kubb/fs/types';
|
|
7
5
|
import '@kubb/oas';
|
|
8
6
|
import '@kubb/react/types';
|
|
9
|
-
import '@kubb/oas/parser';
|
|
10
7
|
|
|
11
8
|
declare const pluginOasName = "plugin-oas";
|
|
12
9
|
declare const pluginOas: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { O as Options, P as PluginOas } from './OperationGenerator-BgQeGRzk.js';
|
|
2
|
+
export { A as API, E as Exclude, o as Generator, p as GeneratorOptions, G as GetOperationGeneratorOptions, c as GetSchemaGeneratorOptions, I as Include, b as OperationGenerator, a as OperationMethodResult, v as OperationSchema, w as OperationSchemas, x as OperationsByMethod, y as Override, R as ReactGeneratorOptions, r as Ref, t as Refs, q as ResolvePathOptions, u as Resolver, g as Schema, f as SchemaGenerator, S as SchemaGeneratorBuildOptions, d as SchemaGeneratorOptions, h as SchemaKeyword, i as SchemaKeywordBase, j as SchemaKeywordMapper, k as SchemaMapper, e as SchemaMethodResult, m as createGenerator, n as createReactGenerator, l as isKeyword, s as schemaKeywords } from './OperationGenerator-BgQeGRzk.js';
|
|
2
3
|
import * as _kubb_core from '@kubb/core';
|
|
3
|
-
import { O as Options, P as PluginOas } from './types-CZTUCaE5.js';
|
|
4
|
-
export { A as API, E as Exclude, I as Include, d as OperationSchema, e as OperationSchemas, f as OperationsByMethod, g as Override, a as Ref, b as Refs, R as ResolvePathOptions, c as Resolver } from './types-CZTUCaE5.js';
|
|
5
|
-
export { S as Schema, a as SchemaKeyword, b as SchemaKeywordBase, c as SchemaKeywordMapper, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-sGcY1xL5.js';
|
|
6
4
|
import '@kubb/fs/types';
|
|
7
5
|
import '@kubb/oas';
|
|
8
6
|
import '@kubb/react/types';
|
|
9
|
-
import '@kubb/oas/parser';
|
|
10
7
|
|
|
11
8
|
declare const pluginOasName = "plugin-oas";
|
|
12
9
|
declare const pluginOas: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
|
package/dist/index.js
CHANGED
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
} from
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
__toESM,
|
|
14
|
-
getSchemas,
|
|
15
|
-
init_esm_shims
|
|
16
|
-
} from "./chunk-SZDO532A.js";
|
|
1
|
+
import { parseFromConfig } from './chunk-BG77DP54.js';
|
|
2
|
+
import { jsonGenerator } from './chunk-QWO5NQGQ.js';
|
|
3
|
+
export { createGenerator, createReactGenerator } from './chunk-QWO5NQGQ.js';
|
|
4
|
+
import './chunk-R47XMJ32.js';
|
|
5
|
+
import { SchemaGenerator } from './chunk-V2JO6RHI.js';
|
|
6
|
+
export { SchemaGenerator, isKeyword, schemaKeywords } from './chunk-V2JO6RHI.js';
|
|
7
|
+
import { getSchemas } from './chunk-XNCEFOE6.js';
|
|
8
|
+
import './chunk-GF26SDHQ.js';
|
|
9
|
+
import { createPlugin, FileManager, BaseGenerator } from '@kubb/core';
|
|
10
|
+
import transformers from '@kubb/core/transformers';
|
|
11
|
+
import path from 'node:path';
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
init_esm_shims();
|
|
20
|
-
|
|
21
|
-
// src/OperationGenerator.ts
|
|
22
|
-
init_esm_shims();
|
|
23
|
-
import { Generator } from "@kubb/core";
|
|
24
|
-
import transformers from "@kubb/core/transformers";
|
|
25
|
-
var OperationGenerator = class extends Generator {
|
|
13
|
+
var OperationGenerator = class extends BaseGenerator {
|
|
26
14
|
#operationsByMethod = {};
|
|
27
15
|
get operationsByMethod() {
|
|
28
16
|
return this.#operationsByMethod;
|
|
@@ -48,10 +36,6 @@ var OperationGenerator = class extends Generator {
|
|
|
48
36
|
return false;
|
|
49
37
|
})?.options || {};
|
|
50
38
|
}
|
|
51
|
-
/**
|
|
52
|
-
*
|
|
53
|
-
* @deprecated
|
|
54
|
-
*/
|
|
55
39
|
#isExcluded(operation, method) {
|
|
56
40
|
const { exclude = [] } = this.context;
|
|
57
41
|
let matched = false;
|
|
@@ -71,10 +55,6 @@ var OperationGenerator = class extends Generator {
|
|
|
71
55
|
});
|
|
72
56
|
return matched;
|
|
73
57
|
}
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
* @deprecated
|
|
77
|
-
*/
|
|
78
58
|
#isIncluded(operation, method) {
|
|
79
59
|
const { include = [] } = this.context;
|
|
80
60
|
let matched = false;
|
|
@@ -95,14 +75,13 @@ var OperationGenerator = class extends Generator {
|
|
|
95
75
|
return matched;
|
|
96
76
|
}
|
|
97
77
|
getSchemas(operation, {
|
|
98
|
-
forStatusCode,
|
|
99
78
|
resolveName = (name) => name
|
|
100
79
|
} = {}) {
|
|
101
80
|
const pathParamsSchema = this.context.oas.getParametersSchema(operation, "path");
|
|
102
81
|
const queryParamsSchema = this.context.oas.getParametersSchema(operation, "query");
|
|
103
82
|
const headerParamsSchema = this.context.oas.getParametersSchema(operation, "header");
|
|
104
83
|
const requestSchema = this.context.oas.getRequestSchema(operation);
|
|
105
|
-
const responseStatusCode =
|
|
84
|
+
const responseStatusCode = operation.schema.responses && Object.keys(operation.schema.responses).find((key) => key.startsWith("2")) || 200;
|
|
106
85
|
const responseSchema = this.context.oas.getResponseSchema(operation, responseStatusCode);
|
|
107
86
|
const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {
|
|
108
87
|
let name = statusCode;
|
|
@@ -171,14 +150,15 @@ var OperationGenerator = class extends Generator {
|
|
|
171
150
|
statusCodes
|
|
172
151
|
};
|
|
173
152
|
}
|
|
174
|
-
|
|
153
|
+
#methods = ["get", "post", "patch", "put", "delete"];
|
|
154
|
+
async build(...generators) {
|
|
175
155
|
const { oas } = this.context;
|
|
176
156
|
const paths = oas.getPaths();
|
|
177
157
|
this.operationsByMethod = Object.entries(paths).reduce((acc, [path2, method]) => {
|
|
178
158
|
const methods = Object.keys(method);
|
|
179
159
|
methods.forEach((method2) => {
|
|
180
160
|
const operation = oas.operation(path2, method2);
|
|
181
|
-
if (operation) {
|
|
161
|
+
if (operation && [this.#methods].some((methods2) => method2 === operation.method)) {
|
|
182
162
|
const isExcluded = this.#isExcluded(operation, method2);
|
|
183
163
|
const isIncluded = this.context.include ? this.#isIncluded(operation, method2) : true;
|
|
184
164
|
if (isIncluded && !isExcluded) {
|
|
@@ -219,8 +199,8 @@ var OperationGenerator = class extends Generator {
|
|
|
219
199
|
if (promiseOperation) {
|
|
220
200
|
acc.push(promiseOperation);
|
|
221
201
|
}
|
|
222
|
-
|
|
223
|
-
const promise =
|
|
202
|
+
generators?.forEach((generator) => {
|
|
203
|
+
const promise = generator.operation?.({
|
|
224
204
|
instance: this,
|
|
225
205
|
operation,
|
|
226
206
|
options: {
|
|
@@ -237,8 +217,8 @@ var OperationGenerator = class extends Generator {
|
|
|
237
217
|
}, []);
|
|
238
218
|
const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item2) => item2.operation));
|
|
239
219
|
promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod));
|
|
240
|
-
|
|
241
|
-
const promise =
|
|
220
|
+
generators?.forEach((generator) => {
|
|
221
|
+
const promise = generator.operations?.({
|
|
242
222
|
instance: this,
|
|
243
223
|
operations: operations.flat().filter(Boolean),
|
|
244
224
|
operationsByMethod: this.operationsByMethod,
|
|
@@ -294,26 +274,21 @@ var OperationGenerator = class extends Generator {
|
|
|
294
274
|
return [];
|
|
295
275
|
}
|
|
296
276
|
};
|
|
297
|
-
|
|
298
|
-
// src/plugin.ts
|
|
299
|
-
init_esm_shims();
|
|
300
|
-
import path from "node:path";
|
|
301
|
-
import { createPlugin } from "@kubb/core";
|
|
302
|
-
import { camelCase } from "@kubb/core/transformers";
|
|
303
277
|
var pluginOasName = "plugin-oas";
|
|
304
278
|
var pluginOas = createPlugin((options) => {
|
|
305
279
|
const {
|
|
306
|
-
output = {
|
|
307
|
-
|
|
308
|
-
|
|
280
|
+
output = {
|
|
281
|
+
path: "schemas"
|
|
282
|
+
},
|
|
309
283
|
validate = true,
|
|
284
|
+
generators = [jsonGenerator],
|
|
310
285
|
serverIndex = 0,
|
|
311
286
|
contentType,
|
|
312
287
|
oasClass
|
|
313
288
|
} = options;
|
|
314
|
-
const getOas = async ({ config, logger
|
|
289
|
+
const getOas = async ({ config, logger }) => {
|
|
315
290
|
try {
|
|
316
|
-
const oas = await parseFromConfig(config,
|
|
291
|
+
const oas = await parseFromConfig(config, oasClass);
|
|
317
292
|
if (validate) {
|
|
318
293
|
await oas.valdiate();
|
|
319
294
|
}
|
|
@@ -321,24 +296,20 @@ var pluginOas = createPlugin((options) => {
|
|
|
321
296
|
} catch (e) {
|
|
322
297
|
const error = e;
|
|
323
298
|
logger.emit("warning", error?.message);
|
|
324
|
-
return parseFromConfig(config,
|
|
299
|
+
return parseFromConfig(config, oasClass);
|
|
325
300
|
}
|
|
326
301
|
};
|
|
327
302
|
return {
|
|
328
303
|
name: pluginOasName,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
} : {
|
|
333
|
-
exportType: "barrelNamed",
|
|
334
|
-
...output
|
|
304
|
+
options: {
|
|
305
|
+
output,
|
|
306
|
+
...options
|
|
335
307
|
},
|
|
336
|
-
options,
|
|
337
308
|
context() {
|
|
338
309
|
const { config, logger } = this;
|
|
339
310
|
return {
|
|
340
|
-
getOas(
|
|
341
|
-
return getOas({ config, logger
|
|
311
|
+
getOas() {
|
|
312
|
+
return getOas({ config, logger });
|
|
342
313
|
},
|
|
343
314
|
async getSchemas({ includes } = {}) {
|
|
344
315
|
const oas = await this.getOas();
|
|
@@ -346,112 +317,64 @@ var pluginOas = createPlugin((options) => {
|
|
|
346
317
|
},
|
|
347
318
|
async getBaseURL() {
|
|
348
319
|
const oasInstance = await this.getOas();
|
|
349
|
-
|
|
350
|
-
return baseURL;
|
|
320
|
+
return oasInstance.api.servers?.at(serverIndex)?.url;
|
|
351
321
|
},
|
|
352
322
|
contentType
|
|
353
323
|
};
|
|
354
324
|
},
|
|
325
|
+
resolvePath(baseName, pathMode, options2) {
|
|
326
|
+
const root = path.resolve(this.config.root, this.config.output.path);
|
|
327
|
+
const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path));
|
|
328
|
+
if (mode === "single") {
|
|
329
|
+
return path.resolve(root, output.path);
|
|
330
|
+
}
|
|
331
|
+
return path.resolve(root, output.path, baseName);
|
|
332
|
+
},
|
|
355
333
|
async buildStart() {
|
|
356
334
|
if (!output) {
|
|
357
335
|
return;
|
|
358
336
|
}
|
|
359
337
|
const oas = await getOas({
|
|
360
338
|
config: this.config,
|
|
361
|
-
logger: this.logger
|
|
362
|
-
formatOptions: {
|
|
363
|
-
filterSet: filter,
|
|
364
|
-
sortSet: sort
|
|
365
|
-
}
|
|
339
|
+
logger: this.logger
|
|
366
340
|
});
|
|
367
341
|
await oas.dereference();
|
|
368
|
-
const
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
}
|
|
386
|
-
]
|
|
387
|
-
});
|
|
388
|
-
};
|
|
389
|
-
const promises = Object.entries(schemas).map(mapSchema);
|
|
390
|
-
await Promise.all(promises);
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
// src/parser.tsx
|
|
396
|
-
init_esm_shims();
|
|
397
|
-
import { App, createRoot } from "@kubb/react";
|
|
398
|
-
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
|
399
|
-
function createParser(parseOptions) {
|
|
400
|
-
return parseOptions;
|
|
401
|
-
}
|
|
402
|
-
function createReactParser(parseOptions) {
|
|
403
|
-
return {
|
|
404
|
-
...parseOptions,
|
|
405
|
-
async operations({ instance, options, operations, operationsByMethod }) {
|
|
406
|
-
if (!parseOptions.Operations) {
|
|
407
|
-
return [];
|
|
408
|
-
}
|
|
409
|
-
const { pluginManager, oas, plugin, mode } = instance.context;
|
|
410
|
-
const root = createRoot({
|
|
411
|
-
logger: pluginManager.logger
|
|
412
|
-
});
|
|
413
|
-
root.render(
|
|
414
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, { pluginManager, plugin, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Oas, { oas, operations, generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operations, { operations, instance, operationsByMethod, options }) }) })
|
|
415
|
-
);
|
|
416
|
-
return root.files;
|
|
417
|
-
},
|
|
418
|
-
async operation({ instance, operation, options }) {
|
|
419
|
-
if (!parseOptions.Operation) {
|
|
420
|
-
return [];
|
|
421
|
-
}
|
|
422
|
-
const { pluginManager, oas, plugin, mode } = instance.context;
|
|
423
|
-
const root = createRoot({
|
|
424
|
-
logger: pluginManager.logger
|
|
425
|
-
});
|
|
426
|
-
root.render(
|
|
427
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Oas, { oas, operations: [operation], generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Oas.Operation, { operation, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operation, { operation, options, instance }) }) }) })
|
|
342
|
+
const schemaGenerator = new SchemaGenerator(
|
|
343
|
+
{
|
|
344
|
+
unknownType: "unknown",
|
|
345
|
+
dateType: "date",
|
|
346
|
+
transformers: {},
|
|
347
|
+
...this.plugin.options
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
oas,
|
|
351
|
+
pluginManager: this.pluginManager,
|
|
352
|
+
plugin: this.plugin,
|
|
353
|
+
contentType,
|
|
354
|
+
include: void 0,
|
|
355
|
+
override: void 0,
|
|
356
|
+
mode: "split",
|
|
357
|
+
output: output.path
|
|
358
|
+
}
|
|
428
359
|
);
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
360
|
+
const schemaFiles = await schemaGenerator.build(...generators);
|
|
361
|
+
await this.addFile(...schemaFiles);
|
|
362
|
+
const operationGenerator = new OperationGenerator(this.plugin.options, {
|
|
363
|
+
oas,
|
|
364
|
+
pluginManager: this.pluginManager,
|
|
365
|
+
plugin: this.plugin,
|
|
366
|
+
contentType,
|
|
367
|
+
exclude: void 0,
|
|
368
|
+
include: void 0,
|
|
369
|
+
override: void 0,
|
|
370
|
+
mode: "split"
|
|
438
371
|
});
|
|
439
|
-
const
|
|
440
|
-
|
|
441
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Oas, { oas, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Oas.Schema, { name, value: schema, tree, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Schema, { schema, options, instance, name }) }) }) })
|
|
442
|
-
);
|
|
443
|
-
return root.files;
|
|
372
|
+
const operationFiles = await operationGenerator.build(...generators);
|
|
373
|
+
await this.addFile(...operationFiles);
|
|
444
374
|
}
|
|
445
375
|
};
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
createParser,
|
|
451
|
-
createReactParser,
|
|
452
|
-
isKeyword,
|
|
453
|
-
pluginOas,
|
|
454
|
-
pluginOasName,
|
|
455
|
-
schemaKeywords
|
|
456
|
-
};
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
export { OperationGenerator, pluginOas, pluginOasName };
|
|
379
|
+
//# sourceMappingURL=index.js.map
|
|
457
380
|
//# sourceMappingURL=index.js.map
|