mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 18:43:31 +01:00
feat: link basic types to MDN/TS documentation (#9913)
* feat: link basic types to MDN/TS documentation * refactor: requested changes
This commit is contained in:
9
apps/website/src/components/DocumentationLink.tsx
Normal file
9
apps/website/src/components/DocumentationLink.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import type { PropsWithChildren } from 'react';
|
||||||
|
|
||||||
|
export function DocumentationLink({ children, href }: PropsWithChildren<{ readonly href: string }>) {
|
||||||
|
return (
|
||||||
|
<a className="text-blurple" href={href} rel="external noreferrer noopener" target="_blank">
|
||||||
|
{children}
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
import type { ApiModel, Excerpt } from '@discordjs/api-extractor-model';
|
import type { ApiModel, Excerpt } from '@discordjs/api-extractor-model';
|
||||||
import { ExcerptTokenKind } from '@discordjs/api-extractor-model';
|
import { ExcerptTokenKind } from '@discordjs/api-extractor-model';
|
||||||
|
import { BuiltinDocumentationLinks } from '~/util/builtinDocumentationLinks';
|
||||||
import { DISCORD_API_TYPES_DOCS_URL } from '~/util/constants';
|
import { DISCORD_API_TYPES_DOCS_URL } from '~/util/constants';
|
||||||
|
import { DocumentationLink } from './DocumentationLink';
|
||||||
import { ItemLink } from './ItemLink';
|
import { ItemLink } from './ItemLink';
|
||||||
import { resolveItemURI } from './documentation/util';
|
import { resolveItemURI } from './documentation/util';
|
||||||
|
|
||||||
@@ -25,6 +27,15 @@ export function ExcerptText({ model, excerpt }: ExcerptTextProps) {
|
|||||||
// TODO: Real fix in api-extractor needed
|
// TODO: Real fix in api-extractor needed
|
||||||
const text = token.text.replaceAll('\n', '').replaceAll(/\s{2}$/g, '');
|
const text = token.text.replaceAll('\n', '').replaceAll(/\s{2}$/g, '');
|
||||||
if (token.kind === ExcerptTokenKind.Reference) {
|
if (token.kind === ExcerptTokenKind.Reference) {
|
||||||
|
if (text in BuiltinDocumentationLinks) {
|
||||||
|
const href = BuiltinDocumentationLinks[text as keyof typeof BuiltinDocumentationLinks];
|
||||||
|
return (
|
||||||
|
<DocumentationLink key={`${text}-${idx}`} href={href}>
|
||||||
|
{text}
|
||||||
|
</DocumentationLink>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const source = token.canonicalReference?.source;
|
const source = token.canonicalReference?.source;
|
||||||
const symbol = token.canonicalReference?.symbol;
|
const symbol = token.canonicalReference?.symbol;
|
||||||
if (source && 'packageName' in source && source.packageName === 'discord-api-types' && symbol) {
|
if (source && 'packageName' in source && source.packageName === 'discord-api-types' && symbol) {
|
||||||
@@ -38,9 +49,9 @@ export function ExcerptText({ model, excerpt }: ExcerptTextProps) {
|
|||||||
else href += `/${meaning}/${text}`;
|
else href += `/${meaning}/${text}`;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<a className="text-blurple" href={href} key={idx} rel="external noreferrer noopener" target="_blank">
|
<DocumentationLink key={`${text}-${idx}`} href={href}>
|
||||||
{text}
|
{text}
|
||||||
</a>
|
</DocumentationLink>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
76
apps/website/src/util/builtinDocumentationLinks.ts
Normal file
76
apps/website/src/util/builtinDocumentationLinks.ts
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
export const BuiltinDocumentationLinks = {
|
||||||
|
// Built-in types
|
||||||
|
bigint: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt',
|
||||||
|
boolean: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean',
|
||||||
|
null: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/null',
|
||||||
|
number: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number',
|
||||||
|
string: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String',
|
||||||
|
symbol: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol',
|
||||||
|
undefined: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined',
|
||||||
|
|
||||||
|
// Built-in classes
|
||||||
|
Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array',
|
||||||
|
ArrayBuffer: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer',
|
||||||
|
AsyncGenerator: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator',
|
||||||
|
AsyncIterable: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols',
|
||||||
|
AsyncIterableIterator: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols',
|
||||||
|
Buffer: 'https://nodejs.org/api/buffer.html#class-buffer',
|
||||||
|
Date: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date',
|
||||||
|
Error: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error',
|
||||||
|
Function: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function',
|
||||||
|
Generator: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Generator',
|
||||||
|
Iterable: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols',
|
||||||
|
IterableIterator: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Iteration_protocols',
|
||||||
|
Iterator: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Iterator',
|
||||||
|
Map: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map',
|
||||||
|
Promise: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise',
|
||||||
|
RegExp: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp',
|
||||||
|
Set: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set',
|
||||||
|
WeakMap: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WeakMap',
|
||||||
|
WeakRef: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WeakRef',
|
||||||
|
WeakSet: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WeakSet',
|
||||||
|
|
||||||
|
// Typed arrays
|
||||||
|
BigInt64Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array',
|
||||||
|
BigUint64Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigUint64Array',
|
||||||
|
Float32Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Float32Array',
|
||||||
|
Float64Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Float64Array',
|
||||||
|
Int16Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Int16Array',
|
||||||
|
Int32Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Int32Array',
|
||||||
|
Int8Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Int8Array',
|
||||||
|
Uint16Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array',
|
||||||
|
Uint32Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array',
|
||||||
|
Uint8Array: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array',
|
||||||
|
Uint8ClampedArray: 'https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray',
|
||||||
|
|
||||||
|
// TypeScript types
|
||||||
|
any: 'https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#any',
|
||||||
|
never: 'https://www.typescriptlang.org/docs/handbook/2/functions.html#never',
|
||||||
|
object: 'https://www.typescriptlang.org/docs/handbook/2/functions.html#object',
|
||||||
|
ReadonlyArray: 'https://www.typescriptlang.org/docs/handbook/2/objects.html#the-readonlyarray-type',
|
||||||
|
unknown: 'https://www.typescriptlang.org/docs/handbook/2/functions.html#unknown',
|
||||||
|
void: 'https://www.typescriptlang.org/docs/handbook/2/functions.html#void',
|
||||||
|
|
||||||
|
// TypeScript utility types
|
||||||
|
Awaited: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#awaitedtype',
|
||||||
|
Partial: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype',
|
||||||
|
Required: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#requiredtype',
|
||||||
|
Readonly: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype',
|
||||||
|
Record: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type',
|
||||||
|
Pick: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#picktype-keys',
|
||||||
|
Omit: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys',
|
||||||
|
Exclude: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers',
|
||||||
|
Extract: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#extracttype-union',
|
||||||
|
NonNullable: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullabletype',
|
||||||
|
Parameters: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#parameterstype',
|
||||||
|
ConstructorParameters: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#constructorparameterstype',
|
||||||
|
ReturnType: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#returntypetype',
|
||||||
|
InstanceType: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#instancetypetype',
|
||||||
|
ThisParameterType: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#thisparametertypetype',
|
||||||
|
OmitThisParameter: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#omitthisparametertype',
|
||||||
|
ThisType: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#thistypetype',
|
||||||
|
Uppercase: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#uppercasestringtype',
|
||||||
|
Lowercase: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#lowercasestringtype',
|
||||||
|
Capitalize: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#capitalizestringtype',
|
||||||
|
Uncapitalize: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#uncapitalizestringtype',
|
||||||
|
} as const;
|
||||||
Reference in New Issue
Block a user