diff --git a/packages/website/next.config.js b/packages/website/next.config.js index a970d41ffa75..9709d3ec2e52 100644 --- a/packages/website/next.config.js +++ b/packages/website/next.config.js @@ -1,6 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires -const UnoCSS = require('@unocss/webpack').default; - /** * @type {import('next').NextConfig} */ @@ -20,19 +17,4 @@ module.exports = { dangerouslyAllowSVG: true, contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", }, - webpack(config, context) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call - config.plugins.push(UnoCSS()); - - if (context.buildId !== 'development') { - // * disable filesystem cache for build - // * https://github.com/unocss/unocss/issues/419 - // * https://webpack.js.org/configuration/cache/ - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - config.cache = false; - } - - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - return config; - }, }; diff --git a/packages/website/package.json b/packages/website/package.json index 1b2c7c080de1..278fac0bfe68 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -5,9 +5,11 @@ "private": true, "scripts": { "test": "vitest run", - "build": "next build", + "build": "yarn build:css && yarn build:next", + "build:next": "next build", "build:css": "yarn generate:css", - "dev": "next dev", + "dev": "concurrently 'yarn dev:css' 'yarn dev:next'", + "dev:next": "next dev", "dev:css": "yarn generate:css --watch", "generate:css": "unocss 'src/**/*.tsx' --out-file ./src/styles/unocss.css", "lint": "prettier --check . && eslint src --ext mjs,js,ts,tsx", @@ -70,9 +72,9 @@ "@unocss/cli": "^0.44.5", "@unocss/preset-web-fonts": "^0.44.5", "@unocss/reset": "^0.44.5", - "@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/src/middleware.ts b/packages/website/src/middleware.ts index 9d88aeccf5c5..10f5599636d8 100644 --- a/packages/website/src/middleware.ts +++ b/packages/website/src/middleware.ts @@ -2,9 +2,9 @@ import { NextResponse } from 'next/server'; import type { NextRequest } from 'next/server'; export default function middleware(request: NextRequest) { - const packages = ['builders', 'collection', 'proxy', 'rest', 'voice']; - if (packages.some((pkg) => request.nextUrl.pathname.includes(pkg))) { - return NextResponse.redirect(new URL('/docs/packages/collection/Collection', request.url)); - } - return NextResponse.next(); + return NextResponse.rewrite(new URL('/docs/main/packages/builders', request.url)); } + +export const config = { + matcher: ['/docs', '/docs/:branch', '/docs/:branch/packages'], +}; diff --git a/packages/website/src/pages/_app.tsx b/packages/website/src/pages/_app.tsx index 568e0de71590..ed6740a68686 100644 --- a/packages/website/src/pages/_app.tsx +++ b/packages/website/src/pages/_app.tsx @@ -1,6 +1,6 @@ import type { AppProps } from 'next/app'; import '@unocss/reset/normalize.css'; -import 'uno.css'; +import '../styles/unocss.css'; import '../styles/main.css'; export default function MyApp({ Component, pageProps }: AppProps) { diff --git a/packages/website/src/pages/docs/[...slug].tsx b/packages/website/src/pages/docs/[...slug].tsx index 4e28884feba7..b4351c5ac522 100644 --- a/packages/website/src/pages/docs/[...slug].tsx +++ b/packages/website/src/pages/docs/[...slug].tsx @@ -27,17 +27,21 @@ export const getStaticPaths: GetStaticPaths = async () => { 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(); + try { + 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); + const model = createApiModel(data); + const pkg = findPackage(model, packageName); - return [ - { params: { slug: ['main', 'packages', packageName] } }, - ...getMembers(pkg!).map((member) => ({ params: { slug: ['main', 'packages', packageName, member.name] } })), - ]; + return [ + { params: { slug: ['main', 'packages', packageName] } }, + ...getMembers(pkg!).map((member) => ({ params: { slug: ['main', 'packages', packageName, member.name] } })), + ]; + } catch { + return { params: { slug: ['', '', '', ''] } }; + } }), ) ).flat(); @@ -51,22 +55,30 @@ export const getStaticPaths: GetStaticPaths = async () => { export const getStaticProps: GetStaticProps = async ({ params }) => { const [branchName = 'main', , packageName = 'builders', memberName] = params!.slug as string[]; - 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(); + try { + 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(); - const model = createApiModel(data); - const pkg = findPackage(model, packageName); + const model = createApiModel(data); + const pkg = findPackage(model, packageName); - return { - props: { - packageName, - data: { - members: pkg ? getMembers(pkg) : [], - member: memberName ? findMember(model, packageName, memberName)?.toJSON() ?? null : null, + return { + props: { + packageName, + data: { + members: pkg ? getMembers(pkg) : [], + member: memberName ? findMember(model, packageName, memberName)?.toJSON() ?? null : null, + }, }, - }, - }; + }; + } catch { + return { + props: { + error: 'FetchError', + }, + }; + } }; const member = (props: any) => { @@ -89,8 +101,12 @@ const member = (props: any) => { } }; -export default function Slug(props: Partial } }>) { - return ( +export default function Slug( + props: Partial } }>, +) { + return props.error ? ( +
{props.error}
+ ) : (
{props.packageName && props.data ? : null} diff --git a/yarn.lock b/yarn.lock index 18bce35a1c97..f5d0a36238fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1946,10 +1946,10 @@ __metadata: "@unocss/cli": ^0.44.5 "@unocss/preset-web-fonts": ^0.44.5 "@unocss/reset": ^0.44.5 - "@unocss/webpack": ^0.44.5 "@vitejs/plugin-react": ^2.0.0 "@vscode/codicons": ^0.0.31 c8: ^7.12.0 + concurrently: ^7.3.0 cypress: ^10.3.1 eslint: ^8.20.0 eslint-config-marine: ^9.4.1 @@ -3942,23 +3942,6 @@ __metadata: languageName: node linkType: hard -"@unocss/webpack@npm:^0.44.5": - version: 0.44.5 - resolution: "@unocss/webpack@npm:0.44.5" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@rollup/pluginutils": ^4.2.1 - "@unocss/config": 0.44.5 - "@unocss/core": 0.44.5 - magic-string: ^0.26.2 - unplugin: ^0.7.0 - webpack-sources: ^3.2.3 - peerDependencies: - webpack: ^4 || ^5 - checksum: 1051c03a582f73ecc99f86d08fee03645a648fbd55c1bc4c68c458edcf610d485845750aab8c2a773f70966db1c72f3987197ca4b64ea4407109a75d6ad40b58 - languageName: node - linkType: hard - "@vercel/build-utils@npm:5.0.4": version: 5.0.4 resolution: "@vercel/build-utils@npm:5.0.4" @@ -5714,6 +5697,25 @@ __metadata: languageName: node linkType: hard +"concurrently@npm:^7.3.0": + version: 7.3.0 + resolution: "concurrently@npm:7.3.0" + dependencies: + chalk: ^4.1.0 + date-fns: ^2.16.1 + lodash: ^4.17.21 + rxjs: ^7.0.0 + shell-quote: ^1.7.3 + spawn-command: ^0.0.2-1 + supports-color: ^8.1.0 + tree-kill: ^1.2.2 + yargs: ^17.3.1 + bin: + concurrently: dist/bin/concurrently.js + checksum: 5de845e4947c550a6ff74ecc80e1897109abe339fe8a7fa117e7b8978362566ac4ee070e4475bdaa6fc453f780fadb9089739a02606e27e04affaa7dd8905d2d + languageName: node + linkType: hard + "config-master@npm:^3.1.0": version: 3.1.0 resolution: "config-master@npm:3.1.0" @@ -6180,6 +6182,13 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^2.16.1": + version: 2.29.1 + resolution: "date-fns@npm:2.29.1" + checksum: 9d07f77dffc1eb8c213391bde39f2963ffe7c0019d9edde14487882d627224f3a39b963e6e99d0cc58afff220a6a1a7e8864d2789958f4eaa77714de94d4d076 + languageName: node + linkType: hard + "dateformat@npm:^3.0.0": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -13251,7 +13260,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": +"rxjs@npm:^7.0.0, rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": version: 7.5.6 resolution: "rxjs@npm:7.5.6" dependencies: @@ -13400,6 +13409,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.7.3": + version: 1.7.3 + resolution: "shell-quote@npm:1.7.3" + checksum: aca58e73a3a5d933d02e0bdddedc53ee14f7c2ec264f97ac915b9d4482d077a38e422aa664631d60a672cd3cdb4054eb2e6c0303f54882453dacb6483e482d34 + languageName: node + linkType: hard + "shelljs@npm:^0.8.3": version: 0.8.5 resolution: "shelljs@npm:0.8.5" @@ -13656,6 +13672,13 @@ __metadata: languageName: node linkType: hard +"spawn-command@npm:^0.0.2-1": + version: 0.0.2 + resolution: "spawn-command@npm:0.0.2" + checksum: e35c5d28177b4d461d33c88cc11f6f3a5079e2b132c11e1746453bbb7a0c0b8a634f07541a2a234fa4758239d88203b758def509161b651e81958894c0b4b64b + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.1.1 resolution: "spdx-correct@npm:3.1.1" @@ -14074,7 +14097,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -15159,32 +15182,6 @@ __metadata: languageName: node linkType: hard -"unplugin@npm:^0.7.0": - version: 0.7.2 - resolution: "unplugin@npm:0.7.2" - dependencies: - acorn: ^8.7.1 - chokidar: ^3.5.3 - webpack-sources: ^3.2.3 - webpack-virtual-modules: ^0.4.4 - peerDependencies: - esbuild: ">=0.13" - rollup: ^2.50.0 - vite: ^2.3.0 || ^3.0.0-0 - webpack: 4 || 5 - peerDependenciesMeta: - esbuild: - optional: true - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - checksum: 5449e8cff143b3c8a47f91a9274e2c9d42bdaa7ab5c95a0ea10db87d8bbde9cd85fca9c63d3c319c5b8730e8a490ce49706620151b69b9566172283c980f44bd - languageName: node - linkType: hard - "untildify@npm:^4.0.0": version: 4.0.0 resolution: "untildify@npm:4.0.0" @@ -15538,20 +15535,6 @@ __metadata: languageName: node linkType: hard -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.4.4": - version: 0.4.4 - resolution: "webpack-virtual-modules@npm:0.4.4" - checksum: 6720b4c47d76dc9cbaff557562506c192da7560a90395e9918a418e257a0c0cda9f5e3ac92107ec0789f8f23ad942313bd8cdebc95031d0adef1032bf6142bc7 - languageName: node - linkType: hard - "whatwg-encoding@npm:^2.0.0": version: 2.0.0 resolution: "whatwg-encoding@npm:2.0.0"