typescript-assistant
Version:
Combines and integrates professional Typescript tools into your project
56 lines • 2.33 kB
JavaScript
;
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