From 82165d4f801ae922b3d80ad1e5cacdb0f58c3582 Mon Sep 17 00:00:00 2001 From: iCrawl Date: Fri, 22 Jul 2022 23:39:48 +0200 Subject: [PATCH] feat(IRS): next IRS --- packages/website/package.json | 17 +- packages/website/remix-env.d.ts | 3 - packages/website/remix.config.js | 9 - packages/website/src/entry.client.tsx | 4 - packages/website/src/entry.server.tsx | 19 - packages/website/src/pages/docs/[...slug].tsx | 47 +- packages/website/src/pages/index.tsx | 5 +- packages/website/src/root.tsx | 45 - .../src/routes/docs/$branchName/index.tsx | 3 - .../$branchName/packages/$packageName.tsx | 51 - .../$packageName/$memberName/index.tsx | 49 - packages/website/src/routes/docs/index.tsx | 3 - packages/website/src/routes/index.tsx | 54 - packages/website/src/server.ts | 4 - packages/website/src/styles/main.css | 7 + packages/website/tsconfig.json | 4 +- yarn.lock | 3913 +---------------- 17 files changed, 265 insertions(+), 3972 deletions(-) delete mode 100644 packages/website/remix-env.d.ts delete mode 100644 packages/website/remix.config.js delete mode 100644 packages/website/src/entry.client.tsx delete mode 100644 packages/website/src/entry.server.tsx delete mode 100644 packages/website/src/root.tsx delete mode 100644 packages/website/src/routes/docs/$branchName/index.tsx delete mode 100644 packages/website/src/routes/docs/$branchName/packages/$packageName.tsx delete mode 100644 packages/website/src/routes/docs/$branchName/packages/$packageName/$memberName/index.tsx delete mode 100644 packages/website/src/routes/docs/index.tsx delete mode 100644 packages/website/src/routes/index.tsx delete mode 100644 packages/website/src/server.ts diff --git a/packages/website/package.json b/packages/website/package.json index 5484cb7ff..82f0a9539 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -5,14 +5,10 @@ "private": true, "scripts": { "test": "vitest run", - "build": "yarn build:css && yarn build:remix", + "build": "next build", "build:css": "yarn generate:css", - "build:next": "next build", - "build:remix": "remix build", - "dev": "concurrently 'yarn dev:css' 'yarn dev:remix'", + "dev": "next dev", "dev:css": "yarn generate:css --watch", - "dev:next": "next dev", - "dev:remix": "remix dev", "generate:css": "unocss 'src/**/*.tsx' --out-file ./src/styles/unocss.css", "lint": "prettier --check . && eslint src --ext mjs,js,ts,tsx", "format": "prettier --write . && eslint src --ext mjs,js,ts,tsx --fix" @@ -51,21 +47,15 @@ "dependencies": { "@microsoft/api-extractor-model": "^7.22.1", "@microsoft/tsdoc": "^0.14.1", - "@remix-run/node": "^1.6.5", - "@remix-run/react": "^1.6.5", - "@remix-run/serve": "^1.6.5", - "@remix-run/server-runtime": "^1.6.5", - "@remix-run/vercel": "^1.6.5", "@vscode/codicons": "^0.0.31", "next": "^12.2.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.4.0", "react-syntax-highlighter": "^15.5.0", - "remix": "^1.6.5" + "sharp": "^0.30.7" }, "devDependencies": { - "@remix-run/dev": "^1.6.5", "@testing-library/cypress": "^8.0.3", "@testing-library/dom": "^8.16.0", "@testing-library/jest-dom": "^5.16.4", @@ -82,7 +72,6 @@ "@unocss/webpack": "^0.44.5", "@vitejs/plugin-react": "^2.0.0", "c8": "^7.12.0", - "concurrently": "^7.3.0", "cypress": "^10.3.1", "eslint": "^8.20.0", "eslint-config-marine": "^9.4.1", diff --git a/packages/website/remix-env.d.ts b/packages/website/remix-env.d.ts deleted file mode 100644 index 153c64b53..000000000 --- a/packages/website/remix-env.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable spaced-comment */ -/// -/// diff --git a/packages/website/remix.config.js b/packages/website/remix.config.js deleted file mode 100644 index 8c4426c25..000000000 --- a/packages/website/remix.config.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ -module.exports = { - serverBuildTarget: 'vercel', - server: process.env.NODE_ENV === 'development' ? undefined : './src/server.ts', - appDirectory: 'src', - ignoredRouteFiles: ['**/.*', '**/*.css', '**/*.test.{js,jsx,ts,tsx}'], -}; diff --git a/packages/website/src/entry.client.tsx b/packages/website/src/entry.client.tsx deleted file mode 100644 index e313b977e..000000000 --- a/packages/website/src/entry.client.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import { RemixBrowser } from '@remix-run/react'; -import { hydrateRoot } from 'react-dom/client'; - -hydrateRoot(document, ); diff --git a/packages/website/src/entry.server.tsx b/packages/website/src/entry.server.tsx deleted file mode 100644 index ed26b2fe3..000000000 --- a/packages/website/src/entry.server.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import type { EntryContext } from '@remix-run/node'; -import { RemixServer } from '@remix-run/react'; -import { renderToString } from 'react-dom/server'; - -export default function handleRequest( - request: Request, - responseStatusCode: number, - responseHeaders: Headers, - remixContext: EntryContext, -) { - const markup = renderToString(); - - responseHeaders.set('Content-Type', 'text/html'); - - return new Response(`${markup}`, { - status: responseStatusCode, - headers: responseHeaders, - }); -} diff --git a/packages/website/src/pages/docs/[...slug].tsx b/packages/website/src/pages/docs/[...slug].tsx index cd7ff807f..4e8f7bba6 100644 --- a/packages/website/src/pages/docs/[...slug].tsx +++ b/packages/website/src/pages/docs/[...slug].tsx @@ -1,12 +1,12 @@ /* eslint-disable @typescript-eslint/no-throw-literal */ -import type { GetStaticPaths, GetStaticProps, InferGetStaticPropsType } from 'next/types'; +import type { GetStaticPaths, GetStaticProps } from 'next/types'; import type { DocClass } from '~/DocModel/DocClass'; import type { DocEnum } from '~/DocModel/DocEnum'; import type { DocFunction } from '~/DocModel/DocFunction'; import type { DocInterface } from '~/DocModel/DocInterface'; import type { DocTypeAlias } from '~/DocModel/DocTypeAlias'; import type { DocVariable } from '~/DocModel/DocVariable'; -import { ItemSidebar } from '~/components/ItemSidebar'; +import { ItemSidebar, type ItemListProps } from '~/components/ItemSidebar'; import { Class } from '~/components/model/Class'; import { Enum } from '~/components/model/Enum'; import { Function } from '~/components/model/Function'; @@ -17,14 +17,31 @@ import { findMember } from '~/model.server'; import { createApiModel } from '~/util/api-model.server'; import { findPackage, getMembers } from '~/util/parse.server'; -export const getStaticPaths: GetStaticPaths = () => { +export const getStaticPaths: GetStaticPaths = async () => { const packages = ['builders', 'collection', 'proxy', 'rest', 'voice']; + const pkgs = ( + await Promise.all( + packages.map(async (packageName) => { + if (packageName === 'rest') { + return { params: { slug: ['main', 'packages', packageName, ''] } }; + } + + const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/main.api.json`); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const data = await res.json(); + + const model = createApiModel(data); + const pkg = findPackage(model, packageName); + + return getMembers(pkg!).map((member) => ({ params: { slug: ['main', 'packages', packageName, member.name] } })); + }), + ) + ).flat(); + return { - paths: packages.map((pkg) => ({ - params: { slug: [pkg] }, - })), - fallback: 'blocking', + paths: pkgs, + fallback: true, }; }; @@ -35,8 +52,7 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { status: 404, }); - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions - const res = await fetch(`https://docs.discordjs.dev/docs/${packageName}/${branchName}.api.json`); + const res = await fetch(`https://docs.discordjs.dev/docs/${packageName!}/${branchName!}.api.json`); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const data = await res.json().catch(() => { throw UnknownResponse; @@ -51,8 +67,11 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { return { props: { - members: getMembers(pkg), - member: findMember(model, packageName!, memberName!)!.toJSON(), + packageName, + data: { + members: getMembers(pkg), + member: memberName ? findMember(model, packageName!, memberName)!.toJSON() : null, + }, }, }; }; @@ -77,13 +96,13 @@ const member = (props: any) => { } }; -export default function Slug(props: InferGetStaticPropsType) { +export default function Slug(props: Partial } }>) { return (
- + {props.packageName && props.data ? : null}
-
{props.member ? member(props.member) : null}
+
{props.data?.member ? member(props.data.member) : null}
); } diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index c6dd81b8f..d48aee2bb 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -41,15 +41,14 @@ export default function IndexRoute() {
- +
Vercel diff --git a/packages/website/src/root.tsx b/packages/website/src/root.tsx deleted file mode 100644 index 73416b9aa..000000000 --- a/packages/website/src/root.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import type { MetaFunction, LinksFunction } from '@remix-run/node'; -import { Links, LiveReload, Meta, Outlet, Scripts, ScrollRestoration } from '@remix-run/react'; -import unocssReset from '@unocss/reset/normalize.css'; -import maincss from './styles/main.css'; -import unocss from './styles/unocss.css'; - -export const links: LinksFunction = () => [ - { rel: 'stylesheet', href: unocssReset }, - { rel: 'stylesheet', href: maincss }, - { rel: 'stylesheet', href: unocss }, -]; - -export const meta: MetaFunction = () => ({ - charset: 'utf-8', - title: 'discord.js', - viewport: 'width=device-width,initial-scale=1', -}); - -export default function App() { - return ( - - - - - - -