testcafe 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +1 -1
  3. package/README.md +40 -46
  4. package/lib/api/test-controller/execution-context.js +4 -2
  5. package/lib/browser/connection/gateway.js +43 -1
  6. package/lib/browser/connection/index.js +24 -10
  7. package/lib/browser/connection/service-routes.js +3 -1
  8. package/lib/browser/provider/built-in/dedicated/chrome/index.js +19 -5
  9. package/lib/browser/provider/index.js +4 -1
  10. package/lib/client/automation/deps/hammerhead.js +24 -0
  11. package/lib/client/automation/deps/testcafe-core.js +24 -0
  12. package/lib/client/automation/index.js +251 -54
  13. package/lib/client/automation/index.min.js +1 -1
  14. package/lib/client/automation/playback/press/get-key-info.js +44 -0
  15. package/lib/client/automation/playback/press/utils.js +142 -0
  16. package/lib/client/automation/utils/get-key-code.js +15 -0
  17. package/lib/client/automation/utils/get-key-identifier.js +14 -0
  18. package/lib/client/automation/utils/is-letter.js +7 -0
  19. package/lib/client/automation/utils/key-identifier-maps.js +93 -0
  20. package/lib/client/browser/idle-page/index.js +7 -2
  21. package/lib/client/core/index.js +46 -3
  22. package/lib/client/core/index.min.js +1 -1
  23. package/lib/client/driver/index.js +45 -17
  24. package/lib/client/driver/index.min.js +1 -1
  25. package/lib/client/test-run/index.js.mustache +34 -30
  26. package/lib/client/ui/index.js +3230 -48
  27. package/lib/client/ui/index.min.js +1 -1
  28. package/lib/client/ui/sprite.svg +15 -0
  29. package/lib/client/ui/styles.css +183 -41
  30. package/lib/live/test-runner.js +4 -2
  31. package/lib/proxyless/api-base.js +3 -2
  32. package/lib/proxyless/client/event-descriptor.js +67 -0
  33. package/lib/proxyless/client/input.js +36 -0
  34. package/lib/proxyless/client/key-press/utils.js +31 -0
  35. package/lib/proxyless/client/types.js +1 -1
  36. package/lib/proxyless/client/utils.js +32 -2
  37. package/lib/proxyless/cookie-provider.js +31 -3
  38. package/lib/proxyless/errors.js +20 -0
  39. package/lib/proxyless/index.js +2 -10
  40. package/lib/proxyless/request-pipeline/index.js +32 -3
  41. package/lib/proxyless/resource-injector.js +5 -4
  42. package/lib/proxyless/types.js +3 -2
  43. package/lib/proxyless/utils/cdp.js +4 -3
  44. package/lib/reporter/index.js +2 -1
  45. package/lib/runner/bootstrapper.js +8 -1
  46. package/lib/runner/index.js +57 -44
  47. package/lib/shared/utils/is-file-protocol.js +2 -2
  48. package/lib/test-run/commands/actions.js +2 -2
  49. package/lib/test-run/cookies/base.js +4 -1
  50. package/lib/test-run/cookies/provider.js +9 -2
  51. package/lib/test-run/execute-js-expression/index.js +4 -2
  52. package/lib/test-run/index.js +17 -12
  53. package/lib/test-run/request/create-request-options.js +23 -12
  54. package/lib/test-run/request/send.js +2 -3
  55. package/lib/utils/check-is-vm.js +58 -0
  56. package/package.json +9 -6
  57. package/lib/proxyless/client/event-simulator.js +0 -40
@@ -272,10 +272,13 @@
272
272
  #root.root .tcOptionList .tcOption {
273
273
  margin: 1px 5px;
274
274
  }
275
- #root.root .status-bar {
275
+ #root.root .panels-container {
276
276
  position: fixed;
277
277
  -webkit-transform: translate3d(0px, 0px, 0px) !important;
278
- bottom: 0 !important;
278
+ bottom: 0;
279
+ width: 100%;
280
+ }
281
+ #root.root .panels-container .status-bar {
279
282
  background-color: rgba(24, 40, 57, 0.85);
280
283
  z-index: 2147483644;
281
284
  left: 0;
@@ -287,7 +290,7 @@
287
290
  /* Views */
288
291
  /* --- */
289
292
  }
290
- #root.root .status-bar .icon {
293
+ #root.root .panels-container .status-bar .icon {
291
294
  background-image: url("/testcafe-ui-sprite.svg#logo-icon");
292
295
  background-color: rgba(42, 61, 82, 0.95);
293
296
  display: inline-block;
@@ -299,7 +302,7 @@
299
302
  background-position: 16px 11px;
300
303
  background-attachment: local;
301
304
  }
302
- #root.root .status-bar .info-container {
305
+ #root.root .panels-container .status-bar .info-container {
303
306
  font-style: normal;
304
307
  font-size: 12px;
305
308
  flex-direction: column;
@@ -310,7 +313,7 @@
310
313
  justify-content: space-between;
311
314
  align-items: center;
312
315
  }
313
- #root.root .status-bar .info-container .info-text-container {
316
+ #root.root .panels-container .status-bar .info-container .info-text-container {
314
317
  margin: 7px 0 4px 16px;
315
318
  width: 100%;
316
319
  align-items: center;
@@ -319,22 +322,22 @@
319
322
  white-space: nowrap;
320
323
  flex: 1;
321
324
  }
322
- #root.root .status-bar .info-container .info-text-container .status-container {
325
+ #root.root .panels-container .status-bar .info-container .info-text-container .status-container {
323
326
  align-items: center;
324
327
  min-width: 0;
325
328
  overflow: hidden;
326
329
  }
327
- #root.root .status-bar .info-container .info-text-container .status-container .info {
330
+ #root.root .panels-container .status-bar .info-container .info-text-container .status-container .info {
328
331
  text-overflow: ellipsis;
329
332
  overflow: hidden;
330
333
  }
331
- #root.root .status-bar .info-container .info-text-container .status-container .status {
334
+ #root.root .panels-container .status-bar .info-container .info-text-container .status-container .status {
332
335
  font-weight: bold;
333
336
  font-size: 14px;
334
337
  overflow: hidden;
335
338
  text-overflow: ellipsis;
336
339
  }
337
- #root.root .status-bar .info-container .info-text-container .user-agent {
340
+ #root.root .panels-container .status-bar .info-container .info-text-container .user-agent {
338
341
  color: rgba(255, 255, 255, 0.5);
339
342
  font-size: 12px;
340
343
  margin-right: 20px;
@@ -342,7 +345,7 @@
342
345
  text-overflow: ellipsis;
343
346
  overflow: hidden;
344
347
  }
345
- #root.root .status-bar .info-container .progress-bar {
348
+ #root.root .panels-container .status-bar .info-container .progress-bar {
346
349
  width: 100%;
347
350
  height: 3px;
348
351
  background-color: #345B69;
@@ -351,124 +354,263 @@
351
354
  overflow: hidden;
352
355
  visibility: hidden;
353
356
  }
354
- #root.root .status-bar .info-container .progress-bar.determinate .value {
357
+ #root.root .panels-container .status-bar .info-container .progress-bar.determinate .value {
355
358
  background-color: #36B6E5;
356
359
  height: 3px;
357
360
  width: 0;
358
361
  }
359
- #root.root .status-bar .info-container .progress-bar.indeterminate .value-container {
362
+ #root.root .panels-container .status-bar .info-container .progress-bar.indeterminate .value-container {
360
363
  background-color: #36B6E5;
361
364
  position: relative;
362
365
  }
363
- #root.root .status-bar .info-container .progress-bar.indeterminate .value-container .value {
366
+ #root.root .panels-container .status-bar .info-container .progress-bar.indeterminate .value-container .value {
364
367
  position: absolute;
365
368
  background-color: inherit;
366
369
  top: 0;
367
370
  left: 0;
368
371
  bottom: 0;
369
372
  }
370
- #root.root .status-bar .buttons,
371
- #root.root .status-bar .button {
373
+ #root.root .panels-container .status-bar .buttons,
374
+ #root.root .panels-container .status-bar .button {
372
375
  display: flex;
373
376
  }
374
- #root.root .status-bar .actions-container {
377
+ #root.root .panels-container .status-bar .actions-container {
375
378
  text-align: right;
376
379
  font-size: 12px;
377
380
  align-items: center;
378
381
  right: 0;
379
382
  }
380
- #root.root .status-bar .actions-container .buttons {
383
+ #root.root .panels-container .status-bar .actions-container .buttons {
381
384
  background-color: rgba(42, 61, 82, 0.85);
382
385
  flex-wrap: nowrap;
383
386
  }
