diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ee95deaf804..f05eac79fd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: - run: yarn install --ignore-scripts - run: npx ts-node scripts/init.ts - run: yarn build:cjs - - uses: actions/cache/save@v3 + - uses: actions/cache/save@v4 with: path: ./ key: web3-${{ matrix.node }}-${{github.sha}} @@ -39,7 +39,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -52,7 +52,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -65,12 +65,63 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - 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 @@ -80,13 +131,13 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - 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@v3 + uses: actions/cache/restore@v4 with: path: packages/web3/dist/4.x.json key: web3-bundle-stats-4x-${{github.event.pull_request.base.sha}} @@ -101,7 +152,7 @@ jobs: 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@v3 + 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 @@ -120,7 +171,7 @@ jobs: with: architecture: x64 node-version: ${{ matrix.node }} - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-${{ matrix.node }}-${{github.sha}} @@ -142,7 +193,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -165,7 +216,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -186,7 +237,7 @@ jobs: node-version: 18 - uses: browser-actions/setup-firefox@latest if: matrix.browser == 'firefox' - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -212,7 +263,7 @@ jobs: with: cache: yarn node-version: '18' - - uses: actions/cache/restore@v3 + - uses: actions/cache/restore@v4 with: path: ./ key: web3-18-${{github.sha}} @@ -235,14 +286,14 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 18 - - uses: actions/cache/restore@v3 + - 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/core@5.1.0 - name: Restore main branch benchmark data - uses: actions/cache/restore@v3 + uses: actions/cache/restore@v4 with: path: web3-benchmark-main.json key: ${{ runner.os }}-web3-benchmark-main.json @@ -279,8 +330,12 @@ jobs: # 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@v3 + uses: actions/cache/save@v4 if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' with: path: web3-benchmark-main.json diff --git a/.gitignore b/.gitignore index 45c80f83fbd..c22337c0c9a 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,5 @@ packages/web3/.in3/ # benchmark results benchmark-data.txt + +.eslintcache diff --git a/packages/web3-core/package.json b/packages/web3-core/package.json index 6552a6d8bf4..04fcb06f509 100644 --- a/packages/web3-core/package.json +++ b/packages/web3-core/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-errors/package.json b/packages/web3-errors/package.json index 89338006efd..08a2b5ebb7f 100644 --- a/packages/web3-errors/package.json +++ b/packages/web3-errors/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-abi/package.json b/packages/web3-eth-abi/package.json index e24baf7117b..1ed38b13f05 100644 --- a/packages/web3-eth-abi/package.json +++ b/packages/web3-eth-abi/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-accounts/package.json b/packages/web3-eth-accounts/package.json index 06416a260b2..dbd0a9fc881 100644 --- a/packages/web3-eth-accounts/package.json +++ b/packages/web3-eth-accounts/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-contract/package.json b/packages/web3-eth-contract/package.json index f70734cc090..0c8cd166675 100644 --- a/packages/web3-eth-contract/package.json +++ b/packages/web3-eth-contract/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-ens/package.json b/packages/web3-eth-ens/package.json index 994f4427741..db7fc9d2d03 100644 --- a/packages/web3-eth-ens/package.json +++ b/packages/web3-eth-ens/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-iban/package.json b/packages/web3-eth-iban/package.json index 8a92af70ea6..81e65c298b1 100644 --- a/packages/web3-eth-iban/package.json +++ b/packages/web3-eth-iban/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth-personal/package.json b/packages/web3-eth-personal/package.json index 4be584d822a..8cb5ada7a04 100644 --- a/packages/web3-eth-personal/package.json +++ b/packages/web3-eth-personal/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-eth/package.json b/packages/web3-eth/package.json index 565de7fed54..767f5697387 100644 --- a/packages/web3-eth/package.json +++ b/packages/web3-eth/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-net/package.json b/packages/web3-net/package.json index 1397aa44c7a..d3ca4f5a32b 100644 --- a/packages/web3-net/package.json +++ b/packages/web3-net/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-providers-http/package.json b/packages/web3-providers-http/package.json index f8b1eed8821..75cf3529945 100644 --- a/packages/web3-providers-http/package.json +++ b/packages/web3-providers-http/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-providers-ipc/package.json b/packages/web3-providers-ipc/package.json index e9a6db2d25b..395156d6598 100644 --- a/packages/web3-providers-ipc/package.json +++ b/packages/web3-providers-ipc/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-providers-ws/package.json b/packages/web3-providers-ws/package.json index 2df7997c08c..b3612afaa23 100644 --- a/packages/web3-providers-ws/package.json +++ b/packages/web3-providers-ws/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-rpc-methods/package.json b/packages/web3-rpc-methods/package.json index 9a6605d1939..8e9eec0e597 100644 --- a/packages/web3-rpc-methods/package.json +++ b/packages/web3-rpc-methods/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-types/package.json b/packages/web3-types/package.json index c89ae9c5b9f..8cec2cee0b0 100644 --- a/packages/web3-types/package.json +++ b/packages/web3-types/package.json @@ -30,7 +30,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json index c909a1ec735..511ce216fc2 100644 --- a/packages/web3-utils/package.json +++ b/packages/web3-utils/package.json @@ -31,7 +31,7 @@ "build:esm": "tsc --build tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./lib/esm/package.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3-validator/package.json b/packages/web3-validator/package.json index f32cf8d44e4..20e285cce80 100644 --- a/packages/web3-validator/package.json +++ b/packages/web3-validator/package.json @@ -33,7 +33,7 @@ "build:types": "tsc --build tsconfig.types.json", "build:web": "npx webpack", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/packages/web3/package.json b/packages/web3/package.json index 5368b3e1bfd..52bb78ce8c8 100644 --- a/packages/web3/package.json +++ b/packages/web3/package.json @@ -40,7 +40,7 @@ "build:web": "npx webpack", "build:web:analyze": "npx webpack --config ./webpack.analyze.js", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/templates/jest.config.js.tmpl b/templates/jest.config.js.tmpl index e4d70e55a94..2b65a1760a3 100644 --- a/templates/jest.config.js.tmpl +++ b/templates/jest.config.js.tmpl @@ -26,6 +26,7 @@ module.exports = { 'ts-jest', { tsconfig: './test/tsconfig.json', + isolatedModules: true, }, ], }, diff --git a/tools/eslint-config-base-web3/package.json b/tools/eslint-config-base-web3/package.json index d8487f9f237..0d645c8697f 100644 --- a/tools/eslint-config-base-web3/package.json +++ b/tools/eslint-config-base-web3/package.json @@ -28,7 +28,7 @@ }, "main": "ts.js", "scripts": { - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .js,.ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'" }, diff --git a/tools/web3-packagetemplate/package.json b/tools/web3-packagetemplate/package.json index a329ede3dfe..dab16c29ee0 100644 --- a/tools/web3-packagetemplate/package.json +++ b/tools/web3-packagetemplate/package.json @@ -22,7 +22,7 @@ "build:esm": "tsc --build tsconfig.esm.json", "build:types": "tsc --build tsconfig.types.json", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js", diff --git a/tools/web3-plugin-example/package.json b/tools/web3-plugin-example/package.json index 8f3a5d6a5f5..3832f5ef30d 100644 --- a/tools/web3-plugin-example/package.json +++ b/tools/web3-plugin-example/package.json @@ -23,7 +23,7 @@ "prebuild": "yarn clean", "build": "tsc --build", "build:check": "node -e \"require('./lib')\"", - "lint": "eslint --ext .js,.ts .", + "lint": "eslint --cache --cache-strategy content --ext .ts .", "lint:fix": "eslint --fix --ext .js,.ts .", "format": "prettier --write '**/*'", "test": "jest --config=./test/unit/jest.config.js",