feat: discord-api-types on docs

This commit is contained in:
iCrawl
2025-05-13 01:33:48 +02:00
parent b3db92edfb
commit aa533efe26
15 changed files with 93 additions and 109 deletions

View File

@@ -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'];

View File

@@ -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();

View File

@@ -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();
}

View File

@@ -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 } },
);

View File

@@ -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 },
},

View File

@@ -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 [];
}