update typescript version to 5 #10052
This file contains 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: 'Build' | |
on: | |
push: | |
branches: | |
- '4.x' | |
tags: | |
- v4* | |
pull_request: | |
branches: | |
- '4.x' | |
types: [opened, reopened, synchronize] | |
jobs: | |
build: | |
strategy: | |
matrix: | |
node: ['18', '20.17.0'] | |
name: Build CJS | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: yarn | |
- run: yarn install --ignore-scripts --frozen-lockfile | |
- run: npx ts-node scripts/init.ts | |
- run: yarn build:cjs | |
- uses: actions/cache/save@v4 | |
with: | |
path: ./ | |
key: web3-${{ matrix.node }}-${{github.sha}} | |
build-esm: | |
name: Build ESM | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: yarn build:esm | |
build-types: | |
name: Build Types | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: yarn build:types | |
lint: | |
name: Lint | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: npx ts-node scripts/init.ts | |
- name: Restore eslint caches | |
uses: actions/cache/restore@v4 | |
with: | |
path: | | |
packages/web3/.eslintcache | |
packages/web3-core/.eslintcache | |
packages/web3-eth/.eslintcache | |
packages/web3-eth-abi/.eslintcache | |
packages/web3-eth-accounts/.eslintcache | |
packages/web3-eth-contract/.eslintcache | |
packages/web3-eth-ens/.eslintcache | |
packages/web3-eth-iban/.eslintcache | |
packages/web3-eth-personal/.eslintcache | |
packages/web3-net/.eslintcache | |
packages/web3-providers-http/.eslintcache | |
packages/web3-providers-ws/.eslintcache | |
packages/web3-rpc-methods/.eslintcache | |
packages/web3-types/.eslintcache | |
packages/web3-utils/.eslintcache | |
packages/web3-validator/.eslintcache | |
tools/web3-plugin-example/.eslintcache | |
key: ${{ runner.os }}-eslintcache | |
- run: yarn lint | |
- run: gh cache delete "${{ runner.os }}-eslintcache" | |
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Save eslint caches | |
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' | |
uses: actions/cache/save@v4 | |
with: | |
path: | | |
packages/web3/.eslintcache | |
packages/web3-core/.eslintcache | |
packages/web3-eth/.eslintcache | |
packages/web3-eth-abi/.eslintcache | |
packages/web3-eth-accounts/.eslintcache | |
packages/web3-eth-contract/.eslintcache | |
packages/web3-eth-ens/.eslintcache | |
packages/web3-eth-iban/.eslintcache | |
packages/web3-eth-personal/.eslintcache | |
packages/web3-net/.eslintcache | |
packages/web3-providers-http/.eslintcache | |
packages/web3-providers-ws/.eslintcache | |
packages/web3-rpc-methods/.eslintcache | |
packages/web3-types/.eslintcache | |
packages/web3-utils/.eslintcache | |
packages/web3-validator/.eslintcache | |
tools/web3-plugin-example/.eslintcache | |
key: ${{ runner.os }}-eslintcache | |
build-web: | |
name: Build Web | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- name: Restore default branch stats | |
if: github.event_name != 'push' | |
uses: actions/cache/restore@v4 | |
with: | |
path: packages/web3/dist/4.x.json | |
key: web3-bundle-stats-4x-${{github.event.pull_request.base.sha}} | |
- run: yarn build:web:analyze | |
env: | |
STATS_FILE: ${{ github.ref_name }}.json | |
- name: Compare bundle stats | |
uses: github/[email protected] | |
continue-on-error: true | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
current-stats-json-path: "packages/web3/dist/${{ github.ref_name }}.json" | |
base-stats-json-path: "packages/web3/dist/4.x.json" | |
- name: Cache default branch stats | |
uses: actions/cache/save@v4 | |
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' | |
with: | |
path: packages/web3/dist/${{ github.ref_name }}.json | |
key: web3-bundle-stats-4x-${{github.sha}} | |
unit: | |
name: Unit Tests | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node: ['18', '20.17.0'] | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
architecture: x64 | |
node-version: ${{ matrix.node }} | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-${{ matrix.node }}-${{github.sha}} | |
- run: yarn test:unit | |
continue-on-error: ${{ matrix.node == '20.17.0' }} | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
flags: UnitTests | |
token: ${{ secrets.CODECOV_TOKEN }} | |
if: ${{ matrix.node == 18 }} | |
integration-hardhat: | |
name: Integration hardhat | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: npx hardhat node & | |
- run: yarn test:e2e:hardhat:http | |
shell: bash | |
e2e-geth: | |
name: Integration # (geth with HTTP, IPC & WS) | |
needs: build | |
runs-on: ubuntu-latest | |
env: | |
INFURA_SEPOLIA_HTTP: ${{ secrets.INFURA_SEPOLIA_HTTP }} | |
INFURA_SEPOLIA_WS: ${{ secrets.INFURA_SEPOLIA_WS }} | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: [ 'ipc', 'ws', 'http' ] | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: yarn test:e2e:geth:${{ matrix.mode }} | |
shell: bash | |
e2e-browsers: | |
name: End-to-End hardhat:ws | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
browser: ['electron', 'chrome', 'firefox'] | |
steps: | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- uses: browser-actions/setup-firefox@latest | |
if: matrix.browser == 'firefox' | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: npx hardhat node & | |
- run: npm install --no-package-lock --no-save --force cypress | |
- name: Cypress run | |
uses: cypress-io/github-action@v4 | |
with: | |
install: false | |
command: yarn test:e2e:hardhat:ws:${{ matrix.browser }} | |
cache-key: node-v18-on-${{ matrix.browser }}-hash-${{ hashFiles('yarn.lock') }} | |
deploy-docs: | |
name: Docs CloudFlare Deploy | |
needs: build | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
deployments: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
cache: yarn | |
node-version: '18' | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
- run: yarn install --ignore-scripts | |
- run: yarn build:cjs | |
- run: yarn run build:docs | |
- name: Publish to Cloudflare Pages | |
uses: cloudflare/pages-action@v1 | |
with: | |
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
accountId: 2238a825c5aca59233eab1f221f7aefb | |
projectName: web3-js-docs | |
directory: ./docs/build | |
gitHubToken: ${{ secrets.GITHUB_TOKEN }} | |
benchmark: | |
name: Benchmark Tests | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ./ | |
key: web3-18-${{github.sha}} | |
# @octokit/core not supported on node 16, so I can't add it to the package.json | |
- run: npm install --no-package-lock --no-save --force @octokit/[email protected] | |
- name: Restore main branch benchmark data | |
uses: actions/cache/restore@v4 | |
with: | |
path: web3-benchmark-main.json | |
key: ${{ runner.os }}-web3-benchmark-main.json | |
- run: yarn test:benchmark | |
- name: Compare benchmark result and make comment | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
# What benchmark tool the output.txt came from | |
tool: 'benchmarkjs' | |
# Where the output from the benchmark tool is stored | |
output-file-path: benchmark-data.txt | |
# Where the previous data file is stored | |
external-data-json-path: web3-benchmark-main.json | |
# Workflow will fail when an alert happens | |
fail-on-alert: false | |
# GitHub API token to make a commit comment | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
# Enable alert commit comment | |
comment-always: true | |
save-data-file: false | |
# copy comment from commit to Pull Request | |
- run: node scripts/copyCommitCommentToPrComment.js ${{ secrets.GITHUB_TOKEN }} ${{github.event.pull_request.head.sha}} ${{github.event.number}} | |
- name: Compare benchmark result and fail if threshold is reached | |
uses: benchmark-action/github-action-benchmark@v1 | |
with: | |
# What benchmark tool the output.txt came from | |
tool: 'benchmarkjs' | |
# Where the output from the benchmark tool is stored | |
output-file-path: benchmark-data.txt | |
# Where the previous data file is stored | |
external-data-json-path: web3-benchmark-main.json | |
# Workflow will fail when an alert happens | |
fail-on-alert: true | |
# Enable alert commit comment | |
alert-threshold: '200%' | |
comment-always: false | |
- run: gh cache delete "${{ runner.os }}-web3-benchmark-main.json" | |
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Save main branch benchmark data | |
uses: actions/cache/save@v4 | |
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' | |
with: | |
path: web3-benchmark-main.json | |
key: ${{ runner.os }}-web3-benchmark-main.json |