mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat: discord-api-types on docs
This commit is contained in:
@@ -51,6 +51,7 @@
|
||||
"@vercel/analytics": "^1.5.0",
|
||||
"@vercel/edge-config": "^1.4.0",
|
||||
"@vercel/postgres": "^0.10.0",
|
||||
"cloudflare": "^4.2.0",
|
||||
"cmdk": "^1.1.1",
|
||||
"cva": "1.0.0-beta.3",
|
||||
"geist": "^1.3.1",
|
||||
|
||||
@@ -31,7 +31,7 @@ export default async function Image({
|
||||
|
||||
const isMain = version === 'main';
|
||||
const fileContent = await fetch(
|
||||
`${process.env.BLOB_STORAGE_URL}/rewrite/${packageName}/${version}.${normalizeItem}.api.json`,
|
||||
`${process.env.CF_R2_DOCS_BUCKET_URL}/${packageName}/${version}.${normalizeItem}.api.json`,
|
||||
{ next: { revalidate: isMain ? 0 : 604_800 } },
|
||||
);
|
||||
const node = await fileContent.json();
|
||||
|
||||
@@ -7,6 +7,7 @@ import type { Metadata } from 'next';
|
||||
import { MDXRemote } from 'next-mdx-remote-client/rsc';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
import { DocItem } from '@/components/DocItem';
|
||||
import { PACKAGES_WITH_ENTRY_POINTS } from '@/util/constants';
|
||||
import { fetchNode } from '@/util/fetchNode';
|
||||
import { parseDocsPathParams } from '@/util/parseDocsPathParams';
|
||||
import { getSingletonHighlighter } from '@/util/shiki.bundle';
|
||||
@@ -52,6 +53,12 @@ export default async function Page({
|
||||
const { entryPoints: parsedEntrypoints, foundItem } = parseDocsPathParams(item);
|
||||
|
||||
if (!foundItem) {
|
||||
const hasEntryPoint = PACKAGES_WITH_ENTRY_POINTS.includes(packageName);
|
||||
|
||||
if (hasEntryPoint) {
|
||||
return <>Placeholder</>;
|
||||
}
|
||||
|
||||
const fileContent = await readFile(join(process.cwd(), `src/assets/readme/${packageName}/home-README.md`), 'utf8');
|
||||
|
||||
return (
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
import { sql } from '@vercel/postgres';
|
||||
import Cloudflare from 'cloudflare';
|
||||
import { NextResponse, type NextRequest } from 'next/server';
|
||||
import { PACKAGES } from './util/constants';
|
||||
import { ENV } from './util/env';
|
||||
|
||||
const client = new Cloudflare({
|
||||
apiToken: process.env.CF_D1_DOCS_API_KEY,
|
||||
});
|
||||
|
||||
async function fetchLatestVersion(packageName: string): Promise<string> {
|
||||
if (ENV.IS_LOCAL_DEV) {
|
||||
return 'main';
|
||||
}
|
||||
|
||||
try {
|
||||
const { rows } = await sql<{ version: string }>`with ordered_versions as (
|
||||
select version from documentation where name = ${packageName} and version != 'main' order by string_to_array(version, '.')::int[] desc
|
||||
)
|
||||
select version from ordered_versions limit 1`;
|
||||
const { result } = await client.d1.database.query(process.env.CF_D1_DOCS_ID!, {
|
||||
account_id: process.env.CF_ACCOUNT_ID!,
|
||||
sql: `select version from documentation where name = ? and version != 'main' order by version desc limit 1;`,
|
||||
params: [packageName],
|
||||
});
|
||||
|
||||
return rows[0]?.version ?? 'main';
|
||||
return (result[0]?.results as { version: string }[] | undefined)?.[0]?.version ?? 'main';
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
export const PACKAGES = [
|
||||
{ name: 'discord.js' },
|
||||
{ name: 'discord-api-types' },
|
||||
{ name: 'brokers' },
|
||||
{ name: 'builders' },
|
||||
{ name: 'collection' },
|
||||
@@ -11,7 +12,6 @@ export const PACKAGES = [
|
||||
{ name: 'util' },
|
||||
{ name: 'voice' },
|
||||
{ name: 'ws' },
|
||||
// { name: 'discord-api-types' },
|
||||
];
|
||||
|
||||
export const PACKAGES_WITH_ENTRY_POINTS = ['discord-api-types'];
|
||||
|
||||
@@ -29,7 +29,7 @@ export async function fetchDependencies({
|
||||
try {
|
||||
const isMain = version === 'main';
|
||||
const fileContent = await fetch(
|
||||
`${process.env.BLOB_STORAGE_URL}/rewrite/${packageName}/${version}.dependencies.api.json`,
|
||||
`${process.env.CF_R2_DOCS_BUCKET_URL}/${packageName}/${version}.dependencies.api.json`,
|
||||
{ next: { revalidate: isMain ? 0 : 604_800 } },
|
||||
);
|
||||
const parsedDependencies = await fileContent.json();
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
// import { sql } from '@vercel/postgres';
|
||||
import { PACKAGES_WITH_ENTRY_POINTS } from './constants';
|
||||
import { ENV } from './env';
|
||||
|
||||
export async function fetchEntryPoints(packageName: string, version: string) {
|
||||
const hasEntryPoint = PACKAGES_WITH_ENTRY_POINTS.includes(packageName);
|
||||
|
||||
if (!hasEntryPoint) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (ENV.IS_LOCAL_DEV) {
|
||||
const fileContent = await readFile(
|
||||
join(process.cwd(), `../../packages/${packageName}/docs/${packageName}/split/${version}.entrypoints.api.json`),
|
||||
join(
|
||||
process.cwd(),
|
||||
`${hasEntryPoint ? `../../../discord-api-types` : `../../packages/${packageName}`}/docs/${packageName}/split/${version}.entrypoints.api.json`,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
|
||||
return JSON.parse(fileContent);
|
||||
}
|
||||
|
||||
// try {
|
||||
// const { rows } = await sql<{
|
||||
// entryPoint: string;
|
||||
// }>`select entryPoint from documentation where name = ${packageName} and version = ${version} order by
|
||||
// case
|
||||
// when version = 'main' then 0
|
||||
// else 1
|
||||
// end,
|
||||
// case
|
||||
// when version = 'main' then null
|
||||
// else string_to_array(version, '.')::int[]
|
||||
// end desc;
|
||||
// `;
|
||||
const isMain = version === 'main';
|
||||
const fileContent = await fetch(
|
||||
`${process.env.CF_R2_DOCS_BUCKET_URL}/${packageName}/${version}.entrypoints.api.json`,
|
||||
{ next: { revalidate: isMain ? 0 : 604_800 } },
|
||||
);
|
||||
|
||||
// return rows;
|
||||
// } catch {
|
||||
return [];
|
||||
// }
|
||||
if (!fileContent.ok) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return fileContent.json();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { PACKAGES_WITH_ENTRY_POINTS } from './constants';
|
||||
import { ENV } from './env';
|
||||
|
||||
export async function fetchNode({
|
||||
@@ -13,6 +14,7 @@ export async function fetchNode({
|
||||
readonly packageName: string;
|
||||
readonly version: string;
|
||||
}) {
|
||||
const hasEntryPoint = PACKAGES_WITH_ENTRY_POINTS.includes(packageName);
|
||||
const normalizedEntryPoint = entryPoint ? `${entryPoint}.` : '';
|
||||
const normalizeItem = item.replaceAll(':', '.').toLowerCase();
|
||||
|
||||
@@ -20,7 +22,7 @@ export async function fetchNode({
|
||||
const fileContent = await readFile(
|
||||
join(
|
||||
process.cwd(),
|
||||
`../../packages/${packageName}/docs/${packageName}/split/${version}.${normalizedEntryPoint}${normalizeItem}.api.json`,
|
||||
`${hasEntryPoint || normalizedEntryPoint ? `../../../discord-api-types` : `../../packages/${packageName}`}/docs/${packageName}/split/${version}.${normalizedEntryPoint}${normalizeItem}.api.json`,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
@@ -30,7 +32,7 @@ export async function fetchNode({
|
||||
|
||||
const isMain = version === 'main';
|
||||
const fileContent = await fetch(
|
||||
`${process.env.BLOB_STORAGE_URL}/rewrite/${packageName}/${version}.${normalizedEntryPoint}${normalizeItem}.api.json`,
|
||||
`${process.env.CF_R2_DOCS_BUCKET_URL}/${packageName}/${version}.${normalizedEntryPoint}${normalizeItem}.api.json`,
|
||||
{ next: { revalidate: isMain ? 0 : 604_800 } },
|
||||
);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { PACKAGES_WITH_ENTRY_POINTS } from './constants';
|
||||
import { ENV } from './env';
|
||||
|
||||
export async function fetchSitemap({
|
||||
@@ -11,13 +12,14 @@ export async function fetchSitemap({
|
||||
readonly packageName: string;
|
||||
readonly version: string;
|
||||
}) {
|
||||
const hasEntryPoint = PACKAGES_WITH_ENTRY_POINTS.includes(packageName);
|
||||
const normalizedEntryPoint = entryPoint ? `${entryPoint}.` : '';
|
||||
|
||||
if (ENV.IS_LOCAL_DEV) {
|
||||
const fileContent = await readFile(
|
||||
join(
|
||||
process.cwd(),
|
||||
`../../packages/${packageName}/docs/${packageName}/split/${version}.${normalizedEntryPoint}sitemap.api.json`,
|
||||
`${hasEntryPoint || normalizedEntryPoint ? `../../../discord-api-types` : `../../packages/${packageName}`}/docs/${packageName}/split/${version}.${normalizedEntryPoint}sitemap.api.json`,
|
||||
),
|
||||
'utf8',
|
||||
);
|
||||
@@ -27,7 +29,7 @@ export async function fetchSitemap({
|
||||
|
||||
const isMain = version === 'main';
|
||||
const fileContent = await fetch(
|
||||
`${process.env.BLOB_STORAGE_URL}/rewrite/${packageName}/${version}.${normalizedEntryPoint}sitemap.api.json`,
|
||||
`${process.env.CF_R2_DOCS_BUCKET_URL}/${packageName}/${version}.${normalizedEntryPoint}sitemap.api.json`,
|
||||
{
|
||||
next: { revalidate: isMain ? 0 : 604_800 },
|
||||
},
|
||||
|
||||
@@ -1,26 +1,23 @@
|
||||
import { sql } from '@vercel/postgres';
|
||||
import Cloudflare from 'cloudflare';
|
||||
import { ENV } from './env';
|
||||
|
||||
const client = new Cloudflare({
|
||||
apiToken: process.env.CF_D1_DOCS_API_KEY,
|
||||
});
|
||||
|
||||
export async function fetchVersions(packageName: string) {
|
||||
if (ENV.IS_LOCAL_DEV) {
|
||||
return [{ version: 'main' }];
|
||||
}
|
||||
|
||||
try {
|
||||
const { rows } = await sql<{
|
||||
version: string;
|
||||
}>`select version from documentation where name = ${packageName} order by
|
||||
case
|
||||
when version = 'main' then 0
|
||||
else 1
|
||||
end,
|
||||
case
|
||||
when version = 'main' then null
|
||||
else string_to_array(version, '.')::int[]
|
||||
end desc;
|
||||
`;
|
||||
const { result } = await client.d1.database.query(process.env.CF_D1_DOCS_ID!, {
|
||||
account_id: process.env.CF_ACCOUNT_ID!,
|
||||
sql: `select version from documentation where name = ? order by version desc;`,
|
||||
params: [packageName],
|
||||
});
|
||||
|
||||
return rows;
|
||||
return (result[0]?.results as { version: string }[] | undefined) ?? [];
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user