UNPKG

8.75 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _regenerator = require('babel-runtime/regenerator');
8
9var _regenerator2 = _interopRequireDefault(_regenerator);
10
11var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
12
13var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
14
15var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
16
17var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
18
19var _createClass2 = require('babel-runtime/helpers/createClass');
20
21var _createClass3 = _interopRequireDefault(_createClass2);
22
23var _chromeRemoteInterface = require('chrome-remote-interface');
24
25var _chromeRemoteInterface2 = _interopRequireDefault(_chromeRemoteInterface);
26
27var _promisifyEvent = require('promisify-event');
28
29var _promisifyEvent2 = _interopRequireDefault(_promisifyEvent);
30
31var _delay = require('./utils/delay');
32
33var _delay2 = _interopRequireDefault(_delay);
34
35var _constants = require('./constants');
36
37function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
39var NodeInspect = function () {
40 function NodeInspect(port, host) {
41 (0, _classCallCheck3.default)(this, NodeInspect);
42
43 this.port = port;
44 this.host = host;
45 this.client = null;
46 this.callFrameId = null;
47 }
48
49 (0, _createClass3.default)(NodeInspect, [{
50 key: '_attemptToConnect',
51 value: function () {
52 var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(port, host) {
53 var _this = this;
54
55 return _regenerator2.default.wrap(function _callee$(_context) {
56 while (1) {
57 switch (_context.prev = _context.next) {
58 case 0:
59 _context.next = 2;
60 return (0, _chromeRemoteInterface2.default)({ host: host, port: port }).then(function (client) {
61 _this.client = client;
62 return true;
63 }).catch(function () {
64 return (0, _delay2.default)(_constants.connectionRetryDelay);
65 });
66
67 case 2:
68 return _context.abrupt('return', _context.sent);
69
70 case 3:
71 case 'end':
72 return _context.stop();
73 }
74 }
75 }, _callee, this);
76 }));
77
78 function _attemptToConnect(_x, _x2) {
79 return _ref.apply(this, arguments);
80 }
81
82 return _attemptToConnect;
83 }()
84 }, {
85 key: '_connectRemoteInterface',
86 value: function () {
87 var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(port, host) {
88 var connected, i;
89 return _regenerator2.default.wrap(function _callee2$(_context2) {
90 while (1) {
91 switch (_context2.prev = _context2.next) {
92 case 0:
93 _context2.next = 2;
94 return this._attemptToConnect(port, host);
95
96 case 2:
97 connected = _context2.sent;
98 i = 0;
99
100 case 4:
101 if (!(!connected && i < _constants.maxConnectionRetryCount)) {
102 _context2.next = 11;
103 break;
104 }
105
106 _context2.next = 7;
107 return this._attemptToConnect(port, host);
108
109 case 7:
110 connected = _context2.sent;
111
112 case 8:
113 i++;
114 _context2.next = 4;
115 break;
116
117 case 11:
118 if (connected) {
119 _context2.next = 13;
120 break;
121 }
122
123 throw new Error('Unable to connect');
124
125 case 13:
126 case 'end':
127 return _context2.stop();
128 }
129 }
130 }, _callee2, this);
131 }));
132
133 function _connectRemoteInterface(_x3, _x4) {
134 return _ref2.apply(this, arguments);
135 }
136
137 return _connectRemoteInterface;
138 }()
139 }, {
140 key: '_setupRemoteInterface',
141 value: function () {
142 var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
143 var pausedEvent, _ref4, callFrames;
144
145 return _regenerator2.default.wrap(function _callee3$(_context3) {
146 while (1) {
147 switch (_context3.prev = _context3.next) {
148 case 0:
149 this.client.Debugger.enable();
150
151 pausedEvent = (0, _promisifyEvent2.default)(this.client, 'Debugger.paused');
152 _context3.next = 4;
153 return this.client.Runtime.runIfWaitingForDebugger();
154
155 case 4:
156 _context3.next = 6;
157 return pausedEvent;
158
159 case 6:
160 _ref4 = _context3.sent;
161 callFrames = _ref4.callFrames;
162
163
164 this.callFrameId = callFrames[0].callFrameId;
165
166 case 9:
167 case 'end':
168 return _context3.stop();
169 }
170 }
171 }, _callee3, this);
172 }));
173
174 function _setupRemoteInterface() {
175 return _ref3.apply(this, arguments);
176 }
177
178 return _setupRemoteInterface;
179 }()
180 }, {
181 key: 'connect',
182 value: function () {
183 var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {
184 return _regenerator2.default.wrap(function _callee4$(_context4) {
185 while (1) {
186 switch (_context4.prev = _context4.next) {
187 case 0:
188 _context4.next = 2;
189 return this._connectRemoteInterface(this.port, this.host);
190
191 case 2:
192 _context4.next = 4;
193 return this._setupRemoteInterface();
194
195 case 4:
196 case 'end':
197 return _context4.stop();
198 }
199 }
200 }, _callee4, this);
201 }));
202
203 function connect() {
204 return _ref5.apply(this, arguments);
205 }
206
207 return connect;
208 }()
209 }, {
210 key: 'evaluate',
211 value: function () {
212 var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(expression) {
213 return _regenerator2.default.wrap(function _callee5$(_context5) {
214 while (1) {
215 switch (_context5.prev = _context5.next) {
216 case 0:
217 _context5.next = 2;
218 return this.client.Debugger.evaluateOnCallFrame({ callFrameId: this.callFrameId, expression: expression });
219
220 case 2:
221 case 'end':
222 return _context5.stop();
223 }
224 }
225 }, _callee5, this);
226 }));
227
228 function evaluate(_x5) {
229 return _ref6.apply(this, arguments);
230 }
231
232 return evaluate;
233 }()
234 }, {
235 key: 'dispose',
236 value: function dispose() {
237 this.client.close();
238 }
239 }]);
240 return NodeInspect;
241}();
242
243exports.default = NodeInspect;
244module.exports = exports['default'];
\No newline at end of file