Skip to content

chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.39.1 to 8.52.0 #71

chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.39.1 to 8.52.0

chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.39.1 to 8.52.0 #71

Workflow file for this run

name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run linter
run: npm run lint
- name: Check TypeScript
run: npm run type-check
test:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v5
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Generate coverage report
if: matrix.node-version == '20'
run: npm run test:coverage
- name: Generate coverage percentage
if: matrix.node-version == '20'
id: coverage
run: |
# Extract coverage from lcov.info
if [ -f coverage/lcov.info ]; then
LINES_TOTAL=$(grep -o "LF:[0-9]*" coverage/lcov.info | awk -F: '{sum+=$2} END {print sum}')
LINES_COVERED=$(grep -o "LH:[0-9]*" coverage/lcov.info | awk -F: '{sum+=$2} END {print sum}')
if [ "$LINES_TOTAL" -gt 0 ]; then
COVERAGE=$(echo "scale=1; $LINES_COVERED * 100 / $LINES_TOTAL" | bc)
else
COVERAGE=0
fi
else
COVERAGE=0
fi
echo "Coverage: ${COVERAGE}%"
echo "coverage=$COVERAGE" >> $GITHUB_ENV
echo "percentage=$COVERAGE" >> $GITHUB_OUTPUT
- name: Create coverage comment
if: matrix.node-version == '20' && github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const coverage = process.env.coverage || 'unknown';
const comment = `## 📊 Test Coverage Report
**Coverage:** ${coverage}%
| Status | Threshold | Current |
|--------|-----------|---------|
| ${coverage >= 80 ? '✅' : '⚠️'} | 80% | ${coverage}% |
View full report in the [Actions tab](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})`;
// Find and update or create comment
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const botComment = comments.find(comment =>
comment.user.type === 'Bot' && comment.body.includes('Test Coverage Report')
);
if (botComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body: comment
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build package
run: npm run build
- name: Check build output
run: |
if [ ! -d "dist" ]; then
echo "Build failed: dist directory not found"
exit 1
fi
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: dist/