UNPKG

creevey

Version:

Cross-browser screenshot testing tool for Storybook with fancy UI Runner

58 lines (44 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = server; var _path = _interopRequireDefault(require("path")); var _http = _interopRequireDefault(require("http")); var _koa = _interopRequireDefault(require("koa")); var _koaStatic = _interopRequireDefault(require("koa-static")); var _koaMount = _interopRequireDefault(require("koa-mount")); var _ws = _interopRequireDefault(require("ws")); var _messages = require("../messages"); var _types = require("../../types"); var _logger = require("../logger"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function server(reportDir, port) { let resolveApi = _types.noop; const creeveyApi = new Promise(resolve => resolveApi = resolve); const app = new _koa.default(); const server = _http.default.createServer(app.callback()); const wss = new _ws.default.Server({ server, noServer: true }); app.use(async (_, next) => { await creeveyApi; await next(); }); app.use((0, _koaStatic.default)(_path.default.join(__dirname, '../../client/web'))); app.use((0, _koaMount.default)('/report', (0, _koaStatic.default)(reportDir))); wss.on('error', error => _logger.logger.error(error)); server.listen(port); (0, _messages.subscribeOn)('shutdown', () => { server.close(); wss.close(); }); void creeveyApi.then(api => { api.subscribe(wss); wss.on('connection', ws => { ws.on('message', message => api.handleMessage(ws, message)); }); }); return resolveApi; }