name: autofix.ci # needed to securely identify the workflow

on:
  pull_request:
    paths-ignore:
      - "docs/**"

permissions:
  contents: read

jobs:
  code:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
      - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
        with:
          node-version: lts/*
          cache: "pnpm"

      - name: Install dependencies
        run: pnpm install

      - name: Check engine ranges, peer dependency ranges and installed versions
        run: pnpm installed-check --no-include-workspace-root --ignore-dev --workspace-ignore='test/**,playground' --fix

      - name: Build (stub)
        run: pnpm dev:prepare

      - name: Test (unit)
        run: pnpm test:unit -u

      - name: Test (runtime unit)
        run: pnpm test:runtime -u

      - name: Run build
        run: pnpm build

      - name: Assert bundle size (renovate)
        if: ${{ contains(github.head_ref, 'renovate') }}
        run: pnpm vitest run bundle

      - name: Update bundle size (renovate)
        if: failure()
        run: |
          pnpm vitest run bundle -u
          pnpm dedupe

      - name: Update bundle size
        if: ${{ !contains(github.head_ref, 'renovate') }}
        run: pnpm vitest run bundle -u

      - name: Lint (code)
        run: pnpm lint:fix

      - uses: autofix-ci/action@551dded8c6cc8a1054039c8bc0b8b48c51dfc6ef