typescript-assistant
Version:
Combines and integrates professional Typescript tools into your project
48 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const WebSocket = require("ws");
const http = require("http");
const fs = require("fs");
let indexHtml = fs.readFileSync(`${__dirname}/../public/index.html`, { encoding: 'UTF8' });
exports.createServer = (deps) => {
let { logger, bus, linter, formatter } = deps;
let lastReports = {};
return {
start: () => {
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: 'UTF8' });
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:4551');
});
server.listen(4551);
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));
});
});
}
};
};
//# sourceMappingURL=server.js.map