UNPKG

19.3 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports["default"] = void 0;
7
8var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10var _debugDecorator = require("./debug-decorator");
11
12var _class, _temp;
13
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
16function 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); } }
17
18function _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); }); }; }
19
20function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21
22function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23
24function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25
26function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
27
28var FallbackTransport = (_class = (_temp =
29/*#__PURE__*/
30function () {
31 function FallbackTransport(transports) {
32 _classCallCheck(this, FallbackTransport);
33
34 this.name = "FallbackTransport";
35 this.activeName = "";
36 this.debug = false;
37 this.requestNeeded = false;
38 this.transports = transports;
39 } // first one that inits successfuly is the final one; others won't even start initing
40
41
42 _createClass(FallbackTransport, [{
43 key: "_tryInitTransports",
44 value: function () {
45 var _tryInitTransports2 = _asyncToGenerator(
46 /*#__PURE__*/
47 _regenerator["default"].mark(function _callee() {
48 var res, lastError, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, transport;
49
50 return _regenerator["default"].wrap(function _callee$(_context) {
51 while (1) {
52 switch (_context.prev = _context.next) {
53 case 0:
54 res = [];
55 lastError = null;
56 _iteratorNormalCompletion = true;
57 _didIteratorError = false;
58 _iteratorError = undefined;
59 _context.prev = 5;
60 _iterator = this.transports[Symbol.iterator]();
61
62 case 7:
63 if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
64 _context.next = 21;
65 break;
66 }
67
68 transport = _step.value;
69 _context.prev = 9;
70 _context.next = 12;
71 return transport.init(this.debug);
72
73 case 12:
74 res.push(transport);
75 _context.next = 18;
76 break;
77
78 case 15:
79 _context.prev = 15;
80 _context.t0 = _context["catch"](9);
81 lastError = _context.t0;
82
83 case 18:
84 _iteratorNormalCompletion = true;
85 _context.next = 7;
86 break;
87
88 case 21:
89 _context.next = 27;
90 break;
91
92 case 23:
93 _context.prev = 23;
94 _context.t1 = _context["catch"](5);
95 _didIteratorError = true;
96 _iteratorError = _context.t1;
97
98 case 27:
99 _context.prev = 27;
100 _context.prev = 28;
101
102 if (!_iteratorNormalCompletion && _iterator["return"] != null) {
103 _iterator["return"]();
104 }
105
106 case 30:
107 _context.prev = 30;
108
109 if (!_didIteratorError) {
110 _context.next = 33;
111 break;
112 }
113
114 throw _iteratorError;
115
116 case 33:
117 return _context.finish(30);
118
119 case 34:
120 return _context.finish(27);
121
122 case 35:
123 if (!(res.length === 0)) {
124 _context.next = 37;
125 break;
126 }
127
128 throw lastError || new Error("No transport could be initialized.");
129
130 case 37:
131 return _context.abrupt("return", res);
132
133 case 38:
134 case "end":
135 return _context.stop();
136 }
137 }
138 }, _callee, this, [[5, 23, 27, 35], [9, 15], [28,, 30, 34]]);
139 }));
140
141 function _tryInitTransports() {
142 return _tryInitTransports2.apply(this, arguments);
143 }
144
145 return _tryInitTransports;
146 }() // first one that inits successfuly is the final one; others won't even start initing
147
148 }, {
149 key: "_tryConfigureTransports",
150 value: function () {
151 var _tryConfigureTransports2 = _asyncToGenerator(
152 /*#__PURE__*/
153 _regenerator["default"].mark(function _callee2(data) {
154 var lastError, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, transport;
155
156 return _regenerator["default"].wrap(function _callee2$(_context2) {
157 while (1) {
158 switch (_context2.prev = _context2.next) {
159 case 0:
160 lastError = null;
161 _iteratorNormalCompletion2 = true;
162 _didIteratorError2 = false;
163 _iteratorError2 = undefined;
164 _context2.prev = 4;
165 _iterator2 = this._availableTransports[Symbol.iterator]();
166
167 case 6:
168 if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {
169 _context2.next = 20;
170 break;
171 }
172
173 transport = _step2.value;
174 _context2.prev = 8;
175 _context2.next = 11;
176 return transport.configure(data);
177
178 case 11:
179 return _context2.abrupt("return", transport);
180
181 case 14:
182 _context2.prev = 14;
183 _context2.t0 = _context2["catch"](8);
184 lastError = _context2.t0;
185
186 case 17:
187 _iteratorNormalCompletion2 = true;
188 _context2.next = 6;
189 break;
190
191 case 20:
192 _context2.next = 26;
193 break;
194
195 case 22:
196 _context2.prev = 22;
197 _context2.t1 = _context2["catch"](4);
198 _didIteratorError2 = true;
199 _iteratorError2 = _context2.t1;
200
201 case 26:
202 _context2.prev = 26;
203 _context2.prev = 27;
204
205 if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
206 _iterator2["return"]();
207 }
208
209 case 29:
210 _context2.prev = 29;
211
212 if (!_didIteratorError2) {
213 _context2.next = 32;
214 break;
215 }
216
217 throw _iteratorError2;
218
219 case 32:
220 return _context2.finish(29);
221
222 case 33:
223 return _context2.finish(26);
224
225 case 34:
226 throw lastError || new Error("No transport could be initialized.");
227
228 case 35:
229 case "end":
230 return _context2.stop();
231 }
232 }
233 }, _callee2, this, [[4, 22, 26, 34], [8, 14], [27,, 29, 33]]);
234 }));
235
236 function _tryConfigureTransports(_x) {
237 return _tryConfigureTransports2.apply(this, arguments);
238 }
239
240 return _tryConfigureTransports;
241 }()
242 }, {
243 key: "init",
244 value: function () {
245 var _init = _asyncToGenerator(
246 /*#__PURE__*/
247 _regenerator["default"].mark(function _callee3(debug) {
248 var transports;
249 return _regenerator["default"].wrap(function _callee3$(_context3) {
250 while (1) {
251 switch (_context3.prev = _context3.next) {
252 case 0:
253 this.debug = !!debug; // init ALL OF THEM
254
255 _context3.next = 3;
256 return this._tryInitTransports();
257
258 case 3:
259 transports = _context3.sent;
260 this._availableTransports = transports; // a slight hack - configured is always false, so we force caller to call configure()
261 // to find out the actual working transport (bridge falls on configure, not on info)
262
263 this.version = transports[0].version;
264 this.configured = false;
265
266 case 7:
267 case "end":
268 return _context3.stop();
269 }
270 }
271 }, _callee3, this);
272 }));
273
274 function init(_x2) {
275 return _init.apply(this, arguments);
276 }
277
278 return init;
279 }()
280 }, {
281 key: "configure",
282 value: function () {
283 var _configure = _asyncToGenerator(
284 /*#__PURE__*/
285 _regenerator["default"].mark(function _callee4(signedData) {
286 var pt;
287 return _regenerator["default"].wrap(function _callee4$(_context4) {
288 while (1) {
289 switch (_context4.prev = _context4.next) {
290 case 0:
291 pt = this._tryConfigureTransports(signedData);
292 _context4.next = 3;
293 return pt;
294
295 case 3:
296 this.activeTransport = _context4.sent;
297 this.configured = this.activeTransport.configured;
298 this.version = this.activeTransport.version;
299 this.activeName = this.activeTransport.name;
300 this.requestNeeded = this.activeTransport.requestNeeded;
301 this.isOutdated = this.activeTransport.isOutdated;
302
303 case 9:
304 case "end":
305 return _context4.stop();
306 }
307 }
308 }, _callee4, this);
309 }));
310
311 function configure(_x3) {
312 return _configure.apply(this, arguments);
313 }
314
315 return configure;
316 }() // using async so I get Promise.recect on this.activeTransport == null (or other error), not Error
317
318 }, {
319 key: "enumerate",
320 value: function () {
321 var _enumerate = _asyncToGenerator(
322 /*#__PURE__*/
323 _regenerator["default"].mark(function _callee5() {
324 return _regenerator["default"].wrap(function _callee5$(_context5) {
325 while (1) {
326 switch (_context5.prev = _context5.next) {
327 case 0:
328 return _context5.abrupt("return", this.activeTransport.enumerate());
329
330 case 1:
331 case "end":
332 return _context5.stop();
333 }
334 }
335 }, _callee5, this);
336 }));
337
338 function enumerate() {
339 return _enumerate.apply(this, arguments);
340 }
341
342 return enumerate;
343 }()
344 }, {
345 key: "listen",
346 value: function () {
347 var _listen = _asyncToGenerator(
348 /*#__PURE__*/
349 _regenerator["default"].mark(function _callee6(old) {
350 return _regenerator["default"].wrap(function _callee6$(_context6) {
351 while (1) {
352 switch (_context6.prev = _context6.next) {
353 case 0:
354 return _context6.abrupt("return", this.activeTransport.listen(old));
355
356 case 1:
357 case "end":
358 return _context6.stop();
359 }
360 }
361 }, _callee6, this);
362 }));
363
364 function listen(_x4) {
365 return _listen.apply(this, arguments);
366 }
367
368 return listen;
369 }()
370 }, {
371 key: "acquire",
372 value: function () {
373 var _acquire = _asyncToGenerator(
374 /*#__PURE__*/
375 _regenerator["default"].mark(function _callee7(input, debugLink) {
376 return _regenerator["default"].wrap(function _callee7$(_context7) {
377 while (1) {
378 switch (_context7.prev = _context7.next) {
379 case 0:
380 return _context7.abrupt("return", this.activeTransport.acquire(input, debugLink));
381
382 case 1:
383 case "end":
384 return _context7.stop();
385 }
386 }
387 }, _callee7, this);
388 }));
389
390 function acquire(_x5, _x6) {
391 return _acquire.apply(this, arguments);
392 }
393
394 return acquire;
395 }()
396 }, {
397 key: "release",
398 value: function () {
399 var _release = _asyncToGenerator(
400 /*#__PURE__*/
401 _regenerator["default"].mark(function _callee8(session, onclose, debugLink) {
402 return _regenerator["default"].wrap(function _callee8$(_context8) {
403 while (1) {
404 switch (_context8.prev = _context8.next) {
405 case 0:
406 return _context8.abrupt("return", this.activeTransport.release(session, onclose, debugLink));
407
408 case 1:
409 case "end":
410 return _context8.stop();
411 }
412 }
413 }, _callee8, this);
414 }));
415
416 function release(_x7, _x8, _x9) {
417 return _release.apply(this, arguments);
418 }
419
420 return release;
421 }()
422 }, {
423 key: "call",
424 value: function () {
425 var _call = _asyncToGenerator(
426 /*#__PURE__*/
427 _regenerator["default"].mark(function _callee9(session, name, data, debugLink) {
428 return _regenerator["default"].wrap(function _callee9$(_context9) {
429 while (1) {
430 switch (_context9.prev = _context9.next) {
431 case 0:
432 return _context9.abrupt("return", this.activeTransport.call(session, name, data, debugLink));
433
434 case 1:
435 case "end":
436 return _context9.stop();
437 }
438 }
439 }, _callee9, this);
440 }));
441
442 function call(_x10, _x11, _x12, _x13) {
443 return _call.apply(this, arguments);
444 }
445
446 return call;
447 }()
448 }, {
449 key: "post",
450 value: function () {
451 var _post = _asyncToGenerator(
452 /*#__PURE__*/
453 _regenerator["default"].mark(function _callee10(session, name, data, debugLink) {
454 return _regenerator["default"].wrap(function _callee10$(_context10) {
455 while (1) {
456 switch (_context10.prev = _context10.next) {
457 case 0:
458 return _context10.abrupt("return", this.activeTransport.post(session, name, data, debugLink));
459
460 case 1:
461 case "end":
462 return _context10.stop();
463 }
464 }
465 }, _callee10, this);
466 }));
467
468 function post(_x14, _x15, _x16, _x17) {
469 return _post.apply(this, arguments);
470 }
471
472 return post;
473 }()
474 }, {
475 key: "read",
476 value: function () {
477 var _read = _asyncToGenerator(
478 /*#__PURE__*/
479 _regenerator["default"].mark(function _callee11(session, debugLink) {
480 return _regenerator["default"].wrap(function _callee11$(_context11) {
481 while (1) {
482 switch (_context11.prev = _context11.next) {
483 case 0:
484 return _context11.abrupt("return", this.activeTransport.read(session, debugLink));
485
486 case 1:
487 case "end":
488 return _context11.stop();
489 }
490 }
491 }, _callee11, this);
492 }));
493
494 function read(_x18, _x19) {
495 return _read.apply(this, arguments);
496 }
497
498 return read;
499 }()
500 }, {
501 key: "requestDevice",
502 value: function () {
503 var _requestDevice = _asyncToGenerator(
504 /*#__PURE__*/
505 _regenerator["default"].mark(function _callee12() {
506 return _regenerator["default"].wrap(function _callee12$(_context12) {
507 while (1) {
508 switch (_context12.prev = _context12.next) {
509 case 0:
510 return _context12.abrupt("return", this.activeTransport.requestDevice());
511
512 case 1:
513 case "end":
514 return _context12.stop();
515 }
516 }
517 }, _callee12, this);
518 }));
519
520 function requestDevice() {
521 return _requestDevice.apply(this, arguments);
522 }
523
524 return requestDevice;
525 }()
526 }, {
527 key: "setBridgeLatestUrl",
528 value: function setBridgeLatestUrl(url) {
529 var _iteratorNormalCompletion3 = true;
530 var _didIteratorError3 = false;
531 var _iteratorError3 = undefined;
532
533 try {
534 for (var _iterator3 = this.transports[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
535 var transport = _step3.value;
536 transport.setBridgeLatestUrl(url);
537 }
538 } catch (err) {
539 _didIteratorError3 = true;
540 _iteratorError3 = err;
541 } finally {
542 try {
543 if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
544 _iterator3["return"]();
545 }
546 } finally {
547 if (_didIteratorError3) {
548 throw _iteratorError3;
549 }
550 }
551 }
552 }
553 }, {
554 key: "stop",
555 value: function stop() {
556 var _iteratorNormalCompletion4 = true;
557 var _didIteratorError4 = false;
558 var _iteratorError4 = undefined;
559
560 try {
561 for (var _iterator4 = this.transports[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
562 var transport = _step4.value;
563 transport.stop();
564 }
565 } catch (err) {
566 _didIteratorError4 = true;
567 _iteratorError4 = err;
568 } finally {
569 try {
570 if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
571 _iterator4["return"]();
572 }
573 } finally {
574 if (_didIteratorError4) {
575 throw _iteratorError4;
576 }
577 }
578 }
579 }
580 }]);
581
582 return FallbackTransport;
583}(), _temp), (_applyDecoratedDescriptor(_class.prototype, "init", [_debugDecorator.debugInOut], Object.getOwnPropertyDescriptor(_class.prototype, "init"), _class.prototype)), _class);
584exports["default"] = FallbackTransport;
585module.exports = exports.default;
\No newline at end of file