Skip to content

feat: --oxc support #1624

feat: --oxc support

feat: --oxc support #1624

Workflow file for this run

name: Checks
on:
push:
branches: ['main']
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
name: 'Lint'
timeout-minutes: 10
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: node --run lint
windows:
runs-on: windows-latest
name: 'Windows with Node.js ${{ matrix.node-version }}'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
node-version: ['25', '24', '24.0.0', '22.22.0', '22.12.0', '22.13.0', '20', '20.19.0']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- run: pnpm env use -g ${{ matrix.node-version }}
- run: pnpm i --frozen-lockfile
- run: node ./tests/simple.test.js
- run: node ./bin/index.js ./tests/simple.test.js
- run: node ./bin/index.js --jest ./tests/jest/simple.test.js
- run: node ./bin/index.js --esbuild ./tests/simple.test.js
- run: node ./bin/index.js --esbuild --jest ./tests/jest/simple.test.js
- run: node ./bin/index.js --coverage ./tests/simple.test.js
- run: node ./bin/index.js --coverage --jest ./tests/jest/simple.test.js
- run: node ./bin/index.js --coverage --esbuild ./tests/simple.test.js
- run: node ./bin/index.js --coverage --esbuild --jest ./tests/jest/simple.test.js
- run: node ./bin/index.js 'tests/*.test.js'
- run: node ./bin/index.js --jest --esbuild=ts,user.test.js,sum.test.js
check:
runs-on: ubuntu-22.04
name: 'Test on Node.js ${{ matrix.node-version }}'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
node-version: ['25', '24', '24.0.0', '22.22.0', '22.12.0', '22.13.0', '20', '20.19.0']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version: ${{ matrix.node-version }}
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: EXODUS_TEST_DROP_NETWORK=1 pnpm test:all
- if: ${{ matrix.node-version >= '24' || matrix.node-version >= '22.13' }}
run: EXODUS_TEST_DROP_NETWORK=1 pnpm test:typescript
jest:
runs-on: ubuntu-22.04
name: 'Jest on Node.js'
timeout-minutes: 10
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: EXODUS_TEST_DROP_NETWORK=1 pnpm jest
jsvu:
runs-on: ubuntu-22.04
name: 'Test on ${{ matrix.engine }} (from jsvu)'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
engine: ['hermes', 'v8', 'javascriptcore', 'spidermonkey', 'quickjs', 'xs']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: ~/.jsvu
key: barebone-jsvu-${{ matrix.engine }}-${{ runner.os }}
- run: node --run jsvu -- --os=linux64 --engines="${{ matrix.engine }}"
- run: EXODUS_TEST_DROP_NETWORK=1 node --run "test:${{ matrix.engine }}"
esvu:
runs-on: ubuntu-22.04
name: 'Test on ${{ matrix.engine }} (from esvu)'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
# esvu hermes is 0.11 and even fails to install
# quickjs fails and is unavailable on macOS (quickjs-ng from jsvu works)
engine: ['v8', 'javascriptcore', 'spidermonkey', 'xs', 'engine262', 'boa']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: ~/.esvu
key: barebone-esvu-${{ matrix.engine }}-${{ runner.os }}
- if: ${{ matrix.engine == 'boa' }}
run: pnpm i esvu@devsnek/esvu#3852bf2c67a47e001b5eef926d53574a37149b92
- run: node --run esvu -- install "${{ matrix.engine }}"
- if: ${{ matrix.engine == 'boa' }}
run: git checkout . && pnpm i --frozen-lockfile
- run: EXODUS_TEST_DROP_NETWORK=1 node --run "test:${{ matrix.engine }}"
puppeteer:
runs-on: ubuntu-22.04
name: 'Test on ${{ matrix.browser }}:puppeteer'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
browser: ['chrome', 'firefox']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: node --run "test:${{ matrix.browser }}:puppeteer"
playwright:
runs-on: ubuntu-22.04
name: 'Test on ${{ matrix.browser }}:playwright'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
browser: ['chromium', 'firefox', 'webkit']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: node --run playwright -- install --with-deps "${{ matrix.browser }}"
- run: node --run "test:${{ matrix.browser }}:playwright"
servo:
runs-on: ubuntu-latest
name: 'Test on Servo ${{ matrix.servo-version }}'
strategy:
matrix:
servo-version: [0.0.4]
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: wget "https://github.com/servo/servo/releases/download/v${{ matrix.servo-version }}/servo-x86_64-linux-gnu.tar.gz"
- run: tar -xf servo-x86_64-linux-gnu.tar.gz
- run: sudo ln -s "$GITHUB_WORKSPACE/servo/servo" /usr/bin/
- run: sudo apt update
- run: sudo apt install gstreamer1.0-plugins-bad
- run: pnpm i --frozen-lockfile
- run: node --run test:servo
workerd:
runs-on: ubuntu-latest
name: 'Test on workerd'
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: node --run test:workerd
bun:
runs-on: ubuntu-22.04
name: 'Test on Bun'
timeout-minutes: 10
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76
- run: pnpm i --frozen-lockfile
- run: node --run test:bun:pure
- run: node --run test:bun:bundle
deno:
runs-on: ubuntu-22.04
name: 'Test on Deno ${{ matrix.deno-version }}'
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
deno-version: ['v1.x', 'v2.x']
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- uses: denoland/setup-deno@909cc5acb0fdd60627fb858598759246509fa755
with:
deno-version: ${{ matrix.deno-version }}
- run: pnpm i --frozen-lockfile
- if: ${{ matrix.deno-version >= 'v2.x' }}
run: node --run test:deno:test
- if: ${{ matrix.deno-version >= 'v2.x' }}
run: node --run test:deno:pure
- run: node --run test:deno:bundle
electron-as-node:
runs-on: ubuntu-22.04
name: 'Test on Electron as Node.js'
timeout-minutes: 10
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: node --run test:electron:node
- run: node --run test:electron:node:pure
- run: node --run test:electron:node:bundle
electron:
runs-on: ubuntu-22.04
name: 'Test on Electron'
timeout-minutes: 10
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda
with:
run_install: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
with:
node-version-file: '.nvmrc'
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- run: pnpm i --frozen-lockfile
- run: xvfb-run node --run test:electron:bundle