name: Deploy Documentation on: push: branches: [master] paths: - 'docs/**' - 'packages/**' - 'typedoc.json' - 'package.json' - '.github/workflows/docs.yml' workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20.x' cache: 'npm' - name: Setup Pages uses: actions/configure-pages@v4 - name: Install dependencies run: npm ci - name: Build core package run: npm run build:core - name: Generate API documentation run: npm run docs:api - name: Build documentation run: npm run docs:build - name: Add COOP/COEP headers for SharedArrayBuffer support run: | # Create _headers file for Netlify compatibility echo "/*" > docs/.vitepress/dist/_headers echo " Cross-Origin-Embedder-Policy: require-corp" >> docs/.vitepress/dist/_headers echo " Cross-Origin-Opener-Policy: same-origin" >> docs/.vitepress/dist/_headers # Create .htaccess file for Apache compatibility (GitHub Pages sometimes uses this) echo "Header always set Cross-Origin-Embedder-Policy require-corp" > docs/.vitepress/dist/.htaccess echo "Header always set Cross-Origin-Opener-Policy same-origin" >> docs/.vitepress/dist/.htaccess # Create a meta tag fallback in a headers.html file that can be included echo '' > docs/.vitepress/dist/headers.html echo '' >> docs/.vitepress/dist/headers.html - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: docs/.vitepress/dist deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} needs: build runs-on: ubuntu-latest steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4