UNPKG

browserstack-connector

Version:

Helps connect the local machine to BrowserStack and start a remote browser.

76 lines (49 loc) 1.92 kB
'use strict'; var _inherits = require('babel-runtime/helpers/inherits').default; var _classCallCheck = require('babel-runtime/helpers/class-call-check').default; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default; exports.__esModule = true; var _express = require('express'); var _express2 = _interopRequireDefault(_express); var _http = require('http'); var _http2 = _interopRequireDefault(_http); var _bodyParser = require('body-parser'); var _bodyParser2 = _interopRequireDefault(_bodyParser); var _events = require('events'); var Hub = (function (_EventEmitter) { _inherits(Hub, _EventEmitter); function Hub(port) { var _this = this; _classCallCheck(this, Hub); _EventEmitter.call(this); this.app = _express2.default().use(_bodyParser2.default.urlencoded({ extended: false })); this.appServer = _http2.default.createServer(this.app).listen(port); this.sockets = []; this._setupRoutes(); var handler = function (socket) { _this.sockets.push(socket); socket.on('close', function () { _this.sockets.splice(_this.sockets.indexOf(socket), 1); }); }; this.appServer.on('connection', handler); } Hub.prototype._setupRoutes = function _setupRoutes() { var _this2 = this; this.app.get('/:id', function (req, res) { var url = req.query.url; var urlIdentifier = req.params.id; _this2.emit('browser-opened', urlIdentifier); return res.redirect(url); }); }; Hub.prototype.close = function close() { this.appServer.close(); this.sockets.forEach(function (socket) { socket.destroy(); }); }; return Hub; })(_events.EventEmitter); exports.default = Hub; module.exports = exports.default;