mirror of
https://github.com/discordjs/discord.js.git
synced 2026-05-31 16:10:08 +00:00
Co-authored-by: Noel <buechler.noel@outlook.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import type {
|
|
ApiDocumentedItem,
|
|
ApiEntryPoint,
|
|
ApiModel,
|
|
ApiParameterListMixin,
|
|
Excerpt,
|
|
} from '@microsoft/api-extractor-model';
|
|
import type { DocSection } from '@microsoft/tsdoc';
|
|
|
|
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) {
|
|
if (!memberName) {
|
|
return undefined;
|
|
}
|
|
|
|
const pkg = model.tryGetPackageByName(`@discordjs/${packageName}`)!;
|
|
return pkg.entryPoints[0]?.findMembersByName(memberName)[0];
|
|
}
|
|
|
|
interface ResolvedParameter {
|
|
description?: DocSection | undefined;
|
|
isOptional: boolean;
|
|
name: string;
|
|
parameterTypeExcerpt: Excerpt;
|
|
}
|
|
|
|
/**
|
|
* This takes an api item with a parameter list and resolves the names and descriptions of all the parameters.
|
|
*
|
|
* @remarks
|
|
* This is different from accessing `Parameter#name` or `Parameter.tsdocBlockComment` as this method cross-references the associated tsdoc
|
|
* parameter names and descriptions and uses them as a higher precedence to the source code.
|
|
* @param item - The api item to resolve parameter data for
|
|
* @returns An array of parameters
|
|
*/
|
|
export function resolveParameters(item: ApiDocumentedItem & ApiParameterListMixin): ResolvedParameter[] {
|
|
return item.parameters.map((param, idx) => {
|
|
const tsdocAnalog = item.tsdocComment?.params.blocks[idx];
|
|
|
|
return {
|
|
name: param.tsdocParamBlock?.parameterName ?? tsdocAnalog?.parameterName ?? param.name,
|
|
description: param.tsdocParamBlock?.content ?? tsdocAnalog?.content,
|
|
isOptional: param.isOptional,
|
|
parameterTypeExcerpt: param.parameterTypeExcerpt,
|
|
};
|
|
});
|
|
}
|