creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
58 lines (44 loc) • 1.57 kB
JavaScript
;
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;
}