@kubb/plugin-oas
Version:
Generator swagger
37 lines (26 loc) • 1.04 kB
text/typescript
import { resolve } from 'node:path'
import { URLPath } from '@kubb/core/utils'
import { parse } from '@kubb/oas'
import type { Config } from '@kubb/core'
import { Oas, type OasTypes } from '@kubb/oas'
import yaml from '@stoplight/yaml'
export function parseFromConfig(config: Config, oasClass: typeof Oas = Oas): Promise<Oas> {
if ('data' in config.input) {
if (typeof config.input.data === 'object') {
const api: OasTypes.OASDocument = JSON.parse(JSON.stringify(config.input.data)) as OasTypes.OASDocument
return parse(api, oasClass)
}
try {
const api: string = yaml.parse(config.input.data as string) as string
return parse(api, oasClass)
} catch (e) {
/* empty */
}
const api: OasTypes.OASDocument = JSON.parse(JSON.stringify(config.input.data)) as OasTypes.OASDocument
return parse(api, oasClass)
}
if (new URLPath(config.input.path).isURL) {
return parse(config.input.path, oasClass)
}
return parse(resolve(config.root, config.input.path), oasClass)
}