feat: reintroduce outline navigation

This commit is contained in:
iCrawl
2023-11-13 18:03:23 +01:00
parent 7c935dc84b
commit bc8f83368a
21 changed files with 130 additions and 82 deletions

View File

@@ -2,9 +2,8 @@ import type { ApiModel, ApiPackage } from '@discordjs/api-extractor-model';
import { ApiItem } from '@discordjs/api-extractor-model';
import { TSDocConfiguration } from '@microsoft/tsdoc';
import { TSDocConfigFile } from '@microsoft/tsdoc-config';
import { cache } from 'react';
export const addPackageToModel = cache((model: ApiModel, data: any) => {
export const addPackageToModel = (model: ApiModel, data: any) => {
let apiPackage: ApiPackage;
if (data.metadata) {
const tsdocConfiguration = new TSDocConfiguration();
@@ -24,4 +23,4 @@ export const addPackageToModel = cache((model: ApiModel, data: any) => {
model.addMember(apiPackage);
return model;
});
};

View File

@@ -1,11 +1,10 @@
import { ApiModel, ApiFunction } from '@discordjs/api-extractor-model';
import { cache } from 'react';
import { fetchModelJSON } from '~/app/docAPI';
import { addPackageToModel } from './addPackageToModel';
import { OVERLOAD_SEPARATOR, PACKAGES } from './constants';
import { findMember, findMemberByKey } from './model';
export const fetchMember = cache(async (packageName: string, branchName: string, item?: string) => {
export const fetchMember = async (packageName: string, branchName: string, item?: string) => {
if (!PACKAGES.includes(packageName)) {
return null;
}
@@ -33,4 +32,4 @@ export const fetchMember = cache(async (packageName: string, branchName: string,
}
return memberName && containerKey ? findMemberByKey(model, packageName, containerKey) ?? null : null;
});
};

View File

@@ -6,21 +6,20 @@ import type {
Excerpt,
} from '@discordjs/api-extractor-model';
import type { DocSection } from '@microsoft/tsdoc';
import { cache } from 'react';
export const findMemberByKey = cache((model: ApiModel, packageName: string, containerKey: string) => {
export const findMemberByKey = (model: ApiModel, packageName: string, containerKey: string) => {
const pkg = model.tryGetPackageByName(packageName === 'discord.js' ? packageName : `@discordjs/${packageName}`)!;
return (pkg.members[0] as ApiEntryPoint).tryGetMemberByKey(containerKey);
});
};
export const findMember = cache((model: ApiModel, packageName: string, memberName: string | undefined) => {
export const findMember = (model: ApiModel, packageName: string, memberName: string | undefined) => {
if (!memberName) {
return undefined;
}
const pkg = model.tryGetPackageByName(packageName === 'discord.js' ? packageName : `@discordjs/${packageName}`)!;
return pkg.entryPoints[0]?.findMembersByName(memberName)[0];
});
};
interface ResolvedParameter {
description?: DocSection | undefined;