From 50ec868be958664546d29d7aaea700f01113b218 Mon Sep 17 00:00:00 2001 From: Brian Ignacio Date: Thu, 14 Mar 2024 20:04:57 +0800 Subject: [PATCH 1/2] add js extensions use window atob --- package-lock.json | 81 ------------------------------------------ package.json | 1 - src/esploader.ts | 41 ++++++++++++--------- src/index.ts | 8 ++--- src/reset.ts | 2 +- src/targets/esp32.ts | 4 +-- src/targets/esp32c2.ts | 4 +-- src/targets/esp32c3.ts | 4 +-- src/targets/esp32c6.ts | 4 +-- src/targets/esp32h2.ts | 4 +-- src/targets/esp32s2.ts | 4 +-- src/targets/esp32s3.ts | 4 +-- src/targets/esp8266.ts | 4 +-- src/targets/rom.ts | 2 +- 14 files changed, 46 insertions(+), 121 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1ee4a8..490c285 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "0.4.1", "license": "Apache-2.0", "dependencies": { - "buffer": "^6.0.3", "pako": "^2.1.0", "tslib": "^2.4.1" }, @@ -1465,25 +1464,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1535,29 +1515,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2435,25 +2392,6 @@ "node": ">=8" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -4907,11 +4845,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4944,15 +4877,6 @@ "update-browserslist-db": "^1.0.9" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -5602,11 +5526,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", diff --git a/package.json b/package.json index bdf8d4e..ccb4e8b 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ "url": "https://github.com/espressif/esptool-js/issues" }, "dependencies": { - "buffer": "^6.0.3", "pako": "^2.1.0", "tslib": "^2.4.1" }, diff --git a/src/esploader.ts b/src/esploader.ts index 8a95a13..e20c6c5 100644 --- a/src/esploader.ts +++ b/src/esploader.ts @@ -1,9 +1,8 @@ -import { ESPError } from "./error"; +import { ESPError } from "./error.js"; import { Data, deflate, Inflate } from "pako"; -import { Transport, SerialOptions } from "./webserial"; -import { ROM } from "./targets/rom"; -import { customReset, usbJTAGSerialReset } from "./reset"; -import { Buffer } from "buffer/index"; +import { Transport, SerialOptions } from "./webserial.js"; +import { ROM } from "./targets/rom.js"; +import { customReset, usbJTAGSerialReset } from "./reset.js"; /* global SerialPort */ @@ -120,39 +119,39 @@ type FlashReadCallback = ((packet: Uint8Array, progress: number, totalSize: numb async function magic2Chip(magic: number): Promise { switch (magic) { case 0x00f01d83: { - const { ESP32ROM } = await import("./targets/esp32"); + const { ESP32ROM } = await import("./targets/esp32.js"); return new ESP32ROM(); } case 0x6f51306f: case 0x7c41a06f: { - const { ESP32C2ROM } = await import("./targets/esp32c2"); + const { ESP32C2ROM } = await import("./targets/esp32c2.js"); return new ESP32C2ROM(); } case 0x6921506f: case 0x1b31506f: case 0x4881606f: case 0x4361606f: { - const { ESP32C3ROM } = await import("./targets/esp32c3"); + const { ESP32C3ROM } = await import("./targets/esp32c3.js"); return new ESP32C3ROM(); } case 0x2ce0806f: { - const { ESP32C6ROM } = await import("./targets/esp32c6"); + const { ESP32C6ROM } = await import("./targets/esp32c6.js"); return new ESP32C6ROM(); } case 0xd7b73e80: { - const { ESP32H2ROM } = await import("./targets/esp32h2"); + const { ESP32H2ROM } = await import("./targets/esp32h2.js"); return new ESP32H2ROM(); } case 0x09: { - const { ESP32S3ROM } = await import("./targets/esp32s3"); + const { ESP32S3ROM } = await import("./targets/esp32s3.js"); return new ESP32S3ROM(); } case 0x000007c6: { - const { ESP32S2ROM } = await import("./targets/esp32s2"); + const { ESP32S2ROM } = await import("./targets/esp32s2.js"); return new ESP32S2ROM(); } case 0xfff0c101: { - const { ESP8266ROM } = await import("./targets/esp8266"); + const { ESP8266ROM } = await import("./targets/esp8266.js"); return new ESP8266ROM(); } default: @@ -1135,19 +1134,27 @@ export class ESPLoader { return resp; } + decodeBase64(romText: string) { + if (typeof window !== "undefined" && typeof window.atob === "function") { + return window.atob(romText); + } else { + return Buffer.from(romText, "base64").toString("binary"); + } + } + /** * Upload the flasher ROM bootloader (flasher stub) to the chip. * @returns {ROM} The Chip ROM */ - async runStub() { + async runStub(): Promise { this.info("Uploading stub..."); - let decoded = Buffer.from(this.chip.ROM_TEXT, "base64").toString("binary"); + let decoded = this.decodeBase64(this.chip.ROM_TEXT); let chardata = decoded.split("").map(function (x) { return x.charCodeAt(0); }); const text = new Uint8Array(chardata); - decoded = Buffer.from(this.chip.ROM_DATA, "base64").toString("binary"); + decoded = this.decodeBase64(this.chip.ROM_DATA); chardata = decoded.split("").map(function (x) { return x.charCodeAt(0); }); @@ -1221,7 +1228,7 @@ export class ESPLoader { /** * Execute the main function of ESPLoader. * @param {string} mode Reset mode to use - * @returns {ROM} chip ROM + * @returns {string} chip ROM */ async main(mode = "default_reset") { await this.detectChip(mode); diff --git a/src/index.ts b/src/index.ts index 2287878..056d399 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export { IEspLoaderTerminal, ESPLoader, FlashOptions, LoaderOptions } from "./esploader"; -export { classicReset, customReset, hardReset, usbJTAGSerialReset, validateCustomResetStringSequence } from "./reset"; -export { ROM } from "./targets/rom"; -export { Transport, SerialOptions } from "./webserial"; +export { IEspLoaderTerminal, ESPLoader, FlashOptions, LoaderOptions } from "./esploader.js"; +export { classicReset, customReset, hardReset, usbJTAGSerialReset, validateCustomResetStringSequence } from "./reset.js"; +export { ROM } from "./targets/rom.js"; +export { Transport, SerialOptions } from "./webserial.js"; diff --git a/src/reset.ts b/src/reset.ts index 267e666..6b5e044 100644 --- a/src/reset.ts +++ b/src/reset.ts @@ -1,4 +1,4 @@ -import { Transport } from "./webserial"; +import { Transport } from "./webserial.js"; const DEFAULT_RESET_DELAY = 50; diff --git a/src/targets/esp32.ts b/src/targets/esp32.ts index a1b7593..6ef67f3 100644 --- a/src/targets/esp32.ts +++ b/src/targets/esp32.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32_STUB from "./stub_flasher/stub_flasher_32.json"; export class ESP32ROM extends ROM { diff --git a/src/targets/esp32c2.ts b/src/targets/esp32c2.ts index 3dbaefe..17620ab 100644 --- a/src/targets/esp32c2.ts +++ b/src/targets/esp32c2.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ESP32C3ROM } from "./esp32c3"; +import { ESPLoader } from "../esploader.js"; +import { ESP32C3ROM } from "./esp32c3.js"; import ESP32C2_STUB from "./stub_flasher/stub_flasher_32c2.json"; export class ESP32C2ROM extends ESP32C3ROM { diff --git a/src/targets/esp32c3.ts b/src/targets/esp32c3.ts index 1f281ef..af65a08 100644 --- a/src/targets/esp32c3.ts +++ b/src/targets/esp32c3.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32C3_STUB from "./stub_flasher/stub_flasher_32c3.json"; export class ESP32C3ROM extends ROM { diff --git a/src/targets/esp32c6.ts b/src/targets/esp32c6.ts index 8480e15..6d82e3b 100644 --- a/src/targets/esp32c6.ts +++ b/src/targets/esp32c6.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32C6_STUB from "./stub_flasher/stub_flasher_32c6.json"; export class ESP32C6ROM extends ROM { diff --git a/src/targets/esp32h2.ts b/src/targets/esp32h2.ts index 294d3ab..4d2ccfa 100644 --- a/src/targets/esp32h2.ts +++ b/src/targets/esp32h2.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32H2_STUB from "./stub_flasher/stub_flasher_32h2.json"; export class ESP32H2ROM extends ROM { diff --git a/src/targets/esp32s2.ts b/src/targets/esp32s2.ts index 1d7f2c4..f23387a 100644 --- a/src/targets/esp32s2.ts +++ b/src/targets/esp32s2.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32S2_STUB from "./stub_flasher/stub_flasher_32s2.json"; export class ESP32S2ROM extends ROM { diff --git a/src/targets/esp32s3.ts b/src/targets/esp32s3.ts index 4749243..583a3f8 100644 --- a/src/targets/esp32s3.ts +++ b/src/targets/esp32s3.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP32S3_STUB from "./stub_flasher/stub_flasher_32s3.json"; export class ESP32S3ROM extends ROM { diff --git a/src/targets/esp8266.ts b/src/targets/esp8266.ts index e446118..96ba8df 100644 --- a/src/targets/esp8266.ts +++ b/src/targets/esp8266.ts @@ -1,5 +1,5 @@ -import { ESPLoader } from "../esploader"; -import { ROM } from "./rom"; +import { ESPLoader } from "../esploader.js"; +import { ROM } from "./rom.js"; import ESP8266_STUB from "./stub_flasher/stub_flasher_8266.json"; export class ESP8266ROM extends ROM { diff --git a/src/targets/rom.ts b/src/targets/rom.ts index 2591b6b..02146de 100644 --- a/src/targets/rom.ts +++ b/src/targets/rom.ts @@ -1,4 +1,4 @@ -import { ESPLoader } from "../esploader"; +import { ESPLoader } from "../esploader.js"; /** * Represents a chip ROM with basic registers field and abstract functions. From 0a78d36e394f0aadf3e6e24bfb902638de48dddc Mon Sep 17 00:00:00 2001 From: Brian Ignacio Date: Fri, 15 Mar 2024 12:22:09 +0800 Subject: [PATCH 2/2] fix lint --- src/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 056d399..6fdfff3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,10 @@ export { IEspLoaderTerminal, ESPLoader, FlashOptions, LoaderOptions } from "./esploader.js"; -export { classicReset, customReset, hardReset, usbJTAGSerialReset, validateCustomResetStringSequence } from "./reset.js"; +export { + classicReset, + customReset, + hardReset, + usbJTAGSerialReset, + validateCustomResetStringSequence, +} from "./reset.js"; export { ROM } from "./targets/rom.js"; export { Transport, SerialOptions } from "./webserial.js";