From 98a70788b497b44fb344cd9ffe224208d8615ecc Mon Sep 17 00:00:00 2001 From: Luc <8822552+luc-github@users.noreply.github.com> Date: Thu, 30 May 2024 10:14:46 +0800 Subject: [PATCH] Sync with latest ESP3D Code Add scripts to format c/cpp/h/js/css/scss files --- embedded/.prettierrc | 27 + embedded/config/buildassets.js | 143 +- embedded/config/buildheader.js | 47 +- embedded/config/pack_favicon.js | 17 +- embedded/config/server.js | 1195 ++++++------ embedded/config/webpack.dev.js | 92 +- embedded/config/webpack.prod.js | 150 +- embedded/src/index.js | 1454 +++++++------- embedded/src/menu.js | 21 +- embedded/src/style.css | 408 ++-- embedded/tools/format_sources.py | 63 + src/core/commands/ESP0.cpp | 3 +- src/core/commands/ESP170.cpp | 46 +- src/core/commands/ESP212.cpp | 8 +- src/core/commands/ESP220.cpp | 2 +- src/core/commands/ESP400.cpp | 8 +- src/core/commands/ESP420.cpp | 23 +- src/core/commands/ESP610.cpp | 5 +- src/core/commands/ESP700.cpp | 2 +- src/core/commands/ESP780.cpp | 6 +- src/core/esp3d_benchmark.cpp | 66 +- src/core/esp3d_benchmark.h | 7 +- src/core/esp3d_client_types.h | 4 +- src/core/esp3d_commands.cpp | 369 ++-- src/core/esp3d_hal.cpp | 4 + src/core/esp3d_settings.cpp | 3 +- src/core/esp3d_string.h | 2 +- src/esp3dlib.cpp | 156 +- src/esp3dlib.h | 69 +- src/esp3dlib_config.h | 267 ++- src/include/Marlin/cardreader.h | 80 +- src/include/esp3d_defines.h | 152 +- src/include/esp3d_pins.h | 48 + src/include/esp3d_sanity.h | 18 +- src/include/esp3d_version.h | 2 +- .../authentication/authentication_service.h | 3 +- src/modules/boot_delay/boot_delay.cpp | 2 +- src/modules/buzzer/buzzer.h | 56 +- src/modules/camera/camera.cpp | 6 + src/modules/camera/camera.h | 50 +- src/modules/devices/devices_services.h | 20 +- .../OLED_I2C_SSD1306_128X64/esp3d_logo.h | 4 +- .../OLED_I2C_SSD1306_128X64/settings.h | 42 +- .../OLED_I2C_SSDSH1106_132X64/esp3d_logo.h | 4 +- .../OLED_I2C_SSDSH1106_132X64/settings.h | 38 +- .../TFT_SPI_ST7789_135X240/esp3d_logo.h | 184 +- .../display/TFT_SPI_ST7789_135X240/settings.h | 44 +- .../TFT_SPI_ST7789_240X240/esp3d_logo.h | 184 +- .../display/TFT_SPI_ST7789_240X240/settings.h | 44 +- src/modules/ethernet/ethconfig.h | 63 +- src/modules/filesystem/esp_filesystem.h | 1 - src/modules/filesystem/esp_sd.cpp | 11 +- .../flash/littlefs_esp8266_filesystem.cpp | 1 - .../filesystem/sd/sd_native_esp8266.cpp | 2 +- src/modules/filesystem/sd/sd_sdfat2_esp32.cpp | 274 +-- .../filesystem/sd/sd_sdfat2_esp8266.cpp | 305 +-- src/modules/filesystem/sd/sdio_esp32.cpp | 11 +- src/modules/ftp/ExtStreaming.h | 72 +- src/modules/ftp/FtpServer.h | 224 ++- src/modules/gcode_host/gcode_host.cpp | 4 +- src/modules/http/embedded.h | 1706 ++++++++++------- src/modules/http/favicon.h | 56 +- src/modules/http/handlers/handle-SD-files.cpp | 8 +- .../http/handlers/handle-description_xml.cpp | 35 +- src/modules/input/input.h | 26 +- .../lua_interpreter/lua_interpreter_service.h | 26 +- src/modules/mDNS/mDNS.h | 55 +- src/modules/network/netconfig.cpp | 23 +- src/modules/network/netservices.cpp | 5 +- src/modules/network/netservices.h | 27 +- .../notifications/notifications_service.cpp | 60 +- .../notifications/notifications_service.h | 2 +- src/modules/recovery/recovery_service.h | 29 +- src/modules/sensor/analogsensor.h | 32 +- src/modules/sensor/bmx280.cpp | 84 +- src/modules/sensor/bmx280.h | 32 +- src/modules/sensor/dht.h | 32 +- src/modules/sensor/sensor.h | 109 +- src/modules/serial/serial_service.cpp | 35 +- src/modules/serial2socket/serial2socket.cpp | 9 +- src/modules/serial2socket/serial2socket.h | 5 +- src/modules/time/time_service.cpp | 3 +- src/modules/time/time_service.h | 1 - src/modules/update/esp_config_file.h | 43 +- src/modules/update/update_service.cpp | 3 +- src/modules/update/update_service.h | 25 +- src/modules/webdav/handlers/handler_copy.cpp | 15 +- src/modules/webdav/handlers/handler_put.cpp | 26 +- src/modules/websocket/websocket_server.cpp | 4 +- src/modules/wifi/wificonfig.cpp | 8 + tools/format_sources.py | 48 + 91 files changed, 4859 insertions(+), 4329 deletions(-) create mode 100644 embedded/.prettierrc create mode 100644 embedded/tools/format_sources.py create mode 100644 tools/format_sources.py diff --git a/embedded/.prettierrc b/embedded/.prettierrc new file mode 100644 index 0000000..895c8c3 --- /dev/null +++ b/embedded/.prettierrc @@ -0,0 +1,27 @@ +{ + "printWidth": 80, + "tabWidth": 4, + "useTabs": false, + "semi": true, + "singleQuote": false, + "trailingComma": "es5", + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "always", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "preserve", + "overrides": [ + { + "files": "*.js", + "options": { + "parser": "babel" + } + }, + {"files": "*.scss", + "options": { + "parser": "css" + } + } + ] +} diff --git a/embedded/config/buildassets.js b/embedded/config/buildassets.js index 9e26d47..699dda9 100644 --- a/embedded/config/buildassets.js +++ b/embedded/config/buildassets.js @@ -7,89 +7,88 @@ const chalk = require("chalk"); let distPath = path.normalize(__dirname + "/../dist/"); let srcPath = path.normalize(__dirname + "/../assets/"); let headerPath = path.normalize( - __dirname + "/../../src/modules/http/favicon.h" + __dirname + "/../../src/modules/http/favicon.h" ); - - const convertToC = (filepath) => { -console.log(chalk.yellow("Converting bin to text file")); -//Cleaning files -if (fs.existsSync(distPath + "out.tmp")) fs.rmSync(distPath + "out.tmp"); -if (fs.existsSync(distPath + "favicon.h")) fs.rmSync(distPath + "favicon.h"); + console.log(chalk.yellow("Converting bin to text file")); + //Cleaning files + if (fs.existsSync(distPath + "out.tmp")) fs.rmSync(distPath + "out.tmp"); + if (fs.existsSync(distPath + "favicon.h")) + fs.rmSync(distPath + "favicon.h"); -const data = new Uint8Array( - fs.readFileSync(filepath, { flag: "r" }) -); -console.log("data size is ", data.length); -let out = "#define favicon_size " + data.length + "\n"; -out += "const unsigned char favicon[" + data.length + "] PROGMEM = {\n "; -let nb = 0; -data.forEach((byte, index) => { - out += " 0x" + (byte.toString(16).length == 1 ? "0" : "") + byte.toString(16); - if (index < data.length - 1) out += ","; - if (nb == 15) { - out += "\n "; - nb = 0; - } else { - nb++; - } -}); + const data = new Uint8Array(fs.readFileSync(filepath, { flag: "r" })); + console.log("data size is ", data.length); + let out = "#define favicon_size " + data.length + "\n"; + out += "const unsigned char favicon[" + data.length + "] PROGMEM = {\n "; + let nb = 0; + data.forEach((byte, index) => { + out += + " 0x" + + (byte.toString(16).length == 1 ? "0" : "") + + byte.toString(16); + if (index < data.length - 1) out += ","; + if (nb == 15) { + out += "\n "; + nb = 0; + } else { + nb++; + } + }); -out += "\n};\n"; -fs.writeFileSync(distPath + "out.tmp", out); + out += "\n};\n"; + fs.writeFileSync(distPath + "out.tmp", out); -//Check conversion -if (fs.existsSync(distPath + "out.tmp")) { - console.log(chalk.green("[ok]")); -} else { - console.log(chalk.red("[error]Conversion failed")); - return; -} - -//Format header file -console.log(chalk.yellow("Building header")); -fs.writeFileSync( - distPath + "favicon.h", - fs.readFileSync(srcPath + "header.txt") -); -let bin2cfile = fs.readFileSync(distPath + "out.tmp").toString(); -fs.appendFileSync(distPath + "favicon.h", bin2cfile); -fs.appendFileSync( - distPath + "favicon.h", - fs.readFileSync(srcPath + "footer.txt") -); + //Check conversion + if (fs.existsSync(distPath + "out.tmp")) { + console.log(chalk.green("[ok]")); + } else { + console.log(chalk.red("[error]Conversion failed")); + return; + } -//Check format result -if (fs.existsSync(distPath + "favicon.h")) { - console.log(chalk.green("[ok]")); -} else { - console.log(chalk.red("[error]Conversion failed")); - return; -} + //Format header file + console.log(chalk.yellow("Building header")); + fs.writeFileSync( + distPath + "favicon.h", + fs.readFileSync(srcPath + "header.txt") + ); + let bin2cfile = fs.readFileSync(distPath + "out.tmp").toString(); + fs.appendFileSync(distPath + "favicon.h", bin2cfile); + fs.appendFileSync( + distPath + "favicon.h", + fs.readFileSync(srcPath + "footer.txt") + ); -//Move file to src -console.log(chalk.yellow("Overwriting header in sources")); -fs.writeFileSync(headerPath, fs.readFileSync(distPath + "favicon.h")); -if (fs.existsSync(headerPath)) { - console.log(chalk.green("[ok]")); -} else { - console.log(chalk.red("[error]Overwriting failed")); - return; -} + //Check format result + if (fs.existsSync(distPath + "favicon.h")) { + console.log(chalk.green("[ok]")); + } else { + console.log(chalk.red("[error]Conversion failed")); + return; + } -} + //Move file to src + console.log(chalk.yellow("Overwriting header in sources")); + fs.writeFileSync(headerPath, fs.readFileSync(distPath + "favicon.h")); + if (fs.existsSync(headerPath)) { + console.log(chalk.green("[ok]")); + } else { + console.log(chalk.red("[error]Overwriting failed")); + return; + } +}; - // Create a gzip function for reusable purpose const compressFile = (filePath, targetPath) => { - const stream = createReadStream(filePath); - stream - .pipe(createGzip(targetPath)) - .pipe(createWriteStream(targetPath)) - .on("finish", () =>{console.log(`Successfully compressed at ${targetPath}`); - convertToC (targetPath)} - ); + const stream = createReadStream(filePath); + stream + .pipe(createGzip(targetPath)) + .pipe(createWriteStream(targetPath)) + .on("finish", () => { + console.log(`Successfully compressed at ${targetPath}`); + convertToC(targetPath); + }); }; -compressFile(srcPath + "favicon.ico", distPath + "favicon.ico.gz"); +compressFile(srcPath + "favicon.ico", distPath + "favicon.ico.gz"); diff --git a/embedded/config/buildheader.js b/embedded/config/buildheader.js index 5f2e417..74e98a3 100644 --- a/embedded/config/buildheader.js +++ b/embedded/config/buildheader.js @@ -6,7 +6,7 @@ const chalk = require("chalk"); let distPath = path.normalize(__dirname + "/../dist/"); let srcPath = path.normalize(__dirname + "/../src/"); let headerPath = path.normalize( - __dirname + "/../../src/modules/http/embedded.h" + __dirname + "/../../src/modules/http/embedded.h" ); console.log(chalk.yellow("Converting bin to text file")); @@ -15,21 +15,22 @@ if (fs.existsSync(distPath + "out.tmp")) fs.rmSync(distPath + "out.tmp"); if (fs.existsSync(distPath + "embedded.h")) fs.rmSync(distPath + "embedded.h"); const data = new Uint8Array( - fs.readFileSync(distPath + "index.html.gz", { flag: "r" }) + fs.readFileSync(distPath + "index.html.gz", { flag: "r" }) ); console.log("data size is ", data.length); let out = "#define tool_html_gz_size " + data.length + "\n"; out += "const unsigned char tool_html_gz[" + data.length + "] PROGMEM = {\n "; let nb = 0; data.forEach((byte, index) => { - out += " 0x" + (byte.toString(16).length == 1 ? "0" : "") + byte.toString(16); - if (index < data.length - 1) out += ","; - if (nb == 15) { - out += "\n "; - nb = 0; - } else { - nb++; - } + out += + " 0x" + (byte.toString(16).length == 1 ? "0" : "") + byte.toString(16); + if (index < data.length - 1) out += ","; + if (nb == 15) { + out += "\n "; + nb = 0; + } else { + nb++; + } }); out += "\n};\n"; @@ -37,39 +38,39 @@ fs.writeFileSync(distPath + "out.tmp", out); //Check conversion if (fs.existsSync(distPath + "out.tmp")) { - console.log(chalk.green("[ok]")); + console.log(chalk.green("[ok]")); } else { - console.log(chalk.red("[error]Conversion failed")); - return; + console.log(chalk.red("[error]Conversion failed")); + return; } //Format header file console.log(chalk.yellow("Building header")); fs.writeFileSync( - distPath + "embedded.h", - fs.readFileSync(srcPath + "header.txt") + distPath + "embedded.h", + fs.readFileSync(srcPath + "header.txt") ); let bin2cfile = fs.readFileSync(distPath + "out.tmp").toString(); fs.appendFileSync(distPath + "embedded.h", bin2cfile); fs.appendFileSync( - distPath + "embedded.h", - fs.readFileSync(srcPath + "footer.txt") + distPath + "embedded.h", + fs.readFileSync(srcPath + "footer.txt") ); //Check format result if (fs.existsSync(distPath + "embedded.h")) { - console.log(chalk.green("[ok]")); + console.log(chalk.green("[ok]")); } else { - console.log(chalk.red("[error]Conversion failed")); - return; + console.log(chalk.red("[error]Conversion failed")); + return; } //Move file to src console.log(chalk.yellow("Overwriting header in sources")); fs.writeFileSync(headerPath, fs.readFileSync(distPath + "embedded.h")); if (fs.existsSync(headerPath)) { - console.log(chalk.green("[ok]")); + console.log(chalk.green("[ok]")); } else { - console.log(chalk.red("[error]Overwriting failed")); - return; + console.log(chalk.red("[error]Overwriting failed")); + return; } diff --git a/embedded/config/pack_favicon.js b/embedded/config/pack_favicon.js index ac56755..04d0432 100644 --- a/embedded/config/pack_favicon.js +++ b/embedded/config/pack_favicon.js @@ -2,14 +2,15 @@ const path = require("path"); const { createReadStream, createWriteStream } = require("fs"); const { createGzip } = require("zlib"); const faviconPath = path.normalize(__dirname + "/../assets/favicon.ico"); - + // Create a gzip function for reusable purpose const compressFile = (filePath) => { - const stream = createReadStream(filePath); - stream - .pipe(createGzip()) - .pipe(createWriteStream(`${filePath}.gz`)) - .on("finish", () =>console.log(`Successfully compressed the file at ${filePath}`) - ); + const stream = createReadStream(filePath); + stream + .pipe(createGzip()) + .pipe(createWriteStream(`${filePath}.gz`)) + .on("finish", () => + console.log(`Successfully compressed the file at ${filePath}`) + ); }; -compressFile(faviconPath); \ No newline at end of file +compressFile(faviconPath); diff --git a/embedded/config/server.js b/embedded/config/server.js index 6c91808..f8b2d07 100644 --- a/embedded/config/server.js +++ b/embedded/config/server.js @@ -18,656 +18,667 @@ let serverpath = path.normalize(__dirname + "/../server/public/"); let sdpath = path.normalize(__dirname + "/../server/sd/"); let WebSocketServer = require("ws").Server, - wss = new WebSocketServer({ port: 81,handleProtocols:function(protocol) {console.log( "protocol received from client " + protocol ); - return "webui-v3"; - return null;}}); + wss = new WebSocketServer({ + port: 81, + handleProtocols: function (protocol) { + console.log("protocol received from client " + protocol); + return "webui-v3"; + return null; + }, + }); app.use(fileUpload({ preserveExtension: true, debug: false })); app.listen(port, () => - console.log(expresscolor(`[express] Listening on port ${port}!`)) + console.log(expresscolor(`[express] Listening on port ${port}!`)) ); //app.use(express.urlencoded({ extended: false })); function SendBinary(text) { - const array = new Uint8Array(text.length); - for (let i = 0; i < array.length; ++i) { - array[i] = text.charCodeAt(i); - } - wss.clients.forEach(function each(client) { - if (client.readyState === WebSocket.OPEN) { - client.send(array); + const array = new Uint8Array(text.length); + for (let i = 0; i < array.length; ++i) { + array[i] = text.charCodeAt(i); } - }); + wss.clients.forEach(function each(client) { + if (client.readyState === WebSocket.OPEN) { + client.send(array); + } + }); } app.post("/login", function (req, res) { - res.send(""); - return; + res.send(""); + return; }); app.get("/config", function (req, res) { - res.send( - "chip id: 56398\nCPU Freq: 240 Mhz
" + - "CPU Temp: 58.3 C
" + - "free mem: 212.36 KB
" + - "SDK: v3.2.3-14-gd3e562907
" + - "flash size: 4.00 MB
" + - "size for update: 1.87 MB
" + - "FS type: LittleFS
" + - "FS usage: 104.00 KB/192.00 KB
" + - "baud: 115200
" + - "sleep mode: none
" + - "wifi: ON
" + - "hostname: esp3d
" + - "HTTP port: 80
" + - "Telnet port: 23
" + - "WebDav port: 8383
" + - "sta: ON
" + - "mac: 80:7D:3A:C4:4E:DC
" + - "SSID: WIFI_OFFICE_A2G
" + - "signal: 100 %
" + - "phy mode: 11n
" + - "channel: 11
" + - "ip mode: dhcp
" + - "ip: 192.168.1.61
" + - "gw: 192.168.1.1
" + - "msk: 255.255.255.0
" + - "DNS: 192.168.1.1
" + - "ap: OFF
" + - "mac: 80:7D:3A:C4:4E:DD
" + - "serial: ON
" + - "notification: OFF
" + - "Target Fw: repetier
" + - "FW ver: 3.0.0.a91
" + - "FW arch: ESP32 " - ); - return; + res.send( + "chip id: 56398\nCPU Freq: 240 Mhz
" + + "CPU Temp: 58.3 C
" + + "free mem: 212.36 KB
" + + "SDK: v3.2.3-14-gd3e562907
" + + "flash size: 4.00 MB
" + + "size for update: 1.87 MB
" + + "FS type: LittleFS
" + + "FS usage: 104.00 KB/192.00 KB
" + + "baud: 115200
" + + "sleep mode: none
" + + "wifi: ON
" + + "hostname: esp3d
" + + "HTTP port: 80
" + + "Telnet port: 23
" + + "WebDav port: 8383
" + + "sta: ON
" + + "mac: 80:7D:3A:C4:4E:DC
" + + "SSID: WIFI_OFFICE_A2G
" + + "signal: 100 %
" + + "phy mode: 11n
" + + "channel: 11
" + + "ip mode: dhcp
" + + "ip: 192.168.1.61
" + + "gw: 192.168.1.1
" + + "msk: 255.255.255.0
" + + "DNS: 192.168.1.1
" + + "ap: OFF
" + + "mac: 80:7D:3A:C4:4E:DD
" + + "serial: ON
" + + "notification: OFF
" + + "Target Fw: repetier
" + + "FW ver: 3.0.0.a91
" + + "FW arch: ESP32 " + ); + return; }); app.get("/command", function (req, res) { - console.log(commandcolor(`[server]/command params: ${req.query.cmd}`)); - let url = req.query.cmd; - if (url.startsWith("[ESP800]json")) { - res.json( - { - cmd: "800", - status: "ok", - data:{ - FWVersion: "2.0.9.3+-3.0.0.a111", - FWTarget: 30, - SDConnection: "none", - Authentication: "Disabled", - WebCommunication: "Synchronous", - WebSocketIP: "localhost", - WebSocketPort: "81", - Hostname: "esp3d", - WiFiMode: "STA", - WebUpdate: "Enabled", - FlashFileSystem: "LittleFs", - HostPath: "/", - Time: "none", - } - } - ); - return; - } - if (url.indexOf("ESP111") != -1) { - res.send("192.168.1.111"); - return; - } - if (url.indexOf("ESP420") != -1) { - res.json({ - Status: [ - { id: "chip id", value: "38078" }, - { id: "CPU Freq", value: "240 Mhz" }, - { id: "CPU Temp", value: "50.6 C" }, - { id: "free mem", value: "217.50 KB" }, - { id: "SDK", value: "v3.3.1-61-g367c3c09c" }, - { id: "flash size", value: "4.00 MB" }, - { id: "size for update", value: "1.87 MB" }, - { id: "FS type", value: "SPIFFS" }, - { id: "FS usage", value: "39.95 KB/169.38 KB" }, - { id: "baud", value: "115200" }, - { id: "sleep mode", value: "none" }, - { id: "wifi", value: "ON" }, - { id: "hostname", value: "esp3d" }, - { id: "HTTP port", value: "80" }, - { id: "Telnet port", value: "23" }, - { id: "Ftp ports", value: "21, 20, 55600" }, - { id: "sta", value: "ON" }, - { id: "mac", value: "30:AE:A4:21:BE:94" }, - { id: "SSID", value: "WIFI_OFFICE_B2G" }, - { id: "signal", value: "100 %" }, - { id: "phy mode", value: "11n" }, - { id: "channel", value: "2" }, - { id: "ip mode", value: "dhcp" }, - { id: "ip", value: "192.168.1.43" }, - { id: "gw", value: "192.168.1.1" }, - { id: "msk", value: "255.255.255.0" }, - { id: "DNS", value: "192.168.1.1" }, - { id: "ap", value: "OFF" }, - { id: "mac", value: "30:AE:A4:21:BE:95" }, - { id: "serial", value: "ON" }, - { id: "notification", value: "OFF" }, - { id: "FW ver", value: "3.0.0.a28" }, - { id: "FW arch", value: "ESP32" }, - ], - }); - return; - } + console.log(commandcolor(`[server]/command params: ${req.query.cmd}`)); + let url = req.query.cmd; + if (url.startsWith("[ESP800]json")) { + res.json({ + cmd: "800", + status: "ok", + data: { + FWVersion: "2.0.9.3+-3.0.0.a111", + FWTarget: 30, + SDConnection: "none", + Authentication: "Disabled", + WebCommunication: "Synchronous", + WebSocketIP: "localhost", + WebSocketPort: "81", + Hostname: "esp3d", + WiFiMode: "STA", + WebUpdate: "Enabled", + FlashFileSystem: "LittleFs", + HostPath: "/", + Time: "none", + }, + }); + return; + } + if (url.indexOf("ESP111") != -1) { + res.send("192.168.1.111"); + return; + } + if (url.indexOf("ESP420") != -1) { + res.json({ + Status: [ + { id: "chip id", value: "38078" }, + { id: "CPU Freq", value: "240 Mhz" }, + { id: "CPU Temp", value: "50.6 C" }, + { id: "free mem", value: "217.50 KB" }, + { id: "SDK", value: "v3.3.1-61-g367c3c09c" }, + { id: "flash size", value: "4.00 MB" }, + { id: "size for update", value: "1.87 MB" }, + { id: "FS type", value: "SPIFFS" }, + { id: "FS usage", value: "39.95 KB/169.38 KB" }, + { id: "baud", value: "115200" }, + { id: "sleep mode", value: "none" }, + { id: "wifi", value: "ON" }, + { id: "hostname", value: "esp3d" }, + { id: "HTTP port", value: "80" }, + { id: "Telnet port", value: "23" }, + { id: "Ftp ports", value: "21, 20, 55600" }, + { id: "sta", value: "ON" }, + { id: "mac", value: "30:AE:A4:21:BE:94" }, + { id: "SSID", value: "WIFI_OFFICE_B2G" }, + { id: "signal", value: "100 %" }, + { id: "phy mode", value: "11n" }, + { id: "channel", value: "2" }, + { id: "ip mode", value: "dhcp" }, + { id: "ip", value: "192.168.1.43" }, + { id: "gw", value: "192.168.1.1" }, + { id: "msk", value: "255.255.255.0" }, + { id: "DNS", value: "192.168.1.1" }, + { id: "ap", value: "OFF" }, + { id: "mac", value: "30:AE:A4:21:BE:95" }, + { id: "serial", value: "ON" }, + { id: "notification", value: "OFF" }, + { id: "FW ver", value: "3.0.0.a28" }, + { id: "FW arch", value: "ESP32" }, + ], + }); + return; + } - if (url.indexOf("ESP410") != -1) { - res.json({ - AP_LIST: [ - { - SSID: "HP-Setup>71-M277 LaserJet", - SIGNAL: "92", - IS_PROTECTED: "0", - }, - { SSID: "WIFI_OFFICE_B2G", SIGNAL: "88", IS_PROTECTED: "1" }, - { SSID: "NETGEAR70", SIGNAL: "66", IS_PROTECTED: "1" }, - { SSID: "ZenFone6'luc", SIGNAL: "48", IS_PROTECTED: "1" }, - { SSID: "Livebox-EF01", SIGNAL: "20", IS_PROTECTED: "1" }, - { SSID: "orange", SIGNAL: "20", IS_PROTECTED: "0" }, - ], - }); - return; - } + if (url.indexOf("ESP410") != -1) { + res.json({ + AP_LIST: [ + { + SSID: "HP-Setup>71-M277 LaserJet", + SIGNAL: "92", + IS_PROTECTED: "0", + }, + { SSID: "WIFI_OFFICE_B2G", SIGNAL: "88", IS_PROTECTED: "1" }, + { SSID: "NETGEAR70", SIGNAL: "66", IS_PROTECTED: "1" }, + { SSID: "ZenFone6'luc", SIGNAL: "48", IS_PROTECTED: "1" }, + { SSID: "Livebox-EF01", SIGNAL: "20", IS_PROTECTED: "1" }, + { SSID: "orange", SIGNAL: "20", IS_PROTECTED: "0" }, + ], + }); + return; + } - if (url.indexOf("ESP400") != -1) { - res.json({ - Settings: [ - { - F: "network/network", - P: "130", - T: "S", - V: "esp3d", - H: "hostname", - S: "32", - M: "1", - }, - { - F: "network/network", - P: "0", - T: "B", - V: "1", - H: "radio mode", - O: [{ none: "0" }, { sta: "1" }, { ap: "2" }], - }, - { - F: "network/sta", - P: "1", - T: "S", - V: "WIFI_OFFICE_B2G", - S: "32", - H: "SSID", - M: "1", - }, - { - F: "network/sta", - P: "34", - T: "S", - N: "1", - V: "********", - S: "64", - H: "pwd", - M: "8", - }, - { - F: "network/sta", - P: "99", - T: "B", - V: "1", - H: "ip mode", - O: [{ dhcp: "1" }, { static: "0" }], - }, - { - F: "network/sta", - P: "100", - T: "A", - V: "192.168.0.1", - H: "ip", - }, - { - F: "network/sta", - P: "108", - T: "A", - V: "192.168.0.1", - H: "gw", - }, - { - F: "network/sta", - P: "104", - T: "A", - V: "255.255.255.0", - H: "msk", - }, - { - F: "network/ap", - P: "218", - T: "S", - V: "ESP3D", - S: "32", - H: "SSID", - M: "1", - }, - { - F: "network/ap", - P: "251", - T: "S", - N: "1", - V: "********", - S: "64", - H: "pwd", - M: "8", - }, - { - F: "network/ap", - P: "316", - T: "A", - V: "192.168.0.1", - H: "ip", - }, - { - F: "network/ap", - P: "118", - T: "B", - V: "11", - H: "channel", - O: [ - { 1: "1" }, - { 2: "2" }, - { 3: "3" }, - { 4: "4" }, - { 5: "5" }, - { 6: "6" }, - { 7: "7" }, - { 8: "8" }, - { 9: "9" }, - { 10: "10" }, - { 11: "11" }, - { 12: "12" }, - { 13: "13" }, - { 14: "14" }, - ], - }, - { - F: "service/http", - P: "328", - T: "B", - V: "1", - H: "enable", - O: [{ no: "0" }, { yes: "1" }], - }, - { - F: "service/http", - P: "121", - T: "I", - V: "80", - H: "port", - S: "65001", - M: "1", - }, - { - F: "service/telnetp", - P: "329", - T: "B", - V: "1", - H: "enable", - O: [{ no: "0" }, { yes: "1" }], - }, - { - F: "service/telnetp", - P: "125", - T: "I", - V: "23", - H: "port", - S: "65001", - M: "1", - }, - { - F: "service/ftp", - P: "1021", - T: "B", - V: "1", - H: "enable", - O: [{ no: "0" }, { yes: "1" }], - }, - { - F: "service/ftp", - P: "1009", - T: "I", - V: "21", - H: "control port", - S: "65001", - M: "1", - }, - { - F: "service/ftp", - P: "1013", - T: "I", - V: "20", - H: "active port", - S: "65001", - M: "1", - }, - { - F: "service/ftp", - P: "1017", - T: "I", - V: "55600", - H: "passive port", - S: "65001", - M: "1", - }, - { - F: "service/notification", - P: "1004", - T: "B", - V: "1", - H: "auto notif", - O: [{ no: "0" }, { yes: "1" }], - }, - { - F: "service/notification", - P: "116", - T: "B", - V: "0", - H: "notification", - O: [{ none: "0" }, { pushover: "1" }, { email: "2" }, { line: "3" }], - }, - { - F: "service/notification", - P: "332", - T: "S", - V: "********", - S: "63", - H: "t1", - M: "0", - }, - { - F: "service/notification", - P: "396", - T: "S", - V: "********", - S: "63", - H: "t2", - M: "0", - }, - { - F: "service/notification", - P: "855", - T: "S", - V: " ", - S: "127", - H: "ts", - M: "0", - }, - { - F: "system/system", - P: "461", - T: "B", - V: "40", - H: "targetfw", - O: [ - { repetier: "50" }, - { marlin: "20" }, - { marlinkimbra: "35" }, - { smoothieware: "40" }, - { grbl: "10" }, - { unknown: "0" }, - ], - }, - { - F: "system/system", - P: "112", - T: "I", - V: "115200", - H: "baud", - O: [ - { 9600: "9600" }, - { 19200: "19200" }, - { 38400: "38400" }, - { 57600: "57600" }, - { 74880: "74880" }, - { 115200: "115200" }, - { 230400: "230400" }, - { 250000: "250000" }, - { 500000: "500000" }, - { 921600: "921600" }, - ], - }, - { - F: "system/system", - P: "320", - T: "I", - V: "10000", - H: "bootdelay", - S: "40000", - M: "0", - }, - { - F: "system/system", - P: "129", - T: "F", - V: "255", - H: "outputmsg", - O: [{ M117: "16" }, { serial: "1" }, { telnet: "2" }], - }, - ], - }); - return; - } - SendBinary("ok\n"); - res.send(""); + if (url.indexOf("ESP400") != -1) { + res.json({ + Settings: [ + { + F: "network/network", + P: "130", + T: "S", + V: "esp3d", + H: "hostname", + S: "32", + M: "1", + }, + { + F: "network/network", + P: "0", + T: "B", + V: "1", + H: "radio mode", + O: [{ none: "0" }, { sta: "1" }, { ap: "2" }], + }, + { + F: "network/sta", + P: "1", + T: "S", + V: "WIFI_OFFICE_B2G", + S: "32", + H: "SSID", + M: "1", + }, + { + F: "network/sta", + P: "34", + T: "S", + N: "1", + V: "********", + S: "64", + H: "pwd", + M: "8", + }, + { + F: "network/sta", + P: "99", + T: "B", + V: "1", + H: "ip mode", + O: [{ dhcp: "1" }, { static: "0" }], + }, + { + F: "network/sta", + P: "100", + T: "A", + V: "192.168.0.1", + H: "ip", + }, + { + F: "network/sta", + P: "108", + T: "A", + V: "192.168.0.1", + H: "gw", + }, + { + F: "network/sta", + P: "104", + T: "A", + V: "255.255.255.0", + H: "msk", + }, + { + F: "network/ap", + P: "218", + T: "S", + V: "ESP3D", + S: "32", + H: "SSID", + M: "1", + }, + { + F: "network/ap", + P: "251", + T: "S", + N: "1", + V: "********", + S: "64", + H: "pwd", + M: "8", + }, + { + F: "network/ap", + P: "316", + T: "A", + V: "192.168.0.1", + H: "ip", + }, + { + F: "network/ap", + P: "118", + T: "B", + V: "11", + H: "channel", + O: [ + { 1: "1" }, + { 2: "2" }, + { 3: "3" }, + { 4: "4" }, + { 5: "5" }, + { 6: "6" }, + { 7: "7" }, + { 8: "8" }, + { 9: "9" }, + { 10: "10" }, + { 11: "11" }, + { 12: "12" }, + { 13: "13" }, + { 14: "14" }, + ], + }, + { + F: "service/http", + P: "328", + T: "B", + V: "1", + H: "enable", + O: [{ no: "0" }, { yes: "1" }], + }, + { + F: "service/http", + P: "121", + T: "I", + V: "80", + H: "port", + S: "65001", + M: "1", + }, + { + F: "service/telnetp", + P: "329", + T: "B", + V: "1", + H: "enable", + O: [{ no: "0" }, { yes: "1" }], + }, + { + F: "service/telnetp", + P: "125", + T: "I", + V: "23", + H: "port", + S: "65001", + M: "1", + }, + { + F: "service/ftp", + P: "1021", + T: "B", + V: "1", + H: "enable", + O: [{ no: "0" }, { yes: "1" }], + }, + { + F: "service/ftp", + P: "1009", + T: "I", + V: "21", + H: "control port", + S: "65001", + M: "1", + }, + { + F: "service/ftp", + P: "1013", + T: "I", + V: "20", + H: "active port", + S: "65001", + M: "1", + }, + { + F: "service/ftp", + P: "1017", + T: "I", + V: "55600", + H: "passive port", + S: "65001", + M: "1", + }, + { + F: "service/notification", + P: "1004", + T: "B", + V: "1", + H: "auto notif", + O: [{ no: "0" }, { yes: "1" }], + }, + { + F: "service/notification", + P: "116", + T: "B", + V: "0", + H: "notification", + O: [ + { none: "0" }, + { pushover: "1" }, + { email: "2" }, + { line: "3" }, + ], + }, + { + F: "service/notification", + P: "332", + T: "S", + V: "********", + S: "63", + H: "t1", + M: "0", + }, + { + F: "service/notification", + P: "396", + T: "S", + V: "********", + S: "63", + H: "t2", + M: "0", + }, + { + F: "service/notification", + P: "855", + T: "S", + V: " ", + S: "127", + H: "ts", + M: "0", + }, + { + F: "system/system", + P: "461", + T: "B", + V: "40", + H: "targetfw", + O: [ + { repetier: "50" }, + { marlin: "20" }, + { marlinkimbra: "35" }, + { smoothieware: "40" }, + { grbl: "10" }, + { unknown: "0" }, + ], + }, + { + F: "system/system", + P: "112", + T: "I", + V: "115200", + H: "baud", + O: [ + { 9600: "9600" }, + { 19200: "19200" }, + { 38400: "38400" }, + { 57600: "57600" }, + { 74880: "74880" }, + { 115200: "115200" }, + { 230400: "230400" }, + { 250000: "250000" }, + { 500000: "500000" }, + { 921600: "921600" }, + ], + }, + { + F: "system/system", + P: "320", + T: "I", + V: "10000", + H: "bootdelay", + S: "40000", + M: "0", + }, + { + F: "system/system", + P: "129", + T: "F", + V: "255", + H: "outputmsg", + O: [{ M117: "16" }, { serial: "1" }, { telnet: "2" }], + }, + ], + }); + return; + } + SendBinary("ok\n"); + res.send(""); }); function fileSizeString(size) { - let s; - if (size < 1024) return size + " B"; - if (size < 1024 * 1024) return (size / 1024).toFixed(2) + " KB"; - if (size < 1024 * 1024 * 1024) - return (size / (1024 * 1024)).toFixed(2) + " MB"; - if (size < 1024 * 1024 * 1024 * 1024) - return (size / (1024 * 1024 * 1024)).toFixed(2) + " GB"; - return "X B"; + let s; + if (size < 1024) return size + " B"; + if (size < 1024 * 1024) return (size / 1024).toFixed(2) + " KB"; + if (size < 1024 * 1024 * 1024) + return (size / (1024 * 1024)).toFixed(2) + " MB"; + if (size < 1024 * 1024 * 1024 * 1024) + return (size / (1024 * 1024 * 1024)).toFixed(2) + " GB"; + return "X B"; } -function filesList(mypath,mainpath) { - let res = '{"files":['; - let nb = 0; - let total = sdpath==mainpath? (4096 * 1024 * 1024):(1.2 * 1024 * 1024); - let totalused = getTotalSize(mainpath); - let currentpath = path.normalize(mainpath + mypath); - console.log("[path]" + currentpath); - fs.readdirSync(currentpath).forEach((fileelement) => { - let fullpath = path.normalize(currentpath + "/" + fileelement); - let fst = fs.statSync(fullpath); - let fsize = -1; +function filesList(mypath, mainpath) { + let res = '{"files":['; + let nb = 0; + let total = sdpath == mainpath ? 4096 * 1024 * 1024 : 1.2 * 1024 * 1024; + let totalused = getTotalSize(mainpath); + let currentpath = path.normalize(mainpath + mypath); + console.log("[path]" + currentpath); + fs.readdirSync(currentpath).forEach((fileelement) => { + let fullpath = path.normalize(currentpath + "/" + fileelement); + let fst = fs.statSync(fullpath); + let fsize = -1; - if (fst.isFile()) { - fsize = fileSizeString(fst.size); - } - if (nb > 0) res += ","; - res += '{"name":"' + fileelement + '","size":"' + fsize + '"}'; - nb++; - }); - res += - '],"path":"' + - mypath + - '","occupation":"' + - ((100 * totalused) / total).toFixed(0) + - '","status":"ok","total":"' + - fileSizeString(total) + - '","used":"' + - fileSizeString(totalused) + - '"}'; - return res; + if (fst.isFile()) { + fsize = fileSizeString(fst.size); + } + if (nb > 0) res += ","; + res += '{"name":"' + fileelement + '","size":"' + fsize + '"}'; + nb++; + }); + res += + '],"path":"' + + mypath + + '","occupation":"' + + ((100 * totalused) / total).toFixed(0) + + '","status":"ok","total":"' + + fileSizeString(total) + + '","used":"' + + fileSizeString(totalused) + + '"}'; + return res; } const getAllFiles = function (dirPath, arrayOfFiles) { - let files = fs.readdirSync(dirPath); + let files = fs.readdirSync(dirPath); - arrayOfFiles = arrayOfFiles || []; + arrayOfFiles = arrayOfFiles || []; - files.forEach(function (file) { - if (fs.statSync(dirPath + "/" + file).isDirectory()) { - arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles); - } else { - arrayOfFiles.push(dirPath + "/" + file); - } - }); + files.forEach(function (file) { + if (fs.statSync(dirPath + "/" + file).isDirectory()) { + arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles); + } else { + arrayOfFiles.push(dirPath + "/" + file); + } + }); - return arrayOfFiles; + return arrayOfFiles; }; const getTotalSize = function (directoryPath) { - const arrayOfFiles = getAllFiles(directoryPath); + const arrayOfFiles = getAllFiles(directoryPath); - let totalSize = 0; + let totalSize = 0; - arrayOfFiles.forEach(function (filePath) { - totalSize += fs.statSync(filePath).size; - }); + arrayOfFiles.forEach(function (filePath) { + totalSize += fs.statSync(filePath).size; + }); - return totalSize; + return totalSize; }; function deleteFolderRecursive(path) { - if (fs.existsSync(path) && fs.lstatSync(path).isDirectory()) { - fs.readdirSync(path).forEach(function (file, index) { - let curPath = path + "/" + file; + if (fs.existsSync(path) && fs.lstatSync(path).isDirectory()) { + fs.readdirSync(path).forEach(function (file, index) { + let curPath = path + "/" + file; - if (fs.lstatSync(curPath).isDirectory()) { - // recurse - deleteFolderRecursive(curPath); - } else { - // delete file - fs.unlinkSync(curPath); - } - }); + if (fs.lstatSync(curPath).isDirectory()) { + // recurse + deleteFolderRecursive(curPath); + } else { + // delete file + fs.unlinkSync(curPath); + } + }); - console.log(`[server]Deleting directory "${path}"...`); - if (fs.existsSync(path)) fs.rmdirSync(path); - } else console.log(`[server]No directory "${path}"...`); + console.log(`[server]Deleting directory "${path}"...`); + if (fs.existsSync(path)) fs.rmdirSync(path); + } else console.log(`[server]No directory "${path}"...`); } app.all("/updatefw", function (req, res) { - res.send("ok"); + res.send("ok"); }); app.all("/sdfiles", function (req, res) { - let mypath = req.query.path; - let url = req.originalUrl; - let filepath = path.normalize(sdpath + mypath + "/" + req.query.filename); - if (url.indexOf("action=deletedir") != -1) { - console.log("[server]delete directory " + filepath); - deleteFolderRecursive(filepath); - fs.readdirSync(mypath); - } else if (url.indexOf("action=delete") != -1) { - fs.unlinkSync(filepath); - console.log("[server]delete file " + filepath); - } - if (url.indexOf("action=createdir") != -1) { - fs.mkdirSync(filepath); - console.log("[server]new directory " + filepath); - } - if (typeof mypath == "undefined") { - if (typeof req.body.path == "undefined") { - console.log("[server]path is not defined"); - mypath = "/"; - } else { - mypath = (req.body.path == "/" ? "" : req.body.path) + "/"; + let mypath = req.query.path; + let url = req.originalUrl; + let filepath = path.normalize(sdpath + mypath + "/" + req.query.filename); + if (url.indexOf("action=deletedir") != -1) { + console.log("[server]delete directory " + filepath); + deleteFolderRecursive(filepath); + fs.readdirSync(mypath); + } else if (url.indexOf("action=delete") != -1) { + fs.unlinkSync(filepath); + console.log("[server]delete file " + filepath); } - } - console.log("[server]path is " + mypath); - if (!req.files || Object.keys(req.files).length === 0) { - return res.send(filesList(mypath,sdpath)); - } - let myFile = req.files.myfiles; - if (typeof myFile.length == "undefined") { - let fullpath = path.normalize(sdpath + mypath + myFile.name); - console.log("[server]one file:" + fullpath); - myFile.mv(fullpath, function (err) { - if (err) return res.status(500).send(err); - res.send(filesList(mypath,sdpath)); - }); - return; - } else { - console.log(myFile.length + " files"); - for (let i = 0; i < myFile.length; i++) { - let fullpath = path.normalize(sdpath + mypath + myFile[i].name); - console.log(fullpath); - myFile[i].mv(fullpath).then(() => { - if (i == myFile.length - 1) res.send(filesList(mypath,sdpath)); - }); + if (url.indexOf("action=createdir") != -1) { + fs.mkdirSync(filepath); + console.log("[server]new directory " + filepath); + } + if (typeof mypath == "undefined") { + if (typeof req.body.path == "undefined") { + console.log("[server]path is not defined"); + mypath = "/"; + } else { + mypath = (req.body.path == "/" ? "" : req.body.path) + "/"; + } + } + console.log("[server]path is " + mypath); + if (!req.files || Object.keys(req.files).length === 0) { + return res.send(filesList(mypath, sdpath)); + } + let myFile = req.files.myfiles; + if (typeof myFile.length == "undefined") { + let fullpath = path.normalize(sdpath + mypath + myFile.name); + console.log("[server]one file:" + fullpath); + myFile.mv(fullpath, function (err) { + if (err) return res.status(500).send(err); + res.send(filesList(mypath, sdpath)); + }); + return; + } else { + console.log(myFile.length + " files"); + for (let i = 0; i < myFile.length; i++) { + let fullpath = path.normalize(sdpath + mypath + myFile[i].name); + console.log(fullpath); + myFile[i].mv(fullpath).then(() => { + if (i == myFile.length - 1) res.send(filesList(mypath, sdpath)); + }); + } } - } }); app.all("/files", function (req, res) { - let mypath = req.query.path; - let url = req.originalUrl; - let filepath = path.normalize(serverpath + mypath + "/" + req.query.filename); - if (url.indexOf("action=deletedir") != -1) { - console.log("[server]delete directory " + filepath); - deleteFolderRecursive(filepath); - fs.readdirSync(mypath); - } else if (url.indexOf("action=delete") != -1) { - fs.unlinkSync(filepath); - console.log("[server]delete file " + filepath); - } - if (url.indexOf("action=createdir") != -1) { - fs.mkdirSync(filepath); - console.log("[server]new directory " + filepath); - } - if (typeof mypath == "undefined") { - if (typeof req.body.path == "undefined") { - console.log("[server]path is not defined"); - mypath = "/"; - } else { - mypath = (req.body.path == "/" ? "" : req.body.path) + "/"; + let mypath = req.query.path; + let url = req.originalUrl; + let filepath = path.normalize( + serverpath + mypath + "/" + req.query.filename + ); + if (url.indexOf("action=deletedir") != -1) { + console.log("[server]delete directory " + filepath); + deleteFolderRecursive(filepath); + fs.readdirSync(mypath); + } else if (url.indexOf("action=delete") != -1) { + fs.unlinkSync(filepath); + console.log("[server]delete file " + filepath); } - } - console.log("[server]path is " + mypath); - if (!req.files || Object.keys(req.files).length === 0) { - return res.send(filesList(mypath,serverpath)); - } - let myFile = req.files.myfiles; - if (typeof myFile.length == "undefined") { - let fullpath = path.normalize(serverpath + mypath + myFile.name); - console.log("[server]one file:" + fullpath); - myFile.mv(fullpath, function (err) { - if (err) return res.status(500).send(err); - res.send(filesList(mypath, serverpath)); - }); - return; - } else { - console.log(myFile.length + " files"); - for (let i = 0; i < myFile.length; i++) { - let fullpath = path.normalize(serverpath + mypath + myFile[i].name); - console.log(fullpath); - myFile[i].mv(fullpath).then(() => { - if (i == myFile.length - 1) res.send(filesList(mypath, serverpath)); - }); + if (url.indexOf("action=createdir") != -1) { + fs.mkdirSync(filepath); + console.log("[server]new directory " + filepath); + } + if (typeof mypath == "undefined") { + if (typeof req.body.path == "undefined") { + console.log("[server]path is not defined"); + mypath = "/"; + } else { + mypath = (req.body.path == "/" ? "" : req.body.path) + "/"; + } + } + console.log("[server]path is " + mypath); + if (!req.files || Object.keys(req.files).length === 0) { + return res.send(filesList(mypath, serverpath)); + } + let myFile = req.files.myfiles; + if (typeof myFile.length == "undefined") { + let fullpath = path.normalize(serverpath + mypath + myFile.name); + console.log("[server]one file:" + fullpath); + myFile.mv(fullpath, function (err) { + if (err) return res.status(500).send(err); + res.send(filesList(mypath, serverpath)); + }); + return; + } else { + console.log(myFile.length + " files"); + for (let i = 0; i < myFile.length; i++) { + let fullpath = path.normalize(serverpath + mypath + myFile[i].name); + console.log(fullpath); + myFile[i].mv(fullpath).then(() => { + if (i == myFile.length - 1) + res.send(filesList(mypath, serverpath)); + }); + } } - } }); wss.on("connection", (socket, request) => { - console.log(wscolor("[ws] New connection")); - console.log(wscolor(`[ws] currentID:${currentID}`)); - socket.send(`currentID:${currentID}`); - wss.clients.forEach(function each(client) { - if (client.readyState === WebSocket.OPEN) { - client.send(`activeID:${currentID}`); - } - }); - currentID++; - socket.on("message", (message) => { - console.log(wscolor("[ws] received: %s", message)); - }); + console.log(wscolor("[ws] New connection")); + console.log(wscolor(`[ws] currentID:${currentID}`)); + socket.send(`currentID:${currentID}`); + wss.clients.forEach(function each(client) { + if (client.readyState === WebSocket.OPEN) { + client.send(`activeID:${currentID}`); + } + }); + currentID++; + socket.on("message", (message) => { + console.log(wscolor("[ws] received: %s", message)); + }); }); wss.on("error", (error) => { - console.log(wscolor("[ws] Error: %s", error)); + console.log(wscolor("[ws] Error: %s", error)); }); diff --git a/embedded/config/webpack.dev.js b/embedded/config/webpack.dev.js index 47b5624..748521e 100644 --- a/embedded/config/webpack.dev.js +++ b/embedded/config/webpack.dev.js @@ -2,52 +2,52 @@ const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { - mode: "development", // this will trigger some webpack default stuffs for dev - entry: path.resolve(__dirname, "../src/index.js"), // if not set, default path to './src/index.js'. Accepts an object with multiple key-value pairs, with key as your custom bundle filename(substituting the [name]), and value as the corresponding file path - output: { - filename: "[name].bundle.js", // [name] will take whatever the input filename is. defaults to 'main' if only a single entry value - path: path.resolve(__dirname, "../dist"), // the folder containing you final dist/build files. Default to './dist' - }, - devServer: { - historyApiFallback: true, // to make our SPA works after a full reload, so that it serves 'index.html' when 404 response - open: true, - static: { - directory: path.resolve(__dirname, "./dist"), + mode: "development", // this will trigger some webpack default stuffs for dev + entry: path.resolve(__dirname, "../src/index.js"), // if not set, default path to './src/index.js'. Accepts an object with multiple key-value pairs, with key as your custom bundle filename(substituting the [name]), and value as the corresponding file path + output: { + filename: "[name].bundle.js", // [name] will take whatever the input filename is. defaults to 'main' if only a single entry value + path: path.resolve(__dirname, "../dist"), // the folder containing you final dist/build files. Default to './dist' }, - port: 8088, - proxy: { - context: () => true, - target: "http://localhost:8080", - }, - }, - stats: "minimal", // default behaviour spit out way too much info. adjust to your need. - devtool: "source-map", // a sourcemap type. map to original source with line number - plugins: [ - new HtmlWebpackPlugin({ - template: path.join(__dirname, "../src/index.html"), - inlineSource: ".(js|css)$", - inject: true, - }), - ], // automatically creates a 'index.html' for us with our ,