name: Generate and Deploy API Docs

on:
  push:
    branches: [ main ]
    paths:
      - 'src/**/*.ts'
      - 'src/**/*.tsx'
      - '!src/**/*.test.ts'
      - '!src/**/*.test.tsx'
      - '!src/**/*.spec.ts'
      - '!src/**/*.spec.tsx'
      - 'typedoc.json'
      - '.github/workflows/docs.yml'
  workflow_dispatch:

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'

      - name: Setup Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: latest

      - name: Install dependencies
        run: bun install

      - name: Generate API documentation
        run: bun run docs

      - name: Deploy to GitHub Pages
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          folder: docs
          branch: gh-pages
          target-folder: api-docs
          clean: true
          token: ${{ secrets.GITHUB_TOKEN }}
          clean-exclude: |
            .nojekyll
            CNAME
