UNPKG

typescript-assistant

Version:

Combines and integrates professional Typescript tools into your project

48 lines 2.15 kB
"use strict"; 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