mirror of
https://github.com/embarklabs/embark.git
synced 2025-01-19 10:15:59 +00:00
9a9eb45836
All code to be run in the console is run through a completely sandboxed VM2 instance, instead of the default Node VM. VM2 will only allow whitelisted packages in a `require` statement. The whitelisted packages needed to run EmbarkJS scripts are: ``` [ "@babel/runtime-corejs2/helpers/interopRequireDefault", "@babel/runtime-corejs2/core-js/json/stringify", "@babel/runtime-corejs2/core-js/promise", "@babel/runtime-corejs2/core-js/object/assign", "eth-ens-namehash" ] ``` This can be circumvented in an Embark context (ie Plugin) if needed, for example in a Plugin constructor: ``` Embark.events.emit('runcode:register', 'require', require('lodash'), false); Embark.events.request("runcode:eval", "_.head(['a', 'b', 'c', 'd']);", (err, result) => { if(err) return console.log('========> error: ' + err); console.log('========> ' + result); }); ``` Will emit `========> a`. NOTE: Attempts to use this method to override `require` and `eval` should be handled by Embark and not allowed. NOTE: VM2 seems to allow `eval`, however it is in a completely sandboxed environment, so I'm unsure that we need to be too concerned with this. Thoughts? Refactor tests to use standalone instance of the newly created VM class, so that code is not evaluated through the console. This was done based on the new unit test case where accounts are redefined in a subsequent unit test, which was not originally working with the initial VM2 PR. Refactor `codeRunner`, put all code-affecting logic in the `VM` class. Changed `runCode` to `VM` and converted to TypeScript Add unit tests for `VM`.
231 lines
7.5 KiB
JSON
231 lines
7.5 KiB
JSON
{
|
|
"name": "embark",
|
|
"version": "4.0.0-beta.0",
|
|
"author": "Iuri Matias <iuri.matias@gmail.com>",
|
|
"contributors": [],
|
|
"description": "Embark is a framework that allows you to easily develop and deploy DApps",
|
|
"homepage": "https://embark.status.im/",
|
|
"keywords": [
|
|
"blockchain",
|
|
"dapps",
|
|
"ethereum",
|
|
"ipfs",
|
|
"serverless",
|
|
"solc",
|
|
"solidity"
|
|
],
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/embark-framework/embark.git"
|
|
},
|
|
"bin": {
|
|
"embark": "./bin/embark"
|
|
},
|
|
"main": "./dist/lib/index.js",
|
|
"scripts": {
|
|
"babel": "babel",
|
|
"babel:node": "npm-run-all babel:node:*",
|
|
"babel:node:src": "cross-env BABEL_ENV=node babel src --copy-files --extensions \".js,.ts\" --out-dir dist --source-maps",
|
|
"babel:watch": "run-p babel:watch:*",
|
|
"babel:watch:src": "npm run babel:node:src -- --verbose --watch",
|
|
"build": "npm-run-all build:*",
|
|
"build:node": "npm run babel:node",
|
|
"build:ui": "cd embark-ui && npm run build",
|
|
"check-no-prepare": "node scripts/check-no-prepare.js",
|
|
"check-working-tree": "node scripts/check-working-tree.js",
|
|
"clean": "npm-run-all clean:*",
|
|
"clean:core": "rimraf dist embark-*.tgz package",
|
|
"clean:ui": "cd embark-ui && npm run clean",
|
|
"eslint": "eslint",
|
|
"install:core": "cross-env EMBARK_NO_PREPARE=t yarn install",
|
|
"install:ui": "cd embark-ui && yarn install",
|
|
"install_all": "npm-run-all install:*",
|
|
"lint": "npm-run-all lint:*",
|
|
"lint:js": "npm-run-all lint:js:*",
|
|
"lint:js:core": "eslint babel.config.js bin/embark scripts/ src/bin/ src/lib/",
|
|
"lint:js:ui": "cd embark-ui && npm run lint",
|
|
"lint:ts": "tslint -c tslint.json 'src/**/*.ts'",
|
|
"prepare": "npm run --silent check-no-prepare && npm-run-all install_all clean build || exit 0",
|
|
"prepublishOnly": "npm-run-all test check-working-tree",
|
|
"release": "node scripts/release.js",
|
|
"start": "run-p start:*",
|
|
"start:embark": "run-p start:embark:*",
|
|
"start:embark:babel": "npm run babel:watch",
|
|
"start:embark:type-check": "npm run type-check:watch",
|
|
"start:ui": "cd embark-ui && npm run start",
|
|
"test": "npm-run-all lint test:*",
|
|
"test:core": "cross-env nyc --reporter=html mocha 'dist/test/**/*.js' --exit --no-timeouts --require source-map-support/register",
|
|
"test:test_app": "cross-env DAPP=test_app npm run test_dapp",
|
|
"test:contracts_app": "cross-env DAPP=contracts_app npm run test_dapp",
|
|
"test_dapp": "cross-env-shell \"cd test_apps/$DAPP && npm install && npm test\"",
|
|
"tsc": "tsc",
|
|
"tslint": "tslint",
|
|
"type-check": "tsc",
|
|
"type-check:watch": "npm run type-check -- --watch"
|
|
},
|
|
"dependencies": {
|
|
"@babel/core": "7.1.2",
|
|
"@babel/plugin-proposal-class-properties": "7.1.0",
|
|
"@babel/plugin-proposal-decorators": "7.1.2",
|
|
"@babel/plugin-proposal-object-rest-spread": "7.0.0",
|
|
"@babel/plugin-syntax-dynamic-import": "7.0.0",
|
|
"@babel/plugin-transform-destructuring": "7.1.3",
|
|
"@babel/plugin-transform-flow-strip-types": "7.0.0",
|
|
"@babel/plugin-transform-runtime": "7.1.0",
|
|
"@babel/preset-env": "7.1.0",
|
|
"@babel/preset-react": "7.0.0",
|
|
"@babel/preset-typescript": "7.1.0",
|
|
"@babel/runtime-corejs2": "7.1.2",
|
|
"ajv": "6.5.5",
|
|
"ascii-table": "0.0.9",
|
|
"async": "2.6.1",
|
|
"babel-loader": "8.0.4",
|
|
"babel-plugin-macros": "2.4.2",
|
|
"babel-plugin-module-resolver": "3.1.1",
|
|
"babel-plugin-transform-react-remove-prop-types": "0.4.18",
|
|
"bip39": "2.5.0",
|
|
"body-parser": "1.18.3",
|
|
"check-dependencies": "1.1.0",
|
|
"chokidar": "2.0.4",
|
|
"clipboardy": "1.2.3",
|
|
"clone-deep": "4.0.0",
|
|
"colors": "1.3.2",
|
|
"commander": "2.18.0",
|
|
"css-loader": "1.0.0",
|
|
"date-and-time": "0.6.2",
|
|
"decompress": "4.2.0",
|
|
"deep-equal": "1.0.1",
|
|
"ejs": "2.6.1",
|
|
"embarkjs": "0.5.0",
|
|
"eth-ens-namehash": "2.0.8",
|
|
"ethereumjs-tx": "1.3.7",
|
|
"ethereumjs-util": "6.0.0",
|
|
"ethereumjs-wallet": "0.6.0",
|
|
"express": "4.16.3",
|
|
"express-http-proxy": "1.5.0",
|
|
"express-ws": "4.0.0",
|
|
"file-loader": "2.0.0",
|
|
"find-up": "2.1.0",
|
|
"flatted": "0.2.3",
|
|
"follow-redirects": "1.5.7",
|
|
"fs-extra": "7.0.0",
|
|
"fuzzy": "0.1.3",
|
|
"ganache-cli": "6.2.3",
|
|
"glob": "7.1.3",
|
|
"globule": "1.2.1",
|
|
"handlebars": "4.0.12",
|
|
"hard-source-webpack-plugin": "0.12.0",
|
|
"helmet": "3.13.0",
|
|
"hosted-git-info": "2.7.1",
|
|
"http-proxy": "1.17.0",
|
|
"http-shutdown": "1.2.0",
|
|
"i18n": "0.8.3",
|
|
"ipfs-api": "17.2.4",
|
|
"istanbul": "0.4.5",
|
|
"json-parse-better-errors": "1.0.2",
|
|
"live-plugin-manager-git-fix": "0.12.1",
|
|
"lodash.clonedeep": "4.5.0",
|
|
"merge": "1.2.0",
|
|
"mocha": "5.2.0",
|
|
"multihashes": "0.4.14",
|
|
"neo-blessed": "0.2.0",
|
|
"netcat": "1.3.5",
|
|
"node-http-proxy-json": "0.1.6",
|
|
"node-ipc": "9.1.1",
|
|
"node-sass": "4.9.3",
|
|
"npmlog": "4.1.2",
|
|
"opn": "5.3.0",
|
|
"ora": "2.1.0",
|
|
"os-locale": "2.1.0",
|
|
"parse-json": "4.0.0",
|
|
"pkg-up": "2.0.0",
|
|
"pretty-ms": "4.0.0",
|
|
"promptly": "2.2.0",
|
|
"propose": "0.0.5",
|
|
"pump": "3.0.0",
|
|
"remix-debug-debugtest": "0.2.16",
|
|
"remix-tests": "0.1.1",
|
|
"request": "2.88.0",
|
|
"sass-loader": "7.1.0",
|
|
"semver": "5.5.1",
|
|
"serve-static": "1.13.2",
|
|
"shelljs": "0.5.3",
|
|
"simples": "0.8.8",
|
|
"solc": "0.5.0",
|
|
"solidity-parser-antlr": "0.3.2",
|
|
"source-map-support": "0.5.9",
|
|
"stream-json": "1.1.3",
|
|
"string-replace-async": "1.2.1",
|
|
"style-loader": "0.23.1",
|
|
"swarm-api": "0.1.2",
|
|
"tar": "3.2.1",
|
|
"term.js": "0.0.7",
|
|
"url-loader": "1.1.2",
|
|
"uuid": "3.3.2",
|
|
"viz.js": "1.8.2",
|
|
"vm2": "3.6.4",
|
|
"web3": "1.0.0-beta.37",
|
|
"web3-bzz": "1.0.0-beta.37",
|
|
"web3-core": "1.0.0-beta.37",
|
|
"web3-core-helpers": "1.0.0-beta.37",
|
|
"web3-core-method": "1.0.0-beta.37",
|
|
"web3-core-promievent": "1.0.0-beta.37",
|
|
"web3-core-requestmanager": "1.0.0-beta.37",
|
|
"web3-core-subscriptions": "1.0.0-beta.37",
|
|
"web3-eth": "1.0.0-beta.37",
|
|
"web3-eth-abi": "1.0.0-beta.37",
|
|
"web3-eth-accounts": "1.0.0-beta.37",
|
|
"web3-eth-contract": "1.0.0-beta.37",
|
|
"web3-eth-iban": "1.0.0-beta.37",
|
|
"web3-eth-personal": "1.0.0-beta.37",
|
|
"web3-net": "1.0.0-beta.37",
|
|
"web3-providers-http": "1.0.0-beta.37",
|
|
"web3-providers-ipc": "1.0.0-beta.37",
|
|
"web3-providers-ws": "1.0.0-beta.37",
|
|
"web3-shh": "1.0.0-beta.37",
|
|
"web3-utils": "1.0.0-beta.37",
|
|
"webpack": "4.19.0",
|
|
"window-size": "1.1.1",
|
|
"ws": "6.1.2"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/cli": "7.1.2",
|
|
"@babel/plugin-proposal-optional-chaining": "7.0.0",
|
|
"@types/async": "2.0.50",
|
|
"@types/body-parser": "1.17.0",
|
|
"@types/cors": "2.8.4",
|
|
"@types/express": "4.16.0",
|
|
"@types/express-http-proxy": "1.5.0",
|
|
"@types/express-ws": "3.0.0",
|
|
"@types/globule": "1.1.3",
|
|
"@types/handlebars": "4.0.39",
|
|
"@types/helmet": "0.0.42",
|
|
"@types/i18n": "0.8.3",
|
|
"@types/node": "10.11.7",
|
|
"@types/os-locale": "2.1.0",
|
|
"@types/pretty-ms": "3.2.0",
|
|
"@types/web3": "1.0.12",
|
|
"babel-plugin-dynamic-import-node": "2.2.0",
|
|
"chai": "4.1.2",
|
|
"chalk": "2.4.1",
|
|
"cross-env": "5.2.0",
|
|
"eslint": "5.7.0",
|
|
"eslint-plugin-react": "7.11.1",
|
|
"minimist": "1.2.0",
|
|
"mocha-sinon": "1.2.0",
|
|
"npm-run-all": "4.1.5",
|
|
"nyc": "13.1.0",
|
|
"rimraf": "2.6.2",
|
|
"sinon": "4.5.0",
|
|
"standard-version": "4.4.0",
|
|
"tslint": "5.11.0",
|
|
"typescript": "3.1.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=8.11.3",
|
|
"npm": ">666",
|
|
"yarn": ">=1.12.3"
|
|
}
|
|
}
|