mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 17:13:31 +01:00
refactor(website): extract layouts and use more server components (#9027)
Closes https://github.com/discordjs/discord.js/issues/8920 Closes https://github.com/discordjs/discord.js/issues/8997
This commit is contained in:
@@ -11,6 +11,10 @@ export const PACKAGES = [
|
||||
'ws',
|
||||
];
|
||||
|
||||
export const N_RECENT_VERSIONS = 2;
|
||||
|
||||
export const OVERLOAD_SEPARATOR = ':';
|
||||
|
||||
export const DESCRIPTION =
|
||||
"discord.js is a powerful node.js module that allows you to interact with the Discord API very easily. It takes a much more object-oriented approach than most other JS Discord libraries, making your bot's code significantly tidier and easier to comprehend.";
|
||||
|
||||
|
||||
37
apps/website/src/util/members.ts
Normal file
37
apps/website/src/util/members.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import type { ApiItem, ApiItemContainerMixin } from '@microsoft/api-extractor-model';
|
||||
|
||||
/**
|
||||
* Resolves all inherited members (including merged members) of a given parent.
|
||||
*
|
||||
* @param parent - The parent to resolve the inherited members of.
|
||||
* @param predicate - A predicate to filter the members by.
|
||||
*/
|
||||
export function resolveMembers<T extends ApiItem>(
|
||||
parent: ApiItemContainerMixin,
|
||||
predicate: (item: ApiItem) => item is T,
|
||||
) {
|
||||
const seenItems = new Set<string>();
|
||||
const inheritedMembers = parent.findMembersWithInheritance().items.reduce((acc, item) => {
|
||||
if (predicate(item)) {
|
||||
acc.push({
|
||||
item,
|
||||
inherited:
|
||||
item.parent?.containerKey === parent.containerKey
|
||||
? undefined
|
||||
: (item.parent as ApiItemContainerMixin | undefined),
|
||||
});
|
||||
seenItems.add(item.containerKey);
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, new Array<{ inherited?: ApiItemContainerMixin | undefined; item: T }>());
|
||||
|
||||
const mergedMembers = parent
|
||||
.getMergedSiblings()
|
||||
.filter((sibling) => sibling.containerKey !== parent.containerKey)
|
||||
.flatMap((sibling) => (sibling as ApiItemContainerMixin).findMembersWithInheritance().items)
|
||||
.filter((item) => predicate(item) && !seenItems.has(item.containerKey))
|
||||
.map((item) => ({ item: item as T, inherited: item.parent ? (item.parent as ApiItemContainerMixin) : undefined }));
|
||||
|
||||
return [...inheritedMembers, ...mergedMembers];
|
||||
}
|
||||
@@ -1,33 +1,15 @@
|
||||
import { findPackage, ApiNodeJSONEncoder } from '@discordjs/api-extractor-utils';
|
||||
import type { ApiEntryPoint, ApiModel } from '@microsoft/api-extractor-model';
|
||||
import type { ApiEntryPoint, ApiItem, ApiModel } from '@microsoft/api-extractor-model';
|
||||
|
||||
export function findMemberByKey(model: ApiModel, packageName: string, containerKey: string, version: string) {
|
||||
const pkg = findPackage(model, packageName)!;
|
||||
const member = (pkg.members[0] as ApiEntryPoint).tryGetMemberByKey(containerKey);
|
||||
|
||||
if (!member) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return ApiNodeJSONEncoder.encode(model, member, version);
|
||||
export function findMemberByKey(model: ApiModel, packageName: string, containerKey: string) {
|
||||
const pkg = model.tryGetPackageByName(`@discordjs/${packageName}`)!;
|
||||
return (pkg.members[0] as ApiEntryPoint).tryGetMemberByKey(containerKey);
|
||||
}
|
||||
|
||||
export function findMember(
|
||||
model: ApiModel,
|
||||
packageName: string,
|
||||
memberName: string | undefined,
|
||||
version: string,
|
||||
): ReturnType<typeof ApiNodeJSONEncoder['encode']> | undefined {
|
||||
export function findMember(model: ApiModel, packageName: string, memberName: string | undefined): ApiItem | undefined {
|
||||
if (!memberName) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const pkg = findPackage(model, packageName)!;
|
||||
const member = (pkg.members[0] as ApiEntryPoint).findMembersByName(memberName)[0];
|
||||
|
||||
if (!member) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return ApiNodeJSONEncoder.encode(model, member, version);
|
||||
const pkg = model.tryGetPackageByName(`@discordjs/${packageName}`)!;
|
||||
return pkg.entryPoints[0]?.findMembersByName(memberName)[0];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user