mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 03:53:29 +01:00
refactor: docs ordering
This commit is contained in:
@@ -114,18 +114,18 @@ export function DocItem({
|
|||||||
<PropertyNode node={node.members.properties} packageName={packageName} version={version} />
|
<PropertyNode node={node.members.properties} packageName={packageName} version={version} />
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{node.members?.events?.length ? (
|
|
||||||
<div>
|
|
||||||
<EventNode node={node.members.events} packageName={packageName} version={version} />
|
|
||||||
</div>
|
|
||||||
) : null}
|
|
||||||
|
|
||||||
{node.members?.methods?.length ? (
|
{node.members?.methods?.length ? (
|
||||||
<div>
|
<div>
|
||||||
<MethodNode node={node.members.methods} packageName={packageName} version={version} />
|
<MethodNode node={node.members.methods} packageName={packageName} version={version} />
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
{node.members?.events?.length ? (
|
||||||
|
<div>
|
||||||
|
<EventNode node={node.members.events} packageName={packageName} version={version} />
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{node.members?.length ? <EnumMemberNode node={node.members} packageName={packageName} version={version} /> : null}
|
{node.members?.length ? <EnumMemberNode node={node.members} packageName={packageName} version={version} /> : null}
|
||||||
|
|
||||||
{node.unionMembers?.length ? <UnionMember node={node.unionMembers} version={version} /> : null}
|
{node.unionMembers?.length ? <UnionMember node={node.unionMembers} version={version} /> : null}
|
||||||
|
|||||||
@@ -57,40 +57,6 @@ export async function Outline({ node }: { readonly node: any }) {
|
|||||||
</Collapsible>
|
</Collapsible>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{node.members?.events?.length ? (
|
|
||||||
<Collapsible className="flex flex-col gap-4 px-4" defaultOpen>
|
|
||||||
<CollapsibleTrigger className="group flex place-content-between place-items-center rounded-md p-2 hover:bg-neutral-200 dark:hover:bg-neutral-800">
|
|
||||||
<h2 className="flex place-items-center gap-2 text-xl font-bold">
|
|
||||||
<VscSymbolEvent aria-hidden className="flex-shrink-0" size={24} />
|
|
||||||
Events
|
|
||||||
</h2>
|
|
||||||
<ChevronDown className='group-data-[state="open"]:hidden' aria-hidden size={24} />
|
|
||||||
<ChevronUp className='group-data-[state="closed"]:hidden' aria-hidden size={24} />
|
|
||||||
</CollapsibleTrigger>
|
|
||||||
|
|
||||||
<CollapsibleContent>
|
|
||||||
<div className="flex flex-col gap-2 px-4">
|
|
||||||
{node.members.events.map((event: any, idx: number) => {
|
|
||||||
return (
|
|
||||||
<Fragment key={`${event.displayName}-${idx}`}>
|
|
||||||
<div className="flex flex-col gap-4">
|
|
||||||
<div className="flex place-content-between place-items-center">
|
|
||||||
<Link
|
|
||||||
href={`#${event.displayName}`}
|
|
||||||
className="grow truncate rounded-md p-2 font-mono transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-800 md:px-1 md:py-1"
|
|
||||||
>
|
|
||||||
{event.displayName}
|
|
||||||
</Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Fragment>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
</CollapsibleContent>
|
|
||||||
</Collapsible>
|
|
||||||
) : null}
|
|
||||||
|
|
||||||
{node.members?.methods?.length ? (
|
{node.members?.methods?.length ? (
|
||||||
<Collapsible className="flex flex-col gap-4 px-4" defaultOpen>
|
<Collapsible className="flex flex-col gap-4 px-4" defaultOpen>
|
||||||
<CollapsibleTrigger className="group flex place-content-between place-items-center rounded-md p-2 hover:bg-neutral-200 dark:hover:bg-neutral-800">
|
<CollapsibleTrigger className="group flex place-content-between place-items-center rounded-md p-2 hover:bg-neutral-200 dark:hover:bg-neutral-800">
|
||||||
@@ -124,6 +90,40 @@ export async function Outline({ node }: { readonly node: any }) {
|
|||||||
</CollapsibleContent>
|
</CollapsibleContent>
|
||||||
</Collapsible>
|
</Collapsible>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
{node.members?.events?.length ? (
|
||||||
|
<Collapsible className="flex flex-col gap-4 px-4" defaultOpen>
|
||||||
|
<CollapsibleTrigger className="group flex place-content-between place-items-center rounded-md p-2 hover:bg-neutral-200 dark:hover:bg-neutral-800">
|
||||||
|
<h2 className="flex place-items-center gap-2 text-xl font-bold">
|
||||||
|
<VscSymbolEvent aria-hidden className="flex-shrink-0" size={24} />
|
||||||
|
Events
|
||||||
|
</h2>
|
||||||
|
<ChevronDown className='group-data-[state="open"]:hidden' aria-hidden size={24} />
|
||||||
|
<ChevronUp className='group-data-[state="closed"]:hidden' aria-hidden size={24} />
|
||||||
|
</CollapsibleTrigger>
|
||||||
|
|
||||||
|
<CollapsibleContent>
|
||||||
|
<div className="flex flex-col gap-2 px-4">
|
||||||
|
{node.members.events.map((event: any, idx: number) => {
|
||||||
|
return (
|
||||||
|
<Fragment key={`${event.displayName}-${idx}`}>
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<div className="flex place-content-between place-items-center">
|
||||||
|
<Link
|
||||||
|
href={`#${event.displayName}`}
|
||||||
|
className="grow truncate rounded-md p-2 font-mono transition-colors hover:bg-neutral-200 dark:hover:bg-neutral-800 md:px-1 md:py-1"
|
||||||
|
>
|
||||||
|
{event.displayName}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Fragment>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</CollapsibleContent>
|
||||||
|
</Collapsible>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
<div aria-hidden className="px-4">
|
<div aria-hidden className="px-4">
|
||||||
<div role="separator" className="h-[2px] bg-neutral-300 dark:bg-neutral-700" />
|
<div role="separator" className="h-[2px] bg-neutral-300 dark:bg-neutral-700" />
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
"@vercel/blob": "^0.22.1",
|
"@vercel/blob": "^0.22.1",
|
||||||
"@vercel/postgres": "^0.7.2",
|
"@vercel/postgres": "^0.7.2",
|
||||||
"meilisearch": "^0.37.0",
|
"meilisearch": "^0.37.0",
|
||||||
|
"p-limit": "^5.0.0",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.6.2",
|
||||||
"undici": "6.6.2"
|
"undici": "6.6.2"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { getInput, setFailed } from '@actions/core';
|
|||||||
import { create } from '@actions/glob';
|
import { create } from '@actions/glob';
|
||||||
import { put } from '@vercel/blob';
|
import { put } from '@vercel/blob';
|
||||||
import { createPool } from '@vercel/postgres';
|
import { createPool } from '@vercel/postgres';
|
||||||
|
import pLimit from 'p-limit';
|
||||||
|
|
||||||
if (!process.env.DATABASE_URL) {
|
if (!process.env.DATABASE_URL) {
|
||||||
setFailed('DATABASE_URL is not set');
|
setFailed('DATABASE_URL is not set');
|
||||||
@@ -16,22 +17,36 @@ const pool = createPool({
|
|||||||
connectionString: process.env.DATABASE_URL,
|
connectionString: process.env.DATABASE_URL,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const limit = pLimit(10);
|
||||||
|
const promises = [];
|
||||||
|
|
||||||
const globber = await create(`packages/${pkg}/docs/docs.api.json`);
|
const globber = await create(`packages/${pkg}/docs/docs.api.json`);
|
||||||
for await (const file of globber.globGenerator()) {
|
for await (const file of globber.globGenerator()) {
|
||||||
const data = await readFile(file, 'utf8');
|
const data = await readFile(file, 'utf8');
|
||||||
try {
|
try {
|
||||||
console.log(`Uploading ${file} with ${version}...`);
|
promises.push(
|
||||||
const json = JSON.parse(data);
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
||||||
const name = json.name ?? json.n;
|
limit(async () => {
|
||||||
const { url } = await put(`${name.replace('@discordjs/', '')}/${version}.json`, data, {
|
console.log(`Uploading ${file} with ${version}...`);
|
||||||
access: 'public',
|
const json = JSON.parse(data);
|
||||||
addRandomSuffix: false,
|
const name = json.name ?? json.n;
|
||||||
});
|
const { url } = await put(`${name.replace('@discordjs/', '')}/${version}.json`, data, {
|
||||||
await pool.sql`insert into documentation (name, version, url) values (${name.replace(
|
access: 'public',
|
||||||
'@discordjs/',
|
addRandomSuffix: false,
|
||||||
'',
|
});
|
||||||
)}, ${version}, ${url}) on conflict (name, version) do update set url = EXCLUDED.url`;
|
await pool.sql`insert into documentation (name, version, url) values (${name.replace(
|
||||||
|
'@discordjs/',
|
||||||
|
'',
|
||||||
|
)}, ${version}, ${url}) on conflict (name, version) do update set url = EXCLUDED.url`;
|
||||||
|
}),
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await Promise.all(promises);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { setFailed } from '@actions/core';
|
|||||||
import { generateAllIndices } from '@discordjs/scripts';
|
import { generateAllIndices } from '@discordjs/scripts';
|
||||||
import { createPool } from '@vercel/postgres';
|
import { createPool } from '@vercel/postgres';
|
||||||
import { MeiliSearch } from 'meilisearch';
|
import { MeiliSearch } from 'meilisearch';
|
||||||
|
import pLimit from 'p-limit';
|
||||||
import { fetch } from 'undici';
|
import { fetch } from 'undici';
|
||||||
|
|
||||||
if (!process.env.DATABASE_URL) {
|
if (!process.env.DATABASE_URL) {
|
||||||
@@ -26,6 +27,9 @@ const client = new MeiliSearch({
|
|||||||
apiKey: process.env.SEARCH_API_KEY!,
|
apiKey: process.env.SEARCH_API_KEY!,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const limit = pLimit(10);
|
||||||
|
let promises: Promise<any>[] = [];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log('Generating all indices...');
|
console.log('Generating all indices...');
|
||||||
const indices = await generateAllIndices({
|
const indices = await generateAllIndices({
|
||||||
@@ -49,8 +53,9 @@ try {
|
|||||||
console.log('Uploading indices...');
|
console.log('Uploading indices...');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Promise.all(
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||||
indices.map(async (index) => {
|
promises = indices.map(async (index) =>
|
||||||
|
limit(async () => {
|
||||||
console.log(`Uploading ${index.index}...`);
|
console.log(`Uploading ${index.index}...`);
|
||||||
let task;
|
let task;
|
||||||
try {
|
try {
|
||||||
@@ -71,3 +76,9 @@ try {
|
|||||||
const err = error as Error;
|
const err = error as Error;
|
||||||
setFailed(err.message);
|
setFailed(err.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await Promise.all(promises);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,21 +3,37 @@ import { basename } from 'node:path';
|
|||||||
import { getInput } from '@actions/core';
|
import { getInput } from '@actions/core';
|
||||||
import { create } from '@actions/glob';
|
import { create } from '@actions/glob';
|
||||||
import { put } from '@vercel/blob';
|
import { put } from '@vercel/blob';
|
||||||
|
import pLimit from 'p-limit';
|
||||||
|
|
||||||
const pkg = getInput('package') || '*';
|
const pkg = getInput('package') || '*';
|
||||||
const version = getInput('version') || 'main';
|
const version = getInput('version') || 'main';
|
||||||
|
|
||||||
|
const limit = pLimit(10);
|
||||||
|
const promises = [];
|
||||||
|
|
||||||
const globber = await create(`packages/${pkg}/docs/${pkg}/split/*.api.json`);
|
const globber = await create(`packages/${pkg}/docs/${pkg}/split/*.api.json`);
|
||||||
for await (const file of globber.globGenerator()) {
|
for await (const file of globber.globGenerator()) {
|
||||||
const data = await readFile(file, 'utf8');
|
const data = await readFile(file, 'utf8');
|
||||||
try {
|
try {
|
||||||
console.log(`Uploading ${file} with ${version}...`);
|
promises.push(
|
||||||
const name = basename(file).replace('main.', '');
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
||||||
await put(`rewrite/${pkg}/${version}.${name}`, data, {
|
limit(async () => {
|
||||||
access: 'public',
|
console.log(`Uploading ${file} with ${version}...`);
|
||||||
addRandomSuffix: false,
|
const name = basename(file).replace('main.', '');
|
||||||
});
|
|
||||||
|
await put(`rewrite/${pkg}/${version}.${name}`, data, {
|
||||||
|
access: 'public',
|
||||||
|
addRandomSuffix: false,
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await Promise.all(promises);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ function itemExcerptText(excerpt: Excerpt, apiPackage: ApiPackage) {
|
|||||||
displayName: resolved.item.displayName,
|
displayName: resolved.item.displayName,
|
||||||
containerKey: resolved.item.containerKey,
|
containerKey: resolved.item.containerKey,
|
||||||
uri: resolveItemURI(resolved.item),
|
uri: resolveItemURI(resolved.item),
|
||||||
packageName: resolved.package,
|
packageName: resolved.package?.replace('@discordjs/', ''),
|
||||||
version: resolved.version,
|
version: resolved.version,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
20
pnpm-lock.yaml
generated
20
pnpm-lock.yaml
generated
@@ -410,6 +410,9 @@ importers:
|
|||||||
meilisearch:
|
meilisearch:
|
||||||
specifier: ^0.37.0
|
specifier: ^0.37.0
|
||||||
version: 0.37.0
|
version: 0.37.0
|
||||||
|
p-limit:
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.0
|
||||||
tslib:
|
tslib:
|
||||||
specifier: ^2.6.2
|
specifier: ^2.6.2
|
||||||
version: 2.6.2
|
version: 2.6.2
|
||||||
@@ -3957,8 +3960,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
markdown-wasm: 1.x
|
markdown-wasm: 1.x
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
esbuild:
|
|
||||||
optional: true
|
|
||||||
markdown-wasm:
|
markdown-wasm:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -4017,10 +4018,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@effect-ts/otel-node': '*'
|
'@effect-ts/otel-node': '*'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@effect-ts/core':
|
|
||||||
optional: true
|
|
||||||
'@effect-ts/otel':
|
|
||||||
optional: true
|
|
||||||
'@effect-ts/otel-node':
|
'@effect-ts/otel-node':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -13566,9 +13563,6 @@ packages:
|
|||||||
|
|
||||||
/clipanion@3.2.1:
|
/clipanion@3.2.1:
|
||||||
resolution: {integrity: sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==}
|
resolution: {integrity: sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==}
|
||||||
peerDependenciesMeta:
|
|
||||||
typanion:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
dependencies:
|
||||||
typanion: 3.14.0
|
typanion: 3.14.0
|
||||||
dev: false
|
dev: false
|
||||||
@@ -14778,7 +14772,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
shelljs: 0.8.5
|
shelljs: 0.8.5
|
||||||
typescript: 5.5.0-dev.20240228
|
typescript: 5.5.0-dev.20240302
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/dts-critic@3.3.11(typescript@5.3.3):
|
/dts-critic@3.3.11(typescript@5.3.3):
|
||||||
@@ -21840,7 +21834,6 @@ packages:
|
|||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
dependencies:
|
dependencies:
|
||||||
yocto-queue: 1.0.0
|
yocto-queue: 1.0.0
|
||||||
dev: true
|
|
||||||
|
|
||||||
/p-locate@3.0.0:
|
/p-locate@3.0.0:
|
||||||
resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
|
resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
|
||||||
@@ -25678,8 +25671,8 @@ packages:
|
|||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
/typescript@5.5.0-dev.20240228:
|
/typescript@5.5.0-dev.20240302:
|
||||||
resolution: {integrity: sha512-bdFIn0U4p7+PrnESpBPXDc6jRXynawwVQssEw2Pd2o/Mud34LwGgqHXOgIY5EEmZFPjzT3osXB7VKQP1cdHi3g==}
|
resolution: {integrity: sha512-Cbr0okulu+L25e+Hg7miQGjy1iPM2jm1BkdFBYdf+JK7eCw8HF19Ud22FuZ15Nmcfxz9SU384MNQFFhwy+adrw==}
|
||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
@@ -27420,7 +27413,6 @@ packages:
|
|||||||
/yocto-queue@1.0.0:
|
/yocto-queue@1.0.0:
|
||||||
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
|
resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
|
||||||
engines: {node: '>=12.20'}
|
engines: {node: '>=12.20'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/yoga-wasm-web@0.3.3:
|
/yoga-wasm-web@0.3.3:
|
||||||
resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
|
resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
|
||||||
|
|||||||
Reference in New Issue
Block a user