diff --git a/.changeset/tough-sloths-hammer.md b/.changeset/tough-sloths-hammer.md new file mode 100644 index 0000000000..07dda285b4 --- /dev/null +++ b/.changeset/tough-sloths-hammer.md @@ -0,0 +1,9 @@ +--- +'@api3/airnode-utilities': minor +'@api3/airnode-deployer': minor +'@api3/airnode-examples': minor +'@api3/airnode-admin': minor +'@api3/airnode-node': minor +--- + +Replace Node.js 18 with Node.js 20 diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 69c5fbfb09..6de5a567ee 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -9,7 +9,7 @@ on: env: DOCKER_BUILDKIT: 1 - TARGET_NODE_VERSION: '18.14.0' + TARGET_NODE_VERSION: '20.10.0' jobs: documentation: diff --git a/.github/workflows/protocol-verify.yml b/.github/workflows/protocol-verify.yml index d9ecf97319..74a46ed191 100644 --- a/.github/workflows/protocol-verify.yml +++ b/.github/workflows/protocol-verify.yml @@ -11,7 +11,7 @@ on: env: DOCKER_BUILDKIT: 1 - TARGET_NODE_VERSION: '18.14.0' + TARGET_NODE_VERSION: '20.10.0' jobs: pre-build: diff --git a/docker/Dockerfile b/docker/Dockerfile index c3e129f7a5..2406e78c90 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.14.0-alpine3.17 AS environment +FROM node:20.10.0-alpine3.17 AS environment ENV appDir="/app" \ buildDir="/build" \ @@ -7,7 +7,7 @@ ENV appDir="/app" \ CI="true" RUN apk add --update --no-cache git rsync docker $([ $(arch) == "aarch64" ] && echo "python3 make g++") && \ - yarn global add npm@^9.8.1 && \ + yarn global add npm && \ # Download both solidity compilers as per: https://github.com/nomiclabs/hardhat/issues/1280#issuecomment-949822371 mkdir -p /root/.cache/hardhat-nodejs/compilers-v2/wasm && \ wget -O /root/.cache/hardhat-nodejs/compilers-v2/wasm/soljson-v0.8.9+commit.e5eed63a.js https://solc-bin.ethereum.org/wasm/soljson-v0.8.9+commit.e5eed63a.js && \ diff --git a/package.json b/package.json index 078dadb554..411aca7e42 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.1.0", "private": true, "engines": { - "node": "^18.14.0" + "node": "^20.10.0" }, "repository": { "type": "git", @@ -110,7 +110,7 @@ "@changesets/cli": "^2.27.1", "@octokit/core": "^5.1.0", "@types/libsodium-wrappers": "^0.7.13", - "@types/node": "^18.19.21", + "@types/node": "^20.10.0", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "@vercel/ncc": "^0.38.1", diff --git a/packages/airnode-adapter/package.json b/packages/airnode-adapter/package.json index 7b12666b66..efd605ccd0 100644 --- a/packages/airnode-adapter/package.json +++ b/packages/airnode-adapter/package.json @@ -34,7 +34,7 @@ "@types/mocha": "^10.0.6", "chai": "^4.4.1", "ethereum-waffle": "^4.0.10", - "hardhat": "^2.14.1", + "hardhat": "^2.19.5", "jest": "^29.7.0", "rimraf": "^5.0.5", "ts-jest": "^29.1.2", diff --git a/packages/airnode-admin/docker/Dockerfile b/packages/airnode-admin/docker/Dockerfile index b97f7a0b5d..be235d068f 100644 --- a/packages/airnode-admin/docker/Dockerfile +++ b/packages/airnode-admin/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.14.0-alpine3.17 +FROM node:20.10.0-alpine3.17 ARG npmRegistryUrl=https://registry.npmjs.org/ ARG npmTag=latest diff --git a/packages/airnode-admin/package.json b/packages/airnode-admin/package.json index 3743b0e5af..e6c8d08026 100644 --- a/packages/airnode-admin/package.json +++ b/packages/airnode-admin/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@types/lodash": "^4.14.202", - "@types/node": "^18.19.21", + "@types/node": "^20.10.0", "@types/yargs": "^17.0.32", "jest": "^29.7.0", "rimraf": "^5.0.5", diff --git a/packages/airnode-admin/test/e2e/cli.feature.ts b/packages/airnode-admin/test/e2e/cli.feature.ts index 3b2de7975e..99accb3958 100644 --- a/packages/airnode-admin/test/e2e/cli.feature.ts +++ b/packages/airnode-admin/test/e2e/cli.feature.ts @@ -24,9 +24,9 @@ it('has disabled DEBUG_COMMANDS flag', () => { expect(DEBUG_COMMANDS).toBe(false); }); -describe('CLI', () => { - jest.setTimeout(45_000); +jest.setTimeout(120_000); +describe('CLI', () => { let provider: ethers.providers.JsonRpcProvider; let deployer: ethers.providers.JsonRpcSigner; const aliceDerivationPath = "m/44'/60'/0'/0/1"; diff --git a/packages/airnode-deployer/docker/Dockerfile b/packages/airnode-deployer/docker/Dockerfile index 0a596820e7..1b10dd3d29 100644 --- a/packages/airnode-deployer/docker/Dockerfile +++ b/packages/airnode-deployer/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.14.0-alpine3.17 +FROM node:20.10.0-alpine3.17 ARG npmRegistryUrl=https://registry.npmjs.org/ ARG npmTag=latest diff --git a/packages/airnode-deployer/package.json b/packages/airnode-deployer/package.json index 55a5b9fdf3..0f22c43b05 100644 --- a/packages/airnode-deployer/package.json +++ b/packages/airnode-deployer/package.json @@ -51,7 +51,7 @@ "@types/adm-zip": "^0.5.5", "@types/aws-lambda": "^8.10.136", "@types/lodash": "^4.14.202", - "@types/node": "^18.19.21", + "@types/node": "^20.10.0", "@types/yargs": "^17.0.32", "aws-sdk-client-mock": "^3.0.1", "aws-sdk-client-mock-jest": "^3.0.1", diff --git a/packages/airnode-deployer/terraform/aws/modules/function/main.tf b/packages/airnode-deployer/terraform/aws/modules/function/main.tf index a91b59fad1..0a8b3e9ea8 100644 --- a/packages/airnode-deployer/terraform/aws/modules/function/main.tf +++ b/packages/airnode-deployer/terraform/aws/modules/function/main.tf @@ -43,7 +43,7 @@ resource "aws_lambda_function" "lambda" { function_name = var.name handler = var.handler memory_size = var.memory_size - runtime = "nodejs18.x" + runtime = "nodejs20.x" role = aws_iam_role.lambda_role.arn timeout = var.timeout reserved_concurrent_executions = var.reserved_concurrent_executions diff --git a/packages/airnode-deployer/terraform/gcp/modules/function/main.tf b/packages/airnode-deployer/terraform/gcp/modules/function/main.tf index 78e471ae95..cb014d8170 100644 --- a/packages/airnode-deployer/terraform/gcp/modules/function/main.tf +++ b/packages/airnode-deployer/terraform/gcp/modules/function/main.tf @@ -56,7 +56,7 @@ resource "google_storage_bucket_object" "function_zip" { resource "google_cloudfunctions_function" "function" { name = var.name - runtime = "nodejs18" + runtime = "nodejs20" available_memory_mb = var.memory_size source_archive_bucket = google_storage_bucket_object.function_zip.bucket diff --git a/packages/airnode-examples/package.json b/packages/airnode-examples/package.json index d06f5514bf..d7a00a9818 100644 --- a/packages/airnode-examples/package.json +++ b/packages/airnode-examples/package.json @@ -46,12 +46,12 @@ "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-waffle": "^2.0.6", "@types/jest": "^29.5.12", - "@types/node": "^18.19.21", + "@types/node": "^20.10.0", "@types/prompts": "^2.4.9", "chalk": "^4.1.2", "dotenv": "^16.4.5", "ethereum-waffle": "^4.0.10", - "hardhat": "^2.14.1", + "hardhat": "^2.19.5", "jest": "^29.7.0", "prompts": "^2.4.2", "ts-jest": "^29.1.2", diff --git a/packages/airnode-node/docker/Dockerfile b/packages/airnode-node/docker/Dockerfile index bd722f215a..e6819d8a8b 100644 --- a/packages/airnode-node/docker/Dockerfile +++ b/packages/airnode-node/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.14.0-alpine3.17 +FROM node:20.10.0-alpine3.17 ARG npmRegistryUrl=https://registry.npmjs.org/ ARG npmTag=latest diff --git a/packages/airnode-node/package.json b/packages/airnode-node/package.json index 36fe1d15da..29e6e54e9d 100644 --- a/packages/airnode-node/package.json +++ b/packages/airnode-node/package.json @@ -48,7 +48,7 @@ "@types/express": "^4.17.21", "@types/jest": "^29.5.12", "@types/lodash": "^4.14.202", - "@types/node": "^18.19.21", + "@types/node": "^20.10.0", "@types/yargs": "^17.0.32", "aws-sdk-client-mock": "^3.0.1", "aws-sdk-client-mock-jest": "^3.0.1", diff --git a/packages/airnode-operation/hardhat.config.ts b/packages/airnode-operation/hardhat.config.ts index 0ac22553fa..a287637f8a 100644 --- a/packages/airnode-operation/hardhat.config.ts +++ b/packages/airnode-operation/hardhat.config.ts @@ -7,15 +7,6 @@ const config: HardhatUserConfig = { compilers: [{ version: '0.6.12', settings: {} }], }, networks: { - hardhat: { - accounts: { - // These accounts are used to deploy contracts and fund all Airnode - // related accounts. Make sure they have more than enough ETH to - // do this (1m ETH each). - accountsBalance: '1000000000000000000000000', - count: 100, - }, - }, localhost: { url: 'http://127.0.0.1:8545/', }, diff --git a/packages/airnode-operation/package.json b/packages/airnode-operation/package.json index 2b6d727c2b..6ec040dbe2 100644 --- a/packages/airnode-operation/package.json +++ b/packages/airnode-operation/package.json @@ -33,7 +33,7 @@ "@api3/airnode-utilities": "^0.14.0", "ethers": "^5.7.2", "express": "^4.18.3", - "hardhat": "^2.14.1", + "hardhat": "^2.19.5", "morgan": "^1.10.0", "pm2": "^5.3.1" }, diff --git a/packages/airnode-protocol/package.json b/packages/airnode-protocol/package.json index 4c7af74f82..bbfbdc482f 100644 --- a/packages/airnode-protocol/package.json +++ b/packages/airnode-protocol/package.json @@ -37,7 +37,7 @@ "chai": "^4.4.1", "copyfiles": "^2.4.1", "ethereum-waffle": "^4.0.10", - "hardhat": "^2.14.1", + "hardhat": "^2.19.5", "hardhat-deploy": "^0.12.1", "hardhat-gas-reporter": "^1.0.10", "rimraf": "^5.0.5", diff --git a/packages/airnode-utilities/package.json b/packages/airnode-utilities/package.json index 27796aefae..3b176c13d7 100644 --- a/packages/airnode-utilities/package.json +++ b/packages/airnode-utilities/package.json @@ -26,8 +26,8 @@ "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.2.3", "@types/jest": "^29.5.12", - "@types/node": "^18.19.21", - "hardhat": "^2.14.1", + "@types/node": "^20.10.0", + "hardhat": "^2.19.5", "jest": "^29.7.0", "rimraf": "^5.0.5", "ts-node": "^10.9.2", diff --git a/yarn.lock b/yarn.lock index 0b4ba40269..5d98990004 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4456,7 +4456,7 @@ "@types/node" "*" form-data "^4.0.0" -"@types/node@*": +"@types/node@*", "@types/node@^20.10.0": version "20.11.25" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.25.tgz#0f50d62f274e54dd7a49f7704cc16bfbcccaf49f" integrity sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw== @@ -4478,13 +4478,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -"@types/node@^18.19.21": - version "18.19.22" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.22.tgz#f622f92514b897e6b09903e97c16a0db8e94689f" - integrity sha512-p3pDIfuMg/aXBmhkyanPshdfJuX5c5+bQjYLIikPLXAUycEogij/c50n/C+8XOA5L93cU4ZRXtn+dNQGi0IZqQ== - dependencies: - undici-types "~5.26.4" - "@types/node@^8.0.0": version "8.10.66" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" @@ -9097,7 +9090,7 @@ hardhat-gas-reporter@^1.0.10: eth-gas-reporter "^0.2.25" sha1 "^1.1.1" -hardhat@^2.14.1: +hardhat@^2.19.5: version "2.21.0" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.21.0.tgz#2e23126310a6c77cd7e149e6af1dd67626b7a74f" integrity sha512-8DlJAVJDEVHaV1sh9FLuKLLgCFv9EAJ+M+8IbjSIPgoeNo3ss5L1HgGBMfnI88c7OzMEZkdcuyGoobFeK3Orqw==