From 3d1c884926587d2003a27d4eeab37ca21776f16e Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Tue, 21 Nov 2023 10:06:13 +0100 Subject: [PATCH] refactor(website): remove unneccessary addPackageToModel function (#9983) * types: fix links in @deprecated tags * Merge branch 'main' into fix/deprecated-links-d.ts * fix: searchIndices * refactor: apply review suggestions * refactor: remove addPackageToModel function * fix: event links in search index * fix: wrong overload condition --- .../[package]/[version]/[item]/page.tsx | 9 +++---- .../packages/[package]/[version]/layout.tsx | 6 ++--- apps/website/src/util/addPackageToModel.ts | 6 ----- apps/website/src/util/fetchMember.ts | 5 ++-- packages/api-extractor-utils/src/parse.ts | 24 ++++++++++++------- packages/scripts/src/generateIndex.ts | 8 ++----- 6 files changed, 28 insertions(+), 30 deletions(-) delete mode 100644 apps/website/src/util/addPackageToModel.ts diff --git a/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx b/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx index baea8fabf422..ffa73ca54d57 100644 --- a/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx +++ b/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx @@ -13,7 +13,7 @@ import type { ApiVariable, ApiFunction, } from '@discordjs/api-extractor-model'; -import { ApiItemKind, ApiModel } from '@discordjs/api-extractor-model'; +import { ApiItemKind, ApiModel, ApiPackage } from '@discordjs/api-extractor-model'; import { tryResolveSummaryText } from '@discordjs/scripts'; import type { Metadata } from 'next'; import { notFound } from 'next/navigation'; @@ -24,7 +24,6 @@ import { TypeAlias } from '~/components/model/TypeAlias'; import { Variable } from '~/components/model/Variable'; import { Enum } from '~/components/model/enum/Enum'; import { Function } from '~/components/model/function/Function'; -import { addPackageToModel } from '~/util/addPackageToModel'; import { OVERLOAD_SEPARATOR } from '~/util/constants'; import { fetchMember } from '~/util/fetchMember'; import { findMember } from '~/util/model'; @@ -44,7 +43,8 @@ async function fetchHeadMember({ package: packageName, version, item }: ItemRout return undefined; } - const model = addPackageToModel(new ApiModel(), modelJSON); + const model = new ApiModel(); + model.addMember(ApiPackage.loadFromJson(modelJSON)); const pkg = model.tryGetPackageByName(packageName); const entry = pkg?.entryPoints[0]; @@ -129,7 +129,8 @@ export async function generateStaticParams({ params: { package: packageName, ver return []; } - const model = addPackageToModel(new ApiModel(), modelJSON); + const model = new ApiModel(); + model.addMember(ApiPackage.loadFromJson(modelJSON)); const pkg = model.tryGetPackageByName(packageName); const entry = pkg?.entryPoints[0]; diff --git a/apps/website/src/app/docs/packages/[package]/[version]/layout.tsx b/apps/website/src/app/docs/packages/[package]/[version]/layout.tsx index 29270d30e7c7..18655a9dd996 100644 --- a/apps/website/src/app/docs/packages/[package]/[version]/layout.tsx +++ b/apps/website/src/app/docs/packages/[package]/[version]/layout.tsx @@ -1,5 +1,5 @@ import type { ApiFunction, ApiItem } from '@discordjs/api-extractor-model'; -import { ApiModel } from '@discordjs/api-extractor-model'; +import { ApiModel, ApiPackage } from '@discordjs/api-extractor-model'; import dynamic from 'next/dynamic'; import { notFound } from 'next/navigation'; import type { PropsWithChildren } from 'react'; @@ -9,7 +9,6 @@ import { Nav } from '~/components/Nav'; import { Outline } from '~/components/Outline'; import type { SidebarSectionItemData } from '~/components/Sidebar'; import { resolveItemURI } from '~/components/documentation/util'; -import { addPackageToModel } from '~/util/addPackageToModel'; import { N_RECENT_VERSIONS, PACKAGES } from '~/util/constants'; import { Providers } from './providers'; @@ -57,7 +56,8 @@ export default async function PackageLayout({ children, params }: PropsWithChild notFound(); } - const model = addPackageToModel(new ApiModel(), modelJSON); + const model = new ApiModel(); + model.addMember(ApiPackage.loadFromJson(modelJSON)); const pkg = model.tryGetPackageByName(params.package); diff --git a/apps/website/src/util/addPackageToModel.ts b/apps/website/src/util/addPackageToModel.ts deleted file mode 100644 index c84d09f6cdb0..000000000000 --- a/apps/website/src/util/addPackageToModel.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type ApiModel, ApiPackage } from '@discordjs/api-extractor-model'; - -export const addPackageToModel = (model: ApiModel, data: any) => { - model.addMember(ApiPackage.loadFromJson(data)); - return model; -}; diff --git a/apps/website/src/util/fetchMember.ts b/apps/website/src/util/fetchMember.ts index 408a937e3ef1..2152e8d365b5 100644 --- a/apps/website/src/util/fetchMember.ts +++ b/apps/website/src/util/fetchMember.ts @@ -1,6 +1,5 @@ -import { ApiModel, ApiFunction } from '@discordjs/api-extractor-model'; +import { ApiModel, ApiFunction, ApiPackage } from '@discordjs/api-extractor-model'; import { fetchModelJSON } from '~/app/docAPI'; -import { addPackageToModel } from './addPackageToModel'; import { OVERLOAD_SEPARATOR, PACKAGES } from './constants'; import { findMember, findMemberByKey } from './model'; @@ -21,7 +20,7 @@ export const fetchMember = async (packageName: string, branchName: string, item? return null; } - addPackageToModel(model, modelJSON); + model.addMember(ApiPackage.loadFromJson(modelJSON)); const [memberName, overloadIndex] = decodeURIComponent(item).split(OVERLOAD_SEPARATOR); diff --git a/packages/api-extractor-utils/src/parse.ts b/packages/api-extractor-utils/src/parse.ts index 1aae10346f3e..c53990cb91ed 100644 --- a/packages/api-extractor-utils/src/parse.ts +++ b/packages/api-extractor-utils/src/parse.ts @@ -11,6 +11,8 @@ import { type Parameter, type ApiFunction, ApiDeclaredItem, + type ApiMethod, + type ApiMethodSignature, } from '@discordjs/api-extractor-model'; import type { DocNode, DocParagraph, DocPlainText } from '@microsoft/tsdoc'; import { type Meaning, ModuleSource } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference.js'; @@ -23,6 +25,10 @@ export function findPackage(model: ApiModel, name: string): ApiPackage | undefin | undefined; } +function hasOverloadIndex(item: ApiItem): item is ApiFunction | ApiMethod | ApiMethodSignature { + return 'overloadIndex' in item; +} + export function generatePath(items: readonly ApiItem[], version: string) { let path = '/docs/packages'; @@ -36,17 +42,19 @@ export function generatePath(items: readonly ApiItem[], version: string) { path += `/${item.displayName}`; break; case ApiItemKind.Function: - // eslint-disable-next-line no-case-declarations - const functionItem = item as ApiFunction; - path += `/${functionItem.displayName}${ - functionItem.overloadIndex && functionItem.overloadIndex > 1 ? `:${functionItem.overloadIndex}` : '' + path += `/${item.displayName}${ + hasOverloadIndex(item) && item.overloadIndex > 1 ? `:${item.overloadIndex}` : '' }:${item.kind}`; break; - case ApiItemKind.Property: case ApiItemKind.Method: case ApiItemKind.MethodSignature: + path += `#${item.displayName}${ + hasOverloadIndex(item) && item.overloadIndex > 1 ? `:${item.overloadIndex}` : '' + }`; + break; + case ApiItemKind.Property: case ApiItemKind.PropertySignature: - // TODO: Take overloads into account + case ApiItemKind.Event: path += `#${item.displayName}`; break; default: @@ -55,8 +63,8 @@ export function generatePath(items: readonly ApiItem[], version: string) { } return path.includes('@discordjs/') - ? path.replace(/@discordjs\/(.*)\/(.*)?/, `$1/${version}/$2`) - : path.replace(/(.*)\/(.*)?/, `$1/${version}/$2`); + ? path.replace(/@discordjs\/(?.*)\/(?.*)?/, `$/${version}/$`) + : path.replace(/(?.*)\/(?.*)?/, `$/${version}/$`); } export function resolveDocComment(item: ApiDeclaredItem) { diff --git a/packages/scripts/src/generateIndex.ts b/packages/scripts/src/generateIndex.ts index d502d398e4fb..7466587c84f2 100644 --- a/packages/scripts/src/generateIndex.ts +++ b/packages/scripts/src/generateIndex.ts @@ -37,11 +37,6 @@ export const PACKAGES = [ ]; let idx = 0; -export function addPackageToModel(model: ApiModel, data: any) { - model.addMember(ApiPackage.loadFromJson(data)); - return model; -} - /** * Attempts to resolve the summary text for the given item. * @@ -164,7 +159,8 @@ export async function generateAllIndices({ idx = 0; const data = await fetchPackageVersionDocs(pkg, version); - const model = addPackageToModel(new ApiModel(), data); + const model = new ApiModel(); + model.addMember(ApiPackage.loadFromJson(data)); const members = visitNodes(model.tryGetPackageByName(pkg)!.entryPoints[0]!, version); const sanitizePackageName = pkg.replaceAll('.', '-');