384
- #root.root .status-bar .actions-container .buttons .button {
387
+ #root.root .panels-container .status-bar .actions-container .buttons .button {
385
388
  height: 52px;
386
389
  min-width: 52px;
387
390
  align-items: center;
388
391
  justify-content: center;
389
392
  }
390
- #root.root .status-bar .actions-container .buttons .button:hover {
393
+ #root.root .panels-container .status-bar .actions-container .buttons .button:hover {
391
394
  background-color: #36B6E5;
392
395
  }
393
- #root.root .status-bar .actions-container .buttons .button:active {
396
+ #root.root .panels-container .status-bar .actions-container .buttons .button:active {
394
397
  background-color: #1797CA;
395
398
  }
396
- #root.root .status-bar .actions-container .buttons .button > span {
399
+ #root.root .panels-container .status-bar .actions-container .buttons .button > span {
397
400
  margin-right: 20px;
398
401
  margin-left: -10px;
399
402
  white-space: nowrap;
400
403
  }
401
- #root.root .status-bar .actions-container .buttons .button .button-icon {
404
+ #root.root .panels-container .status-bar .actions-container .buttons .button .button-icon {
402
405
  width: 30px;
403
406
  height: 30px;
404
407
  margin-left: 10px;
405
408
  margin-right: 10px;
406
409
  }
407
- #root.root .status-bar .actions-container .buttons .button.locked .button-icon {
410
+ #root.root .panels-container .status-bar .actions-container .buttons .button.locked .button-icon {
408
411
  background-image: url("/testcafe-ui-sprite.svg#locked");
409
412
  }
410
- #root.root .status-bar .actions-container .buttons .button.unlocked {
413
+ #root.root .panels-container .status-bar .actions-container .buttons .button.unlocked {
411
414
  background-color: #60A96E;
412
415
  }
413
- #root.root .status-bar .actions-container .buttons .button.unlocked .button-icon {
416
+ #root.root .panels-container .status-bar .actions-container .buttons .button.unlocked .button-icon {
414
417
  background-image: url("/testcafe-ui-sprite.svg#unlocked");
415
418
  }
416
- #root.root .status-bar .actions-container .buttons .button.resume .button-icon {
419
+ #root.root .panels-container .status-bar .actions-container .buttons .button.resume .button-icon {
417
420
  background-image: url("/testcafe-ui-sprite.svg#resume");
418
421
  }
419
- #root.root .status-bar .actions-container .buttons .button.finish .button-icon {
422
+ #root.root .panels-container .status-bar .actions-container .buttons .button.finish .button-icon {
420
423
  background-image: url("/testcafe-ui-sprite.svg#finish");
421
424
  }
422
- #root.root .status-bar .actions-container .buttons .button.step .button-icon {
425
+ #root.root .panels-container .status-bar .actions-container .buttons .button.step .button-icon {
423
426
  background-image: url("/testcafe-ui-sprite.svg#step");
424
427
  }
425
- #root.root .status-bar.waiting-element-success {
428
+ #root.root .panels-container .status-bar.waiting-element-success {
426
429
  background-color: transparent;
427
430
  }
428
- #root.root .status-bar.waiting-element-success .info-container {
431
+ #root.root .panels-container .status-bar.waiting-element-success .info-container {
429
432
  background-color: rgba(116, 183, 129, 0.9);
430
433
  }
431
- #root.root .status-bar.waiting-element-success .progress-bar.determinate .value {
434
+ #root.root .panels-container .status-bar.waiting-element-success .progress-bar.determinate .value {
432
435
  background-color: #3F884D;
433
436
  }
434
- #root.root .status-bar.waiting-element-failed .info-container {
437
+ #root.root .panels-container .status-bar.waiting-element-failed .info-container {
435
438
  background-color: rgba(223, 86, 121, 0.9);
436
439
  }
437
- #root.root .status-bar.waiting-element-failed .progress-bar.determinate .value {
440
+ #root.root .panels-container .status-bar.waiting-element-failed .progress-bar.determinate .value {
438
441
  background-color: #BA4A67;
439
442
  }
440
443
  @media (max-width: 992px) {
441
- #root.root .status-bar .info-container .user-agent {
444
+ #root.root .panels-container .status-bar .info-container .user-agent {
442
445
  display: none;
443
446
  }
444
447
  }
445
448
  @media (max-width: 768px) {
446
- #root.root .status-bar .icon,
447
- #root.root .status-bar .button > span {
449
+ #root.root .panels-container .status-bar .icon,
450
+ #root.root .panels-container .status-bar .button > span {
448
451
  display: none;
449
452
  }
450
453
  }
451
454
  @media (max-width: 768px) and screen and (-ms-high-contrast: active), (max-width: 768px) and (-ms-high-contrast: none) {
452
- #root.root .status-bar .actions-container {
455
+ #root.root .panels-container .status-bar .actions-container {
453
456
  min-width: 156px;
454
457
  }
455
458
  }
456
459
  @media (max-width: 576px) {
457
- #root.root .status-bar {
460
+ #root.root .panels-container .status-bar {
458
461
  flex-wrap: wrap;
459
462
  }
460
- #root.root .status-bar .actions-container,
461
- #root.root .status-bar .buttons {
463
+ #root.root .panels-container .status-bar .actions-container,
464
+ #root.root .panels-container .status-bar .buttons {
462
465
  width: 100%;
463
466
  justify-content: space-around;
464
467
  }
465
- #root.root .status-bar .actions-container .buttons .button {
468
+ #root.root .panels-container .status-bar .actions-container .buttons .button {
466
469
  height: 30px;
467
470
  flex-grow: 1;
468
471
  }
469
472
  }
473
+ #root.root .panels-container .selector-inspector-panel {
474
+ display: flex;
475
+ box-sizing: border-box;
476
+ width: 100%;
477
+ left: 0;
478
+ padding: 2px;
479
+ align-items: center;
480
+ z-index: 2147483644;
481
+ background-color: #283545;
482
+ color: #283545;
483
+ flex-wrap: nowrap;
484
+ flex-direction: row;
485
+ justify-content: space-around;
486
+ }
487
+ #root.root .panels-container .selector-inspector-panel * {
488
+ display: flex;
489
+ box-sizing: border-box;
490
+ font-size: 12px;
491
+ }
492
+ #root.root .panels-container .selector-inspector-panel > * {
493
+ margin: 2px !important;
494
+ flex-grow: 0;
495
+ }
496
+ #root.root .panels-container .selector-inspector-panel input,
497
+ #root.root .panels-container .selector-inspector-panel input:hover,
498
+ #root.root .panels-container .selector-inspector-panel input:active,
499
+ #root.root .panels-container .selector-inspector-panel input:focus {
500
+ line-height: 16px;
501
+ }
502
+ #root.root .panels-container .selector-inspector-panel input[type='button'],
503
+ #root.root .panels-container .selector-inspector-panel input:hover[type='button'],
504
+ #root.root .panels-container .selector-inspector-panel input:active[type='button'],
505
+ #root.root .panels-container .selector-inspector-panel input:focus[type='button'] {
506
+ padding: 1px 8px 3px 8px;
507
+ border-radius: 4px;
508
+ cursor: pointer;
509
+ }
510
+ #root.root .panels-container .selector-inspector-panel input[type='button']:hover,
511
+ #root.root .panels-container .selector-inspector-panel input:hover[type='button']:hover,
512
+ #root.root .panels-container .selector-inspector-panel input:active[type='button']:hover,
513
+ #root.root .panels-container .selector-inspector-panel input:focus[type='button']:hover {
514
+ background-color: #cfcfcf;
515
+ }
516
+ #root.root .panels-container .selector-inspector-panel input[type='text'],
517
+ #root.root .panels-container .selector-inspector-panel input:hover[type='text'],
518
+ #root.root .panels-container .selector-inspector-panel input:active[type='text'],
519
+ #root.root .panels-container .selector-inspector-panel input:focus[type='text'] {
520
+ padding: 2px 8px 2px 8px;
521
+ }
522
+ #root.root .panels-container .selector-inspector-panel .selector-input-container {
523
+ flex-grow: 1;
524
+ background-color: white;
525
+ }
526
+ #root.root .panels-container .selector-inspector-panel .selector-input-container > * {
527
+ flex-grow: 0;
528
+ }
529
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .selector-input {
530
+ flex-grow: 1;
531
+ font-family: monospace !important;
532
+ }
533
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .match-indicator {
534
+ margin: 2px;
535
+ padding: 2px 6px;
536
+ height: 16px;
537
+ font-size: 10px;
538
+ line-height: 12px;
539
+ border-radius: 4px;
540
+ background-color: #777777;
541
+ color: white;
542
+ }
543
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .match-indicator.ok {
544
+ background-color: #0B71E3;
545
+ }
546
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .match-indicator.invalid {
547
+ background-color: #993131;
548
+ }
549
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .match-indicator.not-found {
550
+ background-color: #777777;
551
+ }
552
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .expand-selector-list {
553
+ width: 20px;
554
+ height: 20px;
555
+ background-image: url("/testcafe-ui-sprite.svg#disabled-expand-button");
556
+ }
557
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .expand-selector-list.enabled {
558
+ background-image: url("/testcafe-ui-sprite.svg#expand-button");
559
+ }
560
+ #root.root .panels-container .selector-inspector-panel .selector-input-container .expand-selector-list.enabled:hover {
561
+ background-color: #cfcfcf;
562
+ }
563
+ #root.root .selectors-list {
564
+ position: fixed;
565
+ -webkit-transform: translate3d(0px, 0px, 0px) !important;
566
+ display: flex;
567
+ box-sizing: border-box;
568
+ z-index: 2147483645;
569
+ flex-direction: column;
570
+ background-color: white;
571
+ box-shadow: 0px 0px 2px #8d8d8d;
572
+ }
573
+ #root.root .selectors-list .selector-value {
574
+ height: 18px;
575
+ padding: 4px 8px 0px;
576
+ border-bottom: 1px solid #e2e2e2;
577
+ white-space: nowrap;
578
+ overflow: hidden;
579
+ text-overflow: ellipsis;
580
+ font-family: monospace !important;
581
+ font-size: 12px;
582
+ }
583
+ #root.root .selectors-list .selector-value:hover {
584
+ background-color: #cfcfcf;
585
+ }
586
+ #root.root .element-frame {
587
+ box-sizing: border-box;
588
+ position: absolute;
589
+ background-color: #1797CA;
590
+ border: 1px solid #033a50;
591
+ opacity: 0.3;
592
+ box-shadow: 0 0 6px 1px #033a50;
593
+ }
594
+ #root.root .tooltip {
595
+ position: absolute;
596
+ white-space: nowrap;
597
+ background-color: #667599;
598
+ padding: 2px 6px 3px 6px;
599
+ color: #ffffff;
600
+ font-family: monospace !important;
601
+ }
602
+ #root.root .arrow {
603
+ position: absolute;
604
+ background-image: url("/testcafe-ui-sprite.svg#arrow-down");
605
+ width: 16px;
606
+ height: 8px;
607
+ }
470
608
  #root.root .screenshot-mark {
