From 01e5891fa6ac53a34b64cc7c0e01cb958e74fb70 Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Sun, 18 May 2025 19:42:12 +0200 Subject: [PATCH 1/2] fix(api-extractor): include entrypoint in links --- .../generators/DeclarationReferenceGenerator.ts | 11 +++++++++++ packages/scripts/src/generateSplitDocumentation.ts | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts b/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts index a598971cda77..513252aef4e0 100644 --- a/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts +++ b/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. +import { dirname } from 'node:path'; import { Navigation, Meaning } from '@discordjs/api-extractor-model'; import { DeclarationReference, @@ -348,6 +349,16 @@ export class DeclarationReferenceGenerator { ); if (packageJson?.name) { + if (packageJson?.exports && !Array.isArray(packageJson.exports) && typeof packageJson.exports !== 'string') { + const entryPoint = Object.keys(packageJson.exports).find((path) => + dirname(sourceFile.fileName).endsWith(path.slice(1)), + ); + + if (entryPoint && packageJson.exports[entryPoint]) { + return `${packageJson.name}${entryPoint.slice(1)}`; + } + } + return packageJson.name; } diff --git a/packages/scripts/src/generateSplitDocumentation.ts b/packages/scripts/src/generateSplitDocumentation.ts index 42e705ed3a9d..ffdf1e65cd77 100644 --- a/packages/scripts/src/generateSplitDocumentation.ts +++ b/packages/scripts/src/generateSplitDocumentation.ts @@ -46,7 +46,7 @@ import type { DocFencedCode, DocComment, } from '@microsoft/tsdoc'; -import type { DeclarationReference } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference.js'; +import type { DeclarationReference, ModuleSource } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference.js'; import { BuiltinDocumentationLinks } from './builtinDocumentationLinks.js'; import { PACKAGES, fetchVersionDocs, fetchVersions } from './shared.js'; @@ -147,6 +147,9 @@ function resolveCanonicalReference( containerKey: `|${ canonicalReference.symbol.meaning }|${canonicalReference.symbol.componentPath.component.toString()}`, + getAssociatedEntryPoint() { + return canonicalReference.source as ModuleSource; + }, }, // eslint-disable-next-line unicorn/better-regex version: apiPackage?.dependencies?.[canonicalReference.source.packageName]?.replace(/[~^]/, ''), @@ -167,6 +170,9 @@ function resolveCanonicalReference( members: canonicalReference.memberReferences .slice(1) .map((member) => ({ kind: member.kind, displayName: member.memberIdentifier!.identifier! })), + getAssociatedEntryPoint() { + return canonicalReference; + }, }, // eslint-disable-next-line unicorn/better-regex version: apiPackage?.dependencies?.[canonicalReference.packageName ?? '']?.replace(/[~^]/, ''), @@ -204,10 +210,14 @@ export function hasEvents(item: ApiItemContainerMixin) { return resolveMembers(item, memberPredicate).some(({ item: member }) => member.kind === ApiItemKind.Event); } +interface ApiEntryPointLike { + importPath: string | undefined; +} + interface ApiItemLike { containerKey?: string; displayName: string; - getAssociatedEntryPoint?(): ApiEntryPoint | undefined; + getAssociatedEntryPoint?(): ApiEntryPointLike | undefined; kind: string; members?: readonly ApiItemLike[]; parent?: ApiItemLike | undefined; From 5c2555ca2b2d08629d1ebba6bf7fecc9b6bc56bc Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Sun, 18 May 2025 20:13:18 +0200 Subject: [PATCH 2/2] chore: prettier --- .../src/generators/DeclarationReferenceGenerator.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts b/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts index 513252aef4e0..399ef56975fa 100644 --- a/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts +++ b/packages/api-extractor/src/generators/DeclarationReferenceGenerator.ts @@ -350,14 +350,14 @@ export class DeclarationReferenceGenerator { if (packageJson?.name) { if (packageJson?.exports && !Array.isArray(packageJson.exports) && typeof packageJson.exports !== 'string') { - const entryPoint = Object.keys(packageJson.exports).find((path) => - dirname(sourceFile.fileName).endsWith(path.slice(1)), - ); + const entryPoint = Object.keys(packageJson.exports).find((path) => + dirname(sourceFile.fileName).endsWith(path.slice(1)), + ); - if (entryPoint && packageJson.exports[entryPoint]) { - return `${packageJson.name}${entryPoint.slice(1)}`; - } + if (entryPoint && packageJson.exports[entryPoint]) { + return `${packageJson.name}${entryPoint.slice(1)}`; } + } return packageJson.name; }