Skip to content

chore(deps-dev): bump @types/node from 20.19.7 to 24.8.1 #110

chore(deps-dev): bump @types/node from 20.19.7 to 24.8.1

chore(deps-dev): bump @types/node from 20.19.7 to 24.8.1 #110

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
workflow_call:
# Allow this workflow to be called by other workflows (like release)
concurrency:
group: ci-${{ github.ref }}-${{ github.run_id }}
cancel-in-progress: true
jobs:
lint-and-typecheck:
name: Lint & Type Check
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10.13.1
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run linting
run: pnpm lint
- name: Run type checking
run: pnpm type-check
test:
name: Test Suite
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
node-version: ['20', '22']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10.13.1
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-${{ matrix.node-version }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-${{ matrix.node-version }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build packages
run: pnpm build
- name: Run tests
run: pnpm test
- name: Upload test coverage
if: matrix.node-version == '20'
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/*/coverage/lcov.info
fail_ci_if_error: false
build:
name: Build & Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 15
needs: [lint-and-typecheck, test]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10.13.1
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build all packages
run: pnpm build
- name: Test Vite React example build
working-directory: examples/vite-react
run: |
pnpm build
ls -la dist/
- name: Test Node.js Express example build
working-directory: examples/node-express
run: |
pnpm build
ls -la dist/
- name: Test Vanilla Rollup example build
working-directory: examples/vanilla-rollup
run: |
pnpm build
ls -la dist/
- name: Verify package exports
run: |
node -e "console.log('Testing @easythread/core import:', Object.keys(require('./packages/core/dist/index.js')))"
node -e "console.log('Testing @easythread/vite import:', Object.keys(require('./packages/vite-plugin/dist/index.js')))"
node -e "console.log('Testing @easythread/rollup import:', Object.keys(require('./packages/rollup-plugin/dist/index.js')))"
node -e "console.log('Testing @easythread/esbuild import:', Object.keys(require('./packages/esbuild-plugin/dist/index.js')))"
examples-e2e:
name: End-to-End Examples Test
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [build]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10.13.1
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build all packages
run: pnpm build
- name: Test Node.js Express example runtime
working-directory: examples/node-express
run: |
pnpm build
timeout 30s node dist/index.js &
SERVER_PID=$!
sleep 5
# Test the fibonacci endpoint
curl -f http://localhost:3000/fibonacci/10 || exit 1
echo "✅ Node.js Express example working"
kill $SERVER_PID || true
- name: Test Vanilla Rollup example runtime
working-directory: examples/vanilla-rollup
run: |
pnpm build
pnpm start
echo "✅ Vanilla Rollup example working"
publish-ready:
name: Publish Readiness Check
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [examples-e2e]
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 10.13.1
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build packages
run: pnpm build
- name: Check package.json files
run: |
echo "Checking package.json files for publish readiness..."
find packages -name "package.json" -exec echo "=== {} ===" \; -exec cat {} \;
- name: Dry run publish
run: |
echo "Performing dry run publish check..."
cd packages/core && npm pack --dry-run
cd ../vite-plugin && npm pack --dry-run
cd ../rollup-plugin && npm pack --dry-run
cd ../esbuild-plugin && npm pack --dry-run
- name: Create GitHub Release (Manual Trigger)
if: false # Set to true when ready to enable automated releases
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.run_number }}
release_name: Release v${{ github.run_number }}
draft: true
prerelease: false