esp32tool 1.1.9 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nojekyll +0 -0
- package/README.md +100 -6
- package/apple-touch-icon.png +0 -0
- package/build-electron-cli.cjs +177 -0
- package/build-single-binary.cjs +295 -0
- package/css/light.css +11 -0
- package/css/style.css +261 -41
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +458 -0
- package/dist/console.d.ts +15 -0
- package/dist/console.js +237 -0
- package/dist/const.d.ts +99 -0
- package/dist/const.js +129 -8
- package/dist/esp_loader.d.ts +244 -22
- package/dist/esp_loader.js +1960 -251
- package/dist/index.d.ts +2 -1
- package/dist/index.js +37 -4
- package/dist/node-usb-adapter.d.ts +47 -0
- package/dist/node-usb-adapter.js +725 -0
- package/dist/stubs/index.d.ts +1 -2
- package/dist/stubs/index.js +4 -0
- package/dist/util/console-color.d.ts +19 -0
- package/dist/util/console-color.js +272 -0
- package/dist/util/line-break-transformer.d.ts +5 -0
- package/dist/util/line-break-transformer.js +17 -0
- package/dist/web/index.js +1 -1
- package/electron/cli-main.cjs +74 -0
- package/electron/main.cjs +338 -0
- package/electron/main.js +7 -2
- package/favicon.ico +0 -0
- package/fix-cli-imports.cjs +127 -0
- package/generate-icons.sh +89 -0
- package/icons/icon-128.png +0 -0
- package/icons/icon-144.png +0 -0
- package/icons/icon-152.png +0 -0
- package/icons/icon-192.png +0 -0
- package/icons/icon-384.png +0 -0
- package/icons/icon-512.png +0 -0
- package/icons/icon-72.png +0 -0
- package/icons/icon-96.png +0 -0
- package/index.html +143 -73
- package/install-android.html +411 -0
- package/js/console.js +269 -0
- package/js/modules/esptool.js +1 -1
- package/js/script.js +750 -175
- package/js/util/console-color.js +282 -0
- package/js/util/line-break-transformer.js +19 -0
- package/js/webusb-serial.js +1017 -0
- package/license.md +1 -1
- package/manifest.json +89 -0
- package/package.cli.json +29 -0
- package/package.json +35 -24
- package/screenshots/desktop.png +0 -0
- package/screenshots/mobile.png +0 -0
- package/src/cli.ts +618 -0
- package/src/console.ts +278 -0
- package/src/const.ts +165 -8
- package/src/esp_loader.ts +2354 -302
- package/src/index.ts +69 -3
- package/src/node-usb-adapter.ts +924 -0
- package/src/stubs/index.ts +4 -1
- package/src/util/console-color.ts +290 -0
- package/src/util/line-break-transformer.ts +20 -0
- package/sw.js +155 -0
package/css/style.css
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
.header {
|
|
6
6
|
box-sizing: border-box;
|
|
7
7
|
font-size: 16px;
|
|
8
|
-
height: 85px;
|
|
8
|
+
min-height: 85px;
|
|
9
9
|
padding: 15px 70px;
|
|
10
10
|
position: fixed;
|
|
11
11
|
width: 100%;
|
|
@@ -13,49 +13,40 @@
|
|
|
13
13
|
margin: 0;
|
|
14
14
|
border-bottom: 5px solid #00a7e9;
|
|
15
15
|
display: flex;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
justify-content: flex-start;
|
|
18
|
+
align-items: flex-start;
|
|
18
19
|
top: 0;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.header .left {
|
|
27
|
-
display: flex;
|
|
28
|
-
align-items: center;
|
|
20
|
+
/* Auto-hide feature disabled - header stays visible at all times */
|
|
21
|
+
/* transition: transform 0.3s ease-in-out; */
|
|
22
|
+
overflow-x: auto;
|
|
23
|
+
overflow-y: hidden;
|
|
24
|
+
-webkit-overflow-scrolling: touch;
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
.header
|
|
32
|
-
font-size: 24px;
|
|
33
|
-
font-weight: 500;
|
|
34
|
-
margin-right: 30px;
|
|
35
|
-
}
|
|
27
|
+
/* .header-hidden class removed - auto-hide feature disabled */
|
|
36
28
|
|
|
37
|
-
.header
|
|
29
|
+
.header-content {
|
|
38
30
|
display: flex;
|
|
39
31
|
align-items: center;
|
|
40
|
-
gap:
|
|
32
|
+
gap: 10px;
|
|
33
|
+
flex-wrap: nowrap;
|
|
34
|
+
white-space: nowrap;
|
|
35
|
+
width: 100%;
|
|
41
36
|
}
|
|
42
37
|
|
|
43
|
-
.header
|
|
44
|
-
|
|
45
|
-
align-items: center;
|
|
46
|
-
gap: 8px;
|
|
47
|
-
margin-right: 20px;
|
|
48
|
-
padding-right: 20px;
|
|
49
|
-
border-right: 2px solid #ccc;
|
|
38
|
+
.header-content.advanced-row {
|
|
39
|
+
margin-top: 10px;
|
|
50
40
|
}
|
|
51
41
|
|
|
52
|
-
.header
|
|
42
|
+
.header-content > label {
|
|
53
43
|
font-size: 13px;
|
|
54
|
-
margin-left:
|
|
44
|
+
margin-left: 5px;
|
|
45
|
+
white-space: nowrap;
|
|
55
46
|
}
|
|
56
47
|
|
|
57
|
-
.header
|
|
58
|
-
|
|
48
|
+
.header select {
|
|
49
|
+
height: 30px;
|
|
59
50
|
}
|
|
60
51
|
|
|
61
52
|
.header button {
|
|
@@ -88,10 +79,6 @@
|
|
|
88
79
|
}
|
|
89
80
|
}
|
|
90
81
|
|
|
91
|
-
.header select {
|
|
92
|
-
height: 30px;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
82
|
button,
|
|
96
83
|
.firmware {
|
|
97
84
|
height: 25px;
|
|
@@ -144,14 +131,32 @@ div.clear {
|
|
|
144
131
|
transition: padding-top 0.3s ease-in-out;
|
|
145
132
|
}
|
|
146
133
|
|
|
147
|
-
.main.
|
|
148
|
-
padding-top:
|
|
134
|
+
.main.advanced-active {
|
|
135
|
+
padding-top: 140px;
|
|
149
136
|
}
|
|
150
137
|
|
|
138
|
+
/* .main.no-header-padding removed - auto-hide feature disabled */
|
|
139
|
+
|
|
151
140
|
.hidden {
|
|
152
141
|
display: none;
|
|
153
142
|
}
|
|
154
143
|
|
|
144
|
+
/* Console Container */
|
|
145
|
+
.console-container {
|
|
146
|
+
height: 500px;
|
|
147
|
+
overflow: hidden;
|
|
148
|
+
transition: height 0.3s ease-in-out, visibility 0.3s ease-in-out;
|
|
149
|
+
margin: 0;
|
|
150
|
+
padding: 0;
|
|
151
|
+
visibility: visible;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.console-container.hidden {
|
|
155
|
+
height: 0;
|
|
156
|
+
visibility: hidden;
|
|
157
|
+
max-height: 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
155
160
|
.notSupported {
|
|
156
161
|
padding: 1em;
|
|
157
162
|
margin-top: 1em;
|
|
@@ -162,8 +167,9 @@ div.clear {
|
|
|
162
167
|
display: flex;
|
|
163
168
|
align-items: center;
|
|
164
169
|
gap: 8px;
|
|
165
|
-
padding-left:
|
|
166
|
-
border-left:
|
|
170
|
+
padding-left: 0;
|
|
171
|
+
border-left: none;
|
|
172
|
+
white-space: nowrap;
|
|
167
173
|
}
|
|
168
174
|
|
|
169
175
|
.log-controls.hidden {
|
|
@@ -275,7 +281,7 @@ div.clear {
|
|
|
275
281
|
.onoffswitch {
|
|
276
282
|
display: inline-block;
|
|
277
283
|
position: relative;
|
|
278
|
-
width:
|
|
284
|
+
width: 50px;
|
|
279
285
|
margin-right: 5px;
|
|
280
286
|
-webkit-user-select: none;
|
|
281
287
|
-moz-user-select: none;
|
|
@@ -342,7 +348,7 @@ div.clear {
|
|
|
342
348
|
position: absolute;
|
|
343
349
|
top: 0;
|
|
344
350
|
bottom: 0;
|
|
345
|
-
right:
|
|
351
|
+
right: 28px;
|
|
346
352
|
border: 1px solid #900;
|
|
347
353
|
border-radius: 15px;
|
|
348
354
|
transition: all 0.3s ease-in 0s;
|
|
@@ -1067,3 +1073,217 @@ div.clear {
|
|
|
1067
1073
|
justify-content: flex-end;
|
|
1068
1074
|
gap: 10px;
|
|
1069
1075
|
}
|
|
1076
|
+
|
|
1077
|
+
/* Mobile Optimizations */
|
|
1078
|
+
@media (max-width: 768px) {
|
|
1079
|
+
.header {
|
|
1080
|
+
height: auto;
|
|
1081
|
+
min-height: 60px;
|
|
1082
|
+
padding: 10px 15px;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
.header-content {
|
|
1086
|
+
gap: 8px;
|
|
1087
|
+
width: 100%;
|
|
1088
|
+
overflow-x: auto;
|
|
1089
|
+
-webkit-overflow-scrolling: touch;
|
|
1090
|
+
flex-wrap: nowrap;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
.header-content > label {
|
|
1094
|
+
font-size: 12px;
|
|
1095
|
+
margin-left: 3px;
|
|
1096
|
+
white-space: nowrap;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.onoffswitch {
|
|
1100
|
+
width: 50px;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
.main {
|
|
1104
|
+
padding-top: 80px;
|
|
1105
|
+
}
|
|
1106
|
+
.main.advanced-active {
|
|
1107
|
+
padding-top: 130px;
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
#commands {
|
|
1111
|
+
min-width: unset;
|
|
1112
|
+
padding: 0 15px;
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
#commands .upload {
|
|
1116
|
+
max-width: 100%;
|
|
1117
|
+
padding-left: 0;
|
|
1118
|
+
flex-wrap: wrap;
|
|
1119
|
+
gap: 8px;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
#commands .upload label {
|
|
1123
|
+
width: 100%;
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
#commands .upload .firmware {
|
|
1127
|
+
width: 100%;
|
|
1128
|
+
margin-left: 0;
|
|
1129
|
+
margin-right: 0;
|
|
1130
|
+
justify-content: center;
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
#commands .buttons {
|
|
1134
|
+
width: 100%;
|
|
1135
|
+
flex-wrap: wrap;
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
#commands .partition-table,
|
|
1139
|
+
#commands .read-flash {
|
|
1140
|
+
width: 100%;
|
|
1141
|
+
padding: 15px 0;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
#commands .partition-table .progress-bar,
|
|
1145
|
+
#commands .read-flash .progress-bar {
|
|
1146
|
+
width: 100%;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
#commands .read-flash-inputs {
|
|
1150
|
+
flex-wrap: wrap;
|
|
1151
|
+
width: 100%;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
#commands .read-flash input {
|
|
1155
|
+
width: 80px;
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
#log {
|
|
1159
|
+
padding: 0 15px;
|
|
1160
|
+
border: 10px solid #000;
|
|
1161
|
+
font-size: 14px;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
.footer {
|
|
1165
|
+
padding: 10px 15px;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
.littlefs-manager {
|
|
1169
|
+
width: 100%;
|
|
1170
|
+
margin: 15px auto;
|
|
1171
|
+
padding: 15px;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
.littlefs-controls {
|
|
1175
|
+
flex-direction: column;
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
.littlefs-controls button {
|
|
1179
|
+
width: 100%;
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
.littlefs-file-upload {
|
|
1183
|
+
flex-direction: column;
|
|
1184
|
+
}
|
|
1185
|
+
|
|
1186
|
+
.littlefs-file-upload input[type="file"],
|
|
1187
|
+
.littlefs-file-upload button {
|
|
1188
|
+
width: 100%;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
.file-table {
|
|
1192
|
+
font-size: 13px;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
.file-table th,
|
|
1196
|
+
.file-table td {
|
|
1197
|
+
padding: 6px 8px;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
.file-actions {
|
|
1201
|
+
flex-direction: column;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
.file-actions button {
|
|
1205
|
+
width: 100%;
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
.modal-content {
|
|
1209
|
+
padding: 25px;
|
|
1210
|
+
max-width: 90%;
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
.file-viewer-content {
|
|
1214
|
+
width: 95vw;
|
|
1215
|
+
max-height: 95vh;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.file-viewer-header,
|
|
1219
|
+
.file-viewer-info,
|
|
1220
|
+
.file-viewer-tabs,
|
|
1221
|
+
.file-viewer-body,
|
|
1222
|
+
.file-viewer-footer {
|
|
1223
|
+
padding-left: 15px;
|
|
1224
|
+
padding-right: 15px;
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
.file-viewer-body pre {
|
|
1228
|
+
font-size: 11px;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
.hex-bytes {
|
|
1232
|
+
min-width: 250px;
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
@media (max-width: 480px) {
|
|
1237
|
+
.header {
|
|
1238
|
+
padding: 8px 10px;
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.header-content {
|
|
1242
|
+
gap: 6px;
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
.header-content > label {
|
|
1246
|
+
display: none;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
.header-content select {
|
|
1250
|
+
min-width: 90px;
|
|
1251
|
+
height: 30px;
|
|
1252
|
+
font-size: 13px;
|
|
1253
|
+
}
|
|
1254
|
+
|
|
1255
|
+
.onoffswitch {
|
|
1256
|
+
width: 50px;
|
|
1257
|
+
margin-left: 2px;
|
|
1258
|
+
margin-right: 2px;
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
.log-controls {
|
|
1262
|
+
padding-left: 8px;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
.small-btn {
|
|
1266
|
+
padding: 4px 8px;
|
|
1267
|
+
font-size: 11px;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
#commands {
|
|
1271
|
+
padding: 0 10px;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
#log {
|
|
1275
|
+
padding: 0 10px;
|
|
1276
|
+
font-size: 12px;
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
button,
|
|
1280
|
+
.firmware {
|
|
1281
|
+
font-size: 14px;
|
|
1282
|
+
padding-left: 15px;
|
|
1283
|
+
padding-right: 15px;
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1286
|
+
.main.advanced-active {
|
|
1287
|
+
padding-top: 120px;
|
|
1288
|
+
}
|
|
1289
|
+
}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ESP32Tool CLI - Command Line Interface for ESP device flashing
|
|
4
|
+
*
|
|
5
|
+
* Provides esptool.py-like commands for flashing ESP devices via WebSerial/WebUSB
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* esp32tool flash-id
|
|
9
|
+
* esp32tool read-flash <offset> <size> <filename>
|
|
10
|
+
* esp32tool write-flash <offset> <filename>
|
|
11
|
+
* esp32tool erase-flash
|
|
12
|
+
* esp32tool erase-region <offset> <size>
|
|
13
|
+
* esp32tool chip-id
|
|
14
|
+
* esp32tool read-mac
|
|
15
|
+
*/
|
|
16
|
+
declare function main(): Promise<void>;
|
|
17
|
+
export { main as runCLI };
|