471
609
  bottom: 0;
472
610
  right: 0;
473
611
  position: fixed;
474
612
  }
613
+ #root.root .auxiliary-input {
614
+ position: fixed;
615
+ bottom: 100%;
616
+ }
@@ -39,7 +39,9 @@ class LiveModeRunner extends runner_1.default {
39
39
  this.testRunController.setExpectedTestCount(expectedTestCount);
40
40
  })
41
41
  .then(() => {
42
- this.runnerTaskPromise = super.run(this.opts);
42
+ this._resetBeforeRun();
43
+ this.bootstrapper.restoreMessageBusListeners();
44
+ this.runnerTaskPromise = this._prepareAndRunTask(this.opts);
43
45
  return this.runnerTaskPromise;
44
46
  })
45
47
  .catch(err => {
@@ -171,4 +173,4 @@ class LiveModeRunner extends runner_1.default {
171
173
  }
172
174
  exports.default = LiveModeRunner;
173
175
  module.exports = exports.default;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGl2ZS90ZXN0LXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE4QjtBQUM5QixnRkFBOEQ7QUFDOUQsOERBQThDO0FBQzlDLHVEQUErQjtBQUMvQixrRUFBa0Q7QUFDbEQsK0VBQXFEO0FBQ3JELCtDQUFpRDtBQUNqRCwyQ0FBaUQ7QUFFakQsTUFBTSxjQUFlLFNBQVEsZ0JBQU07SUFDL0IsWUFBYSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFO1FBQzVFLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsUUFBUSxHQUFnQixLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFPLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUssYUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFJLENBQUM7UUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksNkJBQXlCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFVLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBR2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVc7WUFDL0MsTUFBTSxFQUFPLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBVyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUUs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QUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXpELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQUVELGtCQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vb3AgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IExpdmVNb2RlVGVzdFJ1bkNvbnRyb2xsZXIgZnJvbSAnLi90ZXN0LXJ1bi1jb250cm9sbGVyJztcbmltcG9ydCBMaXZlTW9kZUNvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCBSdW5uZXIgZnJvbSAnLi4vcnVubmVyJztcbmltcG9ydCBMaXZlTW9kZUJvb3RzdHJhcHBlciBmcm9tICcuL2Jvb3RzdHJhcHBlcic7XG5pbXBvcnQgcGFyc2VGaWxlTGlzdCBmcm9tICcuLi91dGlscy9wYXJzZS1maWxlLWxpc3QnO1xuaW1wb3J0IHsgR2VuZXJhbEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuXG5jbGFzcyBMaXZlTW9kZVJ1bm5lciBleHRlbmRzIFJ1bm5lciB7XG4gICAgY29uc3RydWN0b3IgKHsgcHJveHksIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSwgY29uZmlndXJhdGlvbiwgY29tcGlsZXJTZXJ2aWNlIH0pIHtcbiAgICAgICAgc3VwZXIoeyBwcm94eSwgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LCBjb25maWd1cmF0aW9uLCBjb21waWxlclNlcnZpY2UgfSk7XG5cbiAgICAgICAgdGhpcy5zdG9wcGluZyAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZSAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLnN0b3BJbmZpbml0ZVdhaXRpbmcgICA9IG5vb3A7XG4gICAgICAgIHRoaXMucmVqZWN0SW5maW5pdGVXYWl0aW5nID0gbm9vcDtcblxuICAgICAgICB0aGlzLmFzc2V0cyA9IG51bGw7XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuQ29udHJvbGxlciA9IG5ldyBMaXZlTW9kZVRlc3RSdW5Db250cm9sbGVyKCk7XG4gICAgICAgIHRoaXMuY29udHJvbGxlciAgICAgICAgPSB0aGlzLl9jcmVhdGVDb250cm9sbGVyKCk7XG5cblxuICAgICAgICB0aGlzLmVtYmVkZGluZ09wdGlvbnMoe1xuICAgICAgICAgICAgVGVzdFJ1bkN0b3I6IHRoaXMudGVzdFJ1bkNvbnRyb2xsZXIuVGVzdFJ1bkN0b3IsXG4gICAgICAgICAgICBhc3NldHM6ICAgICAgW10sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIgICAgICAgICA9IHRoaXMuX2NyZWF0ZUNvbnRyb2xsZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uQ2FjaGUgPSBudWxsO1xuICAgIH1cblxuICAgIHJ1blRlc3RzIChpc0ZpcnN0UnVuID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IHJ1bkVycm9yID0gbnVsbDtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZmluaXNoUHJldmlvdXNUZXN0UnVucygpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRlUnVubmFibGVDb25maWd1cmF0aW9uKGlzRmlyc3RSdW4pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZFRlc3RDb3VudCA9IHRoaXMuY29uZmlndXJhdGlvbkNhY2hlLnRlc3RzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHRoaXMudGVzdFJ1bkNvbnRyb2xsZXIuc2V0RXhwZWN0ZWRUZXN0Q291bnQoZXhwZWN0ZWRUZXN0Q291bnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bm5lclRhc2tQcm9taXNlID0gc3VwZXIucnVuKHRoaXMub3B0cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ydW5uZXJUYXNrUHJvbWlzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEJvb3RzdHJhcHBpbmdFcnJvcihudWxsKTtcblxuICAgICAgICAgICAgICAgIHJ1bkVycm9yID0gZXJyO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bm5lclRhc2tQcm9taXNlID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbGxlci5vblRlc3RSdW5Eb25lKHJ1bkVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIF92YWxpZGF0ZVJ1bk9wdGlvbnMgKCkge1xuICAgICAgICByZXR1cm4gc3VwZXIuX3ZhbGlkYXRlUnVuT3B0aW9ucygpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyhlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZSlcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5jb25maWd1cmF0aW9uQ2FjaGUpO1xuXG4gICAgICAgIHJldHVybiBzdXBlci5fY3JlYXRlUnVubmFibGVDb25maWd1cmF0aW9uKClcbiAgICAgICAgICAgIC50aGVuKGNvbmZpZ3VyYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVqZWN0SW5maW5pdGVXYWl0aW5nKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRCb290c3RyYXBwaW5nRXJyb3IgKGVycikge1xuICAgICAgICB0aGlzLmJvb3RzdHJhcHBpbmdFcnJvciA9IGVycjtcbiAgICB9XG5cbiAgICBydW4gKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uQ2FjaGUgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLl9ydW5uaW5nKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5jYW5ub3RSdW5MaXZlTW9kZVJ1bm5lck11bHRpcGxlVGltZXMpO1xuXG4gICAgICAgIHRoaXMuX3J1bm5pbmcgPSB0aGlzLl93YWl0VW50aWxFeGl0KClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzcG9zZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcnVubmluZztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0cywgb3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5fc2V0Q29uZmlndXJhdGlvbk9wdGlvbnMoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5fc2V0Qm9vdHN0cmFwcGVyT3B0aW9ucygpKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gcGFyc2VGaWxlTGlzdCh0aGlzLmJvb3RzdHJhcHBlci5zb3VyY2VzLCBwcm9jZXNzLmN3ZCgpKSlcbiAgICAgICAgICAgIC50aGVuKGZpbGVzID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmluaXQoZmlsZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuX2NyZWF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbigpKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5ydW5UZXN0cyh0cnVlKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bm5pbmc7XG4gICAgfVxuXG4gICAgc3VzcGVuZCAoKSB7XG4gICAgICAgIGlmICghdGhpcy5ydW5uZXJUYXNrUHJvbWlzZSlcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgICAgICB0aGlzLnN0b3BwaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50ZXN0UnVuQ29udHJvbGxlci5zdG9wKCk7XG4gICAgICAgIHRoaXMucnVubmVyVGFza1Byb21pc2UuY2FuY2VsKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudGVzdFJ1bkNvbnRyb2xsZXIuYWxsVGVzdHNDb21wbGV0ZVByb21pc2VcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BwaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIub25UZXN0UnVuRG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RvcCAoKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5zdG9wKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmV4aXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGV4aXQgKCkge1xuICAgICAgICBpZiAodGhpcy5ydW5uZXJUYXNrUHJvbWlzZSlcbiAgICAgICAgICAgIHRoaXMucnVubmVyVGFza1Byb21pc2UuY2FuY2VsKCk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnN0b3BJbmZpbml0ZVdhaXRpbmcoKSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3J1bm5pbmcpO1xuICAgIH1cblxuICAgIGFzeW5jIF9maW5pc2hQcmV2aW91c1Rlc3RSdW5zICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZT8udGVzdHMpIHJldHVybjtcblxuICAgICAgICB0aGlzLnRlc3RSdW5Db250cm9sbGVyLnJ1bigpO1xuICAgIH1cblxuICAgIF92YWxpZGF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbiAoaXNGaXJzdFJ1bikge1xuICAgICAgICBpZiAoaXNGaXJzdFJ1bikge1xuICAgICAgICAgICAgaWYgKHRoaXMuYm9vdHN0cmFwcGluZ0Vycm9yKVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLmJvb3RzdHJhcHBpbmdFcnJvcik7XG5cbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZSkge1xuICAgICAgICAgICAgICAgIC8vIE5PVEU6IFN1Y2ggZXJyb3JzIGhhbmRsZWQgaW4gcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJykgaGFuZGxlci5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmJvb3RzdHJhcHBlci5fZ2V0VGVzdHMoKVxuICAgICAgICAgICAgLnRoZW4odGVzdHMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlLnRlc3RzID0gdGVzdHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ib290c3RyYXBwaW5nRXJyb3IgPyBQcm9taXNlLnJlamVjdCh0aGlzLmJvb3RzdHJhcHBpbmdFcnJvcikgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9jcmVhdGVUYXNrICh0ZXN0cywgYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMsIHByb3h5LCBvcHRzKSB7XG4gICAgICAgIG9wdHMubGl2ZSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLl9jcmVhdGVUYXNrKHRlc3RzLCBicm93c2VyQ29ubmVjdGlvbkdyb3VwcywgcHJveHksIG9wdHMsIHRoaXMud2FybmluZ0xvZyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUJvb3RzdHJhcHBlciAoYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LCBjb21waWxlclNlcnZpY2UsIG1lc3NhZ2VCdXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaXZlTW9kZUJvb3RzdHJhcHBlcih0aGlzLCBicm93c2VyQ29ubmVjdGlvbkdhdGV3YXksIGNvbXBpbGVyU2VydmljZSwgbWVzc2FnZUJ1cyk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNvbnRyb2xsZXIgKCkge1xuICAgICAgICByZXR1cm4gbmV3IExpdmVNb2RlQ29udHJvbGxlcih0aGlzKTtcbiAgICB9XG5cbiAgICBfd2FpdFVudGlsRXhpdCAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3BJbmZpbml0ZVdhaXRpbmcgICA9IHJlc29sdmU7XG4gICAgICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2Rpc3Bvc2VBc3NldHMgKGJyb3dzZXJTZXQsIHJlcG9ydGVycywgdGVzdGVkQXBwKSB7XG4gICAgICAgIHRoaXMuYXNzZXRzID0geyBicm93c2VyU2V0LCByZXBvcnRlcnMsIHRlc3RlZEFwcCB9O1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBfZGlzcG9zZSAoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbGxlci5kaXNwb3NlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFzc2V0cylcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAgICAgICBjb25zdCB7IGJyb3dzZXJTZXQsIHJlcG9ydGVycywgdGVzdGVkQXBwIH0gPSB0aGlzLmFzc2V0cztcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2Rpc3Bvc2VBc3NldHMoYnJvd3NlclNldCwgcmVwb3J0ZXJzLCB0ZXN0ZWRBcHApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGl2ZU1vZGVSdW5uZXI7XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGl2ZS90ZXN0LXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUE4QjtBQUM5QixnRkFBOEQ7QUFDOUQsOERBQThDO0FBQzlDLHVEQUErQjtBQUMvQixrRUFBa0Q7QUFDbEQsK0VBQXFEO0FBQ3JELCtDQUFpRDtBQUNqRCwyQ0FBaUQ7QUFFakQsTUFBTSxjQUFlLFNBQVEsZ0JBQU07SUFDL0IsWUFBYSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFO1FBQzVFLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsUUFBUSxHQUFnQixLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFPLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUssYUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxhQUFJLENBQUM7UUFFbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksNkJBQXlCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFVLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBR2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVc7WUFDL0MsTUFBTSxFQUFPLEVBQUU7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBVyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRLENBQUUs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QUFNO1lBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFN0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUV6RCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0o7QUFFRCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub29wIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBMaXZlTW9kZVRlc3RSdW5Db250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4tY29udHJvbGxlcic7XG5pbXBvcnQgTGl2ZU1vZGVDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcic7XG5pbXBvcnQgUnVubmVyIGZyb20gJy4uL3J1bm5lcic7XG5pbXBvcnQgTGl2ZU1vZGVCb290c3RyYXBwZXIgZnJvbSAnLi9ib290c3RyYXBwZXInO1xuaW1wb3J0IHBhcnNlRmlsZUxpc3QgZnJvbSAnLi4vdXRpbHMvcGFyc2UtZmlsZS1saXN0JztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcblxuY2xhc3MgTGl2ZU1vZGVSdW5uZXIgZXh0ZW5kcyBSdW5uZXIge1xuICAgIGNvbnN0cnVjdG9yICh7IHByb3h5LCBicm93c2VyQ29ubmVjdGlvbkdhdGV3YXksIGNvbmZpZ3VyYXRpb24sIGNvbXBpbGVyU2VydmljZSB9KSB7XG4gICAgICAgIHN1cGVyKHsgcHJveHksIGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSwgY29uZmlndXJhdGlvbiwgY29tcGlsZXJTZXJ2aWNlIH0pO1xuXG4gICAgICAgIHRoaXMuc3RvcHBpbmcgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMucnVubmVyVGFza1Byb21pc2UgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wSW5maW5pdGVXYWl0aW5nICAgPSBub29wO1xuICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyA9IG5vb3A7XG5cbiAgICAgICAgdGhpcy5hc3NldHMgPSBudWxsO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1bkNvbnRyb2xsZXIgPSBuZXcgTGl2ZU1vZGVUZXN0UnVuQ29udHJvbGxlcigpO1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIgICAgICAgID0gdGhpcy5fY3JlYXRlQ29udHJvbGxlcigpO1xuXG5cbiAgICAgICAgdGhpcy5lbWJlZGRpbmdPcHRpb25zKHtcbiAgICAgICAgICAgIFRlc3RSdW5DdG9yOiB0aGlzLnRlc3RSdW5Db250cm9sbGVyLlRlc3RSdW5DdG9yLFxuICAgICAgICAgICAgYXNzZXRzOiAgICAgIFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250cm9sbGVyICAgICAgICAgPSB0aGlzLl9jcmVhdGVDb250cm9sbGVyKCk7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlID0gbnVsbDtcbiAgICB9XG5cbiAgICBydW5UZXN0cyAoaXNGaXJzdFJ1biA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBydW5FcnJvciA9IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFByZXZpb3VzVGVzdFJ1bnMoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWxpZGF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbihpc0ZpcnN0UnVuKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRUZXN0Q291bnQgPSB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZS50ZXN0cy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRlc3RSdW5Db250cm9sbGVyLnNldEV4cGVjdGVkVGVzdENvdW50KGV4cGVjdGVkVGVzdENvdW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRCZWZvcmVSdW4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvb3RzdHJhcHBlci5yZXN0b3JlTWVzc2FnZUJ1c0xpc3RlbmVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMucnVubmVyVGFza1Byb21pc2UgPSB0aGlzLl9wcmVwYXJlQW5kUnVuVGFzayh0aGlzLm9wdHMpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVubmVyVGFza1Byb21pc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRCb290c3RyYXBwaW5nRXJyb3IobnVsbCk7XG5cbiAgICAgICAgICAgICAgICBydW5FcnJvciA9IGVycjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydW5uZXJUYXNrUHJvbWlzZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIub25UZXN0UnVuRG9uZShydW5FcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVSdW5PcHRpb25zICgpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLl92YWxpZGF0ZVJ1bk9wdGlvbnMoKVxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWplY3RJbmZpbml0ZVdhaXRpbmcoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9jcmVhdGVSdW5uYWJsZUNvbmZpZ3VyYXRpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uQ2FjaGUpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY29uZmlndXJhdGlvbkNhY2hlKTtcblxuICAgICAgICByZXR1cm4gc3VwZXIuX2NyZWF0ZVJ1bm5hYmxlQ29uZmlndXJhdGlvbigpXG4gICAgICAgICAgICAudGhlbihjb25maWd1cmF0aW9uID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZSA9IGNvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlamVjdEluZmluaXRlV2FpdGluZyhlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0Qm9vdHN0cmFwcGluZ0Vycm9yIChlcnIpIHtcbiAgICAgICAgdGhpcy5ib290c3RyYXBwaW5nRXJyb3IgPSBlcnI7XG4gICAgfVxuXG4gICAgcnVuIChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkNhY2hlID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5fcnVubmluZylcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuY2Fubm90UnVuTGl2ZU1vZGVSdW5uZXJNdWx0aXBsZVRpbWVzKTtcblxuICAgICAgICB0aGlzLl9ydW5uaW5nID0gdGhpcy5fd2FpdFVudGlsRXhpdCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2UoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3J1bm5pbmc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMuX3NldENvbmZpZ3VyYXRpb25PcHRpb25zKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuX3NldEJvb3RzdHJhcHBlck9wdGlvbnMoKSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHBhcnNlRmlsZUxpc3QodGhpcy5ib290c3RyYXBwZXIuc291cmNlcywgcHJvY2Vzcy5jd2QoKSkpXG4gICAgICAgICAgICAudGhlbihmaWxlcyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5pbml0KGZpbGVzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9jcmVhdGVSdW5uYWJsZUNvbmZpZ3VyYXRpb24oKSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMucnVuVGVzdHModHJ1ZSkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5uaW5nO1xuICAgIH1cblxuICAgIHN1c3BlbmQgKCkge1xuICAgICAgICBpZiAoIXRoaXMucnVubmVyVGFza1Byb21pc2UpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAgICAgdGhpcy5zdG9wcGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGVzdFJ1bkNvbnRyb2xsZXIuc3RvcCgpO1xuICAgICAgICB0aGlzLnJ1bm5lclRhc2tQcm9taXNlLmNhbmNlbCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RSdW5Db250cm9sbGVyLmFsbFRlc3RzQ29tcGxldGVQcm9taXNlXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wcGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyLm9uVGVzdFJ1bkRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0b3AgKCkge1xuICAgICAgICByZXR1cm4gc3VwZXIuc3RvcCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5leGl0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBleGl0ICgpIHtcbiAgICAgICAgaWYgKHRoaXMucnVubmVyVGFza1Byb21pc2UpXG4gICAgICAgICAgICB0aGlzLnJ1bm5lclRhc2tQcm9taXNlLmNhbmNlbCgpO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5zdG9wSW5maW5pdGVXYWl0aW5nKCkpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLl9ydW5uaW5nKTtcbiAgICB9XG5cbiAgICBhc3luYyBfZmluaXNoUHJldmlvdXNUZXN0UnVucyAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uQ2FjaGU/LnRlc3RzKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuQ29udHJvbGxlci5ydW4oKTtcbiAgICB9XG5cbiAgICBfdmFsaWRhdGVSdW5uYWJsZUNvbmZpZ3VyYXRpb24gKGlzRmlyc3RSdW4pIHtcbiAgICAgICAgaWYgKGlzRmlyc3RSdW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmJvb3RzdHJhcHBpbmdFcnJvcilcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5ib290c3RyYXBwaW5nRXJyb3IpO1xuXG4gICAgICAgICAgICBlbHNlIGlmICghdGhpcy5jb25maWd1cmF0aW9uQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBTdWNoIGVycm9ycyBoYW5kbGVkIGluIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicpIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ib290c3RyYXBwZXIuX2dldFRlc3RzKClcbiAgICAgICAgICAgIC50aGVuKHRlc3RzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25DYWNoZS50ZXN0cyA9IHRlc3RzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYm9vdHN0cmFwcGluZ0Vycm9yID8gUHJvbWlzZS5yZWplY3QodGhpcy5ib290c3RyYXBwaW5nRXJyb3IpIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfY3JlYXRlVGFzayAodGVzdHMsIGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLCBwcm94eSwgb3B0cykge1xuICAgICAgICBvcHRzLmxpdmUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBzdXBlci5fY3JlYXRlVGFzayh0ZXN0cywgYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMsIHByb3h5LCBvcHRzLCB0aGlzLndhcm5pbmdMb2cpO1xuICAgIH1cblxuICAgIF9jcmVhdGVCb290c3RyYXBwZXIgKGJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSwgY29tcGlsZXJTZXJ2aWNlLCBtZXNzYWdlQnVzKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGl2ZU1vZGVCb290c3RyYXBwZXIodGhpcywgYnJvd3NlckNvbm5lY3Rpb25HYXRld2F5LCBjb21waWxlclNlcnZpY2UsIG1lc3NhZ2VCdXMpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDb250cm9sbGVyICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMaXZlTW9kZUNvbnRyb2xsZXIodGhpcyk7XG4gICAgfVxuXG4gICAgX3dhaXRVbnRpbEV4aXQgKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9wSW5maW5pdGVXYWl0aW5nICAgPSByZXNvbHZlO1xuICAgICAgICAgICAgdGhpcy5yZWplY3RJbmZpbml0ZVdhaXRpbmcgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9kaXNwb3NlQXNzZXRzIChicm93c2VyU2V0LCByZXBvcnRlcnMsIHRlc3RlZEFwcCkge1xuICAgICAgICB0aGlzLmFzc2V0cyA9IHsgYnJvd3NlclNldCwgcmVwb3J0ZXJzLCB0ZXN0ZWRBcHAgfTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgX2Rpc3Bvc2UgKCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xsZXIuZGlzcG9zZSgpO1xuXG4gICAgICAgIGlmICghdGhpcy5hc3NldHMpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAgICAgY29uc3QgeyBicm93c2VyU2V0LCByZXBvcnRlcnMsIHRlc3RlZEFwcCB9ID0gdGhpcy5hc3NldHM7XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLl9kaXNwb3NlQXNzZXRzKGJyb3dzZXJTZXQsIHJlcG9ydGVycywgdGVzdGVkQXBwKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpdmVNb2RlUnVubmVyO1xuIl19
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const connection_1 = __importDefault(require("../browser/connection"));
7
+ const errors_1 = require("./errors");
7
8
  class ProxylessApiBase {
8
9
  constructor(browserId, client) {
9
10
  this._client = client;
10
11
  this._browserConnection = connection_1.default.getById(browserId);
11
12
  }
12
13
  async init() {
13
- throw new Error('Not implemented');
14
+ throw (0, errors_1.notImplementedError)();
14
15
  }
15
16
  get _testRun() {
16
17
  return this._browserConnection.getCurrentTestRun();
@@ -22,4 +23,4 @@ class ProxylessApiBase {
22
23
  }
23
24
  exports.default = ProxylessApiBase;
24
25
  module.exports = exports.default;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHlsZXNzL2FwaS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQXNEO0FBR3RELE1BQXFCLGdCQUFnQjtJQUlqQyxZQUFhLFNBQWlCLEVBQUUsTUFBbUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQXNCLENBQUM7SUFDeEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQWEsQ0FBQztJQUNsRSxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQXRCRCxtQ0FzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm90b2NvbEFwaSB9IGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm94eWxlc3NBcGlCYXNlIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NsaWVudDogUHJvdG9jb2xBcGk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9icm93c2VyQ29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb247XG5cbiAgICBjb25zdHJ1Y3RvciAoYnJvd3NlcklkOiBzdHJpbmcsIGNsaWVudDogUHJvdG9jb2xBcGkpIHtcbiAgICAgICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgICAgICB0aGlzLl9icm93c2VyQ29ubmVjdGlvbiA9IEJyb3dzZXJDb25uZWN0aW9uLmdldEJ5SWQoYnJvd3NlcklkKSBhcyBCcm93c2VyQ29ubmVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBfdGVzdFJ1biAoKTogVGVzdFJ1biB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icm93c2VyQ29ubmVjdGlvbi5nZXRDdXJyZW50VGVzdFJ1bigpIGFzIFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIF9nZXRDdXJyZW50VXJsICgpOiBQcm9taXNlPFVSTD4ge1xuICAgICAgICBjb25zdCB7IGZyYW1lVHJlZSB9ID0gYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2UuZ2V0RnJhbWVUcmVlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVUkwoZnJhbWVUcmVlLmZyYW1lLnVybCk7XG4gICAgfVxufVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHlsZXNzL2FwaS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsdUVBQXNEO0FBRXRELHFDQUErQztBQUUvQyxNQUFxQixnQkFBZ0I7SUFJakMsWUFBYSxTQUFpQixFQUFFLE1BQW1CO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxvQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFzQixDQUFDO0lBQ3hGLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNiLE1BQU0sSUFBQSw0QkFBbUIsR0FBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQWEsQ0FBQztJQUNsRSxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQXRCRCxtQ0FzQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm90b2NvbEFwaSB9IGZyb20gJ2Nocm9tZS1yZW1vdGUtaW50ZXJmYWNlJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vdGVzdC1ydW4nO1xuaW1wb3J0IHsgbm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJveHlsZXNzQXBpQmFzZSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jbGllbnQ6IFByb3RvY29sQXBpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfYnJvd3NlckNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IgKGJyb3dzZXJJZDogc3RyaW5nLCBjbGllbnQ6IFByb3RvY29sQXBpKSB7XG4gICAgICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDtcbiAgICAgICAgdGhpcy5fYnJvd3NlckNvbm5lY3Rpb24gPSBCcm93c2VyQ29ubmVjdGlvbi5nZXRCeUlkKGJyb3dzZXJJZCkgYXMgQnJvd3NlckNvbm5lY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBub3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBfdGVzdFJ1biAoKTogVGVzdFJ1biB7XG4gICAgICAgIHJldHVybiB0aGlzLl9icm93c2VyQ29ubmVjdGlvbi5nZXRDdXJyZW50VGVzdFJ1bigpIGFzIFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIF9nZXRDdXJyZW50VXJsICgpOiBQcm9taXNlPFVSTD4ge1xuICAgICAgICBjb25zdCB7IGZyYW1lVHJlZSB9ID0gYXdhaXQgdGhpcy5fY2xpZW50LlBhZ2UuZ2V0RnJhbWVUcmVlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBVUkwoZnJhbWVUcmVlLmZyYW1lLnVybCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("../types");
4
+ // @ts-ignore
5
+ const hammerhead_1 = require("../../client/core/deps/hammerhead");
6
+ const utils_1 = require("./utils");
7
+ const MOUSE_EVENT_OPTIONS = {
8
+ clickCount: 1,
9
+ button: 'left',
10
+ };
11
+ class CDPEventDescriptor {
12
+ static _getKeyDownEventText(options) {
13
+ if (options.isNewLine)
14
+ return '\r';
15
+ if (options.keyProperty.length === 1)
16
+ return options.keyProperty;
17
+ return '';
18
+ }
19
+ static createKeyDownOptions(options) {
20
+ const text = CDPEventDescriptor._getKeyDownEventText(options);
21
+ return {
22
+ type: text ? 'keyDown' : 'rawKeyDown',
23
+ modifiers: options.modifiers || 0,
24
+ windowsVirtualKeyCode: options.keyCode,
25
+ key: options.keyProperty,
26
+ text,
27
+ };
28
+ }
29
+ static createKeyUpOptions(options) {
30
+ return {
31
+ type: 'keyUp',
32
+ modifiers: options.modifiers || 0,
33
+ key: options.keyProperty,
34
+ windowsVirtualKeyCode: options.keyCode,
35
+ };
36
+ }
37
+ static createMouseEventOptions(type, options, leftTopPoint) {
38
+ return hammerhead_1.utils.extend({
39
+ x: options.options.clientX + leftTopPoint.x,
40
+ y: options.options.clientY + leftTopPoint.y,
41
+ modifiers: (0, utils_1.calculateKeyModifiersValue)(options.options),
42
+ button: (0, utils_1.calculateMouseButtonValue)(options.options),
43
+ type,
44
+ }, MOUSE_EVENT_OPTIONS);
45
+ }
46
+ static delay(delay) {
47
+ return {
48
+ type: types_1.EventType.Delay,
49
+ options: { delay },
50
+ };
51
+ }
52
+ static keyDown(keyInfo) {
53
+ return {
54
+ type: types_1.EventType.Keyboard,
55
+ options: CDPEventDescriptor.createKeyDownOptions(keyInfo),
56
+ };
57
+ }
58
+ static keyUp(keyInfo) {
59
+ return {
60
+ type: types_1.EventType.Keyboard,
61
+ options: CDPEventDescriptor.createKeyUpOptions(keyInfo),
62
+ };
63
+ }
64
+ }
65
+ exports.default = CDPEventDescriptor;
66
+ module.exports = exports.default;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm94eWxlc3MvY2xpZW50L2V2ZW50LWRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvQ0FBcUM7QUFFckMsYUFBYTtBQUNiLGtFQUEwRDtBQUMxRCxtQ0FBZ0Y7QUFHaEYsTUFBTSxtQkFBbUIsR0FBRztJQUN4QixVQUFVLEVBQUUsQ0FBQztJQUNiLE1BQU0sRUFBTSxNQUFNO0NBQ3JCLENBQUM7QUFFRixNQUFxQixrQkFBa0I7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFFLE9BQXlCO1FBQzFELElBQUksT0FBTyxDQUFDLFNBQVM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFFaEIsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ2hDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUUvQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUUsT0FBeUI7UUFDekQsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsT0FBTztZQUNILElBQUksRUFBbUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVk7WUFDdEQsU0FBUyxFQUFjLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQztZQUM3QyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsT0FBTztZQUN0QyxHQUFHLEVBQW9CLE9BQU8sQ0FBQyxXQUFXO1lBQzFDLElBQUk7U0FDUCxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBRSxPQUF5QjtRQUN2RCxPQUFPO1lBQ0gsSUFBSSxFQUFtQixPQUFPO1lBQzlCLFNBQVMsRUFBYyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUM7WUFDN0MsR0FBRyxFQUFvQixPQUFPLENBQUMsV0FBVztZQUMxQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QyxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBRSxJQUFZLEVBQUUsT0FBWSxFQUFFLFlBQWdDO1FBQy9GLE9BQU8sa0JBQUssQ0FBQyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxFQUFVLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBQ25ELENBQUMsRUFBVSxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQztZQUNuRCxTQUFTLEVBQUUsSUFBQSxrQ0FBMEIsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3RELE1BQU0sRUFBSyxJQUFBLGlDQUF5QixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckQsSUFBSTtTQUNQLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBRSxLQUFhO1FBQzlCLE9BQU87WUFDSCxJQUFJLEVBQUssaUJBQVMsQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRTtTQUNyQixDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUUsT0FBeUI7UUFDNUMsT0FBTztZQUNILElBQUksRUFBSyxpQkFBUyxDQUFDLFFBQVE7WUFDM0IsT0FBTyxFQUFFLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztTQUM1RCxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUUsT0FBeUI7UUFDMUMsT0FBTztZQUNILElBQUksRUFBSyxpQkFBUyxDQUFDLFFBQVE7WUFDM0IsT0FBTyxFQUFFLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztTQUMxRCxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBOURELHFDQThEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50VHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFNpbXVsYXRlZEtleUluZm8gfSBmcm9tICcuL2tleS1wcmVzcy91dGlscyc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJy4uLy4uL2NsaWVudC9jb3JlL2RlcHMvaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBjYWxjdWxhdGVLZXlNb2RpZmllcnNWYWx1ZSwgY2FsY3VsYXRlTW91c2VCdXR0b25WYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEF4aXNWYWx1ZXMgZnJvbSAnLi4vLi4vY2xpZW50L2NvcmUvdXRpbHMvdmFsdWVzL2F4aXMtdmFsdWVzJztcblxuY29uc3QgTU9VU0VfRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBjbGlja0NvdW50OiAxLFxuICAgIGJ1dHRvbjogICAgICdsZWZ0Jyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENEUEV2ZW50RGVzY3JpcHRvciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldEtleURvd25FdmVudFRleHQgKG9wdGlvbnM6IFNpbXVsYXRlZEtleUluZm8pOiBhbnkge1xuICAgICAgICBpZiAob3B0aW9ucy5pc05ld0xpbmUpXG4gICAgICAgICAgICByZXR1cm4gJ1xccic7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMua2V5UHJvcGVydHkubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMua2V5UHJvcGVydHk7XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlS2V5RG93bk9wdGlvbnMgKG9wdGlvbnM6IFNpbXVsYXRlZEtleUluZm8pOiBhbnkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gQ0RQRXZlbnREZXNjcmlwdG9yLl9nZXRLZXlEb3duRXZlbnRUZXh0KG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAgICAgICAgICAgICAgICAgIHRleHQgPyAna2V5RG93bicgOiAncmF3S2V5RG93bicsXG4gICAgICAgICAgICBtb2RpZmllcnM6ICAgICAgICAgICAgIG9wdGlvbnMubW9kaWZpZXJzIHx8IDAsXG4gICAgICAgICAgICB3aW5kb3dzVmlydHVhbEtleUNvZGU6IG9wdGlvbnMua2V5Q29kZSxcbiAgICAgICAgICAgIGtleTogICAgICAgICAgICAgICAgICAgb3B0aW9ucy5rZXlQcm9wZXJ0eSxcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVLZXlVcE9wdGlvbnMgKG9wdGlvbnM6IFNpbXVsYXRlZEtleUluZm8pOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogICAgICAgICAgICAgICAgICAna2V5VXAnLFxuICAgICAgICAgICAgbW9kaWZpZXJzOiAgICAgICAgICAgICBvcHRpb25zLm1vZGlmaWVycyB8fCAwLFxuICAgICAgICAgICAga2V5OiAgICAgICAgICAgICAgICAgICBvcHRpb25zLmtleVByb3BlcnR5LFxuICAgICAgICAgICAgd2luZG93c1ZpcnR1YWxLZXlDb2RlOiBvcHRpb25zLmtleUNvZGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVNb3VzZUV2ZW50T3B0aW9ucyAodHlwZTogc3RyaW5nLCBvcHRpb25zOiBhbnksIGxlZnRUb3BQb2ludDogQXhpc1ZhbHVlczxudW1iZXI+KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmV4dGVuZCh7XG4gICAgICAgICAgICB4OiAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5jbGllbnRYICsgbGVmdFRvcFBvaW50LngsXG4gICAgICAgICAgICB5OiAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5jbGllbnRZICsgbGVmdFRvcFBvaW50LnksXG4gICAgICAgICAgICBtb2RpZmllcnM6IGNhbGN1bGF0ZUtleU1vZGlmaWVyc1ZhbHVlKG9wdGlvbnMub3B0aW9ucyksXG4gICAgICAgICAgICBidXR0b246ICAgIGNhbGN1bGF0ZU1vdXNlQnV0dG9uVmFsdWUob3B0aW9ucy5vcHRpb25zKSxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgIH0sIE1PVVNFX0VWRU5UX09QVElPTlMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVsYXkgKGRlbGF5OiBudW1iZXIpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogICAgRXZlbnRUeXBlLkRlbGF5LFxuICAgICAgICAgICAgb3B0aW9uczogeyBkZWxheSB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMga2V5RG93biAoa2V5SW5mbzogU2ltdWxhdGVkS2V5SW5mbyk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAgICBFdmVudFR5cGUuS2V5Ym9hcmQsXG4gICAgICAgICAgICBvcHRpb25zOiBDRFBFdmVudERlc2NyaXB0b3IuY3JlYXRlS2V5RG93bk9wdGlvbnMoa2V5SW5mbyksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBrZXlVcCAoa2V5SW5mbzogU2ltdWxhdGVkS2V5SW5mbyk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAgICBFdmVudFR5cGUuS2V5Ym9hcmQsXG4gICAgICAgICAgICBvcHRpb25zOiBDRFBFdmVudERlc2NyaXB0b3IuY3JlYXRlS2V5VXBPcHRpb25zKGtleUluZm8pLFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const types_1 = require("../types");
7
+ const axis_values_1 = __importDefault(require("../../client/core/utils/values/axis-values"));
8
+ const event_descriptor_1 = __importDefault(require("./event-descriptor"));
9
+ class ProxylessInput {
10
+ constructor(dispatchEventFn, leftTopPoint) {
11
+ this._dispatchEventFn = dispatchEventFn;
12
+ this._leftTopPoint = leftTopPoint || new axis_values_1.default(0, 0);
13
+ }
14
+ mouseDown(options) {
15
+ const eventOptions = event_descriptor_1.default.createMouseEventOptions('mousePressed', options, this._leftTopPoint);
16
+ return this._dispatchEventFn.single(types_1.EventType.Mouse, eventOptions);
17
+ }
18
+ mouseUp(options) {
19
+ const eventOptions = event_descriptor_1.default.createMouseEventOptions('mouseReleased', options, this._leftTopPoint);
20
+ return this._dispatchEventFn.single(types_1.EventType.Mouse, eventOptions);
21
+ }
22
+ keyDown(options) {
23
+ const eventOptions = event_descriptor_1.default.createKeyDownOptions(options);
24
+ return this._dispatchEventFn.single(types_1.EventType.Keyboard, eventOptions);
25
+ }
26
+ keyUp(options) {
27
+ const eventOptions = event_descriptor_1.default.createKeyUpOptions(options);
28
+ return this._dispatchEventFn.single(types_1.EventType.Keyboard, eventOptions);
29
+ }
30
+ executeEventSequence(eventSequence) {
31
+ return this._dispatchEventFn.sequence(eventSequence);
32
+ }
33
+ }
34
+ exports.default = ProxylessInput;
35
+ module.exports = exports.default;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NsaWVudC9pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9DQUFxQztBQUNyQyw2RkFBb0U7QUFHcEUsMEVBQW9EO0FBRXBELE1BQXFCLGNBQWM7SUFJL0IsWUFBYSxlQUFnQyxFQUFFLFlBQWlDO1FBQzVFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBTSxZQUFZLElBQUksSUFBSSxxQkFBVSxDQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sU0FBUyxDQUFFLE9BQVk7UUFDMUIsTUFBTSxZQUFZLEdBQUcsMEJBQWtCLENBQUMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0csT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLGlCQUFTLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxPQUFPLENBQUUsT0FBWTtRQUN4QixNQUFNLFlBQVksR0FBRywwQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5RyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLE9BQU8sQ0FBRSxPQUF5QjtRQUNyQyxNQUFNLFlBQVksR0FBRywwQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQVMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNNLEtBQUssQ0FBRSxPQUF5QjtRQUNuQyxNQUFNLFlBQVksR0FBRywwQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsaUJBQVMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLG9CQUFvQixDQUFFLGFBQW9CO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFuQ0QsaUNBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IEF4aXNWYWx1ZXMgZnJvbSAnLi4vLi4vY2xpZW50L2NvcmUvdXRpbHMvdmFsdWVzL2F4aXMtdmFsdWVzJztcbmltcG9ydCB7IFNpbXVsYXRlZEtleUluZm8gfSBmcm9tICcuL2tleS1wcmVzcy91dGlscyc7XG5pbXBvcnQgeyBEaXNwYXRjaEV2ZW50Rm4gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBDRFBFdmVudERlc2NyaXB0b3IgZnJvbSAnLi9ldmVudC1kZXNjcmlwdG9yJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJveHlsZXNzSW5wdXQge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGF0Y2hFdmVudEZuOiBEaXNwYXRjaEV2ZW50Rm47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbGVmdFRvcFBvaW50OiBBeGlzVmFsdWVzPG51bWJlcj47XG4gICAgY29uc3RydWN0b3IgKGRpc3BhdGNoRXZlbnRGbjogRGlzcGF0Y2hFdmVudEZuLCBsZWZ0VG9wUG9pbnQ/OiBBeGlzVmFsdWVzPG51bWJlcj4pIHtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2hFdmVudEZuID0gZGlzcGF0Y2hFdmVudEZuO1xuICAgICAgICB0aGlzLl9sZWZ0VG9wUG9pbnQgICAgPSBsZWZ0VG9wUG9pbnQgfHwgbmV3IEF4aXNWYWx1ZXM8bnVtYmVyPigwLCAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VEb3duIChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb25zID0gQ0RQRXZlbnREZXNjcmlwdG9yLmNyZWF0ZU1vdXNlRXZlbnRPcHRpb25zKCdtb3VzZVByZXNzZWQnLCBvcHRpb25zLCB0aGlzLl9sZWZ0VG9wUG9pbnQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5Nb3VzZSwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VVcCAob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9ucyA9IENEUEV2ZW50RGVzY3JpcHRvci5jcmVhdGVNb3VzZUV2ZW50T3B0aW9ucygnbW91c2VSZWxlYXNlZCcsIG9wdGlvbnMsIHRoaXMuX2xlZnRUb3BQb2ludCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BhdGNoRXZlbnRGbi5zaW5nbGUoRXZlbnRUeXBlLk1vdXNlLCBldmVudE9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBrZXlEb3duIChvcHRpb25zOiBTaW11bGF0ZWRLZXlJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9ucyA9IENEUEV2ZW50RGVzY3JpcHRvci5jcmVhdGVLZXlEb3duT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGF0Y2hFdmVudEZuLnNpbmdsZShFdmVudFR5cGUuS2V5Ym9hcmQsIGV2ZW50T3B0aW9ucyk7XG4gICAgfVxuICAgIHB1YmxpYyBrZXlVcCAob3B0aW9uczogU2ltdWxhdGVkS2V5SW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBldmVudE9wdGlvbnMgPSBDRFBFdmVudERlc2NyaXB0b3IuY3JlYXRlS2V5VXBPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2luZ2xlKEV2ZW50VHlwZS5LZXlib2FyZCwgZXZlbnRPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhlY3V0ZUV2ZW50U2VxdWVuY2UgKGV2ZW50U2VxdWVuY2U6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwYXRjaEV2ZW50Rm4uc2VxdWVuY2UoZXZlbnRTZXF1ZW5jZSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.changeLetterCaseIfNecessary = exports.getSimulatedKeyInfo = void 0;
7
+ const get_key_info_1 = __importDefault(require("../../../client/automation/playback/press/get-key-info"));
8
+ // @ts-ignore
9
+ const hammerhead_1 = require("../../../client/core/deps/hammerhead");
10
+ // @ts-ignore
11
+ const testcafe_core_1 = require("../../../client/automation/deps/testcafe-core");
12
+ const utils_1 = require("../../../client/automation/playback/press/utils");
13
+ const utils_2 = require("../utils");
14
+ const get_key_code_1 = __importDefault(require("../../../client/automation/utils/get-key-code"));
15
+ function getSimulatedKeyInfo(keyCombination) {
16
+ const keysArray = (0, testcafe_core_1.getKeyArray)(keyCombination);
17
+ const { actualKeys, eventKeyProperties } = (0, utils_1.getActualKeysAndEventKeyProperties)(keysArray);
18
+ return testcafe_core_1.arrayUtils.map(actualKeys, (key, index) => {
19
+ return hammerhead_1.utils.extend({ key }, (0, get_key_info_1.default)(key, eventKeyProperties[index]));
20
+ });
21
+ }
22
+ exports.getSimulatedKeyInfo = getSimulatedKeyInfo;
23
+ function changeLetterCaseIfNecessary(keyInfo) {
24
+ const modifiersState = (0, utils_2.getModifiersState)(keyInfo.modifiers);
25
+ if (modifiersState.shift && keyInfo.isLetter) {
26
+ keyInfo.keyProperty = (0, utils_1.changeLetterCase)(keyInfo.keyProperty);
27
+ keyInfo.keyCode = (0, get_key_code_1.default)(keyInfo.keyProperty);
28
+ }
29
+ }
30
+ exports.changeLetterCaseIfNecessary = changeLetterCaseIfNecessary;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJveHlsZXNzL2NsaWVudC9rZXktcHJlc3MvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMEdBQWdGO0FBQ2hGLGFBQWE7QUFDYixxRUFBNkQ7QUFDN0QsYUFBYTtBQUNiLGlGQUF3RjtBQUN4RiwyRUFBdUg7QUFDdkgsb0NBQTZDO0FBQzdDLGlHQUF1RTtBQWF2RSxTQUFnQixtQkFBbUIsQ0FBRSxjQUFzQjtJQUN2RCxNQUFNLFNBQVMsR0FBNEIsSUFBQSwyQkFBVyxFQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxJQUFBLDBDQUFrQyxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXpGLE9BQU8sMEJBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQzdELE9BQU8sa0JBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFBLHNCQUFVLEVBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFQRCxrREFPQztBQUVELFNBQWdCLDJCQUEyQixDQUFFLE9BQXlCO0lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUEseUJBQWlCLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVELElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQzFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsT0FBTyxDQUFDLE9BQU8sR0FBTyxJQUFBLHNCQUFVLEVBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0wsQ0FBQztBQVBELGtFQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldEtleUluZm8gZnJvbSAnLi4vLi4vLi4vY2xpZW50L2F1dG9tYXRpb24vcGxheWJhY2svcHJlc3MvZ2V0LWtleS1pbmZvJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY2xpZW50L2NvcmUvZGVwcy9oYW1tZXJoZWFkJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldEtleUFycmF5LCBhcnJheVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vY2xpZW50L2F1dG9tYXRpb24vZGVwcy90ZXN0Y2FmZS1jb3JlJztcbmltcG9ydCB7IGNoYW5nZUxldHRlckNhc2UsIGdldEFjdHVhbEtleXNBbmRFdmVudEtleVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9jbGllbnQvYXV0b21hdGlvbi9wbGF5YmFjay9wcmVzcy91dGlscyc7XG5pbXBvcnQgeyBnZXRNb2RpZmllcnNTdGF0ZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBnZXRLZXlDb2RlIGZyb20gJy4uLy4uLy4uL2NsaWVudC9hdXRvbWF0aW9uL3V0aWxzL2dldC1rZXktY29kZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2ltdWxhdGVkS2V5SW5mbyB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAga2V5Q29kZTogbnVtYmVyO1xuICAgIGtleVByb3BlcnR5OiBzdHJpbmc7XG4gICAgbW9kaWZpZXJzOiBudW1iZXI7XG4gICAgbW9kaWZpZXJLZXlDb2RlOiBudW1iZXI7XG4gICAgaXNMZXR0ZXI6IGJvb2xlYW47XG4gICAgaXNDaGFyOiBib29sZWFuO1xuICAgIGlzTmV3TGluZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbXVsYXRlZEtleUluZm8gKGtleUNvbWJpbmF0aW9uOiBzdHJpbmcpOiBTaW11bGF0ZWRLZXlJbmZvW10ge1xuICAgIGNvbnN0IGtleXNBcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRLZXlBcnJheShrZXlDb21iaW5hdGlvbik7XG4gICAgY29uc3QgeyBhY3R1YWxLZXlzLCBldmVudEtleVByb3BlcnRpZXMgfSA9IGdldEFjdHVhbEtleXNBbmRFdmVudEtleVByb3BlcnRpZXMoa2V5c0FycmF5KTtcblxuICAgIHJldHVybiBhcnJheVV0aWxzLm1hcChhY3R1YWxLZXlzLCAoa2V5OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmV4dGVuZCh7IGtleSB9LCBnZXRLZXlJbmZvKGtleSwgZXZlbnRLZXlQcm9wZXJ0aWVzW2luZGV4XSkpO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlTGV0dGVyQ2FzZUlmTmVjZXNzYXJ5IChrZXlJbmZvOiBTaW11bGF0ZWRLZXlJbmZvKTogdm9pZCB7XG4gICAgY29uc3QgbW9kaWZpZXJzU3RhdGUgPSBnZXRNb2RpZmllcnNTdGF0ZShrZXlJbmZvLm1vZGlmaWVycyk7XG5cbiAgICBpZiAobW9kaWZpZXJzU3RhdGUuc2hpZnQgJiYga2V5SW5mby5pc0xldHRlcikge1xuICAgICAgICBrZXlJbmZvLmtleVByb3BlcnR5ID0gY2hhbmdlTGV0dGVyQ2FzZShrZXlJbmZvLmtleVByb3BlcnR5KTtcbiAgICAgICAga2V5SW5mby5rZXlDb2RlICAgICA9IGdldEtleUNvZGUoa2V5SW5mby5rZXlQcm9wZXJ0eSk7XG4gICAgfVxufVxuIl19