@anshsinghsonkhia/pumki-docgen
Version:
Private CLI to generate MDX docs from TSX components for pumki-ui
17 lines (16 loc) • 680 B
JavaScript
import { Project } from "ts-morph";
export function parseProps(filePath) {
const project = new Project();
project.addSourceFileAtPath(filePath);
const sourceFile = project.getSourceFileOrThrow(filePath);
// Find interface ending with "Props"
const interfaceDec = sourceFile.getInterfaces().find((i) => i.getName().endsWith("Props"));
if (!interfaceDec)
return [];
return interfaceDec.getProperties().map((prop) => ({
name: prop.getName(),
type: prop.getType().getText(),
isOptional: prop.hasQuestionToken(),
defaultValue: undefined // TODO: extract from initializer (if default assigned in component)
}));
}