From fb301be6eb8a3ad425eca5e71e902fca9a66f5b0 Mon Sep 17 00:00:00 2001 From: Jose Luu Date: Thu, 19 Jan 2023 22:50:58 +0000 Subject: [PATCH 1/3] allow compilation behind corporate proxy --- packages/compile-solidity/package.json | 1 + .../loadingStrategies/VersionRange.ts | 14 +++++++++++++- yarn.lock | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/compile-solidity/package.json b/packages/compile-solidity/package.json index 876660782c2..c49b58a78ae 100644 --- a/packages/compile-solidity/package.json +++ b/packages/compile-solidity/package.json @@ -28,6 +28,7 @@ "axios-retry": "^3.1.9", "debug": "^4.3.1", "fs-extra": "^9.1.0", + "https-proxy-agent": "^5.0.1", "iter-tools": "^7.0.2", "lodash": "^4.17.21", "node-abort-controller": "^3.0.1", diff --git a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts index ccba5381081..4c000b2bc2e 100644 --- a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts +++ b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts @@ -6,7 +6,19 @@ import originalRequire from "original-require"; // must polyfill AbortController to use axios >=0.20.0, <=0.27.2 on node <= v14.x import "../../polyfill"; -import { default as axios, AxiosResponse } from "axios"; +import { default as axios_plain, AxiosResponse } from "axios"; + +var proxy = process.env.https_proxy || process.env.http_proxy; +var axios; +if (proxy) { + const HttpsProxyAgent = require("https-proxy-agent"); + const agent = new HttpsProxyAgent(proxy); + axios = axios_plain.create({ + httpsAgent: agent + }); +} else { + axios = axios_plain; +} import semver from "semver"; diff --git a/yarn.lock b/yarn.lock index 671f4e284ef..d7add403dd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15498,7 +15498,7 @@ https-proxy-agent@^2.2.0: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== From 563e4a79a8f9dc48dec06401787232d86f7ee82e Mon Sep 17 00:00:00 2001 From: joseluu Date: Wed, 25 Jan 2023 14:44:46 +0100 Subject: [PATCH 2/3] These changes are in response to PR comments --- packages/compile-solidity/package.json | 2 +- .../loadingStrategies/VersionRange.ts | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/compile-solidity/package.json b/packages/compile-solidity/package.json index c49b58a78ae..a7c1e5d4546 100644 --- a/packages/compile-solidity/package.json +++ b/packages/compile-solidity/package.json @@ -28,7 +28,7 @@ "axios-retry": "^3.1.9", "debug": "^4.3.1", "fs-extra": "^9.1.0", - "https-proxy-agent": "^5.0.1", + "https-proxy-agent": "^5.0.0", "iter-tools": "^7.0.2", "lodash": "^4.17.21", "node-abort-controller": "^3.0.1", diff --git a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts index 4c000b2bc2e..0612a586a24 100644 --- a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts +++ b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts @@ -6,18 +6,16 @@ import originalRequire from "original-require"; // must polyfill AbortController to use axios >=0.20.0, <=0.27.2 on node <= v14.x import "../../polyfill"; -import { default as axios_plain, AxiosResponse } from "axios"; +import { default as axiosPlain, AxiosResponse } from "axios"; -var proxy = process.env.https_proxy || process.env.http_proxy; -var axios; +const environmentProxy = process.env.https_proxy || process.env.http_proxy; +let axios = axiosPlain; if (proxy) { const HttpsProxyAgent = require("https-proxy-agent"); - const agent = new HttpsProxyAgent(proxy); - axios = axios_plain.create({ + const agent = new HttpsProxyAgent(environmentProxy); + axios = axiosPlain.create({ httpsAgent: agent }); -} else { - axios = axios_plain; } import semver from "semver"; From 9f211a5c20d902b6abdb50e77ebb24899a35d88c Mon Sep 17 00:00:00 2001 From: Jose Luu Date: Thu, 26 Jan 2023 13:21:40 +0000 Subject: [PATCH 3/3] further changes --- .../loadingStrategies/VersionRange.ts | 12 +++++++----- yarn.lock | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts index 0612a586a24..9744d55b1e1 100644 --- a/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts +++ b/packages/compile-solidity/src/compilerSupplier/loadingStrategies/VersionRange.ts @@ -7,15 +7,17 @@ import originalRequire from "original-require"; // must polyfill AbortController to use axios >=0.20.0, <=0.27.2 on node <= v14.x import "../../polyfill"; import { default as axiosPlain, AxiosResponse } from "axios"; +import { HttpsProxyAgent } from "https-proxy-agent"; const environmentProxy = process.env.https_proxy || process.env.http_proxy; -let axios = axiosPlain; -if (proxy) { - const HttpsProxyAgent = require("https-proxy-agent"); +let axios; +if (environmentProxy) { const agent = new HttpsProxyAgent(environmentProxy); axios = axiosPlain.create({ httpsAgent: agent }); +} else { + axios = axiosPlain; } import semver from "semver"; @@ -196,7 +198,7 @@ export class VersionRange { return this.compilerFromString(response.data); } - async getSolcFromCacheOrUrl(versionConstraint: string, index: number = 0) { + async getSolcFromCacheOrUrl(versionConstraint: string, index = 0) { // go through all sources (compilerRoots) trying to locate a // suitable version of the Solidity compiler const { compilerRoots, events } = this.config; @@ -267,7 +269,7 @@ export class VersionRange { version.includes("nightly") || version.includes("commit"); if (isPrerelease) { - for (let build of allVersions.builds) { + for (const build of allVersions.builds) { const exists = build["prerelease"] === version || build["build"] === version || diff --git a/yarn.lock b/yarn.lock index d7add403dd0..671f4e284ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15498,7 +15498,7 @@ https-proxy-agent@^2.2.0: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==