Merge branch 'master' of https://github.com/ethereum/remix-project into indexdbpackupdate

pull/1649/head
filip mertens 3 years ago
commit d996dce433
  1. 25
      .circleci/config.yml
  2. 2
      .eslintrc
  3. 15
      apps/remix-ide-e2e/src/commands/clickElementAtPosition.ts
  4. 6
      apps/remix-ide-e2e/src/tests/ballot.test.ts
  5. 8
      apps/remix-ide-e2e/src/tests/solidityUnittests.spec.ts
  6. 8
      apps/remix-ide-e2e/src/types/index.d.ts
  7. 8
      jest.config.js
  8. 8
      libs/remix-analyzer/package.json
  9. 4
      libs/remix-astwalker/package.json
  10. 2
      libs/remix-astwalker/src/@types/remix-lib/index.d.ts
  11. 2
      libs/remix-debug/package.json
  12. 2
      libs/remix-debug/src/code/codeUtils.ts
  13. 2
      libs/remix-debug/src/source/sourceMappingDecoder.ts
  14. 2
      libs/remix-debug/src/trace/traceHelper.ts
  15. 40
      libs/remix-lib/src/execution/txFormat.ts
  16. 8
      libs/remix-lib/src/execution/txHelper.ts
  17. 2
      libs/remix-lib/src/helpers/uiHelper.ts
  18. 4
      libs/remix-lib/src/init.ts
  19. 20
      libs/remix-lib/src/util.ts
  20. 12
      libs/remix-lib/src/web3Provider/web3VmProvider.ts
  21. 20
      libs/remix-simulator/src/methods/misc.ts
  22. 6
      libs/remix-simulator/src/methods/net.ts
  23. 31
      libs/remix-simulator/src/utils/logs.ts
  24. 26
      libs/remix-simulator/test/blocks.ts
  25. 6
      libs/remix-solidity/package.json
  26. 4
      libs/remix-ui/plugin-manager/.eslintrc
  27. 90
      libs/remix-ui/plugin-manager/src/types.d.ts
  28. 6
      libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx
  29. 6
      libs/remix-url-resolver/package.json
  30. 4
      libs/remixd/src/bin/remixd.ts
  31. 50952
      package-lock.json
  32. 49
      package.json
  33. 8
      tsconfig.base.json
  34. 2
      workspace.json

@ -7,7 +7,7 @@ jobs:
lint:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -35,7 +35,7 @@ jobs:
remix-libs:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -56,7 +56,7 @@ jobs:
remix-ide-chrome-1:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -89,7 +89,7 @@ jobs:
remix-ide-chrome-2:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -123,7 +123,7 @@ jobs:
remix-ide-firefox-1:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -156,7 +156,7 @@ jobs:
remix-ide-firefox-2:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -190,7 +190,7 @@ jobs:
remix-ide-run-deploy:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -223,7 +223,7 @@ jobs:
remix-ide-plugin-manager:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -258,7 +258,7 @@ jobs:
deploy-remix-live:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -286,7 +286,7 @@ jobs:
publish:
docker:
# specify the version you desire here
- image: circleci/node:10.19.0-buster
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -312,7 +312,7 @@ jobs:
deploy-remix-alpha:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -340,7 +340,7 @@ jobs:
deploy-remix-beta:
docker:
# specify the version you desire here
- image: circleci/node:10.18.0-browsers
- image: circleci/node:14.17.6-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
@ -428,3 +428,4 @@ workflows:
filters:
branches:
only: remix_beta

@ -4,7 +4,7 @@
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module",
"project": "./tsconfig.json"
"project": "./tsconfig.base.json"
},
"plugins": ["@typescript-eslint", "@nrwl/nx"],
"extends": "standard",

