UNPKG

creevey

Version:

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

103 lines (90 loc) 3.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initCreeveyClientApi = initCreeveyClientApi; var _types = require("../../types"); var _helpers = require("./helpers"); function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function initCreeveyClientApi() { return _initCreeveyClientApi.apply(this, arguments); } function _initCreeveyClientApi() { _initCreeveyClientApi = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var clientApiResolver, updateListeners, statusRequest, statusResolver, ws, send; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: send = function _send(request) { ws.send(JSON.stringify(request)); }; clientApiResolver = _types.noop; updateListeners = new Set(); statusRequest = null; statusResolver = _types.noop; ws = new WebSocket("ws://".concat((0, _helpers.getConnectionUrl)())); ws.addEventListener('open', function () { clientApiResolver({ start: function start(ids) { send({ type: 'start', payload: ids }); }, stop: function stop() { send({ type: 'stop' }); }, approve: function approve(id, retry, image) { send({ type: 'approve', payload: { id: id, retry: retry, image: image } }); }, onUpdate: function onUpdate(fn) { updateListeners.add(fn); return function () { return updateListeners.delete(fn); }; }, get status() { if (statusRequest) return statusRequest; send({ type: 'status' }); return statusRequest = new Promise(function (resolve) { return statusResolver = resolve; }); } }); }); ws.addEventListener('message', function (message) { var data = JSON.parse(message.data); if (data.type == 'update') updateListeners.forEach(function (fn) { return fn(data.payload); }); if (data.type == 'status') { statusResolver(data.payload); statusResolver = _types.noop; statusRequest = null; } }); // TODO Reconnect return _context.abrupt("return", new Promise(function (resolve) { return clientApiResolver = resolve; })); case 9: case "end": return _context.stop(); } } }, _callee); })); return _initCreeveyClientApi.apply(this, arguments); }