diff --git a/apps/guide/src/app/layout.tsx b/apps/guide/src/app/layout.tsx index 89da47dd6..a44e855a5 100644 --- a/apps/guide/src/app/layout.tsx +++ b/apps/guide/src/app/layout.tsx @@ -1,5 +1,5 @@ import { Analytics } from '@vercel/analytics/react'; -import type { Metadata } from 'next/types'; +import type { Metadata } from 'next'; import type { PropsWithChildren } from 'react'; import { Providers } from './providers'; import { DESCRIPTION } from '~/util/constants'; diff --git a/apps/website/next.config.js b/apps/website/next.config.js index 86a48f773..919472d60 100644 --- a/apps/website/next.config.js +++ b/apps/website/next.config.js @@ -10,10 +10,6 @@ export default withBundleAnalyzer({ eslint: { ignoreDuringBuilds: true, }, - // Until Next.js fixes their type issues - typescript: { - ignoreBuildErrors: true, - }, outputFileTracing: true, experimental: { appDir: true, diff --git a/apps/website/src/app/api/cron/route.ts b/apps/website/src/app/api/cron/route.ts index 217f8e7c1..a6313f992 100644 --- a/apps/website/src/app/api/cron/route.ts +++ b/apps/website/src/app/api/cron/route.ts @@ -1,8 +1,7 @@ import { get } from '@vercel/edge-config'; import { NextResponse } from 'next/server'; -import type { ServerRuntime } from 'next/types'; -export const runtime: ServerRuntime = 'edge'; +export const runtime = 'edge'; export async function GET() { try { diff --git a/apps/website/src/app/api/dynamic-open-graph.png/route.tsx b/apps/website/src/app/api/dynamic-open-graph.png/route.tsx index f284d62d9..3e29d5da6 100644 --- a/apps/website/src/app/api/dynamic-open-graph.png/route.tsx +++ b/apps/website/src/app/api/dynamic-open-graph.png/route.tsx @@ -3,9 +3,8 @@ import type { ApiItemKind } from '@microsoft/api-extractor-model'; import { ImageResponse } from '@vercel/og'; import type { NextRequest } from 'next/server'; -import type { ServerRuntime } from 'next/types'; -export const runtime: ServerRuntime = 'edge'; +export const runtime = 'edge'; const fonts = Promise.all([ fetch(new URL('../../../assets/fonts/Inter-Regular.ttf', import.meta.url)).then(async (res) => res.arrayBuffer()), diff --git a/apps/website/src/app/api/open-graph.png/route.tsx b/apps/website/src/app/api/open-graph.png/route.tsx index 184f4f51c..9ebc85d4f 100644 --- a/apps/website/src/app/api/open-graph.png/route.tsx +++ b/apps/website/src/app/api/open-graph.png/route.tsx @@ -1,9 +1,8 @@ /* eslint-disable react/no-unknown-property */ import { ImageResponse } from '@vercel/og'; -import type { ServerRuntime } from 'next/types'; -export const runtime: ServerRuntime = 'edge'; +export const runtime = 'edge'; const fonts = fetch(new URL('../../../assets/fonts/Inter-Black.ttf', import.meta.url)).then(async (res) => res.arrayBuffer(), diff --git a/apps/website/src/app/api/packages/[package]/[version]/[item]/route.ts b/apps/website/src/app/api/packages/[package]/[version]/[item]/route.ts deleted file mode 100644 index 5674c2f2f..000000000 --- a/apps/website/src/app/api/packages/[package]/[version]/[item]/route.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { generatePath } from '@discordjs/api-extractor-utils'; -import { tryResolveSummaryText } from '@discordjs/scripts'; -import type { ApiClass, ApiDeclaredItem, ApiItemContainerMixin } from '@microsoft/api-extractor-model'; -import { ApiItemKind, ExcerptTokenKind } from '@microsoft/api-extractor-model'; -import type { NextRequest } from 'next/server'; -import { NextResponse } from 'next/server'; -import { memberPredicate } from '~/components/documentation/util'; -import { fetchMember } from '~/util/fetchMember'; -import { resolveMembers } from '~/util/members'; - -export const revalidate = 3_600; - -export async function GET(_: NextRequest, { params }: { params: { item: string; package: string; version: string } }) { - const member = await fetchMember({ - package: params.package, - version: params.version, - item: params.item, - }); - - if (!member) { - return new Response(null, { status: 404 }); - } - - const model = member.getAssociatedModel(); - const excerpt = (member as ApiClass).extendsType?.excerpt; - - return NextResponse.json({ - name: member.displayName, - kind: member.kind, - extendsFrom: - excerpt?.spannedTokens - .map((token) => { - if (token.kind === ExcerptTokenKind.Reference) { - const referenceItem = member - .getAssociatedModel() - ?.resolveDeclarationReference(token.canonicalReference!, model).resolvedApiItem; - - if (referenceItem) { - return { - name: referenceItem.displayName, - kind: referenceItem.kind, - summary: tryResolveSummaryText(referenceItem as unknown as ApiDeclaredItem) ?? '', - path: generatePath(referenceItem.getHierarchy(), params.version), - }; - } - } - - return null; - }) - .filter(Boolean) ?? null, - summary: tryResolveSummaryText(member as ApiDeclaredItem) ?? '', - path: generatePath(member.getHierarchy(), params.version), - members: - member.kind === ApiItemKind.Class || member.kind === ApiItemKind.Interface - ? resolveMembers(member as ApiItemContainerMixin, memberPredicate).map((member) => { - const isDeprecated = Boolean(member.item.tsdocComment?.deprecatedBlock); - - return { - inheritedFrom: member.inherited - ? { - name: member.inherited.displayName, - kind: member.inherited.kind, - summary: tryResolveSummaryText(member.inherited as unknown as ApiDeclaredItem) ?? '', - path: generatePath(member.inherited.getHierarchy(), params.version), - } - : null, - name: member.item.displayName, - kind: member.item.kind, - deprecated: isDeprecated, - // @ts-expect-error: Typings - readonly: member.item.isReadonly ?? false, - optional: member.item.isOptional, - // @ts-expect-error: Typings - static: member.item.isStatic ?? false, - // @ts-expect-error: Typings - protected: member.item.isProtected ?? false, - summary: tryResolveSummaryText(member.item as ApiDeclaredItem) ?? '', - path: generatePath(member.item.getHierarchy(), params.version), - }; - }) - : null, - }); -} diff --git a/apps/website/src/app/docAPI.ts b/apps/website/src/app/docAPI.ts index 93accb64d..c13529db3 100644 --- a/apps/website/src/app/docAPI.ts +++ b/apps/website/src/app/docAPI.ts @@ -6,6 +6,7 @@ import { connect } from '@planetscale/database'; const sql = connect({ async fetch(input, init) { + // @ts-expect-error: Deleting cache or setting as undefined, same thing return fetch(input, { ...init, cache: undefined, next: { revalidate: 3_600 } }); }, url: process.env.DATABASE_URL!, diff --git a/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx b/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx index fe51056d0..3514e7db5 100644 --- a/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx +++ b/apps/website/src/app/docs/packages/[package]/[version]/[item]/page.tsx @@ -15,8 +15,8 @@ import type { ApiFunction, } from '@microsoft/api-extractor-model'; import { ApiItemKind, ApiModel } from '@microsoft/api-extractor-model'; +import type { Metadata } from 'next'; import { notFound } from 'next/navigation'; -import type { Metadata } from 'next/types'; import { fetchModelJSON } from '~/app/docAPI'; import { Class } from '~/components/model/Class'; import { Interface } from '~/components/model/Interface'; @@ -42,11 +42,11 @@ async function fetchHeadMember({ package: packageName, version, item }: ItemRout return findMember(model, packageName, memberName); } -function resolveMemberSearchParams(packageName: string, member: ApiItem) { +function resolveMemberSearchParams(packageName: string, member?: ApiItem) { const params = new URLSearchParams({ pkg: packageName, - kind: member?.kind, - name: member?.displayName, + kind: member?.kind ?? '', + name: member?.displayName ?? '', }); switch (member?.kind) { diff --git a/apps/website/src/app/docs/packages/[package]/page.tsx b/apps/website/src/app/docs/packages/[package]/page.tsx index 106c569b2..7b32c4a72 100644 --- a/apps/website/src/app/docs/packages/[package]/page.tsx +++ b/apps/website/src/app/docs/packages/[package]/page.tsx @@ -3,10 +3,9 @@ import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; import { VscVersions } from '@react-icons/all-files/vsc/VscVersions'; import Link from 'next/link'; import { notFound } from 'next/navigation'; -import type { ServerRuntime } from 'next/types'; import { PACKAGES } from '~/util/constants'; -export const runtime: ServerRuntime = 'edge'; +export const runtime = 'edge'; async function getData(pkg: string) { if (!PACKAGES.includes(pkg)) { diff --git a/apps/website/src/app/docs/packages/page.tsx b/apps/website/src/app/docs/packages/page.tsx index d3dc0629d..6b355b0dc 100644 --- a/apps/website/src/app/docs/packages/page.tsx +++ b/apps/website/src/app/docs/packages/page.tsx @@ -3,10 +3,9 @@ import { VscArrowLeft } from '@react-icons/all-files/vsc/VscArrowLeft'; import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; import { VscPackage } from '@react-icons/all-files/vsc/VscPackage'; import Link from 'next/link'; -import type { ServerRuntime } from 'next/types'; import { PACKAGES } from '~/util/constants'; -export const runtime: ServerRuntime = 'edge'; +export const runtime = 'edge'; export default function Page() { return ( diff --git a/apps/website/src/app/layout.tsx b/apps/website/src/app/layout.tsx index c72b28ad1..e5e868a55 100644 --- a/apps/website/src/app/layout.tsx +++ b/apps/website/src/app/layout.tsx @@ -1,5 +1,5 @@ import { Analytics } from '@vercel/analytics/react'; -import type { Metadata } from 'next/types'; +import type { Metadata } from 'next'; import type { PropsWithChildren } from 'react'; import { Providers } from './providers'; import { DESCRIPTION } from '~/util/constants'; @@ -44,7 +44,7 @@ export const metadata: Metadata = { themeColor: [ { media: '(prefers-color-scheme: light)', color: '#f1f3f5' }, - { media: '(prefers-color-scheme: dark)', color: '#181818' }, + { media: '(prefers-color-scheme: dark)', color: '#1c1c1e' }, ], colorScheme: 'light dark', @@ -68,7 +68,7 @@ export const metadata: Metadata = { }, other: { - 'msapplication-TileColor': '#090a16', + 'msapplication-TileColor': '#1c1c1e', }, }; diff --git a/apps/website/src/app/not-found.tsx b/apps/website/src/app/not-found.tsx index 684d76383..ebb20b81b 100644 --- a/apps/website/src/app/not-found.tsx +++ b/apps/website/src/app/not-found.tsx @@ -7,7 +7,7 @@ export default function NotFound() {

Not found.

Take me back diff --git a/apps/website/src/components/documentation/tsdoc/TSDoc.tsx b/apps/website/src/components/documentation/tsdoc/TSDoc.tsx index adad6bf37..38a481045 100644 --- a/apps/website/src/components/documentation/tsdoc/TSDoc.tsx +++ b/apps/website/src/components/documentation/tsdoc/TSDoc.tsx @@ -74,6 +74,7 @@ export function TSDoc({ item, tsdoc }: { item: ApiItem; tsdoc: DocNode }): JSX.E case DocNodeKind.FencedCode: { const { language, code } = tsdoc as DocFencedCode; + // @ts-expect-error async component return ; } diff --git a/apps/website/src/util/model.ts b/apps/website/src/util/model.ts index 523dd0676..0fcdcf479 100644 --- a/apps/website/src/util/model.ts +++ b/apps/website/src/util/model.ts @@ -1,4 +1,4 @@ -import type { ApiEntryPoint, ApiItem, ApiModel } from '@microsoft/api-extractor-model'; +import type { ApiEntryPoint, ApiModel } from '@microsoft/api-extractor-model'; export function findMemberByKey(model: ApiModel, packageName: string, containerKey: string) { const pkg = model.tryGetPackageByName(`@discordjs/${packageName}`)!;