Skip to content

Commit

Permalink
fix: correctly configure middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
iCrawl committed Jul 23, 2022
1 parent 90cbd2b commit 5f667c0
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 111 deletions.
18 changes: 0 additions & 18 deletions 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}
*/
Expand All @@ -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;
},
};
8 changes: 5 additions & 3 deletions packages/website/package.json
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
10 changes: 5 additions & 5 deletions packages/website/src/middleware.ts
Expand Up @@ -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'],
};
2 changes: 1 addition & 1 deletion 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) {
Expand Down
64 changes: 40 additions & 24 deletions packages/website/src/pages/docs/[...slug].tsx
Expand Up @@ -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();
Expand All @@ -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) => {
Expand All @@ -89,8 +101,12 @@ const member = (props: any) => {
}
};

export default function Slug(props: Partial<ItemListProps & { data: { member: ReturnType<typeof findMember> } }>) {
return (
export default function Slug(
props: Partial<ItemListProps & { error?: string; data: { member: ReturnType<typeof findMember> } }>,
) {
return props.error ? (
<div className="flex max-w-full h-full bg-white dark:bg-dark">{props.error}</div>
) : (
<div className="flex flex-col lg:flex-row overflow-hidden max-w-full h-full bg-white dark:bg-dark">
<div className="w-full lg:min-w-1/4 lg:max-w-1/4">
{props.packageName && props.data ? <ItemSidebar packageName={props.packageName} data={props.data} /> : null}
Expand Down
103 changes: 43 additions & 60 deletions yarn.lock
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down

1 comment on commit 5f667c0

@vercel
Copy link

@vercel vercel bot commented on 5f667c0 Jul 23, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.