
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
espruino-web-ide
Advanced tools
A Terminal and Graphical code Editor for Espruino JavaScript Microcontrollers
A VT100 Serial Terminal as a Chrome Web App (with both syntax highlighted and graphical editors) - designed for writing code on microcontrollers that use the Espruino JavaScript interpreter. It can also run natively via Node.js and Electron, or a version with limited IO can be used as a website.
This is a Chrome Web App (mainly) that uses chome.serial to access your PC's serial port. You can download it from the Chrome Web Store: https://chrome.google.com/webstore/detail/espruino-serial-terminal/bleoifhkdalbjfbobjackfdifdneehpo
It implements basic VT100 terminal features (up/down/left/right/etc) - enough for you to write code using the Espruino. You can also use the right-hand pane to write JavaScript code on the PC, and can then click the 'transfer' icon to send that code directly down the Serial Port.
Version | Communications | Benefits |
---|---|---|
Chrome Web App | USB, Serial, Audio, TCP/IP | Easy to install from Chrome Web Store |
Node.js App / NW.js app | USB, Serial, Bluetooth Low Energy | Can be run of systems without Chrome web browser |
Web Version | Audio, Bluetooth Low Energy (via Web Bluetooth) | Just go to a URL |
The development of this app is supported by purchases of official Espruino boards as well as the generous donations of my supporters on Patreon
If you have an up to date version of Node.js and NPM, you can execute the commands:
sudo apt-get install build-essential libudev-dev
sudo npm install nw -g
sudo npm install espruino-web-ide -g
sudo setcap cap_net_raw+eip $(eval readlink -f $(which node))
espruino-web-ide
Note: For command-line access you might also want to take a look at EspruinoTools
Note 2: If you're not seeing any options for devices to connect to, it might be because your nw.js
and node versions don't match. If that's the case you need to manually rebuild all the 'native' modules.
npm install -g nw-gyp
# Now, for directory in node_modules with a binding.gyp file...
# target should match the nw.js version in node_modules/nw/package.json
nw-gyp rebuild --target=0.18.6 --arch=x64
You need to obtain both the EspruinoWebIDE repository and the EspruinoTools repository, a submodule used in the Web IDE. A simple way to obtain both repositories is via the git command:
git clone --recursive https://github.com/espruino/EspruinoWebIDE.git
This will clone both the EspruinoWebIDE repository and the submodule dependencies. Alternatively, you can download or clone both repositories individually following the steps below:
EspruinoWebIDE
directory on your PC (either as a ZIP File, or using git)EspruinoWebIDE/EspruinoTools
on your PC (either as a ZIP File, or using git)EspruinoWebIDE
Directory and click OkEspruinoWebIDE
directorysudo npm install nw -g
npm install
npm start
This web app requires the following permissions:
Help
(?) icon, then the Tour
button to get a guided tour.Running with Node.js/Electron and don't see any ports when you try and connect? You're probably using a version of Node.js that doesn't match Electron. This causes NPM to load binary modules (for serialport
and bleat
) that are for the old version of Node and that won't work in Electron. To fix it, update Node.js, delete node_modules
and run npm install
again.
Debugging with NW In order to debug the WebIDE using DevTools you need to install the SDK flavor of nw. This can be done with npm install -g nw --nwjs_build_type=sdk
instead of just npm install -g nw
. Once the SDK flavor is installed you can specify a remote-debug port like this nw --remote-debugging-port=9222
.
The Web IDE is hosted on the Espruino Website and can use Web Bluetooth to communicate with Puck.js devices. There is also a version served straight from GitHub.
Web browser permissions stop this accessing the Serial port, but it can:
Potentially it could also communicate directly with Espruino boards via WebSockets or even AJAX, but this isn't implemented yet.
Note: Sadly Apple have chosen not to implement getUserMedia
on their iOS devices at the moment, so Serial over Audio won't work on iPhone/iPad/etc. (The menu item won't appear in the settings page)
Contributions are welcome - especially if they make the Web IDE easier to use for newcomers!
Espruino Web IDE expects the EspruinoTools repository to be in EspruinoWebIDE/EspruinoTools
. If you're using Git, make sure you add it using the command:
git submodule add git@github.com:espruino/EspruinoTools.git
js/core
, Plugins go in js/plugins
. See plugins/_examplePlugin.js
for an example layoutEspruino.addProcessor
. For instance you can use Espruino.addProcessor("transformForEspruino", function (data,callback) { .. })
and can modify code before it is sent to Espruino.Espruino.Core.App.addIcon
and are generally added from JsvaScript file that performs the operationEspruino.Config.FOO
and is changed with Espruino.Config.set("FOO", value)
. Espruino.Core.Config.add
can be used to add an option to the Settings menu.<script>
tag in main.html
FAQs
A Terminal and Graphical code Editor for Espruino JavaScript Microcontrollers
The npm package espruino-web-ide receives a total of 28 weekly downloads. As such, espruino-web-ide popularity was classified as not popular.
We found that espruino-web-ide demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.