name: Check on: workflow_dispatch: pull_request: branches: [main] push: branches: [main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: {} jobs: lint: name: Lint runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - run: pnpm lint types: name: Types runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - run: pnpm check - run: pnpm test-types --target '>=5.9' build: name: Build if: github.event_name == 'pull_request' runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - name: Set strip internals config run: | sed -i 's/"stripInternal": false/"stripInternal": true/' tsconfig.base.json - run: pnpm build types-deno: name: Types on Deno runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup with: deno-version: v2.8.3 - name: Set strip internals config run: | sed -i 's/"stripInternal": false/"stripInternal": true/' tsconfig.base.json - run: deno check . bundle: name: Bundle if: github.event_name == 'pull_request' runs-on: ubuntu-latest permissions: contents: read id-token: write pull-requests: write timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - name: Clone base ref uses: actions/checkout@v6 with: path: base ref: ${{ github.event.pull_request.base.ref }} - name: Set strip internals config run: | sed -i 's/"stripInternal": false/"stripInternal": true/' tsconfig.base.json sed -i 's/"stripInternal": false/"stripInternal": true/' base/tsconfig.base.json - name: Build run: | pnpm build & cd base && pnpm install && pnpm build & wait - name: Compare bundle size run: node ./packages/tools/bundle/src/bin.ts compare --base-dir base/packages/tools/bundle/fixtures - name: Upload stats artifact if: github.event_name == 'pull_request' uses: actions/upload-artifact@v4 with: name: bundle-stats path: stats.txt if-no-files-found: error test: name: Test runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 strategy: fail-fast: false matrix: shard: [1/2, 2/2] runtime: [Node, Deno] steps: - uses: actions/checkout@v6 - name: Pre-pull test container images run: | docker pull testcontainers/ryuk:0.14.0 & docker pull ghcr.io/tursodatabase/libsql-server:main & docker pull postgres:alpine & docker pull mysql:lts & docker pull vitess/vttestserver:mysql80 & docker pull redis:alpine & wait - name: Install dependencies if: matrix.runtime == 'Node' uses: ./.github/actions/setup - name: Test if: matrix.runtime == 'Node' run: pnpm test --shard ${{ matrix.shard }} - name: Install dependencies if: matrix.runtime == 'Deno' uses: ./.github/actions/setup with: deno-version: v2.8.3 - name: Test if: matrix.runtime == 'Deno' run: deno task test --shard ${{ matrix.shard }} docgen: name: Documentation Generation runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - name: Generate Documentation run: pnpm docgen ai-docgen: name: AI Documentation Generation runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - name: Generate AI Documentation run: pnpm ai-docgen - name: Verify AI Documentation is up-to-date run: | if [ -n "$(git status --short)" ]; then git status --short echo "Run 'pnpm ai-docgen' and commit generated changes." exit 1 fi circular: name: Circular Dependencies runs-on: ubuntu-latest permissions: contents: read timeout-minutes: 10 steps: - uses: actions/checkout@v6 - name: Install dependencies uses: ./.github/actions/setup - name: Check for circular dependencies run: pnpm circular