import { Parser, File, Type, useApp } from '@kubb/react'
import { useOas } from '@kubb/plugin-oas/hooks'
import type { OasTypes } from '@kubb/oas'
import type { ReactNode } from 'react'
import type { FileMeta, PluginTs } from '../types.ts'
type TemplateProps = {
/**
* Name of the function
*/
name: string
typeName: string
api: OasTypes.OASDocument
}
function Template({ name, typeName, api }: TemplateProps): ReactNode {
return (
<>
{`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}
{`Infer`}
>
)
}
const defaultTemplates = { default: Template } as const
type Props = {
name: string
typeName: string
/**
* This will make it possible to override the default behaviour.
*/
Template?: React.ComponentType>
}
export function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {
const oas = useOas()
return
}
type FileProps = {
name: string
typeName: string
/**
* This will make it possible to override the default behaviour.
*/
templates?: typeof defaultTemplates
}
OasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {
const {
pluginManager,
plugin: { key: pluginKey },
} = useApp()
const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })
const Template = templates.default
return (
baseName={file.baseName} path={file.path} meta={file.meta}>
)
}
OasType.templates = defaultTemplates