Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 0 additions & 126 deletions .github/copilot-instructions.md

This file was deleted.

19 changes: 18 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,24 @@ updates:
groups:
all-dependencies:
patterns:
- '*'
- '@types/*'
- 'typescript'
- 'typescript-eslint'
- 'eslint*'
- '@eslint/*'
- 'prettier'
- 'vitest*'
- '@vitest/*'
- '@playwright/*'
- 'playwright*'
- '@testing-library/*'
- 'postcss'
- 'autoprefixer'
- '@tailwindcss/*'
- 'tailwindcss'
update-types:
- 'minor'
- 'patch'
ignore:
- dependency-name: '*'
update-types: ['version-update:semver-major']
Expand Down
36 changes: 8 additions & 28 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,48 +8,28 @@ on:

jobs:
build-and-test:
name: 🏗️ Build & Test
name: Build & Test
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x, 22.x]
node-version: [22.x]

steps:
- name: 📥 Checkout code
- name: Checkout code
uses: actions/checkout@v6

- name: 🔧 Setup Node.js ${{ matrix.node-version }}
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: 📦 Install dependencies
- name: Install dependencies
run: npm ci

- name: 🔍 Type check
run: npm run type-check
- name: Verify
run: npm run verify

- name: 🔍 Lint
run: npm run lint

- name: 💅 Format check
run: npm run format:check

- name: 🏗️ Build
run: npm run build

- name: 🧪 Test
run: npm test

- name: 📊 Test coverage
- name: Test coverage
run: npm run test:coverage

- name: 📤 Upload coverage reports
uses: codecov/codecov-action@v5
if: matrix.node-version == '20.x'
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/lcov.info
fail_ci_if_error: false
80 changes: 34 additions & 46 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,31 @@ permissions:
id-token: write

env:
NODE_VERSION: '20'
NODE_VERSION: '22'

jobs:
detect-changes:
name: 🔍 Detect Version Changes
name: Detect Version Changes
runs-on: ubuntu-latest
outputs:
should-publish: ${{ steps.detect.outputs.should-publish }}
name: ${{ steps.detect.outputs.name }}
version: ${{ steps.detect.outputs.version }}

steps:
- name: 📥 Checkout code
- name: Checkout code
uses: actions/checkout@v6

- name: 🔧 Setup Node.js
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: 📦 Install dependencies
- name: Install dependencies
run: npm ci

- name: 🔍 Detect version changes
- name: Detect version changes
id: detect
run: |
name=$(node -p "require('./package.json').name")
Expand All @@ -46,87 +46,75 @@ jobs:
echo "name=${name}" >> $GITHUB_OUTPUT
echo "version=${version}" >> $GITHUB_OUTPUT

# Skip if private
if [ "$private" = "true" ]; then
echo "should-publish=false" >> $GITHUB_OUTPUT
echo "ℹ️ Package is private, skipping publish"
echo "Package is private, skipping publish"
exit 0
fi

echo "📦 Checking ${name}@${version}..."
echo "Checking ${name}@${version}..."

# Check if this version exists on npm
if npm view "${name}@${version}" version 2>/dev/null; then
echo "should-publish=false" >> $GITHUB_OUTPUT
echo "⏭️ Version ${version} already published for ${name}"
echo "Version ${version} already published for ${name}"
else
echo "should-publish=true" >> $GITHUB_OUTPUT
echo "New version detected: ${name}@${version}"
echo "New version detected: ${name}@${version}"
fi

verify:
name: Verify Package
name: Verify Package
needs: [detect-changes]
if: needs.detect-changes.outputs.should-publish == 'true'
runs-on: ubuntu-latest

steps:
- name: 📥 Checkout code
- name: Checkout code
uses: actions/checkout@v6

- name: 🔧 Setup Node.js
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: 📦 Install dependencies
- name: Install dependencies
run: npm ci

- name: 🏗️ Build package
run: npm run build

- name: 🧪 Run tests
run: npm test

- name: 🔍 Run linting
run: npm run lint

- name: ✅ Verification passed
run: |
echo "✅ ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }} verified successfully" >> $GITHUB_STEP_SUMMARY
- name: Verify
run: npm run verify

publish:
name: 📤 Publish Package
name: Publish Package
needs: [detect-changes, verify]
if: needs.detect-changes.outputs.should-publish == 'true' && needs.verify.result == 'success'
runs-on: ubuntu-latest

steps:
- name: 📥 Checkout code
- name: Checkout code
uses: actions/checkout@v6

- name: 🔧 Setup Node.js
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
registry-url: 'https://registry.npmjs.org'

- name: 📦 Install dependencies
- name: Install dependencies
run: npm ci

- name: 🏗️ Build package
- name: Build package
run: npm run build

- name: 📤 Publish to npm
- name: Publish to npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
echo "📤 Publishing ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}"
echo "Publishing ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}"
npm publish --access public --provenance

- name: 🏷️ Create git tag
- name: Create git tag
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
Expand All @@ -136,35 +124,35 @@ jobs:
git tag -a "${TAG_NAME}" -m "Release ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}"
git push origin "${TAG_NAME}"

- name: Published successfully
- name: Published successfully
run: |
echo "🎉 Successfully published ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "📦 Package URL: https://www.npmjs.com/package/${{ needs.detect-changes.outputs.name }}/v/${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "Successfully published ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
echo "Package URL: https://www.npmjs.com/package/${{ needs.detect-changes.outputs.name }}/v/${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY

summary:
name: 📋 Publish Summary
name: Publish Summary
needs: [detect-changes, verify, publish]
if: always()
runs-on: ubuntu-latest

steps:
- name: 📊 Create summary
- name: Create summary
run: |
echo "## 📦 Package Publishing Summary" >> $GITHUB_STEP_SUMMARY
echo "## Package Publishing Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ "${{ needs.detect-changes.outputs.should-publish }}" != "true" ]; then
echo "ℹ️ **No new version to publish**" >> $GITHUB_STEP_SUMMARY
echo "**No new version to publish**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Version ${{ needs.detect-changes.outputs.version }} is already published or package is private." >> $GITHUB_STEP_SUMMARY
elif [ "${{ needs.verify.result }}" != "success" ]; then
echo "**Verification failed - package not published**" >> $GITHUB_STEP_SUMMARY
echo "**Verification failed - package not published**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Please fix verification errors and try again." >> $GITHUB_STEP_SUMMARY
elif [ "${{ needs.publish.result }}" == "success" ]; then
echo "**Package published successfully!**" >> $GITHUB_STEP_SUMMARY
echo "**Package published successfully!**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- **${{ needs.detect-changes.outputs.name }}** version ${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
else
echo "⚠️ **Package failed to publish**" >> $GITHUB_STEP_SUMMARY
echo "**Package failed to publish**" >> $GITHUB_STEP_SUMMARY
fi
Loading