UNPKG

typescript-assistant

Version:

Combines and integrates professional Typescript tools into your project

56 lines 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createServer = void 0; const fs = require("fs"); const http = require("http"); const WebSocket = require("ws"); let indexHtml = fs.readFileSync(`${__dirname}/../public/index.html`, { encoding: "utf-8", }); let createServer = (deps) => { let { logger, bus, linter, formatter } = deps; let lastReports = {}; return { start: (port) => { let processReport = (report) => { lastReports[report.tool] = report; let data = JSON.stringify(report, undefined, 2); wss.clients.forEach((client) => client.send(data)); }; bus.register("report", processReport); let server = http.createServer((req, res) => { indexHtml = fs.readFileSync(`${__dirname}/../public/index.html`, { encoding: "utf-8", }); res.writeHead(200, { type: "text/html" }); res.write(indexHtml); res.end(); }); const wss = new WebSocket.Server({ server, path: "/ws" }); server.on("listening", () => { logger.log("server", `Experimental server listening on http://localhost:${port}`); }); server.listen(port); wss.on("connection", function connection(ws) { ws.on("message", function incoming(message) { logger.log("server", `received: ${message}`); if (message === "lint-fix") { linter .lintOnce(true) .catch((err) => logger.error("server", `Error during lint-fix ${err}`)); } if (message === "format-fix") { formatter .formatFiles(undefined) .catch((err) => logger.error("server", `Error during format-fix ${err}`)); } }); Object.keys(lastReports).forEach((tool) => { ws.send(JSON.stringify(lastReports[tool], undefined, 2)); }); }); }, }; }; exports.createServer = createServer; //# sourceMappingURL=server.js.map