diff --git a/.github/workflows/deploy-website.yml b/.github/workflows/deploy-website.yml new file mode 100644 index 000000000..e88d02a93 --- /dev/null +++ b/.github/workflows/deploy-website.yml @@ -0,0 +1,46 @@ +name: Deploy website +on: + push: + branches: + - 'main' + paths: + - 'apps/website/**' + workflow_dispatch: +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} + cancel-in-progress: true +jobs: + deploy-website: + name: Deploy website + runs-on: ubuntu-latest + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + if: github.repository_owner == 'discordjs' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install dependencies + uses: ./packages/actions/src/pnpmCache + + - name: Build dependencies + run: pnpm run build + + - name: Pull vercel production environment + run: pnpm exec vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build website Artifacts + run: pnpm exec vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build & deploy website + uses: BetaHuhn/deploy-to-vercel-action@643bc80032ba62ca41d1a9aaba7b38b51c2b8646 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + VERCEL_SCOPE: 'discordjs' + GITHUB_DEPLOYMENT_ENV: 'Production – discord-js' + PRODUCTION: true + PREBUILT: true diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 816a7b2e4..7bcbf3a43 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -5,11 +5,8 @@ on: - 'main' paths: - 'packages/*/src/**' - - '!packages/actions/**' - '!packages/create-discord-bot/**' - - '!packages/docgen/**' - '!packages/proxy-container/**' - - '!packages/scripts/**' - '!packages/ui/**' tags: - '**' @@ -157,14 +154,29 @@ jobs: uses: ./packages/actions/src/uploadSearchIndices deploy-website: - needs: [build-docs, build-indices] + needs: build-docs name: Deploy website runs-on: ubuntu-latest + env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} if: github.repository_owner == 'discordjs' steps: - name: Checkout repository uses: actions/checkout@v3 + - name: Install dependencies + uses: ./packages/actions/src/pnpmCache + + - name: Build dependencies + run: pnpm run build + + - name: Pull vercel production environment + run: pnpm exec vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build website Artifacts + run: pnpm exec vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + - name: Build & deploy website uses: BetaHuhn/deploy-to-vercel-action@643bc80032ba62ca41d1a9aaba7b38b51c2b8646 with: @@ -175,3 +187,4 @@ jobs: VERCEL_SCOPE: 'discordjs' GITHUB_DEPLOYMENT_ENV: 'Production – discord-js' PRODUCTION: true + PREBUILT: true diff --git a/apps/website/src/app/docAPI.ts b/apps/website/src/app/docAPI.ts index f6fea6e89..0b5becb0c 100644 --- a/apps/website/src/app/docAPI.ts +++ b/apps/website/src/app/docAPI.ts @@ -25,12 +25,11 @@ export async function fetchVersions(packageName: string): Promise { export async function fetchModelJSON(packageName: string, version: string): Promise { if (process.env.NEXT_PUBLIC_LOCAL_DEV) { - const res = await readFile( - join(process.cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'), - 'utf8', - ); + let res; try { + res = await readFile(join(process.cwd(), '..', '..', 'packages', packageName, 'docs', 'docs.api.json'), 'utf8'); + return JSON.parse(res); } catch { console.log(res); diff --git a/apps/website/src/components/CmdK.tsx b/apps/website/src/components/CmdK.tsx index c50442fd9..1db8bf393 100644 --- a/apps/website/src/components/CmdK.tsx +++ b/apps/website/src/components/CmdK.tsx @@ -4,6 +4,7 @@ import type { ApiItemKind } from '@discordjs/api-extractor-model'; import { VscArrowRight } from '@react-icons/all-files/vsc/VscArrowRight'; import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass'; import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum'; +import { VscSymbolEvent } from '@react-icons/all-files/vsc/VscSymbolEvent'; import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface'; import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod'; import { VscSymbolProperty } from '@react-icons/all-files/vsc/VscSymbolProperty'; @@ -30,6 +31,8 @@ function resolveIcon(item: keyof typeof ApiItemKind) { return ; case 'Variable': return ; + case 'Event': + return ; default: return ; } @@ -98,7 +101,9 @@ export function CmdKDialog() { useEffect(() => { const searchDoc = async (searchString: string, version: string) => { - const res = await client.index(`${packageName}-${version}`).search(searchString, { limit: 5 }); + const res = await client + .index(`${packageName?.replaceAll('.', '-')}-${version}`) + .search(searchString, { limit: 5 }); setSearchResults(res.hits); }; diff --git a/packages/scripts/src/generateIndex.ts b/packages/scripts/src/generateIndex.ts index 8fbe3b858..20db8616e 100644 --- a/packages/scripts/src/generateIndex.ts +++ b/packages/scripts/src/generateIndex.ts @@ -181,7 +181,7 @@ export async function generateAllIndices({ if (writeToFile) { await writeIndexToFileSystem(members, pkg, version); } else { - indices.push({ index: `${pkg}-${version.replaceAll('.', '-')}`, data: members }); + indices.push({ index: `${pkg.replaceAll('.', '-')}-${version.replaceAll('.', '-')}`, data: members }); } } }