docgen: update paths and add filtering based on root paths
This commit is contained in:
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user