const chokidar = require("chokidar"); const ws = require("./server"); const fs = require("fs"); const doMerge = require("./command").doMerge; const { exec } = require("child_process"); require("colors"); require("shelljs/global"); const tscProcess = exec("node node_modules/.bin/tsc -w -p ."); const rollupProcess = exec("node node_modules/.bin/rollup -c -w"); console.warn("Waiting ..."); setTimeout(() => { console.warn("Start watching"); ws.listen(7777); chokidar .watch(process.cwd() + "/bundle", { ignored: /(^|[\/\\])\../, awaitWriteFinish: true, alwaysStat: true, }) .on("change", (path) => { if (ws.debugging) { console.log("debugging, hot reload by pass"); return; } fs.readFile(path, "utf-8", (error, data) => { if (!path.endsWith(".map")) { try { const sourceMap = doMerge(path + ".map"); ws.connections.forEach((e) => { e.sendText( JSON.stringify({ cmd: "RELOAD", script: data, source: path.match(/[^/\\]*$/)[0], sourceMap, }) ); }); } catch (e) { console.error(e); } } }); }); }, 3000); const os = require("os"); function getIPAdress() { const ret = []; var interfaces = os.networkInterfaces(); for (var devName in interfaces) { var iface = interfaces[devName]; for (var i = 0; i < iface.length; i++) { var alias = iface[i]; if ( alias.family === "IPv4" && alias.address !== "127.0.0.1" && !alias.internal ) { ret.push(alias.address); } } } return ret; } const qrcode = require("qrcode-terminal"); const ips = getIPAdress(); ips.forEach((e) => { console.log(`IP:${e}`); qrcode.generate(e, { small: false }); }); const keypress = require("keypress"); keypress(process.stdin); process.stdin.on("keypress", function (ch, key) { if (key && key.ctrl && key.name == "r") { ips.forEach((e) => { console.log(`IP:${e}`); qrcode.generate(e, { small: false }); }); } if (key && key.ctrl && key.name == "c") { process.stdin.pause(); tscProcess.kill("SIGABRT"); rollupProcess.kill("SIGABRT"); process.exit(0); } }); process.stdin.setRawMode(true); process.stdin.resume();