diff --git a/package.json b/package.json index b1cc9d5e56..d141ff2c7d 100644 --- a/package.json +++ b/package.json @@ -143,10 +143,11 @@ "remix-ide": "./bin/remix-ide" }, "scripts": { - "setupremix": "npm run linkremixdebug && npm run linkremixlib && npm run linkremixsolidity && npm run linkremixanalyzer && npm run linkremixtests", + "setupremix": "npm run linkremixdebug && npm run linkremixlib && npm run linkremixsolidity && npm run linkremixanalyzer && npm run linkremixtests && npm run linkremixsimulator", "pullremix": "git clone https://github.com/ethereum/remix", "linkremixlib": "cd node_modules && rm -rf remix-lib && ln -s ../../remix/remix-lib remix-lib && cd ..", "linkremixsolidity": "cd node_modules && rm -rf remix-solidity && ln -s ../../remix/remix-solidity remix-solidity && cd ..", + "linkremixsimulator": "cd node_modules && rm -rf remix-simulator && ln -s ../../remix/remix-simulator remix-simulator && cd ..", "linkremixtests": "cd node_modules && rm -rf remix-tests && ln -s ../../remix/remix-tests remix-tests && cd ..", "linkremixdebug": "cd node_modules && rm -rf remix-debug && ln -s ../../remix/remix-debug remix-debug && cd ..", "linkremixanalyzer": "cd node_modules && rm -rf remix-analyzer && ln -s ../../remix/remix-analyzer remix-analyzer && cd ..", diff --git a/src/app.js b/src/app.js index 5dae940db5..ab26cd44fe 100644 --- a/src/app.js +++ b/src/app.js @@ -23,6 +23,8 @@ var toolTip = require('./app/ui/tooltip') var CompilerMetadata = require('./app/files/compiler-metadata') var CompilerImport = require('./app/compiler/compiler-imports') +var executionContext = require('./execution-context') + const PluginManagerComponent = require('./app/components/plugin-manager-component') const CompilersArtefacts = require('./app/compiler/compiler-artefacts') @@ -222,13 +224,13 @@ Please make a backup of your contracts and start using http://remix.ethereum.org const fileManager = new FileManager(editor) registry.put({api: fileManager, name: 'filemanager'}) // ----------------- compilation metadata generation servive ---------------------------- - const compilerMetadataGenerator = new CompilerMetadata(fileManager, registry.get('config').api) + const compilerMetadataGenerator = new CompilerMetadata(executionContext, fileManager, registry.get('config').api) // ----------------- compilation result service (can keep track of compilation results) ---------------------------- const compilersArtefacts = new CompilersArtefacts() // store all the compilation results (key represent a compiler name) registry.put({api: compilersArtefacts, name: 'compilersartefacts'}) // ----------------- universal dapp: run transaction, listen on transactions, decode events const udapp = new UniversalDApp(registry.get('config').api) - const {eventsDecoder, txlistener} = makeUdapp(udapp, compilersArtefacts, (domEl) => mainview.getTerminal().logHtml(domEl)) + const {eventsDecoder, txlistener} = makeUdapp(udapp, executionContext, compilersArtefacts, (domEl) => mainview.getTerminal().logHtml(domEl)) // ----------------- network service (resolve network id / name) ---------------------------- const networkModule = new NetworkModule() // ----------------- convert offset to line/column service ---------------------------- @@ -293,6 +295,7 @@ Please make a backup of your contracts and start using http://remix.ethereum.org ) const run = new RunTab( udapp, + executionContext, registry.get('config').api, registry.get('filemanager').api, registry.get('editor').api, diff --git a/src/app/files/compiler-metadata.js b/src/app/files/compiler-metadata.js index 69974afc58..1485455049 100644 --- a/src/app/files/compiler-metadata.js +++ b/src/app/files/compiler-metadata.js @@ -1,5 +1,4 @@ 'use strict' -var executionContext = require('../../execution-context') var CompilerAbstract = require('../compiler/compiler-abstract') import { Plugin } from '@remixproject/engine' import * as packageJson from '../../../package.json' @@ -12,9 +11,10 @@ const profile = { } class CompilerMetadata extends Plugin { - constructor (fileManager, config) { + constructor (executionContext, fileManager, config) { super(profile) var self = this + self.executionContext = executionContext self.fileManager = fileManager self.config = config self.networks = ['VM:-', 'main:1', 'ropsten:3', 'rinkeby:4', 'kovan:42', 'görli:5', 'Custom'] @@ -97,7 +97,7 @@ class CompilerMetadata extends Plugin { var provider = self.fileManager.currentFileProvider() var path = self.fileManager.currentPath() if (provider && path) { - executionContext.detectNetwork((err, { id, name } = {}) => { + self.executionContext.detectNetwork((err, { id, name } = {}) => { if (err) { console.log(err) } else { diff --git a/src/app/panels/main-view.js b/src/app/panels/main-view.js index 8437b7a41e..d7b8b69751 100644 --- a/src/app/panels/main-view.js +++ b/src/app/panels/main-view.js @@ -1,6 +1,8 @@ var yo = require('yo-yo') var EventManager = require('../../lib/events') +var executionContext = require('../../execution-context') + var Terminal = require('./terminal') var globalRegistry = require('../../global/registry') var { TabProxy } = require('./tab-proxy.js') @@ -99,7 +101,8 @@ export class MainView { self._components.terminal = new Terminal({ appManager: this.appManager, eventsDecoder: this.eventsDecoder, - txListener: this.txListener + txListener: this.txListener, + executionContext: executionContext }, { getPosition: (event) => { diff --git a/src/app/panels/terminal.js b/src/app/panels/terminal.js index ade3113339..ca8e2673fa 100644 --- a/src/app/panels/terminal.js +++ b/src/app/panels/terminal.js @@ -10,7 +10,6 @@ var Web3 = require('web3') var swarmgw = require('swarmgw')() var CommandInterpreterAPI = require('../../lib/cmdInterpreterAPI') -var executionContext = require('../../execution-context') var AutoCompletePopup = require('../ui/auto-complete-popup') var TxLogger = require('../../app/ui/txLogger') @@ -42,6 +41,7 @@ class Terminal extends Plugin { super(profile) var self = this self.event = new EventManager() + self.executionContext = opts.executionContext self._api = api self._opts = opts self.data = { @@ -52,7 +52,7 @@ class Terminal extends Plugin { } self._view = { el: null, bar: null, input: null, term: null, journal: null, cli: null } self._components = {} - self._components.cmdInterpreter = new CommandInterpreterAPI(this) + self._components.cmdInterpreter = new CommandInterpreterAPI(this, null, self.executionContext) self._components.autoCompletePopup = new AutoCompletePopup(self._opts) self._components.autoCompletePopup.event.register('handleSelect', function (input) { let textList = self._view.input.innerText.split(' ') @@ -668,7 +668,7 @@ class Terminal extends Plugin { return done(null, 'This type of command has been deprecated and is not functionning anymore. Please run remix.help() to list available commands.') } var self = this - var context = domTerminalFeatures(self, scopedCommands) + var context = domTerminalFeatures(self, scopedCommands, self.executionContext) try { var cmds = vm.createContext(Object.assign(self._jsSandboxContext, context, self._jsSandboxRegistered)) var result = vm.runInContext(script, cmds) @@ -680,7 +680,7 @@ class Terminal extends Plugin { } } -function domTerminalFeatures (self, scopedCommands) { +function domTerminalFeatures (self, scopedCommands, executionContext) { return { swarmgw, ethers, diff --git a/src/app/tabs/debugger-tab.js b/src/app/tabs/debugger-tab.js index 4d091524b0..270db01fe6 100644 --- a/src/app/tabs/debugger-tab.js +++ b/src/app/tabs/debugger-tab.js @@ -2,6 +2,7 @@ var yo = require('yo-yo') var css = require('./styles/debugger-tab-styles') var DebuggerUI = require('./debugger/debuggerUI') +var executionContext = require('../../execution-context') import { ViewPlugin } from '@remixproject/engine' import * as packageJson from '../../../package.json' @@ -33,7 +34,7 @@ class DebuggerTab extends ViewPlugin {