From 5edf74a4b911aeeee9326ff0f50df8da08b807c1 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 22 Oct 2024 14:09:52 +0200 Subject: [PATCH 1/5] fix rpc endpoint properties --- .../injected-arbitrum-one-provider.tsx | 17 -------- .../providers/injected-custom-provider.tsx | 10 +++-- .../injected-ephemery-testnet-provider.tsx | 40 ------------------- .../providers/injected-optimism-provider.tsx | 17 -------- .../injected-provider-trustwallet.tsx | 26 ------------ .../injected-skale-chaos-testnet-provider.tsx | 27 ------------- apps/remix-ide/src/app/udapp/run-tab.tsx | 14 +++---- 7 files changed, 13 insertions(+), 138 deletions(-) delete mode 100644 apps/remix-ide/src/app/providers/injected-arbitrum-one-provider.tsx delete mode 100644 apps/remix-ide/src/app/providers/injected-ephemery-testnet-provider.tsx delete mode 100644 apps/remix-ide/src/app/providers/injected-optimism-provider.tsx delete mode 100644 apps/remix-ide/src/app/providers/injected-provider-trustwallet.tsx delete mode 100644 apps/remix-ide/src/app/providers/injected-skale-chaos-testnet-provider.tsx diff --git a/apps/remix-ide/src/app/providers/injected-arbitrum-one-provider.tsx b/apps/remix-ide/src/app/providers/injected-arbitrum-one-provider.tsx deleted file mode 100644 index 5930572249..0000000000 --- a/apps/remix-ide/src/app/providers/injected-arbitrum-one-provider.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as packageJson from '../../../../../package.json' -import { InjectedCustomProvider } from './injected-custom-provider' - -const profile = { - name: 'injected-arbitrum-one-provider', - displayName: 'Injected Arbitrum One Provider', - kind: 'provider', - description: 'injected Arbitrum One Provider', - methods: ['sendAsync', 'init'], - version: packageJson.version -} - -export class InjectedArbitrumOneProvider extends InjectedCustomProvider { - constructor() { - super(profile, 'Arbitrum One', '0xa4b1', ['https://arb1.arbitrum.io/rpc']) - } -} diff --git a/apps/remix-ide/src/app/providers/injected-custom-provider.tsx b/apps/remix-ide/src/app/providers/injected-custom-provider.tsx index a00604b3d9..7d90e6423a 100644 --- a/apps/remix-ide/src/app/providers/injected-custom-provider.tsx +++ b/apps/remix-ide/src/app/providers/injected-custom-provider.tsx @@ -4,12 +4,14 @@ import { InjectedProviderDefault } from './injected-provider-default' export class InjectedCustomProvider extends InjectedProviderDefault { chainName: string chainId: string + pluginName: string rpcUrls: Array nativeCurrency: Record blockExplorerUrls: Array - constructor(provider: any, chainName: string, chainId: string, rpcUrls: Array, nativeCurrency?: Record, blockExplorerUrls?: Array) { - super(provider, chainName) + constructor(provider: any, pluginName: string, chainName: string, chainId: string, rpcUrls: Array, nativeCurrency?: Record, blockExplorerUrls?: Array) { + super(provider, pluginName) + this.pluginName = pluginName this.chainName = chainName this.chainId = chainId this.rpcUrls = rpcUrls @@ -44,8 +46,8 @@ export const setCustomNetwork = async (chainName: string, chainId: string, rpcUr chainName: chainName, rpcUrls: rpcUrls, } - if (nativeCurrency) paramsObj.nativeCurrency = nativeCurrency - if (blockExplorerUrls) paramsObj.blockExplorerUrls = blockExplorerUrls + paramsObj.nativeCurrency = nativeCurrency ? nativeCurrency : null + paramsObj.blockExplorerUrls = blockExplorerUrls ? blockExplorerUrls : null await (window as any).ethereum.request({ method: 'wallet_addEthereumChain', params: [paramsObj] diff --git a/apps/remix-ide/src/app/providers/injected-ephemery-testnet-provider.tsx b/apps/remix-ide/src/app/providers/injected-ephemery-testnet-provider.tsx deleted file mode 100644 index 4b25986ba5..0000000000 --- a/apps/remix-ide/src/app/providers/injected-ephemery-testnet-provider.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import * as packageJson from '../../../../../package.json' -import { InjectedCustomProvider } from './injected-custom-provider' -import { Web3 } from 'web3' - -const profile = { - name: 'injected-ephemery-testnet-provider', - displayName: 'Injected Ephemery Testnet Provider', - kind: 'provider', - description: 'Injected Ephemery Testnet Provider', - methods: ['sendAsync', 'init'], - version: packageJson.version -} - -export class InjectedEphemeryTestnetProvider extends InjectedCustomProvider { - constructor() { - super(profile, - 'Ephemery Testnet', - '', - ['https://otter.bordel.wtf/erigon', 'https://eth.ephemeral.zeus.fyi'], - { - "name": "Ephemery ETH", - "symbol": "ETH", - "decimals": 18 - }, - [ - 'https://otter.bordel.wtf/', - 'https://explorer.ephemery.dev/' - ] - ) - } - - async init() { - const chainId = await new Web3(this.rpcUrls[0]).eth.getChainId() - this.chainId = `0x${chainId.toString(16)}` - this.chainName = `Ephemery Testnet ${chainId}` - await super.init() - return {} - } - -} diff --git a/apps/remix-ide/src/app/providers/injected-optimism-provider.tsx b/apps/remix-ide/src/app/providers/injected-optimism-provider.tsx deleted file mode 100644 index dd14c4ab11..0000000000 --- a/apps/remix-ide/src/app/providers/injected-optimism-provider.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as packageJson from '../../../../../package.json' -import { InjectedCustomProvider } from './injected-custom-provider' - -const profile = { - name: 'injected-optimism-provider', - displayName: 'Injected Optimism Provider', - kind: 'provider', - description: 'injected Optimism Provider', - methods: ['sendAsync', 'init'], - version: packageJson.version -} - -export class Injected0ptimismProvider extends InjectedCustomProvider { - constructor() { - super(profile, 'Optimism', '0xa', ['https://mainnet.optimism.io']) - } -} diff --git a/apps/remix-ide/src/app/providers/injected-provider-trustwallet.tsx b/apps/remix-ide/src/app/providers/injected-provider-trustwallet.tsx deleted file mode 100644 index ea7185ad4f..0000000000 --- a/apps/remix-ide/src/app/providers/injected-provider-trustwallet.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/* global ethereum */ -import * as packageJson from '../../../../../package.json' -import { InjectedProvider } from './injected-provider' - -const profile = { - name: 'injected-trustwallet', - displayName: 'Trust wallet', - kind: 'provider', - description: 'Trust wallet', - methods: ['sendAsync', 'init'], - version: packageJson.version -} - -export class InjectedProviderTrustWallet extends InjectedProvider { - constructor() { - super(profile) - } - - getInjectedProvider() { - return (window as any).trustwallet - } - - notFound() { - return 'Could not find Trust Wallet provider. Please make sure the Trust Wallet extension is active. Download the latest version from https://trustwallet.com/browser-extension' - } -} diff --git a/apps/remix-ide/src/app/providers/injected-skale-chaos-testnet-provider.tsx b/apps/remix-ide/src/app/providers/injected-skale-chaos-testnet-provider.tsx deleted file mode 100644 index c5da299f76..0000000000 --- a/apps/remix-ide/src/app/providers/injected-skale-chaos-testnet-provider.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as packageJson from '../../../../../package.json' -import { InjectedCustomProvider } from './injected-custom-provider' - -const profile = { - name: 'injected-skale-chaos-testnet-provider', - displayName: 'Injected SKALE Chaos Testnet', - kind: 'provider', - description: 'Injected SKALE Chaos Testnet Provider', - methods: ['sendAsync', 'init'], - version: packageJson.version -} - -export class InjectedSKALEChaosTestnetProvider extends InjectedCustomProvider { - - constructor () { - super(profile, - 'SKALE Chaos Testnet', - '0x50877ed6', - ['https://staging-v3.skalenodes.com/v1/staging-fast-active-bellatrix'], - { - "name": "sFUEL", - "symbol": "sFUEL", - "decimals": 18 - } - ) - } -} diff --git a/apps/remix-ide/src/app/udapp/run-tab.tsx b/apps/remix-ide/src/app/udapp/run-tab.tsx index 84c50b5475..b513a76c2e 100644 --- a/apps/remix-ide/src/app/udapp/run-tab.tsx +++ b/apps/remix-ide/src/app/udapp/run-tab.tsx @@ -215,8 +215,8 @@ export class RunTab extends ViewPlugin { const addCustomInjectedProvider = async (position, event, name, displayName, networkId, urls, nativeCurrency?) => { // name = `${name} through ${event.detail.info.name}` - await this.engine.register([new InjectedCustomProvider(event.detail.provider, name, networkId, urls, nativeCurrency)]) - await addProvider(position, name, displayName, true, false) + await this.engine.register([new InjectedCustomProvider(event.detail.provider, name, displayName, networkId, urls, nativeCurrency)]) + await addProvider(position, name, displayName + ' - ' + event.detail.info.name, true, false) } const registerInjectedProvider = async (event) => { const name = 'injected-' + event.detail.info.name @@ -225,21 +225,21 @@ export class RunTab extends ViewPlugin { await addProvider(0, name, displayName, true, false) if (event.detail.info.name === 'MetaMask') { - await addCustomInjectedProvider(7, event, 'injected-metamask-optimism', 'L2 - Optimism - ' + event.detail.info.name, '0xa', ['https://mainnet.optimism.io']) - await addCustomInjectedProvider(8, event, 'injected-metamask-arbitrum', 'L2 - Arbitrum - ' + event.detail.info.name, '0xa4b1', ['https://arb1.arbitrum.io/rpc']) - await addCustomInjectedProvider(5, event, 'injected-metamask-sepolia', 'Sepolia Testnet - ' + event.detail.info.name, '0xaa36a7', [], + await addCustomInjectedProvider(7, event, 'injected-metamask-optimism', 'L2 - Optimism', '0xa', ['https://mainnet.optimism.io']) + await addCustomInjectedProvider(8, event, 'injected-metamask-arbitrum', 'L2 - Arbitrum', '0xa4b1', ['https://arb1.arbitrum.io/rpc']) + await addCustomInjectedProvider(5, event, 'injected-metamask-sepolia', 'Sepolia Testnet', '0xaa36a7', [], { "name": "Sepolia ETH", "symbol": "ETH", "decimals": 18 }) - await addCustomInjectedProvider(9, event, 'injected-metamask-ephemery', 'Ephemery Testnet - ' + event.detail.info.name, '', ['https://otter.bordel.wtf/erigon', 'https://eth.ephemeral.zeus.fyi'], + await addCustomInjectedProvider(9, event, 'injected-metamask-ephemery', 'Ephemery Testnet', '', ['https://otter.bordel.wtf/erigon', 'https://eth.ephemeral.zeus.fyi'], { "name": "Ephemery ETH", "symbol": "ETH", "decimals": 18 }) - await addCustomInjectedProvider(10, event, 'injected-metamask-gnosis', 'Gnosis Mainnet - ' + event.detail.info.name, '', ['https://rpc.ankr.com/gnosis', 'https://1rpc.io/gnosis'], + await addCustomInjectedProvider(10, event, 'injected-metamask-gnosis', 'Gnosis Mainnet', '', ['https://rpc.ankr.com/gnosis', 'https://1rpc.io/gnosis'], { "name": "XDAI", "symbol": "XDAI", From 1647118077e3534fc2fd96a30e04f7ae0543e542 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Wed, 23 Oct 2024 13:40:45 +0530 Subject: [PATCH 2/5] disable old etherscan e2e --- apps/remix-ide-e2e/src/tests/etherscan_api.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/remix-ide-e2e/src/tests/etherscan_api.test.ts b/apps/remix-ide-e2e/src/tests/etherscan_api.test.ts index c9592d684f..d4716f3a38 100644 --- a/apps/remix-ide-e2e/src/tests/etherscan_api.test.ts +++ b/apps/remix-ide-e2e/src/tests/etherscan_api.test.ts @@ -62,7 +62,7 @@ const branch = process.env.CIRCLE_BRANCH; const isMasterBranch = branch === 'master'; module.exports = { - ...(branch ? (isMasterBranch ? tests : {}) : tests), + ...{} //(branch ? (isMasterBranch ? tests : {}) : tests), }; From 43991c6ba8d983a80463b7189b79729c093b2b18 Mon Sep 17 00:00:00 2001 From: lianahus Date: Wed, 23 Oct 2024 13:29:43 +0200 Subject: [PATCH 3/5] new icon for remixguide, border for navtab etc --- .../src/app/components/NavMenu.tsx | 2 +- apps/remix-ide/src/app/plugins/remixGuide.tsx | 10 +++++---- apps/remix-ide/src/remixAppManager.js | 8 +++---- .../src/lib/components/homeTabFeatured.tsx | 22 ++++++++++--------- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/apps/contract-verification/src/app/components/NavMenu.tsx b/apps/contract-verification/src/app/components/NavMenu.tsx index 914e0f917a..a949b4da16 100644 --- a/apps/contract-verification/src/app/components/NavMenu.tsx +++ b/apps/contract-verification/src/app/components/NavMenu.tsx @@ -11,7 +11,7 @@ const NavItem: React.FC = ({ to, icon, title }) => { return ( 'text-decoration-none d-flex px-1 flex-column justify-content-center small ' + (isActive ? "bg-light" : "bg-transparent")} + className={({ isActive }) => 'text-decoration-none d-flex px-1 py-1 flex-column justify-content-center small ' + (isActive ? "bg-light border-top border-left border-right" : "border-0 bg-transparent")} > {icon} diff --git a/apps/remix-ide/src/app/plugins/remixGuide.tsx b/apps/remix-ide/src/app/plugins/remixGuide.tsx index 65780d0f6b..f19163f7bc 100644 --- a/apps/remix-ide/src/app/plugins/remixGuide.tsx +++ b/apps/remix-ide/src/app/plugins/remixGuide.tsx @@ -8,16 +8,19 @@ import { RemixUIGridSection } from '@remix-ui/remix-ui-grid-section' import { RemixUIGridCell } from '@remix-ui/remix-ui-grid-cell' import * as Data from './remixGuideData.json' import './remixGuide.css' +import Icon from 'libs/remix-ui/vertical-icons-panel/src/lib/components/Icon' //@ts-ignore const _paq = (window._paq = window._paq || []) const profile = { name: 'remixGuide', displayName: 'Remix Guide', - description: 'Learn remix with videos', + description: 'Learn Web3 development using Remix with videos.', location: 'mainPanel', + icon: 'data:image/png;base64,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', maintainedBy: 'remix', - events: [] + events: [], + methods: [] } export class RemixGuidePlugin extends ViewPlugin { @@ -94,7 +97,6 @@ export class RemixGuidePlugin extends ViewPlugin {
{ section.cells.map(cell => { return { + _paq.push(['trackEvent', 'hometab', 'featuredSection', 'watchOnRemixGuide']) + await props.plugin.appManager.activatePlugin(['remixGuide']) + await props.plugin.call('tabs', 'focus', 'remixGuide') + } return (
@@ -80,19 +85,18 @@ function HomeTabFeatured(props:HomeTabFeaturedProps) {
- handleStartLearneth()} > - +
From 0875db01e67e48861e55a44fc8293e4c4bf58d91 Mon Sep 17 00:00:00 2001 From: Liana Husikyan Date: Wed, 23 Oct 2024 14:31:07 +0200 Subject: [PATCH 4/5] Update remixGuide.tsx --- apps/remix-ide/src/app/plugins/remixGuide.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/remix-ide/src/app/plugins/remixGuide.tsx b/apps/remix-ide/src/app/plugins/remixGuide.tsx index f19163f7bc..adee5e5a1a 100644 --- a/apps/remix-ide/src/app/plugins/remixGuide.tsx +++ b/apps/remix-ide/src/app/plugins/remixGuide.tsx @@ -8,7 +8,6 @@ import { RemixUIGridSection } from '@remix-ui/remix-ui-grid-section' import { RemixUIGridCell } from '@remix-ui/remix-ui-grid-cell' import * as Data from './remixGuideData.json' import './remixGuide.css' -import Icon from 'libs/remix-ui/vertical-icons-panel/src/lib/components/Icon' //@ts-ignore const _paq = (window._paq = window._paq || []) From b6700e9cb6bcdfecdc3152a1a74ab1c1337a2576 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Wed, 23 Oct 2024 20:13:52 +0530 Subject: [PATCH 5/5] publish libs for 0.56.0 --- libs/ghaction-helper/package.json | 8 ++++---- libs/remix-analyzer/package.json | 8 ++++---- libs/remix-astwalker/package.json | 6 +++--- libs/remix-debug/package.json | 12 ++++++------ libs/remix-lib/package.json | 4 ++-- libs/remix-simulator/package.json | 6 +++--- libs/remix-solidity/package.json | 6 +++--- libs/remix-tests/package.json | 10 +++++----- libs/remix-url-resolver/package.json | 4 ++-- libs/remix-ws-templates/package.json | 4 ++-- libs/remixd/package.json | 2 +- 11 files changed, 35 insertions(+), 35 deletions(-) diff --git a/libs/ghaction-helper/package.json b/libs/ghaction-helper/package.json index a9de54aa2f..fee012163e 100644 --- a/libs/ghaction-helper/package.json +++ b/libs/ghaction-helper/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/ghaction-helper", - "version": "0.1.38", + "version": "0.1.39", "description": "Solidity Tests GitHub Action Helper", "main": "src/index.js", "scripts": { @@ -19,17 +19,17 @@ }, "homepage": "https://github.com/ethereum/remix-project#readme", "devDependencies": { - "@remix-project/remix-solidity": "^0.5.44", + "@remix-project/remix-solidity": "^0.5.45", "@types/chai": "^4.3.4", "typescript": "^4.9.3" }, "dependencies": { "@ethereum-waffle/chai": "^3.4.4", - "@remix-project/remix-simulator": "^0.2.58", + "@remix-project/remix-simulator": "^0.2.59", "chai": "^4.3.7", "ethers": "^5.7.2", "web3": "^4.1.1" }, "types": "./src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034" + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91" } \ No newline at end of file diff --git a/libs/remix-analyzer/package.json b/libs/remix-analyzer/package.json index 20eb4188e8..e12128ee9f 100644 --- a/libs/remix-analyzer/package.json +++ b/libs/remix-analyzer/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-analyzer", - "version": "0.5.67", + "version": "0.5.68", "description": "Tool to perform static analysis on Solidity smart contracts", "scripts": { "test": "./../../node_modules/.bin/ts-node --project ../../tsconfig.base.json --require tsconfig-paths/register ./../../node_modules/.bin/tape ./test/tests.ts" @@ -25,8 +25,8 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-astwalker": "^0.0.88", - "@remix-project/remix-lib": "^0.5.65", + "@remix-project/remix-astwalker": "^0.0.89", + "@remix-project/remix-lib": "^0.5.66", "async": "^2.6.2", "ethers": "^5.4.2", "ethjs-util": "^0.1.6", @@ -50,6 +50,6 @@ "typescript": "^3.7.5" }, "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034", + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91", "main": "./src/index.js" } \ No newline at end of file diff --git a/libs/remix-astwalker/package.json b/libs/remix-astwalker/package.json index 5372a20cca..03b87efe45 100644 --- a/libs/remix-astwalker/package.json +++ b/libs/remix-astwalker/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-astwalker", - "version": "0.0.88", + "version": "0.0.89", "description": "Tool to walk through Solidity AST", "main": "src/index.js", "scripts": { @@ -37,7 +37,7 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.65", + "@remix-project/remix-lib": "^0.5.66", "@types/tape": "^4.2.33", "async": "^2.6.2", "ethers": "^5.4.2", @@ -53,6 +53,6 @@ "tap-spec": "^5.0.0" }, "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034", + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-debug/package.json b/libs/remix-debug/package.json index c85ce66743..dcf8ac0967 100644 --- a/libs/remix-debug/package.json +++ b/libs/remix-debug/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-debug", - "version": "0.5.58", + "version": "0.5.59", "description": "Tool to debug Ethereum transactions", "contributors": [ { @@ -26,10 +26,10 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-astwalker": "^0.0.88", - "@remix-project/remix-lib": "^0.5.65", - "@remix-project/remix-simulator": "^0.2.58", - "@remix-project/remix-solidity": "^0.5.44", + "@remix-project/remix-astwalker": "^0.0.89", + "@remix-project/remix-lib": "^0.5.66", + "@remix-project/remix-simulator": "^0.2.59", + "@remix-project/remix-solidity": "^0.5.45", "ansi-gray": "^0.1.1", "async": "^2.6.2", "color-support": "^1.1.3", @@ -69,6 +69,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-debug#readme", "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034", + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-lib/package.json b/libs/remix-lib/package.json index 812a21f89c..5022929442 100644 --- a/libs/remix-lib/package.json +++ b/libs/remix-lib/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-lib", - "version": "0.5.65", + "version": "0.5.66", "description": "Library to various Remix tools", "contributors": [ { @@ -55,6 +55,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-lib#readme", "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034", + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-simulator/package.json b/libs/remix-simulator/package.json index c29fe8a49f..72d7524235 100644 --- a/libs/remix-simulator/package.json +++ b/libs/remix-simulator/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-simulator", - "version": "0.2.58", + "version": "0.2.59", "description": "Ethereum IDE and tools for the web", "contributors": [ { @@ -23,7 +23,7 @@ "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", "@metamask/eth-sig-util": "^7.0.2", - "@remix-project/remix-lib": "^0.5.65", + "@remix-project/remix-lib": "^0.5.66", "ansi-gray": "^0.1.1", "async": "^3.1.0", "body-parser": "^1.18.2", @@ -71,6 +71,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-simulator#readme", "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034", + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-solidity/package.json b/libs/remix-solidity/package.json index 10513e6793..5cb3d1772e 100644 --- a/libs/remix-solidity/package.json +++ b/libs/remix-solidity/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-solidity", - "version": "0.5.44", + "version": "0.5.45", "description": "Tool to load and run Solidity compiler", "main": "src/index.js", "types": "src/index.d.ts", @@ -19,7 +19,7 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.65", + "@remix-project/remix-lib": "^0.5.66", "async": "^2.6.2", "eslint-scope": "^5.0.0", "ethers": "^5.4.2", @@ -57,5 +57,5 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-solidity#readme", "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034" + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91" } \ No newline at end of file diff --git a/libs/remix-tests/package.json b/libs/remix-tests/package.json index 48cc1b6f3f..a0b0b731c7 100644 --- a/libs/remix-tests/package.json +++ b/libs/remix-tests/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-tests", - "version": "0.2.58", + "version": "0.2.59", "description": "Tool to test Solidity smart contracts", "main": "src/index.js", "types": "./src/index.d.ts", @@ -41,9 +41,9 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.65", - "@remix-project/remix-simulator": "^0.2.58", - "@remix-project/remix-solidity": "^0.5.44", + "@remix-project/remix-lib": "^0.5.66", + "@remix-project/remix-simulator": "^0.2.59", + "@remix-project/remix-solidity": "^0.5.45", "@remix-project/remix-url-resolver": "^0.0.42", "ansi-gray": "^0.1.1", "async": "^2.6.0", @@ -89,5 +89,5 @@ "@ethereumjs/trie": "6.2.1" }, "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034" + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91" } \ No newline at end of file diff --git a/libs/remix-url-resolver/package.json b/libs/remix-url-resolver/package.json index a6865d21fa..3dbc5b9476 100644 --- a/libs/remix-url-resolver/package.json +++ b/libs/remix-url-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-url-resolver", - "version": "0.0.87", + "version": "0.0.88", "description": "Solidity import url resolver engine", "main": "src/index.js", "types": "src/index.d.ts", @@ -41,5 +41,5 @@ "typescript": "^3.1.6" }, "typings": "src/index.d.ts", - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034" + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91" } \ No newline at end of file diff --git a/libs/remix-ws-templates/package.json b/libs/remix-ws-templates/package.json index 8761df18ad..7319cece4d 100644 --- a/libs/remix-ws-templates/package.json +++ b/libs/remix-ws-templates/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-ws-templates", - "version": "1.0.52", + "version": "1.0.53", "description": "Create a Remix IDE workspace using different templates", "main": "src/index.js", "types": "src/index.d.ts", @@ -24,5 +24,5 @@ "ethers": "^5.4.2", "web3": "^4.1.1" }, - "gitHead": "1beb79ae8b8269ba42440169ae8674b82f2ef034" + "gitHead": "0875db01e67e48861e55a44fc8293e4c4bf58d91" } \ No newline at end of file diff --git a/libs/remixd/package.json b/libs/remixd/package.json index 741ee88b2f..ef5cdcafd4 100644 --- a/libs/remixd/package.json +++ b/libs/remixd/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remixd", - "version": "0.6.38", + "version": "0.6.39", "description": "remix server: allow accessing file system from remix.ethereum.org and start a dev environment (see help section)", "main": "index.js", "types": "./index.d.ts",