@ -2,9 +2,9 @@ import { NightwatchBrowser } from 'nightwatch'
import EventEmitter from 'events'
class ClickElement extends EventEmitter {
command (this: NightwatchBrowser, cssSelector: string, index = 0): NightwatchBrowser {
command (this: NightwatchBrowser, cssSelector: string, index = 0, opt = { forceSelectIfUnselected: false }): NightwatchBrowser {
this.api.perform((done) => {
_clickElement(this.api, cssSelector, index, () => {
_clickElement(this.api, cssSelector, index, opt.forceSelectIfUnselected, () => {
done()
this.emit('complete')
})
@ -13,13 +13,14 @@ class ClickElement extends EventEmitter {
}
}
function _clickElement (browser: NightwatchBrowser, cssSelector: string, index: number, cb: VoidFunction) {
function _clickElement (browser: NightwatchBrowser, cssSelector: string, index: number, forceSelectIfUnselected: boolean, cb: VoidFunction) {
browser.waitForElementPresent(cssSelector)
.execute(function (cssSelector: string, index: number) {
.execute(function (cssSelector: string, index: number, forceSelectIfUnselected: boolean) {
const elem = document.querySelectorAll(cssSelector)[index] as HTMLElement
elem.click()
}, [cssSelector, index], function () {
if (forceSelectIfUnselected) {
if (!(elem as any).checked) elem.click()
} else elem.click()
}, [cssSelector, index, forceSelectIfUnselected], function () {
cb()
})
}

@ -56,7 +56,8 @@ module.exports = {
.waitForElementVisible('#stepdetail')
.goToVMTraceStep(144)
.pause(2000)
.checkVariableDebug('soliditystate', stateCheck)
// Should be uncommented while fixing https://github.com/ethereum/remix-project/issues/1644
// .checkVariableDebug('soliditystate', stateCheck)
.checkVariableDebug('soliditylocals', localsCheck)
},
@ -116,7 +117,7 @@ const localsCheck = {
type: 'address'
}
}
/*
const stateCheck = {
chairperson: {
value: '0xCA35B7D915458EF540ADE6068DFE2F44E8FA733C',
@ -174,6 +175,7 @@ const stateCheck = {
immutable: false
}
}
*/
const ballotABI = `[
{

@ -140,7 +140,7 @@ module.exports = {
.clickLaunchIcon('solidityUnitTesting')
.setValue('*[data-id="uiPathInput"]', 'myTests')
.click('*[data-id="testTabGenerateTestFolder"]')
.clickElementAtPosition('.singleTestLabel', 0)
.clickElementAtPosition('.singleTest', 0, { forceSelectIfUnselected: true })
.scrollAndClick('*[data-id="testTabRunTestsTabRunAction"]')
.waitForElementPresent('*[data-id="testTabSolidityUnitTestsOutputheader"]', 60000)
.waitForElementPresent('*[data-id="testTabSolidityUnitTestsOutput"]')
@ -252,7 +252,8 @@ module.exports = {
.waitForElementContainsText('*[data-id="functionPanel"]', 'checkWinningProposal()', 60000)
.waitForElementContainsText('*[data-id="functionPanel"]', 'vote(proposal)', 60000)
.pause(2000)
.checkVariableDebug('soliditylocals', locals)
// Should be uncommented while fixing https://github.com/ethereum/remix-project/issues/1644
// .checkVariableDebug('soliditylocals', locals)
.clickLaunchIcon('filePanel')
.pause(2000)
.openFile('tests/ballotFailedDebug_test.sol')
@ -557,7 +558,7 @@ const sources = [
}
}
]
/*
const locals = {
sender: {
value: {
@ -585,3 +586,4 @@ const locals = {
type: 'uint256'
}
}
*/

@ -1,8 +1,8 @@
// Merge custom command types with nightwatch types
import { NightwatchBrowser, NightwatchBrowser, NightwatchBrowser } from "nightwatch";
import { NightwatchBrowser } from 'nightwatch'
declare module "nightwatch" {
declare module 'nightwatch' {
export interface NightwatchCustomCommands {
clickLaunchIcon(icon: string): NightwatchBrowser,
switchBrowserTab(index: number): NightwatchBrowser,
@ -46,7 +46,7 @@ declare module "nightwatch" {
setupMetamask(passphrase: string, password: string): NightwatchBrowser,
signMessage(msg: string, callback: (hash: { value: string }, signature: { value: string }) => void): NightwatchBrowser,
setSolidityCompilerVersion(version: string): NightwatchBrowser,
clickElementAtPosition(cssSelector: string, index: number): NightwatchBrowser,
clickElementAtPosition(cssSelector: string, index: number, opt?: { forceSelectIfUnselected: boolean }): NightwatchBrowser,
notContainsText(cssSelector: string, text: string): NightwatchBrowser,
sendLowLevelTx(address: string, value: string, callData: string): NightwatchBrowser,
journalLastChild(val: string): NightwatchBrowser,
@ -90,4 +90,4 @@ declare module "nightwatch" {
}
export type NightwatchCheckVariableDebugValue = NightwatchTestFunctionExpectedInput
}
}

@ -7,15 +7,15 @@ module.exports = {
moduleFileExtensions: ['ts', 'js', 'html'],
coverageReporters: ['html'],
moduleNameMapper:{
"@remix-project/remix-analyzer": "<rootDir>/../../dist/libs/remix-analyzer/index.js",
"@remix-project/remix-astwalker": "<rootDir>/../../dist/libs/remix-astwalker/index.js",
"@remix-project/remix-analyzer": "<rootDir>/../../dist/libs/remix-analyzer/src/index.js",
"@remix-project/remix-astwalker": "<rootDir>/../../dist/libs/remix-astwalker/src/index.js",
"@remix-project/remix-debug": "<rootDir>/../../dist/libs/remix-debug/src/index.js",
"@remix-project/remix-lib": "<rootDir>/../../dist/libs/remix-lib/src/index.js",
"@remix-project/remix-simulator": "<rootDir>/../../dist/libs/remix-simulator/src/index.js",
"@remix-project/remix-solidity": "<rootDir>/../../dist/libs/remix-solidity/index.js",
"@remix-project/remix-solidity": "<rootDir>/../../dist/libs/remix-solidity/src/index.js",
"@remix-project/remix-tests": "<rootDir>/../../dist/libs/remix-tests/src/index.js",
"@remix-project/remix-url-resolver":
"<rootDir>/../../dist/libs/remix-url-resolver/index.js"
"<rootDir>/../../dist/libs/remix-url-resolver/src/index.js"
,
"@remix-project/remixd": "<rootDir>/../../dist/libs/remixd/index.js"
}

@ -2,8 +2,8 @@
"name": "@remix-project/remix-analyzer",
"version": "0.5.16",
"description": "Tool to perform static analysis on Solidity smart contracts",
"main": "index.js",
"types": ".index.d.ts",
"main": "src/index.js",
"types": "src/index.d.ts",
"contributors": [
{
"name": "Alex Beregszaszi",
@ -22,7 +22,7 @@
"@ethereumjs/block": "^3.4.0",
"@ethereumjs/tx": "^3.3.0",
"@ethereumjs/vm": "^5.5.0",
"@remix-project/remix-astwalker": "^0.0.26",
"@remix-project/remix-astwalker": "^0.0.37",
"@remix-project/remix-lib": "^0.5.7",
"async": "^2.6.2",
"ethereumjs-util": "^7.0.10",
@ -50,6 +50,6 @@
"ts-node": "^8.6.2",
"typescript": "^3.7.5"
},
"typings": "index.d.ts",
"typings": "src/index.d.ts",
"gitHead": "4705cbc4d1761f75267992552da9db6cff2f3ed5"
}

@ -2,7 +2,7 @@
"name": "@remix-project/remix-astwalker",
"version": "0.0.37",
"description": "Tool to walk through Solidity AST",
"main": "index.js",
"main": "src/index.js",
"scripts": {
"build": "tsc",
"test": "./../../node_modules/.bin/nyc --reporter=lcov --require ts-node/register --require tsconfig-paths/register ./../../node_modules/.bin/tape ./tests/*.ts | ./../../node_modules/.bin/tap-spec; ./../../node_modules/.bin/nyc report ---reporter=text"
@ -52,6 +52,6 @@
"devDependencies": {
"tap-spec": "^5.0.0"
},
"typings": "index.d.ts",
"typings": "src/index.d.ts",
"gitHead": "4705cbc4d1761f75267992552da9db6cff2f3ed5"
}

@ -1,6 +1,6 @@
// Type definitions for the things we need from remix-lib
declare module "remix-lib" {
declare module 'remix-lib' {
export module util {
export function findLowerBound(target: number, array: Array<number>): number;
}

@ -22,7 +22,7 @@
"@ethereumjs/common": "^2.2.0",
"@ethereumjs/tx": "^3.3.0",
"@ethereumjs/vm": "^5.5.0",
"@remix-project/remix-astwalker": "^0.0.26",
"@remix-project/remix-astwalker": "^0.0.37",
"@remix-project/remix-lib": "^0.5.7",
"async": "^2.6.2",
"commander": "^2.19.0",

@ -29,7 +29,7 @@ export function nameOpCodes (raw, hardfork) {
const data = (pushData as any).toString('hex') !== '' ? ' ' + (pushData as any).toString('hex') : ''
code.push(this.pad(pc, this.roundLog(raw.length, 10)) + ' ' + curOpCode + data)
code.push(pad(pc, roundLog(raw.length, 10)) + ' ' + curOpCode + data)
pushData = ''
}
return [code, codeMap]

@ -108,7 +108,7 @@ function sourceLocationFromAstNode (astNode) {
* @param {Object} ast - ast given by the compilation result
*/
export function findNodeAtInstructionIndex (astNodeType, instIndex, sourceMap, ast) {
const sourceLocation = this.atIndex(instIndex, sourceMap)
const sourceLocation = atIndex(instIndex, sourceMap)
return findNodeAtSourceLocation(astNodeType, sourceLocation, ast)
}

@ -53,7 +53,7 @@ export function newContextStorage (step) {
export function isCallToPrecompiledContract (index, trace) {
// if stack empty => this is not a precompiled contract
const step = trace[index]
if (this.isCallInstruction(step)) {
if (isCallInstruction(step)) {
return index + 1 < trace.length && trace[index + 1].stack.length !== 0
}
return false

@ -77,7 +77,7 @@ export function encodeParams (params, funAbi, callback) {
* @param {Function} callback - callback
*/
export function encodeFunctionCall (params, funAbi, callback) {
this.encodeParams(params, funAbi, (error, encodedParam) => {
encodeParams(params, funAbi, (error, encodedParam) => {
if (error) return callback(error)
callback(null, { dataHex: encodeFunctionId(funAbi) + encodedParam.dataHex, funAbi, funArgs: encodedParam.funArgs })
})
@ -94,7 +94,7 @@ export function encodeFunctionCall (params, funAbi, callback) {
* @param {Function} callback - callback
*/
export function encodeConstructorCallAndLinkLibraries (contract, params, funAbi, linkLibraries, linkReferences, callback) {
this.encodeParams(params, funAbi, (error, encodedParam) => {
encodeParams(params, funAbi, (error, encodedParam) => {
if (error) return callback(error)
let bytecodeToDeploy = contract.evm.bytecode.object
if (bytecodeToDeploy.indexOf('_') >= 0) {
@ -103,7 +103,7 @@ export function encodeConstructorCallAndLinkLibraries (contract, params, funAbi,
for (const lib in linkLibraries[libFile]) {
const address = linkLibraries[libFile][lib]
if (!isValidAddress(address)) return callback(address + ' is not a valid address. Please check the provided address is valid.')
bytecodeToDeploy = this.linkLibraryStandardFromlinkReferences(lib, address.replace('0x', ''), bytecodeToDeploy, linkReferences)
bytecodeToDeploy = linkLibraryStandardFromlinkReferences(lib, address.replace('0x', ''), bytecodeToDeploy, linkReferences)
}
}
}
@ -129,13 +129,13 @@ export function encodeConstructorCallAndLinkLibraries (contract, params, funAbi,
* @param {Function} callback - callback
*/
export function encodeConstructorCallAndDeployLibraries (contractName, contract, contracts, params, funAbi, callback, callbackStep, callbackDeployLibrary) {
this.encodeParams(params, funAbi, (error, encodedParam) => {
encodeParams(params, funAbi, (error, encodedParam) => {
if (error) return callback(error)
let dataHex = ''
const contractBytecode = contract.evm.bytecode.object
let bytecodeToDeploy = contract.evm.bytecode.object
if (bytecodeToDeploy.indexOf('_') >= 0) {
this.linkBytecode(contract, contracts, (err, bytecode) => {
linkBytecode(contract, contracts, (err, bytecode) => {
if (err) {
callback('Error deploying required libraries: ' + err)
} else {
@ -176,7 +176,7 @@ export function buildData (contractName, contract, contracts, isConstructor, fun
} else {
try {
if (params.length > 0) {
funArgs = this.parseFunctionParams(params)
funArgs = parseFunctionParams(params)
}
} catch (e) {
return callback('Error encoding arguments: ' + e)
@ -199,7 +199,7 @@ export function buildData (contractName, contract, contracts, isConstructor, fun
contractBytecode = contract.evm.bytecode.object
let bytecodeToDeploy = contract.evm.bytecode.object
if (bytecodeToDeploy.indexOf('_') >= 0) {
this.linkBytecode(contract, contracts, (err, bytecode) => {
linkBytecode(contract, contracts, (err, bytecode) => {
if (err) {
callback('Error deploying required libraries: ' + err)
} else {
@ -225,7 +225,7 @@ export function linkBytecodeStandard (contract, contracts, callback, callbackSte
eachOfSeries(contract.evm.bytecode.linkReferences[file], (libRef, libName, cbLibDeployed) => {
const library = contracts[file][libName]
if (library) {
this.deployLibrary(file + ':' + libName, libName, library, contracts, (error, address) => {
deployLibrary(file + ':' + libName, libName, library, contracts, (error, address) => {
if (error) {
return cbLibDeployed(error)
}
@ -233,7 +233,7 @@ export function linkBytecodeStandard (contract, contracts, callback, callbackSte
if (hexAddress.slice(0, 2) === '0x') {
hexAddress = hexAddress.slice(2)
}
contractBytecode = this.linkLibraryStandard(libName, hexAddress, contractBytecode, contract)
contractBytecode = linkLibraryStandard(libName, hexAddress, contractBytecode, contract)
cbLibDeployed()
}, callbackStep, callbackDeployLibrary)
} else {
@ -269,7 +269,7 @@ export function linkBytecodeLegacy (contract, contracts, callback, callbackStep,
if (!library) {
return callback('Library ' + libraryName + ' not found.')
}
this.deployLibrary(libraryName, libraryShortName, library, contracts, (err, address) => {
deployLibrary(libraryName, libraryShortName, library, contracts, (err, address) => {
if (err) {
return callback(err)
}
@ -277,8 +277,8 @@ export function linkBytecodeLegacy (contract, contracts, callback, callbackStep,
if (hexAddress.slice(0, 2) === '0x') {
hexAddress = hexAddress.slice(2)
}
contract.evm.bytecode.object = this.linkLibrary(libraryName, hexAddress, contract.evm.bytecode.object)
this.linkBytecode(contract, contracts, callback, callbackStep, callbackDeployLibrary)
contract.evm.bytecode.object = linkLibrary(libraryName, hexAddress, contract.evm.bytecode.object)
linkBytecode(contract, contracts, callback, callbackStep, callbackDeployLibrary)
}, callbackStep, callbackDeployLibrary)
}
@ -287,9 +287,9 @@ export function linkBytecode (contract, contracts, callback?, callbackStep?, cal
return callback(null, contract.evm.bytecode.object)
}
if (contract.evm.bytecode.linkReferences && Object.keys(contract.evm.bytecode.linkReferences).length) {
this.linkBytecodeStandard(contract, contracts, callback, callbackStep, callbackDeployLibrary)
linkBytecodeStandard(contract, contracts, callback, callbackStep, callbackDeployLibrary)
} else {
this.linkBytecodeLegacy(contract, contracts, callback, callbackStep, callbackDeployLibrary)
linkBytecodeLegacy(contract, contracts, callback, callbackStep, callbackDeployLibrary)
}
}
@ -300,11 +300,11 @@ export function deployLibrary (libraryName, libraryShortName, library, contracts
}
const bytecode = library.evm.bytecode.object
if (bytecode.indexOf('_') >= 0) {
this.linkBytecode(library, contracts, (err, bytecode) => {
linkBytecode(library, contracts, (err, bytecode) => {
if (err) callback(err)
else {
library.evm.bytecode.object = bytecode
this.deployLibrary(libraryName, libraryShortName, library, contracts, callback, callbackStep, callbackDeployLibrary)
deployLibrary(libraryName, libraryShortName, library, contracts, callback, callbackStep, callbackDeployLibrary)
}
}, callbackStep, callbackDeployLibrary)
} else {
@ -325,7 +325,7 @@ export function linkLibraryStandardFromlinkReferences (libraryName, address, byt
for (const file in linkReferences) {
for (const libName in linkReferences[file]) {
if (libraryName === libName) {
bytecode = this.setLibraryAddress(address, bytecode, linkReferences[file][libName])
bytecode = setLibraryAddress(address, bytecode, linkReferences[file][libName])
}
}
}
@ -333,7 +333,7 @@ export function linkLibraryStandardFromlinkReferences (libraryName, address, byt
}
export function linkLibraryStandard (libraryName, address, bytecode, contract) {
return this.linkLibraryStandardFromlinkReferences(libraryName, address, bytecode, contract.evm.bytecode.linkReferences)
return linkLibraryStandardFromlinkReferences(libraryName, address, bytecode, contract.evm.bytecode.linkReferences)
}
export function setLibraryAddress (address, bytecodeToLink, positions) {
@ -384,7 +384,7 @@ export function decodeResponse (response, fnabi) {
export function parseFunctionParams (params) {
let args = []
// Check if parameter string starts with array or string
let startIndex = this.isArrayOrStringStart(params, 0) ? -1 : 0
let startIndex = isArrayOrStringStart(params, 0) ? -1 : 0
for (let i = 0; i < params.length; i++) {
// If a quote is received
if (params.charAt(i) === '"') {
@ -427,7 +427,7 @@ export function parseFunctionParams (params) {
args.push(params.substring(startIndex, i))
}
// Register start index of a parameter to parse
startIndex = this.isArrayOrStringStart(params, i + 1) ? -1 : i + 1
startIndex = isArrayOrStringStart(params, i + 1) ? -1 : i + 1
} else if (startIndex >= 0 && i === params.length - 1) {
// If start index is registered and string is completed (To handle last parameter)
args.push(params.substring(startIndex, params.length))

@ -3,8 +3,8 @@ import { ethers } from 'ethers'
export function makeFullTypeDefinition (typeDef) {
if (typeDef && typeDef.type.indexOf('tuple') === 0 && typeDef.components) {
const innerTypes = typeDef.components.map((innerType) => { return this.makeFullTypeDefinition(innerType) })
return `tuple(${innerTypes.join(',')})${this.extractSize(typeDef.type)}`
const innerTypes = typeDef.components.map((innerType) => { return makeFullTypeDefinition(innerType) })
return `tuple(${innerTypes.join(',')})${extractSize(typeDef.type)}`
}
return typeDef.type
}
@ -19,7 +19,7 @@ export function encodeParams (funABI, args) {
if (type === 'bool' && args[i] === 'false') {
args[i] = false
}
types.push(type.indexOf('tuple') === 0 ? this.makeFullTypeDefinition(funABI.inputs[i]) : type)
types.push(type.indexOf('tuple') === 0 ? makeFullTypeDefinition(funABI.inputs[i]) : type)
if (args.length < types.length) {
args.push('')
}
@ -107,7 +107,7 @@ export function getFunction (abi, fnName) {
const fn = abi[i]
if (fn.type === 'function' && fnName === fn.name + '(' + fn.inputs.map((value) => {
if (value.components) {
const fullType = this.makeFullTypeDefinition(value)
const fullType = makeFullTypeDefinition(value)
return fullType.replace(/tuple/g, '') // return of makeFullTypeDefinition might contain `tuple`, need to remove it cause `methodIdentifier` (fnName) does not include `tuple` keyword
} else {
return value.type

@ -11,7 +11,7 @@ export function formatMemory (mem, width) {
for (let k = 0; k < mem.length; k += (width * 2)) {
const memory = mem.substr(k, width * 2)
const content = this.tryConvertAsciiFormat(memory)
const content = tryConvertAsciiFormat(memory)
ret['0x' + (k / 2).toString(16)] = content.raw + '\t' + content.ascii
}
return ret

@ -4,12 +4,12 @@ import Web3 from 'web3'
export function loadWeb3 (url = 'http://localhost:8545') {
const web3 = new Web3()
web3.setProvider(new Web3.providers.HttpProvider(url))
this.extend(web3)
extend(web3)
return web3
}
export function extendWeb3 (web3) {
this.extend(web3)
extend(web3)
}
export function extend (web3) {

@ -85,7 +85,7 @@ export function findLowerBound (target, array) {
return largest array[i] such that array[i] <= target; return null if array[0] > target || array is empty
*/
export function findLowerBoundValue (target, array) {
const index = this.findLowerBound(target, array)
const index = findLowerBound(target, array)
return index >= 0 ? array[index] : null
}
@ -99,7 +99,7 @@ export function findClosestIndex (target, array): number {
if (array.length === 0) {
return -1
}
const index = this.findLowerBound(target, array)
const index = findLowerBound(target, array)
if (index < 0) {
return 0
} else if (index >= array.length - 1) {
@ -185,13 +185,13 @@ export function cborEncodedValueExtraction () {
}
export function extractcborMetadata (value) {
return value.replace(this.cborEncodedValueExtraction(), '')
return value.replace(cborEncodedValueExtraction(), '')
}
export function extractSwarmHash (value) {
value = value.replace(this.swarmHashExtraction(), '')
value = value.replace(this.swarmHashExtractionPOC31(), '')
value = value.replace(this.swarmHashExtractionPOC32(), '')
value = value.replace(swarmHashExtraction(), '')
value = value.replace(swarmHashExtractionPOC31(), '')
value = value.replace(swarmHashExtractionPOC32(), '')
return value
}
@ -218,10 +218,10 @@ export function compareByteCode (code1, code2) {
code2 = replaceLibReference(code2, pos)
code1 = replaceLibReference(code1, pos)
}
code1 = this.extractSwarmHash(code1)
code1 = this.extractcborMetadata(code1)
code2 = this.extractSwarmHash(code2)
code2 = this.extractcborMetadata(code2)
code1 = extractSwarmHash(code1)
code1 = extractcborMetadata(code1)
code2 = extractSwarmHash(code2)
code2 = extractcborMetadata(code2)
if (code1 && code2) {
const compare = stringSimilarity.compareTwoStrings(code1, code2)

@ -129,7 +129,11 @@ export class Web3VmProvider {
this.storageCache[this.processingHash] = {}
if (data.to) {
try {
const storage = await this.vm.stateManager.dumpStorage(data.to)
// dumpStorage throws error as 'Missing Node in DB'
// This can be uncommented once that error is handled
// https://github.com/ethereum/remix-project/issues/1644
// const storage = await this.vm.stateManager.dumpStorage(data.to)
const storage = {}
this.storageCache[this.processingHash][tx['to']] = storage
this.lastProcessedStorageTxHash[tx['to']] = this.processingHash
} catch (e) {
@ -245,7 +249,11 @@ export class Web3VmProvider {
if (!this.storageCache[this.processingHash][this.processingAddress]) {
const account = Address.fromString(this.processingAddress)
try {
const storage = await this.vm.stateManager.dumpStorage(account)
// dumpStorage throws error as 'Missing Node in DB'
// This can be uncommented once that error is handled
// https://github.com/ethereum/remix-project/issues/1644
// const storage = await this.vm.stateManager.dumpStorage(account)
const storage = {}
this.storageCache[this.processingHash][this.processingAddress] = storage
this.lastProcessedStorageTxHash[this.processingAddress] = this.processingHash
} catch (e) {

@ -3,16 +3,16 @@ const version = require('../../package.json').version
export function methods () {
return {
web3_clientVersion: this.web3_clientVersion.bind(this),
eth_protocolVersion: this.eth_protocolVersion.bind(this),
eth_syncing: this.eth_syncing.bind(this),
eth_mining: this.eth_mining.bind(this),
eth_hashrate: this.eth_hashrate.bind(this),
web3_sha3: this.web3_sha3.bind(this),
eth_getCompilers: this.eth_getCompilers.bind(this),
eth_compileSolidity: this.eth_compileSolidity.bind(this),
eth_compileLLL: this.eth_compileLLL.bind(this),
eth_compileSerpent: this.eth_compileSerpent.bind(this)
web3_clientVersion: web3_clientVersion,
eth_protocolVersion: eth_protocolVersion,
eth_syncing: eth_syncing,
eth_mining: eth_mining,
eth_hashrate: eth_hashrate,
web3_sha3: web3_sha3,
eth_getCompilers: eth_getCompilers,
eth_compileSolidity: eth_compileSolidity,
eth_compileLLL: eth_compileLLL,
eth_compileSerpent: eth_compileSerpent
}
}

@ -1,8 +1,8 @@
export function methods (): Record<string, unknown> {
return {
net_version: this.net_version,
net_listening: this.net_listening,
net_peerCount: this.net_peerCount
net_version: net_version,
net_listening: net_listening,
net_peerCount: net_peerCount
}
}

@ -9,11 +9,11 @@ function hasFlag (flag) {
}
function addColor (str) {
if (this.hasFlag('no-color')) {
if (hasFlag('no-color')) {
return str
}
if (this.hasFlag('color')) {
if (hasFlag('color')) {
return gray(str)
}
@ -35,41 +35,36 @@ function stderr (arg) {
}
function getTimestamp () {
const coloredTimestamp = this.addColor(timestamp('HH:mm:ss'))
const coloredTimestamp = addColor(timestamp('HH:mm:ss'))
return '[' + coloredTimestamp + ']'
}
export function log (...args: any[]) {
const time = this.getTimestamp()
this.stdout(time + ' ')
const time = getTimestamp()
stdout(time + ' ')
console.log(args)
return this
}
export function info (...args: any[]) {
const time = this.getTimestamp()
this.stdout(time + ' ')
const time = getTimestamp()
stdout(time + ' ')
console.info(args)
return this
}
export function dir (...args: any[]) {
const time = this.getTimestamp()
this.stdout(time + ' ')
const time = getTimestamp()
stdout(time + ' ')
console.dir(args)
return this
}
export function warn (...args: any[]) {
const time = this.getTimestamp()
this.stderr(time + ' ')
const time = getTimestamp()
stderr(time + ' ')
console.warn(args)
return this
}
export function error (...args: any[]) {
const time = this.getTimestamp()
this.stderr(time + ' ')
const time = getTimestamp()
stderr(time + ' ')
console.error(args)
return this
}

@ -116,6 +116,7 @@ describe('blocks', () => {
})
})
/*
describe('eth_getStorageAt', () => {
it('should get storage at position at given address', async () => {
const abi: any = [
@ -200,28 +201,29 @@ describe('blocks', () => {
}
]
const code = '0x608060405234801561001057600080fd5b506040516020806102018339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600081905550506101a9806100586000396000f3fe60806040526004361061005c576000357c0100000000000000000000000000000000000000000000000000000000900480632a1afcd91461006157806360fe47b11461008c5780636d4ce63c146100c7578063ce01e1ec146100f2575b600080fd5b34801561006d57600080fd5b5061007661012d565b6040518082815260200191505060405180910390f35b34801561009857600080fd5b506100c5600480360360208110156100af57600080fd5b8101908080359060200190929190505050610133565b005b3480156100d357600080fd5b506100dc61013d565b6040518082815260200191505060405180910390f35b3480156100fe57600080fd5b5061012b6004803603602081101561011557600080fd5b8101908080359060200190929190505050610146565b005b60005481565b8060008190555050565b60008054905090565b80600081905550807f63a242a632efe33c0e210e04e4173612a17efa4f16aa4890bc7e46caece80de060405160405180910390a25056fea165627a7a7230582063160eb16dc361092a85ced1a773eed0b63738b83bea1e1c51cf066fa90e135d0029'
// const code = '0x608060405234801561001057600080fd5b506040516020806102018339810180604052602081101561003057600080fd5b810190808051906020019092919050505080600081905550506101a9806100586000396000f3fe60806040526004361061005c576000357c0100000000000000000000000000000000000000000000000000000000900480632a1afcd91461006157806360fe47b11461008c5780636d4ce63c146100c7578063ce01e1ec146100f2575b600080fd5b34801561006d57600080fd5b5061007661012d565b6040518082815260200191505060405180910390f35b34801561009857600080fd5b506100c5600480360360208110156100af57600080fd5b8101908080359060200190929190505050610133565b005b3480156100d357600080fd5b506100dc61013d565b6040518082815260200191505060405180910390f35b3480156100fe57600080fd5b5061012b6004803603602081101561011557600080fd5b8101908080359060200190929190505050610146565b005b60005481565b8060008190555050565b60008054905090565b80600081905550807f63a242a632efe33c0e210e04e4173612a17efa4f16aa4890bc7e46caece80de060405160405180910390a25056fea165627a7a7230582063160eb16dc361092a85ced1a773eed0b63738b83bea1e1c51cf066fa90e135d0029'
const contract = new web3.eth.Contract(abi)
const accounts = await web3.eth.getAccounts()
// const contract = new web3.eth.Contract(abi)
// const accounts = await web3.eth.getAccounts()
const contractInstance: any = await contract.deploy({ data: code, arguments: [100] }).send({ from: accounts[0], gas: 400000 })
contractInstance.currentProvider = web3.eth.currentProvider
contractInstance.givenProvider = web3.eth.currentProvider
// const contractInstance: any = await contract.deploy({ data: code, arguments: [100] }).send({ from: accounts[0], gas: 400000 })
// contractInstance.currentProvider = web3.eth.currentProvider
// contractInstance.givenProvider = web3.eth.currentProvider
await contractInstance.methods.set(100).send({ from: accounts[0].toLowerCase(), gas: 400000 })
let storage = await web3.eth.getStorageAt(contractInstance.options.address, 0)
assert.deepEqual(storage, '0x64')
// await contractInstance.methods.set(100).send({ from: accounts[0].toLowerCase(), gas: 400000 })
// let storage = await web3.eth.getStorageAt(contractInstance.options.address, 0)
// assert.deepEqual(storage, '0x64')
await contractInstance.methods.set(200).send({ from: accounts[0], gas: 400000 })
storage = await web3.eth.getStorageAt(contractInstance.options.address, 0)
assert.deepEqual(storage, '0x64')
// await contractInstance.methods.set(200).send({ from: accounts[0], gas: 400000 })
// storage = await web3.eth.getStorageAt(contractInstance.options.address, 0)
// assert.deepEqual(storage, '0x64')
await contractInstance.methods.set(200).send({ from: accounts[0], gas: 400000 })
storage = await web3.eth.getStorageAt(contractInstance.options.address, 0)
assert.deepEqual(storage, '0xc8')
})
})
*/
describe('eth_call', () => {
it('should get a value', async () => {

@ -2,8 +2,8 @@
"name": "@remix-project/remix-solidity",
"version": "0.4.7",
"description": "Tool to load and run Solidity compiler",
"main": "index.js",
"types": "./index.d.ts",
"main": "src/index.js",
"types": "src/index.d.ts",
"contributors": [
{
"name": "Yann Levreau",
@ -60,6 +60,6 @@
"url": "https://github.com/ethereum/remix-project/issues"
},
"homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-solidity#readme",
"typings": "index.d.ts",
"typings": "src/index.d.ts",
"gitHead": "4705cbc4d1761f75267992552da9db6cff2f3ed5"
}

@ -14,6 +14,8 @@
},
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "error"
"@typescript-eslint/no-unused-vars": "error",
"no-useless-constructor": "off",
"@typescript-eslint/no-useless-constructor": "error"
}
}

@ -11,12 +11,12 @@ interface SetPluginOptionType {
}
export class RemixEngine extends Engine {
event: EventEmitter;
event: EventEmitter
setPluginOption ({ name, kind }) : SetPluginOptionType
onRegistration (plugin) : void
}
export function isNative(name: any): any;
export function isNative(name: any): any
/**
* Checks if plugin caller 'from' is allowed to activate plugin 'to'
* The caller can have 'canActivate' as a optional property in the plugin profile.
@ -27,33 +27,33 @@ export function isNative(name: any): any;
* @param {any, any}
* @returns {boolean}
*/
export function canActivate(from: any, to: any): boolean;
export function canActivate(from: any, to: any): boolean
export class RemixAppManager extends PluginManager {
constructor();
event: EventEmitter;
pluginsDirectory: string;
pluginLoader: PluginLoader;
permissionHandler: PermissionHandler;
getAll(): import('@remixproject/plugin-utils').Profile<any>[];
getIds(): string[];
isDependent(name: any): any;
isRequired(name: any): any;
registeredPlugins(): Promise<any>;
turnPluginOn(name: string | string[]);
turnPluginOff(name: string);
constructor()
event: EventEmitter
pluginsDirectory: string
pluginLoader: PluginLoader
permissionHandler: PermissionHandler
getAll(): import('@remixproject/plugin-utils').Profile<any>[]
getIds(): string[]
isDependent(name: any): any
isRequired(name: any): any
registeredPlugins(): Promise<any>
turnPluginOn(name: string | string[])
turnPluginOff(name: string)
}
export class PluginManagerSettings {
openDialog(): void;
permissions: any;
currentSetting: any;
onValidation(): void;
openDialog(): void
permissions: any
currentSetting: any
onValidation(): void
/** Clear one permission from a plugin */
clearPersmission(from: string, to: string, method: string): void;
clearPersmission(from: string, to: string, method: string): void
/** Clear all persmissions from a plugin */
clearAllPersmission(to: string): void;
settings(): any;
render(): any;
clearAllPersmission(to: string): void
settings(): any
render(): any
}
export type PluginPermissions = {
@ -94,7 +94,7 @@ export class PluginManagerComponent extends ViewPlugin extends Plugin implements
}
// eslint-disable-next-line no-use-before-define
export = LocalPlugin;
export = LocalPlugin
declare class LocalPlugin {
/**
* Open a modal to create a local plugin
@ -102,34 +102,34 @@ declare class LocalPlugin {
* @returns {Promise<{api: any, profile: any}>} A promise with the new plugin profile
*/
open(plugins: any[]): Promise<{
api: any;
profile: any;
}>;
api: any
profile: any
}>
profile: any;
profile: any
/**
* Create the object to add to the plugin-list
*/
create(): any;
create(): any
updateName({ target }: {
target: any;
}): void;
target: any
}): void
updateUrl({ target }: {
target: any;
}): void;
target: any
}): void
updateDisplayName({ target }: {
target: any;
}): void;
target: any
}): void
updateProfile(key: any, e: any): void;
updateProfile(key: any, e: any): void
updateMethods({ target }: {
target: any;
}): void;
target: any
}): void
/** The form to create a local plugin */
form(): any;
form(): any
}
export interface PluginManagerContextProviderProps {
@ -146,12 +146,12 @@ export interface RemixUiPluginManagerProps {
* (localStorage, queryParams)
**/
declare class PluginLoader {
get currentLoader(): any;
donotAutoReload: string[];
loaders: {};
current: string;
set(plugin: any, actives: any): void;
get(): any;
get currentLoader(): any
donotAutoReload: string[]
loaders: {}
current: string
set(plugin: any, actives: any): void
get(): any
}
export type PluginManagerSettings = {

@ -8,7 +8,7 @@ import ErrorRenderer from './ErrorRenderer' // eslint-disable-line
import { compilation } from './actions/staticAnalysisActions'
import { initialState, analysisReducer } from './reducers/staticAnalysisReducer'
import { OverlayTrigger, Tooltip } from 'react-bootstrap'// eslint-disable-line
const StaticAnalysisRunner = require('@remix-project/remix-analyzer').CodeAnalysis
import { CodeAnalysis } from '@remix-project/remix-analyzer'
declare global {
interface Window {
@ -25,7 +25,7 @@ export interface RemixUiStaticAnalyserProps {
}
export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
const [runner] = useState(new StaticAnalysisRunner())
const [runner] = useState(new CodeAnalysis())
const preProcessModules = (arr: any) => {
return arr.map((Item, i) => {
@ -196,7 +196,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
fileName = Object.keys(lastCompilationResult.sources)[file]
}
warningCount++
const msg = message(item.name, item.warning, item.more, fileName, locationString)
const msg = message(result.name, item.warning, item.more, fileName, locationString)
const options = {
type: 'warning',
useSpan: true,

@ -2,8 +2,8 @@
"name": "@remix-project/remix-url-resolver",
"version": "0.0.28",
"description": "Solidity import url resolver engine",
"main": "index.js",
"types": "./index.d.ts",
"main": "src/index.js",
"types": "src/index.d.ts",
"scripts": {
"build": "tsc",
"test": "./../../node_modules/.bin/mocha --require ts-node/register --require tsconfig-paths/register tests/*.ts -t 300000"
@ -41,6 +41,6 @@
"tslint": "^5.11.0",
"typescript": "^3.1.6"
},
"typings": "index.d.ts",
"typings": "src/index.d.ts",
"gitHead": "4705cbc4d1761f75267992552da9db6cff2f3ed5"
}

@ -12,7 +12,7 @@ import * as program from 'commander'
async function warnLatestVersion () {
const latest = await latestVersion('@remix-project/remixd')
const pjson = require('../package.json')
const pjson = require('../../package.json')
if (semver.eq(latest, pjson.version)) {
console.log('\x1b[32m%s\x1b[0m', `[INFO] you are using the latest version ${latest}`)
} else if (semver.gt(latest, pjson.version)) {
@ -54,7 +54,7 @@ function errorHandler (error: any, service: string) {
}
(async () => {
const { version } = require('../package.json')
const { version } = require('../../package.json')
program.version(version, '-v, --version')
program

50952
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -53,7 +53,7 @@
"downloadsolc_assets": "wget --no-check-certificate https://binaries.soliditylang.org/wasm/soljson-v0.8.7+commit.e28d00a7.js -O ./apps/remix-ide/src/assets/js/soljson.js && wget --no-check-certificate https://binaries.soliditylang.org/wasm/soljson-v0.8.7+commit.e28d00a7.js -O ./apps/solidity-compiler/src/assets/js/soljson.js",
"make-mock-compiler": "node apps/remix-ide/ci/makeMockCompiler.js",
"minify": "uglifyjs --in-source-map inline --source-map-inline -c warnings=false",
"build:production": "NODE_ENV=production npx nx build remix-ide --with-deps --skip-nx-cache",
"build:production": "NODE_ENV=production npx nx build remix-ide --with-deps --skip-nx-cache && npx nx build remix-ide",
"serve:production": "npx http-server ./dist/apps/remix-ide",
"nightwatch_parallel": "npm run build:e2e && nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js --env=chrome,firefox",
"nightwatch_local_firefox": "npm run build:e2e && nightwatch --config dist/apps/remix-ide-e2e/nightwatch.js --env=firefox",
@ -133,10 +133,10 @@
},
"dependencies": {
"@erebos/bzz-node": "^0.13.0",
"@ethereumjs/block": "^3.4.0",
"@ethereumjs/common": "^2.4.0",
"@ethereumjs/tx": "^3.3.0",
"@ethereumjs/vm": "^5.5.0",
"@ethereumjs/block": "^3.5.1",
"@ethereumjs/common": "^2.5.0",
"@ethereumjs/tx": "^3.3.2",
"@ethereumjs/vm": "^5.5.3",
"@remixproject/engine": "^0.3.20",
"@remixproject/engine-web": "^0.3.20",
"@remixproject/plugin": "^0.3.20",
@ -169,10 +169,10 @@
"latest-version": "^5.1.0",
"merge": "^1.2.0",
"npm-install-version": "^6.0.2",
"react": "16.13.1",
"react-beautiful-dnd": "^13.0.0",
"react-bootstrap": "^1.3.0",
"react-dom": "16.13.1",
"react": "^17.0.2",
"react-beautiful-dnd": "^13.1.0",
"react-bootstrap": "^1.6.4",
"react-dom": "^17.0.2",
"selenium": "^2.20.0",
"signale": "^1.4.0",
"string-similarity": "^4.0.4",
@ -197,26 +197,27 @@
"@babel/preset-typescript": "7.9.0",
"@babel/register": "^7.4.4",
"@fortawesome/fontawesome-free": "^5.8.1",
"@nrwl/eslint-plugin-nx": "^10.0.6",
"@nrwl/jest": "10.0.6",
"@nrwl/linter": "^10.0.6",
"@nrwl/node": "^10.0.6",
"@nrwl/react": "10.0.6",
"@nrwl/web": "10.0.6",
"@nrwl/workspace": "10.0.6",
"@nrwl/cli": "^12.9.0",
"@nrwl/eslint-plugin-nx": "^12.9.0",
"@nrwl/jest": "^12.9.0",
"@nrwl/linter": "^12.9.0",
"@nrwl/node": "^12.9.0",
"@nrwl/react": "^12.9.0",
"@nrwl/web": "^12.9.0",
"@nrwl/workspace": "^12.9.0",
"@testing-library/react": "10.4.1",
"@types/axios": "^0.14.0",
"@types/chai": "^4.2.11",
"@types/fs-extra": "^9.0.1",
"@types/jest": "25.1.4",
"@types/jest": "^27.0.2",
"@types/lodash": "^4.14.172",
"@types/mocha": "^7.0.2",
"@types/nightwatch": "^1.1.6",
"@types/node": "~8.9.4",
"@types/react": "16.9.17",
"@types/react-beautiful-dnd": "^13.0.0",
"@types/react-dom": "16.9.4",
"@types/react-router-dom": "5.1.3",
"@types/react": "^17.0.24",
"@types/react-beautiful-dnd": "^13.1.2",
"@types/react-dom": "^17.0.9",
"@types/react-router-dom": "^5.3.0",
"@types/tape": "^4.13.0",
"@types/ws": "^7.2.4",
"@typescript-eslint/eslint-plugin": "^3.3.0",
@ -263,7 +264,7 @@
"ipfs-mini": "^1.1.5",
"is-electron": "^2.2.0",
"javascript-serialize": "^1.6.1",
"jest": "25.2.3",
"jest": "^27.2.4",
"js-base64": "^2.1.9",
"js-beautify": "1.6.14",
"lerna": "^3.22.1",
@ -290,10 +291,10 @@
"tap-spec": "^5.0.0",
"tape": "^4.13.3",
"terser-webpack-plugin": "^4.2.3",
"ts-jest": "25.2.1",
"ts-jest": "^27.0.5",
"ts-node": "^7.0.1",
"tslint": "~6.0.0",
"typescript": "~3.8.3",
"typescript": "^4.4.3",
"uglify-js": "^2.8.16",
"vm-browserify": "0.0.4",
"watchify": "^3.9.0",

@ -16,14 +16,14 @@
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@remix-project/remix-analyzer": ["dist/libs/remix-analyzer/index.js"],
"@remix-project/remix-astwalker": ["dist/libs/remix-astwalker/index.js"],
"@remix-project/remix-analyzer": ["dist/libs/remix-analyzer/src/index.js"],
"@remix-project/remix-astwalker": ["dist/libs/remix-astwalker/src/index.js"],
"@remix-project/remix-debug": ["dist/libs/remix-debug/src/index.js"],
"@remix-project/remix-lib": ["dist/libs/remix-lib/src/index.js"],
"@remix-project/remix-simulator": ["dist/libs/remix-simulator/src/index.js"],
"@remix-project/remix-solidity": ["dist/libs/remix-solidity/index.js"],
"@remix-project/remix-solidity": ["dist/libs/remix-solidity/src/index.js"],
"@remix-project/remix-tests": ["dist/libs/remix-tests/src/index.js"],
"@remix-project/remix-url-resolver": ["dist/libs/remix-url-resolver/index.js"],
"@remix-project/remix-url-resolver": ["dist/libs/remix-url-resolver/src/index.js"],
"@remixproject/debugger-plugin": ["apps/debugger/src/index.ts"],
"@remixproject/solidity-compiler-plugin": ["apps/solidity-compiler/src/index.ts"],
"@remix-project/remixd": ["dist/libs/remixd/index.js"],

@ -462,7 +462,7 @@
"options": {
"commands": [
{
"command": "SERVE_SCRIPT='chmod +x dist/libs/remixd/bin/remixd.js; dist/libs/remixd/bin/remixd.js '; if [ {args.folder} != undefined ]; then SERVE_SCRIPT=${SERVE_SCRIPT}' -s {args.folder}'; fi; if [ {args.remixide} != undefined ]; then SERVE_SCRIPT=${SERVE_SCRIPT}' --remix-ide {args.remixide}'; fi; eval $SERVE_SCRIPT;"
"command": "SERVE_SCRIPT='chmod +x dist/libs/remixd/src/bin/remixd.js; dist/libs/remixd/src/bin/remixd.js '; if [ {args.folder} != undefined ]; then SERVE_SCRIPT=${SERVE_SCRIPT}' -s {args.folder}'; fi; if [ {args.remixide} != undefined ]; then SERVE_SCRIPT=${SERVE_SCRIPT}' --remix-ide {args.remixide}'; fi; eval $SERVE_SCRIPT;"
}
]
}

Loading…
Cancel
Save