UNPKG

@mintlify/prebuild

Version:

Helpful functions for Mintlify's prebuild step

43 lines (42 loc) 1.62 kB
import { validate } from '@mintlify/common'; import { readFile } from 'fs/promises'; import yaml from 'js-yaml'; import * as path from 'path'; import { getFileList } from '../fs/index.js'; import { getFileExtension } from '../utils.js'; import { addWarning } from './warnings.js'; export const getOpenApiFiles = async (contentDirectoryPath, { mintIgnore = [], disableOpenApi = false } = {}) => { if (disableOpenApi) return []; const allFiles = getFileList(contentDirectoryPath, contentDirectoryPath, mintIgnore); const openApiFiles = []; for await (const filename of allFiles) { const extension = getFileExtension(filename); if (extension !== 'json' && extension !== 'yaml' && extension !== 'yml') continue; const filePath = path.join(contentDirectoryPath, filename); const str = await readFile(filePath, 'utf8'); const obj = yaml.load(str); if (!obj || typeof obj !== 'object') continue; if (!Object.keys(obj).includes('openapi')) continue; try { const { schema: openApiDocument } = await validate(obj); if (openApiDocument) { openApiFiles.push({ filename: path.parse(filename).name, spec: obj, originalFileLocation: filename, }); } } catch (error) { addWarning({ type: 'openapi', message: `Error validating OpenAPI file ${filename}: ${error}`, }); } } return openApiFiles; };