creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
54 lines • 1.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = creeveyApi;
const ws_1 = __importDefault(require("ws"));
const logger_js_1 = require("../logger.js");
function broadcast(wss, message) {
wss.clients.forEach((ws) => {
if (ws.readyState === ws_1.default.OPEN) {
ws.send(JSON.stringify(message));
}
});
}
function creeveyApi(runner) {
return {
subscribe(wss) {
runner.on('update', (payload) => {
broadcast(wss, { type: 'update', payload });
});
},
handleMessage(ws, message) {
if (typeof message != 'string') {
(0, logger_js_1.logger)().info('unhandled message', message);
return;
}
const command = JSON.parse(message);
switch (command.type) {
case 'status': {
ws.send(JSON.stringify({ type: 'status', payload: runner.status }));
return;
}
case 'start': {
runner.start(command.payload);
return;
}
case 'stop': {
runner.stop();
return;
}
case 'approve': {
void runner.approve(command.payload);
return;
}
case 'approveAll': {
void runner.approveAll();
return;
}
}
},
};
}
//# sourceMappingURL=api.js.map