docgen: update paths and add filtering based on root paths

This commit is contained in:
Patrik Oldsberg
2020-07-15 11:45:38 +02:00
parent 5a05761afe
commit ab450c3ad7
2 changed files with 15 additions and 9 deletions
+10 -9
View File
@@ -43,14 +43,14 @@ function loadOptions(path: string): ts.CompilerOptions {
async function main() {
const rootDir = resolve(__dirname, '..');
const srcDir = resolve(rootDir, 'src');
const entrypoint = resolve(srcDir, 'index.js');
const apiRefsDir = resolve(rootDir, 'docgen', 'build', 'api-refs');
const srcDir = resolve(rootDir, '..', 'core-api', 'src');
const entrypoint = resolve(srcDir, 'index.ts');
const apiRefsDir = resolve(rootDir, 'dist');
const mkdocsYaml = resolve(apiRefsDir, 'mkdocs.yml');
process.chdir(rootDir);
const options = loadOptions('../tsconfig.json');
const options = loadOptions('../../../tsconfig.json');
delete options.moduleResolution;
options.removeComments = false;
@@ -60,11 +60,12 @@ async function main() {
const typeLocator = TypeLocator.fromProgram(program);
const { apis } = typeLocator.findExportedInstances({
apis: typeLocator.getExportedType(
resolve(srcDir, 'core', 'api', 'ApiRef.ts'),
),
});
const { apis } = typeLocator.findExportedInstances(
{
apis: typeLocator.getExportedType(entrypoint, 'createApiRef'),
},
[srcDir],
);
const apiDocGenerator = ApiDocGenerator.fromProgram(program, rootDir, srcDir);
@@ -54,6 +54,7 @@ export default class TypeLocator {
findExportedInstances<T extends string>(
typeLookupTable: { [key in T]: ts.Type },
roots: string[],
): { [key in T]: ExportedInstance[] } {
const docMap = new Map<ts.Type, ExportedInstance[]>();
for (const type of Object.values<ts.Type>(typeLookupTable)) {
@@ -61,6 +62,10 @@ export default class TypeLocator {
}
this.program.getSourceFiles().forEach(source => {
const inRoot = roots.some(root => source.fileName.startsWith(root));
if (!inRoot) {
return;
}
ts.forEachChild(source, node => {
const decl = this.getExportedConstructorDeclaration(node);
if (!decl || !docMap.has(decl.constructorType)) {