Javascript implementation of flasher tool for Espressif chips, running in web browser using WebSerial.

Overview

Javascript implementation of esptool

This repository contains a Javascript implementation of esptool, a serial flasher utility for Espressif chips. Unlike the Python-based esptool, esptool-js doesn't implement generation of binary images out of ELF files, and doesn't include companion tools similar to espefuse.py and espsecure.py.

esptool-js is based on Web Serial API and works in Google Chrome and Microsoft Edge, version 89 or later.

Live demo

Visit https://espressif.github.io/esptool-js/ to see this tool in action.

Testing it locally

npm install
python3 -m http.server 8008

Then open http://localhost:8008 in Chrome or Edge.

License

The code in this repository is Copyright (c) 2021 Espressif Systems (Shanghai) Co. Ltd. It is licensed under Apache 2.0 license, as described in LICENSE file.

Comments
  • ESP8266/8285 support

    ESP8266/8285 support

    Adds support for ESP8266 and 8285 chips.

    The stub for the ESP8266 has come from esptool.py version 3.0. This can be updated if required.

    There are a few issues I found in the webserial.js code that have been fixed. The most problematic is that the read would read more than one packet from the serial port and the slip reader would just return the first packet it found and drop the rest. I have changed this to save the remainder away for the next call to read to prepend onto the front and then be processed by the next call to the slip reader.

    opened by pkendall64 10
  • Missing version in package.json

    Missing version in package.json

    The package.json file is very bare bones here and doesn't even have a version number.

    version is a required field

    Yarn refuses to install packages that do not have a version number specified and just throws a error Can't add "esptool-js": invalid package version undefined.

    opened by dumbasPL 5
  • Chip type not detected

    Chip type not detected

    Testing on EDGE Version 102.0.1245.44, with both an ESP8266 and ESP32 board with both local and the hosted version - The chip type is not detected and returns a value of null. image

    opened by ithinkido 3
  • Allow specifying the initial 'rom-baudrate' in constructor

    Allow specifying the initial 'rom-baudrate' in constructor

    By allowing the user to specify the rom_baudrate at construction time this allows devices that are programmed via serial-passthrough to perform any pre-flashing commands they may need to do before calling the main_fn and not have the main function change the baudrate.

    We use this in ExpressLRS as we need to perform passthrough initialisation of a flight-controller before calling the main_fn etc to perform the flashing. The flight controller talks to the receiver at 420k, and will do the passthrough at another specified rate, but cannot change rate, so the initial rom_baudrate and the baudrate used by change_baud must be the same in our case.

    opened by pkendall64 3
  • Bug: connection error after typescript rewrite

    Bug: connection error after typescript rewrite

    Hi there! I wanted to try this tool and after I tested it online it worked correctly:

    esptool.js v0.1-dev
    Serial port WebSerial VendorID 0x1a86 ProductID 0x7523
    Connecting....
    Detecting chip type... ESP32
    Chip is ESP32-D0WDQ6 (revision 1)
    Features: Wi-Fi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
    Crystal is 40MHz
    MAC: 40:91:51:a5:d8:14
    Uploading stub...
    Running stub...
    Stub running...
    Changing baudrate to 115200
    Changed
    

    but when I tried it locally, I got this:

    esptool.js v0.1-dev
    Serial port WebSerial VendorID 0x1a86 ProductID 0x7523
    Connecting..._connect_attempt default_reset false
    
    Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    .Sync
    Sync err Error: Timeout
    
    ._connect_attempt default_reset true
    
    Sync
    Sync err Error: Timeout
    
    _Sync
    Sync err Error: Timeout
    
    _Sync
    Sync err Error: Timeout
    

    So I tried checking out to a commit which is on gh-pages (the one before first attempt to re write in typescript) and it worked again!

    It looks like there may have been a bug introduced in that commit 😬 Unfortunately, I am not familiar enough with the codebase to determine the cause. So, I wanted to bring this to your attention in case it helps with troubleshooting.

    Still, this looks promising, keep up the good work! 🙂

    opened by domagojk 2
  • Can't upload .bin to 0x00010000 ESP32

    Can't upload .bin to 0x00010000 ESP32

    When I use ArduinoIDE, all works correctly:

    Compressed 940304 bytes to 602887...
    
    Writing at 0x00010000... (2 %)
    Writing at 0x000197fd... (5 %)
    Writing at 0x0002591d... (8 %)
    Writing at 0x0002ef7e... (10 %)
    Writing at 0x0003e65a... (13 %)
    Writing at 0x0004402c... (16 %)
    Writing at 0x0004972b... (18 %)
    Writing at 0x0004f616... (21 %)
    Writing at 0x00055243... (24 %)
    Writing at 0x0005a931... (27 %)
    Writing at 0x0005ffed... (29 %)
    Writing at 0x000652b4... (32 %)
    Writing at 0x0006a626... (35 %)
    Writing at 0x0006f83d... (37 %)
    Writing at 0x00074b1b... (40 %)
    Writing at 0x00079ebf... (43 %)
    Writing at 0x0007f100... (45 %)
    Writing at 0x00084429... (48 %)
    Writing at 0x000894c8... (51 %)
    Writing at 0x0008e874... (54 %)
    Writing at 0x0009465e... (56 %)
    Writing at 0x00099b05... (59 %)
    Writing at 0x0009ed9f... (62 %)
    Writing at 0x000a42b7... (64 %)
    Writing at 0x000a94b2... (67 %)
    Writing at 0x000ae91e... (70 %)
    Writing at 0x000b3e98... (72 %)
    Writing at 0x000b948f... (75 %)
    Writing at 0x000bec93... (78 %)
    Writing at 0x000c4a5f... (81 %)
    Writing at 0x000ca397... (83 %)
    Writing at 0x000d298c... (86 %)
    Writing at 0x000db638... (89 %)
    Writing at 0x000e095b... (91 %)
    Writing at 0x000e625b... (94 %)
    Writing at 0x000eb97b... (97 %)
    Writing at 0x000f0e03... (100 %)
    

    When I use esptool-js:

    Compressed 940308 bytes to 602890...
    Writing at 0x10000... (2%)
    Writing at 0x14000... (5%)
    Writing at 0x18000... (8%)
    Writing at 0x1c000... (10%)
    Writing at 0x20000... (13%)
    Writing at 0x24000... (16%)
    Writing at 0x28000... (18%)
    Writing at 0x2c000... (21%)
    Writing at 0x30000... (24%)
    Writing at 0x34000... (27%)
    Writing at 0x38000... (29%)
    Writing at 0x3c000... (32%)
    Writing at 0x40000... (35%)
    Writing at 0x44000... (37%)
    Writing at 0x48000... (40%)
    Writing at 0x4c000... (43%)
    Writing at 0x50000... (45%)
    Writing at 0x54000... (48%)
    Writing at 0x58000... (51%)
    Writing at 0x5c000... (54%)
    Writing at 0x60000... (56%)
    Writing at 0x64000... (59%)
    Writing at 0x68000... (62%)
    Writing at 0x6c000... (64%)
    Writing at 0x70000... (67%)
    Writing at 0x74000... (70%)
    Writing at 0x78000... (72%)
    Writing at 0x7c000... (75%)
    Writing at 0x80000... (78%)
    Writing at 0x84000... (81%)
    Writing at 0x88000... (83%)
    Writing at 0x8c000... (86%)
    Writing at 0x90000... (89%)
    Writing at 0x94000... (91%)
    Writing at 0x98000... (94%)
    Writing at 0x9c000... (97%)
    Writing at 0xa0000... (100%)
    

    In .py writing starts from 0x00010000 in .js - 0x10000.

    Looks like something wrong with int to address convert. image

    image

    Please advice, thanks.

    opened by EarlOld 2
  • ESP32-S3 over USB doesn't connect

    ESP32-S3 over USB doesn't connect

    I was able to flash a dev board successfully (ESP32-S3-DevkitC-1) using the example page provided as a baseline "okay, that worked". I was curious if a ESP32-S3-Eye dev board would also work since the latter uses USB rather than the typical UART interface.

    On the S3-Eye board, it wasn't able to get past "Connecting......".

    Is communicating over USB in scope for esptool-js? I'm curious if this is a bug or if this simply isn't intended to work yet (or ever).

    opened by GeoffArmstrong 1
  • Feature/types

    Feature/types

    This PR re writes the ESPTOOL-JS in TypeScript and preparation for NPM packaging and publishing.

    Proposed features here:

    • Re write existing code in TypeScript and add types for targets and methods used.
    • Re write example index.js for applied changes.
    • Add Github CI for publishing in NPM.
    • Add scripts for lint the existing typescript code.
    • Add rollup script to bundle the resulting JS (after npm run build) into a single bundle.js used in the example for browser purposes.
    • Removed XTerm within ESPLoader code and opted for dependency injection of Terminal reference. This allows the existing code to use different terminals systems in JavaScript/Typescript.
    • Added package.json references and compilation from TypeScript to JavaScript so EsptoolJS could be used as a Node module with type references.

    Things left out:

    • Testing (How should we provide mocking for the Transport class to test ESPLoader functionality ?
    • NPM account configuration to publish.
    opened by brianignacio5 1
  • Fix for erase causing error

    Fix for erase causing error

    When passing the flash to erase flash when flashing the flashing process would fail because the erase was to awaited, which means the erase is happening in parallel with the flash!

    opened by pkendall64 1
  • Readme improvement, add package.json

    Readme improvement, add package.json

    • Extend README to explain what the project is about
    • Add package.json to specify dependencies version
    • Add comments and default binary offsets in index.html
    opened by igrr 1
  • fixed ESP32-C3:

    fixed ESP32-C3: "app image at 0x10000 has invalid magic byte" if the 


    Fixed issue #48

    if fileArray[i].data.length % 4 == 0, there will be extra 4 bytes, so overlap with the following image image = fileArray[i].data + '\xff\xff\xff\xff'.substring(0, 4 - fileArray[i].data.length % 4); btw:

    1. the address of C3 bootloader is 0x0
    opened by LeoYan 0
  • ci: deploy to Github Pages

    ci: deploy to Github Pages

    Similar to https://github.com/espressif/esp-launchpad/pull/4, adds a CI job to deploy the latest version from main branch to Github Pages. With this PR, we don't need to maintain gh-pages branch manually.

    Have tested this workflow in a fork, deployment was successful: https://igrr.github.io/esptool-js/.

    opened by igrr 8
  • support build-in USB-JTAG-Serial

    support build-in USB-JTAG-Serial

    esp32c3 esp32s3 have a built-in USB serial. When connect them direct by usb, without external usb-serial-bridge(ch340 etc.), send correct sequence of handshake signals can put the chip into download mode. The specific sequence can be found from esp32s3 datasheet 33.4.2 Runtime operation.

    opened by liux-pro 3
  • Time out when trying to flash spiffs.bin for an ESP32

    Time out when trying to flash spiffs.bin for an ESP32

    Hello, I am trying to flash the spiffs part of a project with this tool. From pio in verbose mode, the command line executed is : ```--chip esp32 --port "“COM18”" --baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_size detect 2686976 .pio/build/routeur_solaire/spiffs.bin`````

    Seems the offset adress is 2686976 = 0x290000.

    When trying with esptool-js got a timeout error...

    image

    Maybe I am wrong somewhere, but is-it a bug ?

    opened by SeByDocKy 3
  • ESP32-C3:

    ESP32-C3: "app image at 0x10000 has invalid magic byte" if the app image flashed at first

    Module

    ESP32-C3-WROOM-02

    Issue

    • Use esptool.py to flash ESP32-C3, it works after the module is reseted.
    • Use https://espressif.github.io/esptool-js/ to flash same images with the address the order:(0x0, 0x8000, 0xe000, 0x10000), it works after the module is reseted.
    • Use https://espressif.github.io/esptool-js/ to flash same images with the address the order:(0x0, 0x10000, 0x8000, 0xe000 ), it cannot works after the module is reseted.
    • the error is "esp_image: image at 0x10000 has invalid magic byte"

    Esptool-js Failed Log

    • Flash(Adress: 0x0,0x10000, 0x8000, 0xe000 ) log in the Console:
    esptool.js v0.1-dev
    Serial port WebSerial VendorID 0x10c4 ProductID 0xea60
    Connecting....
    Detecting chip type... ESP32-C3
    Chip is ESP32-C3 (revision 3)
    Features: Wi-Fi
    Crystal is 40MHz
    MAC: 7c:df:a1:bc:37:ac
    Uploading stub...
    Running stub...
    Stub running...
    Changing baudrate to 921600
    Changed
    Compressed 19844 bytes to 12011...
    Writing at 0x0... (100%)
    Wrote 19844 bytes (12011 compressed) at 0x0 in 0.46 seconds.
    Hash of data verified.
    Compressed 583300 bytes to 321867...
    Writing at 0x10000... (5%)
    Writing at 0x14000... (10%)
    Writing at 0x18000... (15%)
    Writing at 0x1c000... (20%)
    Writing at 0x20000... (25%)
    Writing at 0x24000... (30%)
    Writing at 0x28000... (35%)
    Writing at 0x2c000... (40%)
    Writing at 0x30000... (45%)
    Writing at 0x34000... (50%)
    Writing at 0x38000... (55%)
    Writing at 0x3c000... (60%)
    Writing at 0x40000... (65%)
    Writing at 0x44000... (70%)
    Writing at 0x48000... (75%)
    Writing at 0x4c000... (80%)
    Writing at 0x50000... (85%)
    Writing at 0x54000... (90%)
    Writing at 0x58000... (95%)
    Writing at 0x5c000... (100%)
    Wrote 583300 bytes (321867 compressed) at 0x10000 in 9.144 seconds.
    Hash of data verified.
    Compressed 3076 bytes to 128...
    Writing at 0x8000... (100%)
    Wrote 3076 bytes (128 compressed) at 0x8000 in 0.059 seconds.
    Hash of data verified.
    Compressed 8196 bytes to 30...
    Writing at 0xe000... (100%)
    Wrote 8196 bytes (30 compressed) at 0xe000 in 0.145 seconds.
    Hash of data verified.
    Leaving...
    
    • The output after the module restarted:
    ESP-ROM:esp32c3-api1-20210207
    Build:Feb  7 2021
    rst:0x3 (RTC_SW_SYS_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
    Saved PC:0x403d1546
    SPIWP:0xee
    mode:DIO, clock div:1
    load:0x3fcd6100,len:0x16b8
    load:0x403ce000,len:0x930
    load:0x403d0000,len:0x2d40
    entry 0x403ce000
    I (35) boot: ESP-IDF v4.4-dirty 2nd stage bootloader
    I (35) boot: compile time 15:17:18
    I (35) boot: chip revision: 3
    I (37) boot.esp32c3: SPI Speed      : 80MHz
    I (42) boot.esp32c3: SPI Mode       : DIO
    I (47) boot.esp32c3: SPI Flash Size : 4MB
    I (51) boot: Enabling RNG early entropy source...
    I (57) boot: Partition Table:
    I (60) boot: ## Label            Usage          Type ST Offset   Length
    I (68) boot:  0 nvs              WiFi data        01 02 00009000 00005000
    I (75) boot:  1 otadata          OTA data         01 00 0000e000 00002000
    I (82) boot:  2 app0             OTA app          00 10 00010000 00140000
    I (90) boot:  3 app1             OTA app          00 11 00150000 00140000
    I (97) boot:  4 spiffs           Unknown data     01 82 00290000 00170000
    I (105) boot: End of partition table
    I (109) boot: No factory image, trying OTA 0
    E (114) esp_image: image at 0x10000 has invalid magic byte (nothing flashed here?)
    E (122) boot: OTA app partition slot 0 is not bootable
    E (128) esp_image: image at 0x150000 has invalid magic byte (nothing flashed here?)
    E (136) boot: OTA app partition slot 1 is not bootable
    E (142) boot: No bootable app partitions in the partition table
    

    Esptool-js Success Log

    • Flash(Adress: 0x0, 0x8000, 0xe000, 0x10000) log in the Console:
    Detecting chip type... ESP32-C3
    Chip is ESP32-C3 (revision 3)
    Features: Wi-Fi
    Crystal is 40MHz
    MAC: 7c:df:a1:bc:37:ac
    Uploading stub...
    Running stub...
    Stub running...
    Changing baudrate to 921600
    Changed
    Compressed 19844 bytes to 12011...
    Writing at 0x0... (100%)
    Wrote 19844 bytes (12011 compressed) at 0x0 in 0.449 seconds.
    Hash of data verified.
    Compressed 3076 bytes to 128...
    Writing at 0x8000... (100%)
    Wrote 3076 bytes (128 compressed) at 0x8000 in 0.056 seconds.
    Hash of data verified.
    Compressed 8196 bytes to 30...
    Writing at 0xe000... (100%)
    Wrote 8196 bytes (30 compressed) at 0xe000 in 0.145 seconds.
    Hash of data verified.
    Compressed 583300 bytes to 321867...
    Writing at 0x10000... (5%)
    Writing at 0x14000... (10%)
    Writing at 0x18000... (15%)
    Writing at 0x1c000... (20%)
    Writing at 0x20000... (25%)
    Writing at 0x24000... (30%)
    Writing at 0x28000... (35%)
    Writing at 0x2c000... (40%)
    Writing at 0x30000... (45%)
    Writing at 0x34000... (50%)
    Writing at 0x38000... (55%)
    Writing at 0x3c000... (60%)
    Writing at 0x40000... (65%)
    Writing at 0x44000... (70%)
    Writing at 0x48000... (75%)
    Writing at 0x4c000... (80%)
    Writing at 0x50000... (85%)
    Writing at 0x54000... (90%)
    Writing at 0x58000... (95%)
    Writing at 0x5c000... (100%)
    Wrote 583300 bytes (321867 compressed) at 0x10000 in 9.012 seconds.
    Hash of data verified.
    

    Esptool.py Log

    • Flash info:
    esptool.py esp32c3 -p /dev/cu.SLAB_USBtoUART -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 bootloader/bootloader.bin 0x10000 bbScale.bin 0x8000 partition_table/partition-table.bin 0xe000 ota_data_initial.bin
    esptool.py v3.2-dev
    Serial port /dev/cu.SLAB_USBtoUART
    Connecting...
    Chip is ESP32-C3 (revision 3)
    Features: Wi-Fi
    Crystal is 40MHz
    MAC: 7c:df:a1:bc:37:ac
    Uploading stub...
    Running stub...
    Stub running...
    Changing baud rate to 460800
    Changed.
    Configuring flash size...
    Flash will be erased from 0x00000000 to 0x00004fff...
    Flash will be erased from 0x00010000 to 0x0009efff...
    Flash will be erased from 0x00008000 to 0x00008fff...
    Flash will be erased from 0x0000e000 to 0x0000ffff...
    Compressed 19840 bytes to 12006...
    Writing at 0x00000000... (100 %)
    Wrote 19840 bytes (12006 compressed) at 0x00000000 in 0.6 seconds (effective 268.6 kbit/s)...
    Hash of data verified.
    Compressed 583296 bytes to 321864...
    Writing at 0x00010000... (5 %)
    Writing at 0x0001a238... (10 %)
    Writing at 0x00024900... (15 %)
    Writing at 0x0002adb0... (20 %)
    Writing at 0x00031669... (25 %)
    Writing at 0x00038c5e... (30 %)
    Writing at 0x0003ff69... (35 %)
    Writing at 0x00046f36... (40 %)
    Writing at 0x0004e094... (45 %)
    Writing at 0x0005502e... (50 %)
    Writing at 0x0005bf9e... (55 %)
    Writing at 0x00062ac3... (60 %)
    Writing at 0x00069d9e... (65 %)
    Writing at 0x000718f7... (70 %)
    Writing at 0x000781de... (75 %)
    Writing at 0x0007e8f5... (80 %)
    Writing at 0x000851f0... (85 %)
    Writing at 0x0008b180... (90 %)
    Writing at 0x00092b02... (95 %)
    Writing at 0x00099d34... (100 %)
    Wrote 583296 bytes (321864 compressed) at 0x00010000 in 9.5 seconds (effective 490.0 kbit/s)...
    Hash of data verified.
    Compressed 3072 bytes to 128...
    Writing at 0x00008000... (100 %)
    Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 401.4 kbit/s)...
    Hash of data verified.
    Compressed 8192 bytes to 31...
    Writing at 0x0000e000... (100 %)
    Wrote 8192 bytes (31 compressed) at 0x0000e000 in 0.1 seconds (effective 565.2 kbit/s)...
    Hash of data verified.
    
    Leaving...
    Hard resetting via RTS pin...
    Done
    
    • The output after the module restarted:
    mac$ idf.py monitor
    Executing action: monitor
    Serial port /dev/cu.usbserial-1420
    /dev/cu.usbserial-1420 failed to connect: [Errno 16] could not open port /dev/cu.usbserial-1420: [Errno 16] Resource busy: '/dev/cu.usbserial-1420'
    Serial port /dev/cu.SLAB_USBtoUART
    Connecting.........
    Detecting chip type... ESP32-C3
    
    ESP-ROM:esp32c3-api1-20210207
    Build:Feb  7 2021
    rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
    SPIWP:0xee
    mode:DIO, clock div:1
    load:0x3fcd6100,len:0x16b8
    load:0x403ce000,len:0x930
    load:0x403d0000,len:0x2d40
    entry 0x403ce000
    I (30) boot: ESP-IDF v4.4-dirty 2nd stage bootloader
    I (30) boot: compile time 15:17:18
    I (30) boot: chip revision: 3
    I (32) boot.esp32c3: SPI Speed      : 80MHz
    I (37) boot.esp32c3: SPI Mode       : DIO
    I (42) boot.esp32c3: SPI Flash Size : 4MB
    I (46) boot: Enabling RNG early entropy source...
    I (52) boot: Partition Table:
    I (55) boot: ## Label            Usage          Type ST Offset   Length
    I (63) boot:  0 nvs              WiFi data        01 02 00009000 00005000
    I (70) boot:  1 otadata          OTA data         01 00 0000e000 00002000
    I (78) boot:  2 app0             OTA app          00 10 00010000 00140000
    I (85) boot:  3 app1             OTA app          00 11 00150000 00140000
    I (93) boot:  4 spiffs           Unknown data     01 82 00290000 00170000
    I (100) boot: End of partition table
    
    opened by LeoYan 2
  • Flash error with ESP32-S3: Timeout

    Flash error with ESP32-S3: Timeout

    Appears to be the same with S2 and C3 ... there is a timeout error when trying to flash the chip.

    esptool.js v0.1-dev
    Serial port WebSerial VendorID 0x303a ProductID 0x1001
    Connecting....
    Detecting chip type... ESP32-S3
    Chip is ESP32-S3
    Features: Wi-Fi,BLE
    Crystal is 40MHz
    MAC: f4:12:fa:44:1b:fc
    Uploading stub...
    Running stub...
    Stub running...
    Changing baudrate to 460800
    Changed
    Erasing flash (this may take a while)...
    Chip erase completed successfully in 1.082s
    Compressed 4420676 bytes to 124923...
    Writing at 0x0... (12%)
    Writing at 0x4000... (25%)
    Writing at 0x8000... (37%)
    Error: Timeout
    
    opened by walchko 2
Hemsida för personer i Sverige som kan och vill erbjuda boende till mÀnniskor pÄ flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Jugglr is a tool for managing test data and running tests with a dedicated database running in a Docker container.

Jugglr Jugglr is a tool for managing test data and running tests with a lightweight, dedicated database. Jugglr enables developers, testers, and CI/CD

OSLabs Beta 74 Aug 20, 2022
A hackable C# based scripting environment for 3D modeling running in the web browser.

A hackable C# based scripting environment for 3D modeling running in the web browser. Background Script based 3D modeling software running in the web

Emil Poulsen 49 Nov 28, 2022
A collection of retro emulators running in the web browser.

RETROCADE is (going to be) a collection of browser-based emulators capable of playing games from retro consoles and arcade machines, optimized for use both on desktop computers as well as mobile devices. The right tool for all your retro gaming needs!

null 3 Feb 18, 2022
Javascript library for generating identicons. Running in the browser and on Node.js.

Jdenticon JavaScript library for generating highly recognizable identicons using HTML5 canvas or SVG. Live demo https://jdenticon.com Getting started

Daniel Mester PirttijÀrvi 1.1k Jan 3, 2023
Browser-compatible JS library for running language models

Huggingface Transformers Running in the Browser This library enables you to run huggingface transformer models directly in the browser. It accomplishe

Frank A. Krueger 50 Jan 8, 2023
A cool tool that saves you time if you want to remove node_modules before running 'npm i'

rmnpm A cool tool that saves you time if you want to remove your node_modules folder before running the npm install command. How does it do it? By fir

null 4 Jul 16, 2022
Demo running web assembly apps a terminal with blocking stdin/stdout/stderr

Python wasm-terminal Live version here: https://wasm-terminal.firebaseapp.com/ This is a small demo of running Python in the browser with a focus on i

Katie Bell 16 Nov 16, 2022
A jest reporter that shows test running stats using the HUD macOS app.

jest-hud-reporter A jest reporter that shows test running stats using the HUD macOS app. hud-jest.mp4 Installation This package is available as a NPM

Nando Vieira 4 Feb 26, 2022
Simple Library implemented using HTML, CSS and JavaScript. This is a simple implementation of JavaScript Modules of ES6.

Awesome-books A single page project with the porpuse of storing books' titles and authors. Built With CSS, HTML & Javascript. How to run in your local

Saadat Ali 7 Feb 21, 2022
A collection of Javascript scripts running with Alchemy Web3.js, Fetch, or Axios

Alchemy NFT API Javascript Scripts Clone the repo, install dependencies, and try the API out! Clone git clone [email protected]:alchemyplatform/nft-api-j

Alchemy 47 Nov 29, 2022
The full power of the Go Compiler directly in your browser, including a virtual file system implementation. Deployable as a static website.

Static Go Playground Features Full Go Compiler running on the browser. Supports using custom build tags. Incremental builds (build cache). Supports mu

null 25 Jun 16, 2022
This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

This tool uses native browser APIs to take screenshots of a given web page, tab, window, or the user's entire screen.

xataio 761 Jan 1, 2023
A native-like JavaScript pull to refresh implementation for the web.

Pull to Refresh for the Web 1.1 This is a pull to refresh implementation for the web. It focuses on buttery UX performance and responsiveness to feel

Andy Peatling 536 Dec 19, 2022
Macaron is an open-source design tool to visually create Web Components, which can be used in most Web frameworks, or in vanilla HTML/JavaScript

Macaron is an open-source design tool to visually create Web Components, which can be used in most Web frameworks, or in vanilla HTML/JavaScript

Macaron 334 Dec 29, 2022
Example-browserstack-reporting - This repository contains an example of running Selenium tests and reporting BrowserStack test results, including full CI pipeline integration.

BrowserStack reporting and Selenium test result example This repository contains an example of running Selenium tests and reporting BrowserStack test

Testmo 1 Jan 1, 2022