feat: --oxc support #1624
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |