mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-11 00:53:31 +01:00
* fix(ExceptText): don't display import("d..-types/v10"). in return type
* Squashed 'packages/api-extractor-model/' content from commit 39ecb196c
git-subtree-dir: packages/api-extractor-model
git-subtree-split: 39ecb196ca210bdf84ba6c9cadb1bb93571849d7
* Squashed 'packages/api-extractor/' content from commit 341ad6c51
git-subtree-dir: packages/api-extractor
git-subtree-split: 341ad6c51b01656d4f73b74ad4bdb3095f9262c4
* feat(api-extractor): add api-extractor and -model
* fix: package.json docs script
* fix(SourcLink): use <> instead of function syntax
* fix: make packages private
* fix: rest params showing in docs, added labels
* fix: missed two files
* feat: merge docs.json from docgen and docs.api.json
* fix: cpy-cli & pnpm-lock
* fix: increase icon size
* fix: icon size again
* feat: run both docs on mainlib
* chore: website fixes
* fix: more website fixes
* fix: tests and dev database script
* chore: comment out old docs
* fix: increase max fetch cache
* fix: env should always be a string
* fix: try to reapply patches
* fix: remove prepare for docgen
* fix: temporary cosmetic fixes
* fix: horizontal scroll
* feat: generate index for new docs
---------
Co-authored-by: Noel <buechler.noel@outlook.com>
83 lines
2.8 KiB
TypeScript
83 lines
2.8 KiB
TypeScript
import { ApiItemKind } from '@discordjs/api-extractor-model';
|
|
import type {
|
|
ApiItem,
|
|
ApiItemContainerMixin,
|
|
ApiMethod,
|
|
ApiMethodSignature,
|
|
ApiProperty,
|
|
ApiPropertySignature,
|
|
ApiDocumentedItem,
|
|
ApiParameterListMixin,
|
|
ApiEvent,
|
|
} from '@discordjs/api-extractor-model';
|
|
import { METHOD_SEPARATOR, OVERLOAD_SEPARATOR } from '~/util/constants';
|
|
import { resolveMembers } from '~/util/members';
|
|
import { resolveParameters } from '~/util/model';
|
|
import type { TableOfContentsSerialized } from '../TableOfContentItems';
|
|
|
|
export function hasProperties(item: ApiItemContainerMixin) {
|
|
return resolveMembers(item, memberPredicate).some(
|
|
({ item: member }) => member.kind === ApiItemKind.Property || member.kind === ApiItemKind.PropertySignature,
|
|
);
|
|
}
|
|
|
|
export function hasMethods(item: ApiItemContainerMixin) {
|
|
return resolveMembers(item, memberPredicate).some(
|
|
({ item: member }) => member.kind === ApiItemKind.Method || member.kind === ApiItemKind.MethodSignature,
|
|
);
|
|
}
|
|
|
|
export function hasEvents(item: ApiItemContainerMixin) {
|
|
return resolveMembers(item, memberPredicate).some(({ item: member }) => member.kind === ApiItemKind.Event);
|
|
}
|
|
|
|
export function resolveItemURI(item: ApiItem): string {
|
|
return !item.parent || item.parent.kind === ApiItemKind.EntryPoint
|
|
? `${item.displayName}${OVERLOAD_SEPARATOR}${item.kind}`
|
|
: `${item.parent.displayName}${OVERLOAD_SEPARATOR}${item.parent.kind}${METHOD_SEPARATOR}${item.displayName}`;
|
|
}
|
|
|
|
export function memberPredicate(
|
|
item: ApiItem,
|
|
): item is ApiEvent | ApiMethod | ApiMethodSignature | ApiProperty | ApiPropertySignature {
|
|
return (
|
|
item.kind === ApiItemKind.Property ||
|
|
item.kind === ApiItemKind.PropertySignature ||
|
|
item.kind === ApiItemKind.Method ||
|
|
item.kind === ApiItemKind.MethodSignature ||
|
|
item.kind === ApiItemKind.Event
|
|
);
|
|
}
|
|
|
|
export function serializeMembers(clazz: ApiItemContainerMixin): TableOfContentsSerialized[] {
|
|
return resolveMembers(clazz, memberPredicate).map(({ item: member }) => {
|
|
if (member.kind === 'Method' || member.kind === 'MethodSignature') {
|
|
return {
|
|
kind: member.kind as 'Method' | 'MethodSignature',
|
|
name: member.displayName,
|
|
};
|
|
} else if (member.kind === 'Event') {
|
|
return {
|
|
kind: member.kind as 'Event',
|
|
name: member.displayName,
|
|
};
|
|
} else {
|
|
return {
|
|
kind: member.kind as 'Property' | 'PropertySignature',
|
|
name: member.displayName,
|
|
overloadIndex: (member as ApiMethod | ApiMethodSignature).overloadIndex,
|
|
};
|
|
}
|
|
});
|
|
}
|
|
|
|
export function parametersString(item: ApiDocumentedItem & ApiParameterListMixin) {
|
|
return resolveParameters(item).reduce((prev, cur, index) => {
|
|
if (index === 0) {
|
|
return `${prev}${cur.isRest ? '...' : ''}${cur.isOptional ? `${cur.name}?` : cur.name}`;
|
|
}
|
|
|
|
return `${prev}, ${cur.isRest ? '...' : ''}${cur.isOptional ? `${cur.name}?` : cur.name}`;
|
|
}, '');
|
|
}
|