feat(api-extractor): support multiple entrypoints (#10829)

* feat(api-extractor): support multiple entrypoints

* chore: initial support in generateSplitDocumentation

* chore: bring in line with upstream

* refactor: multiple entrypoints in scripts

* fix: split docs

* feat: website

* fix: docs failing on next

* fix: don't include dtypes for now

* refactor: don't fetch entrypoint if there is none

---------

Co-authored-by: iCrawl <buechler.noel@outlook.com>
This commit is contained in:
Qjuh
2025-05-12 23:48:41 +02:00
committed by GitHub
parent 4f5e5c7c14
commit b3db92edfb
93 changed files with 2330 additions and 1956 deletions

View File

@@ -6,6 +6,7 @@ import { InternalError } from '@rushstack/node-core-library';
import { ApiItemContainerMixin } from '../mixins/ApiItemContainerMixin.js';
import { ApiParameterListMixin } from '../mixins/ApiParameterListMixin.js';
import type { Constructor, PropertiesOf } from '../mixins/Mixin.js';
import type { ApiEntryPoint } from '../model/ApiEntryPoint.js';
import type { ApiModel } from '../model/ApiModel.js';
import type { ApiPackage } from '../model/ApiPackage.js';
import type { DocgenJson } from '../model/Deserializer';
@@ -301,6 +302,20 @@ export class ApiItem {
return reversedParts.reverse().join('');
}
/**
* If this item is an ApiEntryPoint or has an ApiEntryPoint as one of its parents, then that object is returned.
* Otherwise undefined is returned.
*/
public getAssociatedEntryPoint(): ApiEntryPoint | undefined {
for (let current: ApiItem | undefined = this; current !== undefined; current = current.parent) {
if (current.kind === ApiItemKind.EntryPoint) {
return current as ApiEntryPoint;
}
}
return undefined;
}
/**
* If this item is an ApiPackage or has an ApiPackage as one of its parents, then that object is returned.
* Otherwise undefined is returned.

View File

@@ -73,7 +73,8 @@ export class ModelReferenceResolver {
}
}
const importPath: string = declarationReference.importPath ?? '';
// Remove the leading / in the import path
const importPath: string = (declarationReference.importPath || '').replace(/^\//, '');
const foundEntryPoints: readonly ApiEntryPoint[] = apiPackage.findEntryPointsByPath(importPath);
if (foundEntryPoints.length < 1) {