@kubb/plugin-oas 3.0.0-alpha.2 → 3.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/OperationGenerator-D7rSlflc.d.cts +158 -0
  2. package/dist/OperationGenerator-vw0Zf-Mi.d.ts +158 -0
  3. package/dist/{Schema-an5hOrjZ.d.cts → Schema-DxyOIX7q.d.cts} +1 -1
  4. package/dist/{Schema-DefwBJMc.d.ts → Schema-gHgN14i2.d.ts} +1 -1
  5. package/dist/{SchemaMapper-CsBQ6eEx.d.cts → SchemaMapper-BM1IGWqD.d.cts} +1 -1
  6. package/dist/{SchemaMapper-CsBQ6eEx.d.ts → SchemaMapper-BM1IGWqD.d.ts} +1 -1
  7. package/dist/{chunk-DRLYORTT.cjs → chunk-264TCCJF.cjs} +715 -7
  8. package/dist/chunk-264TCCJF.cjs.map +1 -0
  9. package/dist/chunk-7KIEQOVZ.cjs +7 -0
  10. package/dist/chunk-7KIEQOVZ.cjs.map +1 -0
  11. package/dist/{chunk-LEACSHKT.js → chunk-FZN3PBEK.js} +713 -5
  12. package/dist/chunk-FZN3PBEK.js.map +1 -0
  13. package/dist/chunk-TWKZEVSM.js +7 -0
  14. package/dist/chunk-TWKZEVSM.js.map +1 -0
  15. package/dist/components.cjs +4 -9
  16. package/dist/components.cjs.map +1 -1
  17. package/dist/components.d.cts +12 -6
  18. package/dist/components.d.ts +12 -6
  19. package/dist/components.js +3 -8
  20. package/dist/components.js.map +1 -1
  21. package/dist/hooks.cjs +6 -7
  22. package/dist/hooks.cjs.map +1 -1
  23. package/dist/hooks.d.cts +3 -3
  24. package/dist/hooks.d.ts +3 -3
  25. package/dist/hooks.js +1 -2
  26. package/dist/hooks.js.map +1 -1
  27. package/dist/index.cjs +225 -153
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +8 -77
  30. package/dist/index.d.ts +8 -77
  31. package/dist/index.js +207 -135
  32. package/dist/index.js.map +1 -1
  33. package/dist/{types-Dte3MA6H.d.cts → types-C2RXaY0_.d.cts} +1 -1
  34. package/dist/{types-Dte3MA6H.d.ts → types-C2RXaY0_.d.ts} +1 -1
  35. package/dist/utils.d.cts +2 -2
  36. package/dist/utils.d.ts +2 -2
  37. package/package.json +9 -9
  38. package/src/OperationGenerator.ts +62 -31
  39. package/src/SchemaGenerator.ts +23 -4
  40. package/src/components/Oas.tsx +8 -2
  41. package/src/index.ts +3 -9
  42. package/src/parser.tsx +120 -0
  43. package/dist/OperationGenerator-CeM_9pxW.d.cts +0 -60
  44. package/dist/OperationGenerator-DhUhvRJE.d.ts +0 -60
  45. package/dist/chunk-CJXRFYEF.cjs +0 -698
  46. package/dist/chunk-CJXRFYEF.cjs.map +0 -1
  47. package/dist/chunk-DRLYORTT.cjs.map +0 -1
  48. package/dist/chunk-K6KUETAI.js +0 -698
  49. package/dist/chunk-K6KUETAI.js.map +0 -1
  50. package/dist/chunk-LEACSHKT.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","../src/index.ts","../src/plugin.ts","../src/OperationGenerator.ts"],"names":["path","method"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","sourcesContent":[null,"import { pluginOas } from './plugin.ts'\n\nexport 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'\n\n/**\n * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead\n */\nconst definePluginDefault = pluginOas\n\nexport default definePluginDefault\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'\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'\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 = { 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 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 resolvePath(baseName) {\n if (output === false) {\n return undefined\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n return camelCase(name, { isFile: type === 'file' })\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 const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const resolvedPath = this.resolvePath({\n baseName: `${name}.json`,\n pluginKey: this.plugin.key,\n })\n\n const resvoledFileName = this.resolveName({\n name: `${name}.json`,\n pluginKey: [pluginOasName],\n type: 'file',\n }) as `${string}.json`\n\n if (!resolvedPath) {\n return\n }\n\n await this.addFile({\n path: resolvedPath,\n baseName: resvoledFileName,\n source: JSON.stringify(schema),\n meta: {\n pluginKey: this.plugin.key,\n },\n })\n }\n\n const promises = Object.entries(schemas).map(mapSchema)\n await Promise.all(promises)\n },\n }\n})\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'\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 abstract 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 * @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 * @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 { forStatusCode, resolveName = (name) => name }: { forStatusCode?: string | number; resolveName?: (name: string) => string } = {},\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 get #methods() {\n return {\n get: this.get,\n post: this.post,\n patch: this.patch,\n put: this.put,\n delete: this.delete,\n head: undefined,\n options: undefined,\n trace: undefined,\n } as const\n }\n\n async build(): 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[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 const promiseMethod = this.#methods[method]?.call(this, operation, {\n ...this.options,\n ...options,\n })\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n if (promiseOperation) {\n acc.push(promiseOperation)\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 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 null\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return null\n }\n}\n"]}
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":"AAAA;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACrBA,8CAAA,CAAA;ADuBA;AACA;AExBA,8CAAA,CAAA;AAAA,kCAA6C;AAC7C,mHAAyB;AADzB,IAAA,mBAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA;AA6BO,IAAM,mBAAA,EAAN,MAAA,QAIG,gBAAuD;AAAA,EAJ1D,WAAA,CAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAAA,IAAA,4CAAA,IAAA,EAAA,6BAAA,CAAA;AAKL,IAAA,4CAAA,IAAA,EAAA,mBAAA,EAA0C,CAAC,CAAA,CAAA;AAAA,EAAA;AAAA,EAC3C,IAAI,kBAAA,CAAA,EAAyC;AAC3C,IAAA,OAAO,4CAAA,IAAA,EAAK,mBAAA,CAAA;AAAA,EACd;AAAA,EAEA,IAAI,kBAAA,CAAmB,KAAA,EAA2B;AAChD,IAAA,4CAAA,IAAA,EAAK,mBAAA,EAAsB,KAAA,CAAA;AAAA,EAC7B;AAAA,EAsFA,UAAA,CACE,SAAA,EACA;AAAA,IACE,aAAA;AAAA,IACA,YAAA,EAAc,CAAC,IAAA,EAAA,GAAS;AAAA,EAC1B,EAAA,EAGI,CAAC,CAAA,EACa;AAClB,IAAA,MAAM,iBAAA,EAAmB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,MAAM,CAAA;AAC/E,IAAA,MAAM,kBAAA,EAAoB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AACjF,IAAA,MAAM,mBAAA,EAAqB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,QAAQ,CAAA;AACnF,IAAA,MAAM,cAAA,EAAgB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,gBAAA,CAAiB,SAAS,CAAA;AACjE,IAAA,MAAM,mBAAA,EACJ,cAAA,GAAkB,SAAA,CAAU,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,EAAA,GAAQ,GAAA,CAAI,UAAA,CAAW,GAAG,CAAC,EAAA,GAAM,GAAA;AACjI,IAAA,MAAM,eAAA,EAAiB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,SAAA,EAAW,kBAAkB,CAAA;AACvF,IAAA,MAAM,YAAA,EAAc,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAAE,GAAA,CAAI,CAAC,UAAA,EAAA,GAAe;AACzE,MAAA,IAAI,KAAA,EAAO,UAAA;AACX,MAAA,GAAA,CAAI,KAAA,IAAS,SAAA,EAAW;AACtB,QAAA,KAAA,EAAO,OAAA;AAAA,MACT;AAEA,MAAA,MAAM,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,SAAA,EAAW,UAAU,CAAA;AAEvE,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,WAAA,CAAY,sBAAA,CAAa,UAAA,CAAW,CAAA,EAAA;AAClB,QAAA;AACxB,QAAA;AACA,QAAA;AAC0C,QAAA;AACC,QAAA;AACJ,QAAA;AACzC,MAAA;AACD,IAAA;AAEM,IAAA;AAED,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AACmC,QAAA;AAE7C,MAAA;AAEA,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC6B,QAAA;AAEvC,MAAA;AAEA,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC8B,QAAA;AAExC,MAAA;AAEA,MAAA;AAC4C,QAAA;AACiC,QAAA;AAC3E,QAAA;AAC0C,QAAA;AAClC,QAAA;AACgC,QAAA;AAEpC,QAAA;AAC0C,UAAA;AAE3B,UAAA;AAEf,QAAA;AAEN,MAAA;AACM,MAAA;AACkC,QAAA;AACnB,QAAA;AACvB,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC6B,QAAA;AACK,QAAA;AAEtC,QAAA;AAC2C,UAAA;AAC5B,UAAA;AAEf,QAAA;AACN,MAAA;AAC0C,MAAA;AAC1C,MAAA;AACF,IAAA;AACF,EAAA;AAE0H,EAAA;AACnG,IAAA;AAEM,IAAA;AACmB,IAAA;AACV,MAAA;AAEN,MAAA;AACYA,QAAAA;AACvB,QAAA;AACW,UAAA;AACQ,UAAA;AAED,UAAA;AACb,YAAA;AACD,cAAA;AACf,YAAA;AACY,YAAA;AACC,cAAA;AACD,cAAA;AACR,gBAAA;AACkC,gBAAA;AACpC,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACD,MAAA;AAEM,MAAA;AACkB,IAAA;AAEO,IAAA;AACY,MAAA;AAEhB,MAAA;AACC,QAAA;AACN,QAAA;AAEgC,QAAA;AAEb,QAAA;AACG,UAAA;AAC/B,YAAA;AACL,YAAA;AACJ,UAAA;AAEkB,UAAA;AACK,YAAA;AACxB,UAAA;AACF,QAAA;AAEwC,QAAA;AAC9B,UAAA;AACL,UAAA;AACJ,QAAA;AAEqB,QAAA;AACK,UAAA;AAC3B,QAAA;AAE6B,wBAAA;AACQ,UAAA;AACvB,YAAA;AACV,YAAA;AACS,YAAA;AACC,cAAA;AACL,cAAA;AACL,YAAA;AACM,UAAA;AAEK,UAAA;AACK,YAAA;AAClB,UAAA;AACD,QAAA;AACF,MAAA;AAEM,MAAA;AACkC,IAAA;AAEL,IAAA;AAEG,IAAA;AAEZ,oBAAA;AACS,MAAA;AACxB,QAAA;AAC2B,QAAA;AACZ,QAAA;AACX,QAAA;AACR,MAAA;AAEK,MAAA;AACU,QAAA;AACvB,MAAA;AACD,IAAA;AAEuC,IAAA;AAGN,IAAA;AACpC,EAAA;AAAA;AAAA;AAAA;AAK2F,EAAA;AACjF,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKqF,EAAA;AAC3E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKsF,EAAA;AAC5E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAIuF,EAAA;AAC7E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKqF,EAAA;AAC3E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKwF,EAAA;AAC9E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKgG,EAAA;AACtF,IAAA;AACV,EAAA;AACF;AAvVE;AALK;AAcoE;AACxC,EAAA;AAGQ,EAAA;AACf,IAAA;AAC0B,MAAA;AAC9C,IAAA;AAE4B,IAAA;AACgB,MAAA;AAC5C,IAAA;AAEqB,IAAA;AACkB,MAAA;AACvC,IAAA;AAEuB,IAAA;AACQ,MAAA;AAC/B,IAAA;AAEO,IAAA;AACO,EAAA;AAEpB;AAAA;AAAA;AAAA;AAAA;AAM+D;AAC/B,EAAA;AAChB,EAAA;AAEyB,EAAA;AACL,IAAA;AACW,MAAA;AAC3C,IAAA;AAEwC,IAAA;AACO,MAAA;AAC/C,IAAA;AAEiC,IAAA;AACS,MAAA;AAC1C,IAAA;AAEmC,IAAA;AACD,MAAA;AAClC,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AAAA;AAAA;AAAA;AAAA;AAM+D;AAC/B,EAAA;AAChB,EAAA;AAEyB,EAAA;AACL,IAAA;AACW,MAAA;AAC3C,IAAA;AAEwC,IAAA;AACO,MAAA;AAC/C,IAAA;AAEiC,IAAA;AACS,MAAA;AAC1C,IAAA;AAEmC,IAAA;AACD,MAAA;AAClC,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AFsLiD;AACA;AGpTnD;AAAiB;AAEY;AACH;AAWG;AAEiC;AACtD,EAAA;AACsC,IAAA;AACtB,IAAA;AACF,IAAA;AACP,IAAA;AACG,IAAA;AACd,IAAA;AACA,IAAA;AACE,EAAA;AAEoC,EAAA;AAClC,IAAA;AAEwC,MAAA;AAE5B,MAAA;AACO,QAAA;AACrB,MAAA;AAEO,MAAA;AACG,IAAA;AACI,MAAA;AAEuB,MAAA;AACM,MAAA;AAC7C,IAAA;AACF,EAAA;AAEO,EAAA;AACC,IAAA;AACN,IAAA;AACU,IAAA;AACmB,MAAA;AAEpB,MAAA;AACiB,QAAA;AACY,UAAA;AAClC,QAAA;AACoC,QAAA;AACJ,UAAA;AACQ,UAAA;AACxC,QAAA;AACmB,QAAA;AACqB,UAAA;AACG,UAAA;AAClC,UAAA;AACT,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACsB,IAAA;AACE,MAAA;AACb,QAAA;AACT,MAAA;AAE4C,MAAA;AAEL,MAAA;AACzC,IAAA;AACwB,IAAA;AACoB,MAAA;AAC5C,IAAA;AACmB,IAAA;AACJ,MAAA;AACX,QAAA;AACF,MAAA;AAEyB,MAAA;AACV,QAAA;AACA,QAAA;AACE,QAAA;AACF,UAAA;AACF,UAAA;AACX,QAAA;AACD,MAAA;AACqB,MAAA;AACY,MAAA;AAE2C,MAAA;AACrC,QAAA;AACnB,UAAA;AACM,UAAA;AACxB,QAAA;AAEyC,QAAA;AAC3B,UAAA;AACY,UAAA;AACnB,UAAA;AACP,QAAA;AAEkB,QAAA;AACjB,UAAA;AACF,QAAA;AAEmB,QAAA;AACX,UAAA;AACI,UAAA;AACmB,UAAA;AACvB,UAAA;AACmB,YAAA;AACzB,UAAA;AACD,QAAA;AACH,MAAA;AAE6C,MAAA;AACnB,MAAA;AAC5B,IAAA;AACF,EAAA;AACD;AH4RkD;AACA;AI1ZnD;AAE+C;AA+DnC;AA3BiH;AACpH,EAAA;AACT;AASuI;AAC9H,EAAA;AACF,IAAA;AACmC,IAAA;AACN,MAAA;AACpB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAEI,MAAA;AACH,wBAAA;AAKF,MAAA;AAEY,MAAA;AACd,IAAA;AAC+C,IAAA;AAChB,MAAA;AACnB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAEI,MAAA;AACH,wBAAA;AAOF,MAAA;AAEY,MAAA;AACd,IAAA;AAC+C,IAAA;AACnB,MAAA;AAChB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAE2C,MAAA;AAEvC,MAAA;AACH,wBAAA;AAOF,MAAA;AAEY,MAAA;AACd,IAAA;AACF,EAAA;AACF;AJuVmD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","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'\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'\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 = { 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 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 resolvePath(baseName) {\n if (output === false) {\n return undefined\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n return camelCase(name, { isFile: type === 'file' })\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 const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const resolvedPath = this.resolvePath({\n baseName: `${name}.json`,\n pluginKey: this.plugin.key,\n })\n\n const resvoledFileName = this.resolveName({\n name: `${name}.json`,\n pluginKey: [pluginOasName],\n type: 'file',\n }) as `${string}.json`\n\n if (!resolvedPath) {\n return\n }\n\n await this.addFile({\n path: resolvedPath,\n baseName: resvoledFileName,\n source: JSON.stringify(schema),\n meta: {\n pluginKey: this.plugin.key,\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, type KubbNode } from '@kubb/react'\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"]}
package/dist/index.d.cts CHANGED
@@ -1,83 +1,14 @@
1
+ export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-D7rSlflc.cjs';
1
2
  import * as _kubb_core from '@kubb/core';
2
- import { FileMetaBase, ResolveNameParams, PluginFactoryOptions, Generator, PluginManager, Plugin } from '@kubb/core';
3
- import { O as Options, P as PluginOas, a as OperationSchema, R as Refs, b as Override } from './types-Dte3MA6H.cjs';
4
- export { A as API, E as Exclude, I as Include, f as OperationSchemas, g as OperationsByMethod, d as Ref, c as ResolvePathOptions, e as Resolver } from './types-Dte3MA6H.cjs';
5
- export { G as GetOperationGeneratorOptions, a as OperationGenerator, O as OperationMethodResult } from './OperationGenerator-CeM_9pxW.cjs';
6
- import * as KubbFile from '@kubb/fs/types';
7
- import { SchemaObject, Oas, contentType } from '@kubb/oas';
8
- import { S as Schema, a as SchemaKeywordMapper } from './SchemaMapper-CsBQ6eEx.cjs';
9
- export { b as SchemaKeyword, c as SchemaKeywordBase, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-CsBQ6eEx.cjs';
3
+ import { O as Options, P as PluginOas } from './types-C2RXaY0_.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-C2RXaY0_.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-BM1IGWqD.cjs';
6
+ import '@kubb/fs/types';
7
+ import '@kubb/oas';
8
+ import '@kubb/react';
10
9
  import '@kubb/oas/parser';
11
10
 
12
11
  declare const pluginOasName = "plugin-oas";
13
12
  declare const pluginOas: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
14
13
 
15
- type GetSchemaGeneratorOptions<T extends SchemaGenerator<any, any, any>> = T extends SchemaGenerator<infer Options, any, any> ? Options : never;
16
- type SchemaMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>;
17
- type Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {
18
- oas: Oas;
19
- pluginManager: PluginManager;
20
- /**
21
- * Current plugin
22
- */
23
- plugin: Plugin<TPluginOptions>;
24
- mode: KubbFile.Mode;
25
- include?: Array<'schemas' | 'responses' | 'requestBodies'>;
26
- override: Array<Override<TOptions>> | undefined;
27
- contentType?: contentType;
28
- output?: string;
29
- };
30
- type SchemaGeneratorOptions = {
31
- dateType: false | 'string' | 'stringOffset' | 'stringLocal' | 'date';
32
- unknownType: 'any' | 'unknown';
33
- enumType?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal';
34
- enumSuffix?: string;
35
- usedEnumNames?: Record<string, number>;
36
- mapper?: Record<string, string>;
37
- typed?: boolean;
38
- transformers: {
39
- /**
40
- * Customize the names based on the type that is provided by the plugin.
41
- */
42
- name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string;
43
- /**
44
- * Receive schema and name(propertName) and return FakerMeta array
45
- * TODO TODO add docs
46
- * @beta
47
- */
48
- schema?: (schemaProps: SchemaProps, defaultSchemas: Schema[]) => Schema[] | undefined;
49
- };
50
- };
51
- type SchemaGeneratorBuildOptions = Omit<OperationSchema, 'name' | 'schema'>;
52
- type SchemaProps = {
53
- schema?: SchemaObject;
54
- name?: string;
55
- parentName?: string;
56
- };
57
- declare abstract class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions, TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {
58
- #private;
59
- refs: Refs;
60
- /**
61
- * Creates a type node from a given schema.
62
- * Delegates to getBaseTypeFromSchema internally and
63
- * optionally adds a union with null.
64
- */
65
- parse(props: SchemaProps): Schema[];
66
- deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][];
67
- find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
68
- static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][];
69
- static findInObject<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
70
- static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
71
- build(): Promise<Array<KubbFile.File<TFileMeta>>>;
72
- /**
73
- * Schema
74
- */
75
- abstract schema(name: string, object: SchemaObject, options: TOptions): SchemaMethodResult<TFileMeta>;
76
- }
77
-
78
- /**
79
- * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead
80
- */
81
- declare const definePluginDefault: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
82
-
83
- export { type GetSchemaGeneratorOptions, OperationSchema, Options, Override, PluginOas, Refs, Schema, SchemaGenerator, type SchemaGeneratorBuildOptions, type SchemaGeneratorOptions, SchemaKeywordMapper, type SchemaMethodResult, definePluginDefault as default, pluginOas, pluginOasName };
14
+ export { Options, PluginOas, pluginOas, pluginOasName };
package/dist/index.d.ts CHANGED
@@ -1,83 +1,14 @@
1
+ export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-vw0Zf-Mi.js';
1
2
  import * as _kubb_core from '@kubb/core';
2
- import { FileMetaBase, ResolveNameParams, PluginFactoryOptions, Generator, PluginManager, Plugin } from '@kubb/core';
3
- import { O as Options, P as PluginOas, a as OperationSchema, R as Refs, b as Override } from './types-Dte3MA6H.js';
4
- export { A as API, E as Exclude, I as Include, f as OperationSchemas, g as OperationsByMethod, d as Ref, c as ResolvePathOptions, e as Resolver } from './types-Dte3MA6H.js';
5
- export { G as GetOperationGeneratorOptions, a as OperationGenerator, O as OperationMethodResult } from './OperationGenerator-DhUhvRJE.js';
6
- import * as KubbFile from '@kubb/fs/types';
7
- import { SchemaObject, Oas, contentType } from '@kubb/oas';
8
- import { S as Schema, a as SchemaKeywordMapper } from './SchemaMapper-CsBQ6eEx.js';
9
- export { b as SchemaKeyword, c as SchemaKeywordBase, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-CsBQ6eEx.js';
3
+ import { O as Options, P as PluginOas } from './types-C2RXaY0_.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-C2RXaY0_.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-BM1IGWqD.js';
6
+ import '@kubb/fs/types';
7
+ import '@kubb/oas';
8
+ import '@kubb/react';
10
9
  import '@kubb/oas/parser';
11
10
 
12
11
  declare const pluginOasName = "plugin-oas";
13
12
  declare const pluginOas: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
14
13
 
15
- type GetSchemaGeneratorOptions<T extends SchemaGenerator<any, any, any>> = T extends SchemaGenerator<infer Options, any, any> ? Options : never;
16
- type SchemaMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>;
17
- type Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {
18
- oas: Oas;
19
- pluginManager: PluginManager;
20
- /**
21
- * Current plugin
22
- */
23
- plugin: Plugin<TPluginOptions>;
24
- mode: KubbFile.Mode;
25
- include?: Array<'schemas' | 'responses' | 'requestBodies'>;
26
- override: Array<Override<TOptions>> | undefined;
27
- contentType?: contentType;
28
- output?: string;
29
- };
30
- type SchemaGeneratorOptions = {
31
- dateType: false | 'string' | 'stringOffset' | 'stringLocal' | 'date';
32
- unknownType: 'any' | 'unknown';
33
- enumType?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal';
34
- enumSuffix?: string;
35
- usedEnumNames?: Record<string, number>;
36
- mapper?: Record<string, string>;
37
- typed?: boolean;
38
- transformers: {
39
- /**
40
- * Customize the names based on the type that is provided by the plugin.
41
- */
42
- name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string;
43
- /**
44
- * Receive schema and name(propertName) and return FakerMeta array
45
- * TODO TODO add docs
46
- * @beta
47
- */
48
- schema?: (schemaProps: SchemaProps, defaultSchemas: Schema[]) => Schema[] | undefined;
49
- };
50
- };
51
- type SchemaGeneratorBuildOptions = Omit<OperationSchema, 'name' | 'schema'>;
52
- type SchemaProps = {
53
- schema?: SchemaObject;
54
- name?: string;
55
- parentName?: string;
56
- };
57
- declare abstract class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions, TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {
58
- #private;
59
- refs: Refs;
60
- /**
61
- * Creates a type node from a given schema.
62
- * Delegates to getBaseTypeFromSchema internally and
63
- * optionally adds a union with null.
64
- */
65
- parse(props: SchemaProps): Schema[];
66
- deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][];
67
- find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
68
- static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][];
69
- static findInObject<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
70
- static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
71
- build(): Promise<Array<KubbFile.File<TFileMeta>>>;
72
- /**
73
- * Schema
74
- */
75
- abstract schema(name: string, object: SchemaObject, options: TOptions): SchemaMethodResult<TFileMeta>;
76
- }
77
-
78
- /**
79
- * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead
80
- */
81
- declare const definePluginDefault: (options?: Options | undefined) => _kubb_core.UserPluginWithLifeCycle<PluginOas>;
82
-
83
- export { type GetSchemaGeneratorOptions, OperationSchema, Options, Override, PluginOas, Refs, Schema, SchemaGenerator, type SchemaGeneratorBuildOptions, type SchemaGeneratorOptions, SchemaKeywordMapper, type SchemaMethodResult, definePluginDefault as default, pluginOas, pluginOasName };
14
+ export { Options, PluginOas, pluginOas, pluginOasName };