diff --git a/apps/remix-ide/src/app/panels/terminal.js b/apps/remix-ide/src/app/panels/terminal.js
index 39c5c844b1..9facd299ef 100644
--- a/apps/remix-ide/src/app/panels/terminal.js
+++ b/apps/remix-ide/src/app/panels/terminal.js
@@ -39,6 +39,7 @@ class Terminal extends Plugin {
this.element.setAttribute('id', 'terminal-view')
this.event = new EventManager()
this.blockchain = opts.blockchain
+ this.vm = vm
this._api = api
this._opts = opts
this.config = config
@@ -75,18 +76,6 @@ class Terminal extends Plugin {
}
onActivation () {
- // this.on('scriptRunner', 'log', (msg) => {
- // this.commands.log.apply(this.commands, msg.data)
- // })
- // this.on('scriptRunner', 'info', (msg) => {
- // this.commands.info.apply(this.commands, msg.data)
- // })
- // this.on('scriptRunner', 'warn', (msg) => {
- // this.commands.warn.apply(this.commands, msg.data)
- // })
- // this.on('scriptRunner', 'error', (msg) => {
- // this.commands.error.apply(this.commands, msg.data)
- // })
this.renderComponent()
}
@@ -148,6 +137,7 @@ class Terminal extends Plugin {
version = {this.version}
config = {this.config}
thisState = {this}
+ vm = {this.vm}
/>,
this.element
)
diff --git a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts
index a986dd8ddc..38c58f3555 100644
--- a/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts
+++ b/libs/remix-ui/terminal/src/lib/actions/terminalAction.ts
@@ -129,3 +129,7 @@ export const registerErrorScriptRunnerAction = (event, commandName, commandFn, d
dispatch({ type: commandName, payload: { commandFn, message: msg.data } })
})
}
+
+export const registerRemixWelcomeTextAction = (welcomeText, dispatch) => {
+ dispatch({ type: 'welcomeText', payload: { welcomeText } })
+}
diff --git a/libs/remix-ui/terminal/src/lib/commands.ts b/libs/remix-ui/terminal/src/lib/commands.ts
new file mode 100644
index 0000000000..14a3cbb97b
--- /dev/null
+++ b/libs/remix-ui/terminal/src/lib/commands.ts
@@ -0,0 +1,52 @@
+export const allPrograms = [
+ { ethers: 'The ethers.js library is a compact and complete JavaScript library for Ethereum.' },
+ { remix: 'Ethereum IDE and tools for the web.' },
+ { web3: 'The web3.js library is a collection of modules which contain specific functionality for the ethereum ecosystem.' },
+ { swarmgw: 'This library can be used to upload/download files to Swarm via https://swarm-gateways.net/.' }
+]
+
+export const allCommands = [
+ { 'remix.execute(filepath)': 'Run the script specified by file path. If filepath is empty, script currently displayed in the editor is executed.' },
+ { 'remix.exeCurrent()': 'Run the script currently displayed in the editor.' },
+ { 'remix.help()': 'Display this help message.' },
+ { 'remix.loadgist(id)': 'Load a gist in the file explorer.' },
+ { 'remix.loadurl(url)': 'Load the given url in the file explorer. The url can be of type github, swarm or ipfs.' },
+
+ { 'swarmgw.get(url, cb)': 'Download files from Swarm via https://swarm-gateways.net/' },
+ { 'swarmgw.put(content, cb)': 'Upload files to Swarm via https://swarm-gateways.net/' },
+
+ { 'ethers.Contract': 'This API provides a graceful connection to a contract deployed on the blockchain, simplifying calling and querying its functions and handling all the binary protocol and conversion as necessarily.' },
+ { 'ethers.HDNode': 'A Hierarchical Deterministic Wallet represents a large tree of private keys which can reliably be reproduced from an initial seed.' },
+ { 'ethers.Interface': 'The Interface Object is a meta-class that accepts a Solidity (or compatible) Application Binary Interface (ABI) and populates functions to deal with encoding and decoding the parameters to pass in and results returned.' },
+ { 'ethers.providers': 'A Provider abstracts a connection to the Ethereum blockchain, for issuing queries and sending state changing transactions.' },
+ { 'ethers.SigningKey': 'The SigningKey interface provides an abstraction around the secp256k1 elliptic curve cryptography library.' },
+ { 'ethers.utils': 'The utility functions exposed in both the ethers umbrella package and the ethers-utils.' },
+ { 'ethers.utils.AbiCoder': 'Create a new ABI Coder object' },
+ { 'ethers.utils.RLP': 'This encoding method is used internally for several aspects of Ethereum, such as encoding transactions and determining contract addresses.' },
+ { 'ethers.Wallet': 'A wallet manages a private/public key pair which is used to cryptographically sign transactions and prove ownership on the Ethereum network.' },
+ { 'ethers.version': 'Contains the version of the ethers container object.' },
+
+ { 'web3.eth': 'Eth module for interacting with the Ethereum network.' },
+ { 'web3.eth.accounts': 'The web3.eth.accounts contains functions to generate Ethereum accounts and sign transactions and data.' },
+ { 'web3.eth.abi': 'The web3.eth.abi functions let you de- and encode parameters to ABI (Application Binary Interface) for function calls to the EVM (Ethereum Virtual Machine).' },
+ { 'web3.eth.ens': 'The web3.eth.ens functions let you interacting with ENS.' },
+ { 'web3.eth.Iban': 'The web3.eth.Iban function lets convert Ethereum addresses from and to IBAN and BBAN.' },
+ { 'web3.eth.net': 'Net module for interacting with network properties.' },
+ { 'web3.eth.personal': 'Personal module for interacting with the Ethereum accounts.' },
+ { 'web3.eth.subscribe': 'The web3.eth.subscribe function lets you subscribe to specific events in the blockchain.' },
+ { 'web3.givenProvider': 'When using web3.js in an Ethereum compatible browser, it will set with the current native provider by that browser. Will return the given provider by the (browser) environment, otherwise null.' },
+ { 'web3.modules': 'Contains the version of the web3 container object.' },
+ { 'web3.providers': 'Contains the current available providers.' },
+ { 'web3.shh': 'Shh module for interacting with the whisper protocol' },
+ { 'web3.utils': 'This package provides utility functions for Ethereum dapps and other web3.js packages.' },
+ { 'web3.version': 'Contains the version of the web3 container object.' },
+
+ { 'web3.eth.clearSubscriptions();': 'Resets subscriptions.' },
+ { 'web3.eth.Contract(jsonInterface[, address][, options])': 'The web3.eth.Contract object makes it easy to interact with smart contracts on the ethereum blockchain.' },
+ { 'web3.eth.accounts.create([entropy]);': 'The web3.eth.accounts contains functions to generate Ethereum accounts and sign transactions and data.' },
+ { 'web3.eth.getAccounts();': 'Retrieve the list of accounts' },
+ { 'web3.eth.accounts.privateKeyToAccount(privateKey [, ignoreLength ]);': 'Get the account from the private key' },
+ { 'web3.eth.accounts.signTransaction(tx, privateKey [, callback]);': 'Sign Transaction' },
+ { 'web3.eth.accounts.recoverTransaction(rawTransaction);': 'Sign Transaction' },
+ { 'web3.eth.accounts.hashMessage(message);': 'Hash message' }
+]
diff --git a/libs/remix-ui/terminal/src/lib/reducers/remixWelcom.ts b/libs/remix-ui/terminal/src/lib/reducers/remixWelcom.ts
new file mode 100644
index 0000000000..2b3e392aab
--- /dev/null
+++ b/libs/remix-ui/terminal/src/lib/reducers/remixWelcom.ts
@@ -0,0 +1,25 @@
+export const remixWelcome = () => {
+ return `
+
- Welcome to Remix {props.version} -
+
+
You can use this terminal to:
+
+
Check transactions details and start debugging.
+
Execute JavaScript scripts:
+
+ - Input a script directly in the command line interface
+
+ - Select a Javascript file in the file explorer and then run \`remix.execute()\` or \`remix.exeCurrent()\` in the command line interface
+
+ - Right click on a JavaScript file in the file explorer and then click \`Run\`
+