{"version":3,"file":"hooks.cjs","names":[],"sources":["../src/hooks/useOas.ts","../src/hooks/useOperationManager.ts","../src/hooks/useRootNode.ts","../src/hooks/useSchemaManager.ts"],"sourcesContent":["import type { Oas } from '@kubb/oas'\n\nimport { useFabric } from '@kubb/react-fabric'\n\nexport function useOas(): Oas {\n  const { meta } = useFabric<{ oas: Oas }>()\n\n  return meta.oas\n}\n","import type { FileMetaBase, Plugin, PluginFactoryOptions, ResolveNameParams } from '@kubb/core'\nimport { usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { Operation, Operation as OperationType } from '@kubb/oas'\nimport type { OperationGenerator } from '../OperationGenerator.ts'\nimport type { OperationSchemas } from '../types.ts'\n\ntype FileMeta = FileMetaBase & {\n  pluginKey: Plugin['key']\n  name: string\n  group?: {\n    tag?: string\n    path?: string\n  }\n}\n\nexport type SchemaNames = {\n  request: string | undefined\n  parameters: {\n    path: string | undefined\n    query: string | undefined\n    header: string | undefined\n  }\n  responses: { default?: string } & Record<number | string, string>\n  errors: Record<number | string, string>\n}\n\ntype UseOperationManagerResult = {\n  getName: (\n    operation: OperationType,\n    params: {\n      prefix?: string\n      suffix?: string\n      pluginKey?: Plugin['key']\n      type: ResolveNameParams['type']\n    },\n  ) => string\n  getFile: (\n    operation: OperationType,\n    params?: {\n      prefix?: string\n      suffix?: string\n      pluginKey?: Plugin['key']\n      extname?: KubbFile.Extname\n      group?: {\n        tag?: string\n        path?: string\n      }\n    },\n  ) => KubbFile.File<FileMeta>\n  groupSchemasByName: (\n    operation: OperationType,\n    params: {\n      pluginKey?: Plugin['key']\n      type: ResolveNameParams['type']\n    },\n  ) => SchemaNames\n  getSchemas: (operation: Operation, params?: { pluginKey?: Plugin['key']; type?: ResolveNameParams['type'] }) => OperationSchemas\n  getGroup: (operation: Operation) => FileMeta['group'] | undefined\n}\n\n/**\n * `useOperationManager` returns helper functions to get the operation file and operation name.\n */\nexport function useOperationManager<TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions>(\n  generator: Omit<OperationGenerator<TPluginOptions>, 'build'>,\n): UseOperationManagerResult {\n  const plugin = usePlugin()\n  const pluginManager = usePluginManager()\n\n  const getName: UseOperationManagerResult['getName'] = (operation, { prefix = '', suffix = '', pluginKey = plugin.key, type }) => {\n    return pluginManager.resolveName({\n      name: `${prefix} ${operation.getOperationId()} ${suffix}`,\n      pluginKey,\n      type,\n    })\n  }\n\n  const getGroup: UseOperationManagerResult['getGroup'] = (operation) => {\n    return {\n      tag: operation.getTags().at(0)?.name,\n      path: operation.path,\n    }\n  }\n\n  const getSchemas: UseOperationManagerResult['getSchemas'] = (operation, params) => {\n    if (!generator) {\n      throw new Error(`useOperationManager: 'generator' parameter is required but was not provided`)\n    }\n\n    return generator.getSchemas(operation, {\n      resolveName: (name) =>\n        pluginManager.resolveName({\n          name,\n          pluginKey: params?.pluginKey,\n          type: params?.type,\n        }),\n    })\n  }\n\n  const getFile: UseOperationManagerResult['getFile'] = (operation, { prefix, suffix, pluginKey = plugin.key, extname = '.ts' } = {}) => {\n    const name = getName(operation, { type: 'file', pluginKey, prefix, suffix })\n    const group = getGroup(operation)\n\n    const file = pluginManager.getFile({\n      name,\n      extname,\n      pluginKey,\n      options: { type: 'file', pluginKey, group },\n    })\n\n    return {\n      ...file,\n      meta: {\n        ...file.meta,\n        name,\n        pluginKey,\n        group,\n      },\n    }\n  }\n\n  const groupSchemasByName: UseOperationManagerResult['groupSchemasByName'] = (operation, { pluginKey = plugin.key, type }) => {\n    if (!generator) {\n      throw new Error(`useOperationManager: 'generator' parameter is required but was not provided`)\n    }\n\n    const schemas = generator.getSchemas(operation)\n\n    const errors = (schemas.errors || []).reduce(\n      (prev, acc) => {\n        if (!acc.statusCode) {\n          return prev\n        }\n\n        prev[acc.statusCode] = pluginManager.resolveName({\n          name: acc.name,\n          pluginKey,\n          type,\n        })\n\n        return prev\n      },\n      {} as Record<number, string>,\n    )\n\n    const responses = (schemas.responses || []).reduce(\n      (prev, acc) => {\n        if (!acc.statusCode) {\n          return prev\n        }\n\n        prev[acc.statusCode] = pluginManager.resolveName({\n          name: acc.name,\n          pluginKey,\n          type,\n        })\n\n        return prev\n      },\n      {} as Record<number, string>,\n    )\n\n    return {\n      request: schemas.request?.name\n        ? pluginManager.resolveName({\n            name: schemas.request.name,\n            pluginKey,\n            type,\n          })\n        : undefined,\n      parameters: {\n        path: schemas.pathParams?.name\n          ? pluginManager.resolveName({\n              name: schemas.pathParams.name,\n              pluginKey,\n              type,\n            })\n          : undefined,\n        query: schemas.queryParams?.name\n          ? pluginManager.resolveName({\n              name: schemas.queryParams.name,\n              pluginKey,\n              type,\n            })\n          : undefined,\n        header: schemas.headerParams?.name\n          ? pluginManager.resolveName({\n              name: schemas.headerParams.name,\n              pluginKey,\n              type,\n            })\n          : undefined,\n      },\n      responses: {\n        ...responses,\n        ['default']: pluginManager.resolveName({\n          name: schemas.response.name,\n          pluginKey,\n          type,\n        }),\n        ...errors,\n      },\n      errors,\n    }\n  }\n\n  return {\n    getName,\n    getFile,\n    getSchemas,\n    groupSchemasByName,\n    getGroup,\n  }\n}\n","import type { RootNode } from '@kubb/ast/types'\nimport { useFabric } from '@kubb/react-fabric'\n\n/**\n * Returns the universal `@kubb/ast` `RootNode` produced by the configured adapter.\n *\n * Use this hook inside generator components when you want to consume the\n * format-agnostic AST directly instead of going through `useOas()`.\n *\n * Returns `undefined` when no adapter was configured (legacy OAS-only mode).\n *\n * @example\n * ```tsx\n * function MyComponent() {\n *   const rootNode = useRootNode()\n *   if (!rootNode) return null\n *   return <>{rootNode.schemas.map(s => <Schema key={s.name} node={s} />)}</>\n * }\n * ```\n */\nexport function useRootNode(): RootNode | undefined {\n  const { meta } = useFabric<{ pluginManager?: { rootNode?: RootNode } }>()\n\n  return meta.pluginManager?.rootNode\n}\n","import type { FileMetaBase, Plugin, ResolveNameParams } from '@kubb/core'\nimport { usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport type { KubbFile } from '@kubb/fabric-core/types'\n\ntype FileMeta = FileMetaBase & {\n  pluginKey: Plugin['key']\n  name: string\n  group?: {\n    tag?: string\n    path?: string\n  }\n}\n\ntype UseSchemaManagerResult = {\n  getName: (name: string, params: { pluginKey?: Plugin['key']; type: ResolveNameParams['type'] }) => string\n  getFile: (\n    name: string,\n    params?: {\n      pluginKey?: Plugin['key']\n      mode?: KubbFile.Mode\n      extname?: KubbFile.Extname\n      group?: {\n        tag?: string\n        path?: string\n      }\n    },\n  ) => KubbFile.File<FileMeta>\n}\n\n/**\n * `useSchemaManager` returns helper functions to get the schema file and schema name.\n */\nexport function useSchemaManager(): UseSchemaManagerResult {\n  const plugin = usePlugin()\n  const pluginManager = usePluginManager()\n\n  const getName: UseSchemaManagerResult['getName'] = (name, { pluginKey = plugin.key, type }) => {\n    return pluginManager.resolveName({\n      name,\n      pluginKey,\n      type,\n    })\n  }\n\n  const getFile: UseSchemaManagerResult['getFile'] = (name, { mode = 'split', pluginKey = plugin.key, extname = '.ts', group } = {}) => {\n    const resolvedName = mode === 'single' ? '' : getName(name, { type: 'file', pluginKey })\n\n    const file = pluginManager.getFile({\n      name: resolvedName,\n      extname,\n      pluginKey,\n      options: { type: 'file', pluginKey, group },\n    })\n\n    return {\n      ...file,\n      meta: {\n        ...file.meta,\n        name: resolvedName,\n        pluginKey,\n      },\n    }\n  }\n\n  return {\n    getName,\n    getFile,\n  }\n}\n"],"mappings":"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"}