Merge branch 'master' into resolve_with_package

pull/3311/head
Aniket 2 years ago committed by GitHub
commit 0e10eb2f9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      apps/etherscan/.babelrc
  2. 5
      apps/etherscan/src/app/RemixPlugin.tsx
  3. 4
      apps/etherscan/src/app/app.tsx
  4. 21
      apps/etherscan/src/app/utils/utilities.ts
  5. 4
      apps/etherscan/src/app/utils/verify.ts
  6. 2
      apps/etherscan/src/app/views/ReceiptsView.tsx
  7. 104
      apps/etherscan/webpack.config.js
  8. 4
      apps/remix-ide-e2e/src/tests/etherscan_api.ts
  9. 17
      apps/remix-ide-e2e/src/tests/solidityImport.test.ts

@ -1,13 +1,9 @@
{
"presets": [
[
"@nrwl/react/babel", {
"runtime": "automatic"
}
]
],
"plugins": [
"presets": ["@babel/preset-env", ["@babel/preset-react",
{"runtime": "automatic"}
]],
"plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime", "@babel/plugin-proposal-nullish-coalescing-operator"],
"ignore": [
"**/node_modules/**"
]
}
}

@ -23,9 +23,8 @@ export class RemixClient extends PluginClient {
const etherscanApi = getEtherScanApi(network)
const receiptStatus = await getReceiptStatus(receiptGuid, apiKey, etherscanApi)
return {
status: receiptStatus,
message: receiptStatus,
succeed: true
message: receiptStatus.result,
succeed: receiptStatus.status === '0' ? false : true
}
} catch (e: any){
return {

@ -89,7 +89,7 @@ const App = () => {
})
if (receiptsNotVerified.length > 0) {
let timer1 = setInterval(() => {
const timer1 = setInterval(() => {
for (const item in receiptsNotVerified) {
}
@ -106,7 +106,7 @@ const App = () => {
apiKey,
getEtherScanApi(network)
)
if (status === "Pass - Verified") {
if (status.result === "Pass - Verified") {
const newReceipts = receipts.map((currentReceipt: Receipt) => {
if (currentReceipt.guid === item.guid) {
return {

@ -2,6 +2,17 @@ import { PluginClient } from "@remixproject/plugin"
import axios from 'axios'
type RemixClient = PluginClient
/*
status: 0=Error, 1=Pass
message: OK, NOTOK
result: explanation
*/
export type receiptStatus = {
result: string
message: string
status: string
}
export const getEtherScanApi = (network: string) => {
return network === "main"
? `https://api.etherscan.io/api`
@ -20,12 +31,16 @@ export const getReceiptStatus = async (
receiptGuid: string,
apiKey: string,
etherscanApi: string
) => {
): Promise<receiptStatus> => {
const params = `guid=${receiptGuid}&module=contract&action=checkverifystatus&apiKey=${apiKey}`
try {
const response = await axios.get(`${etherscanApi}?${params}`)
const { result } = response.data
return result
const { result, message, status } = response.data
return {
result,
message,
status,
}
} catch (error) {
console.error(error)
}

@ -100,7 +100,7 @@ export const verify = async (
const returnValue = {
guid: result,
status: receiptStatus,
status: receiptStatus.result,
message: `Verification process started correctly. Receipt GUID ${result}`,
succeed: true
}
@ -169,4 +169,4 @@ export const verify = async (
}
}
return contractMetadata
}
}

@ -30,7 +30,7 @@ export const ReceiptsView: React.FC = () => {
apiKey,
etherscanApi
)
setResults(result)
setResults(result.result)
} catch (error: any) {
setResults(error.message)
}

@ -1,28 +1,82 @@
const nxWebpack = require('@nrwl/react/plugins/webpack')
module.exports = config => {
const nxWebpackConfig = nxWebpack(config)
const webpackConfig = {
...nxWebpackConfig,
resolve : {
...nxWebpackConfig.resolve,
fallback: {
...nxWebpackConfig.resolve.fallback,
"http": require.resolve("stream-http"),
"https": require.resolve("https-browserify"),
"stream": require.resolve("stream-browserify"),
"zlib": require.resolve("browserify-zlib"),
},
}
const { composePlugins, withNx } = require('@nrwl/webpack')
const webpack = require('webpack')
const TerserPlugin = require("terser-webpack-plugin")
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin")
// Nx plugins for webpack.
module.exports = composePlugins(withNx(), (config) => {
// Update the webpack config as needed here.
// e.g. `config.plugins.push(new MyPlugin())`
// add fallback for node modules
config.resolve.fallback = {
...config.resolve.fallback,
"crypto": require.resolve("crypto-browserify"),
"stream": require.resolve("stream-browserify"),
"path": require.resolve("path-browserify"),
"http": require.resolve("stream-http"),
"https": require.resolve("https-browserify"),
"constants": require.resolve("constants-browserify"),
"os": false, //require.resolve("os-browserify/browser"),
"timers": false, // require.resolve("timers-browserify"),
"zlib": require.resolve("browserify-zlib"),
"fs": false,
"module": false,
"tls": false,
"net": false,
"readline": false,
"child_process": false,
"buffer": require.resolve("buffer/"),
"vm": require.resolve('vm-browserify'),
}
if (process.env.NODE_ENV === 'production') {
return {
...webpackConfig,
mode: 'production',
devtool: 'source-map',
}
} else {
return webpackConfig
// add externals
config.externals = {
...config.externals,
solc: 'solc',
}
}
// add public path
config.output.publicPath = '/'
// add copy & provide plugin
config.plugins.push(
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
url: ['url', 'URL'],
process: 'process/browser',
})
)
// souce-map loader
config.module.rules.push({
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre"
})
config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings
// set minimizer
config.optimization.minimizer = [
new TerserPlugin({
parallel: true,
terserOptions: {
ecma: 2015,
compress: false,
mangle: false,
format: {
comments: false,
},
},
extractComments: false,
}),
new CssMinimizerPlugin(),
];
return config;
});

@ -54,7 +54,7 @@ module.exports = {
.clickLaunchIcon('filePanel')
.addFile('receiptStatusScript.ts', { content: receiptStatusScript })
.click('*[data-id="play-editor"]') // run the script
.waitForElementContainsText('*[data-id="terminalJournal"]', 'Pass - Verified', 60000)
.waitForElementContainsText('*[data-id="terminalJournal"]', 'Already Verified', 60000)
}
}
@ -119,7 +119,7 @@ const receiptStatusScript = `
const receiptStatus = async () => {
try {
const apikey = '2HKUX5ZVASZIKWJM8MIQVCRUVZ6JAWT531'
const ret = await remix.call('etherscan' as any, 'receiptStatus', 'n1qtqfn8jggwqv9uvni5zzectnztqbxqqvizznvl4vg1pndb9v', apikey)
const ret = await remix.call('etherscan' as any, 'receiptStatus', 'tsrrzmayenrslvixnvhdv7fbbp6kk1xuqkg667aqlesblpkimt', apikey)
console.log(ret)
} catch (e) {
console.log(e.message)

@ -34,19 +34,6 @@ module.exports = {
timeout: 120000,
suppressNotFoundErrors: true
})
.click('[data-id="compilerContainerCompileBtn"]')
.isVisible({
selector: "//span[contains(.,'not found Untitled11')]",
locateStrategy: 'xpath',
timeout: 120000,
suppressNotFoundErrors: true
})
.click('[data-id="compilerContainerCompileBtn"]')
.waitForElementVisible({
selector: "//span[contains(.,'not found Untitled11')]",
locateStrategy: 'xpath',
timeout: 120000,
})
},
@ -135,11 +122,11 @@ const sources = [
'Untitled.sol': { content: 'contract test1 {} contract test2 {}' }
},
{
'Untitled1.sol': { content: 'import "./Untitled2.sol"; contract test6 {}' },
'Untitled1.sol': { content: 'import "/Untitled2.sol"; contract test6 {}' },
'Untitled2.sol': { content: 'contract test4 {} contract test5 {}' }
},
{
'Untitled3.sol': { content: 'import "./Untitled11.sol"; contract test6 {}' }
'Untitled3.sol': { content: 'import "/Untitled11.sol"; contract test6 {}' }
},
{
'Untitled4.sol': { content: 'import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol"; contract test7 {}' }

Loading…
Cancel
Save