@appium/base-driver 8.2.2 → 8.3.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 (61) hide show
  1. package/build/lib/basedriver/capabilities.js +3 -1
  2. package/build/lib/basedriver/commands/find.js +4 -11
  3. package/build/lib/basedriver/commands/log.js +3 -6
  4. package/build/lib/basedriver/commands/session.js +18 -27
  5. package/build/lib/basedriver/commands/settings.js +4 -8
  6. package/build/lib/basedriver/commands/timeout.js +10 -15
  7. package/build/lib/basedriver/device-settings.js +14 -2
  8. package/build/lib/basedriver/driver.js +25 -23
  9. package/build/lib/basedriver/helpers.js +140 -84
  10. package/build/lib/express/express-logging.js +2 -2
  11. package/build/lib/express/idempotency.js +2 -2
  12. package/build/lib/helpers/capabilities.js +39 -0
  13. package/build/lib/index.js +7 -7
  14. package/build/lib/jsonwp-proxy/protocol-converter.js +19 -16
  15. package/build/lib/jsonwp-proxy/proxy.js +20 -16
  16. package/build/lib/protocol/errors.js +4 -2
  17. package/build/lib/protocol/helpers.js +3 -20
  18. package/build/lib/protocol/protocol.js +44 -45
  19. package/build/lib/protocol/routes.js +67 -1
  20. package/build/test/basedriver/capabilities-specs.js +43 -1
  21. package/build/test/basedriver/capability-specs.js +126 -167
  22. package/build/test/basedriver/commands/log-specs.js +12 -5
  23. package/build/test/basedriver/driver-tests.js +11 -14
  24. package/build/test/basedriver/helpers-specs.js +5 -1
  25. package/build/test/basedriver/timeout-specs.js +7 -9
  26. package/build/test/express/server-e2e-specs.js +10 -5
  27. package/build/test/express/server-specs.js +22 -16
  28. package/build/test/express/static-specs.js +10 -5
  29. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +1 -2
  30. package/build/test/jsonwp-proxy/proxy-specs.js +1 -6
  31. package/build/test/protocol/fake-driver.js +12 -15
  32. package/build/test/protocol/protocol-e2e-specs.js +49 -103
  33. package/build/test/protocol/routes-specs.js +2 -2
  34. package/lib/basedriver/capabilities.js +3 -0
  35. package/lib/basedriver/commands/find.js +3 -6
  36. package/lib/basedriver/commands/log.js +2 -4
  37. package/lib/basedriver/commands/session.js +21 -22
  38. package/lib/basedriver/commands/settings.js +3 -5
  39. package/lib/basedriver/commands/timeout.js +9 -10
  40. package/lib/basedriver/device-settings.js +10 -1
  41. package/lib/basedriver/driver.js +29 -16
  42. package/lib/basedriver/helpers.js +201 -83
  43. package/lib/express/express-logging.js +1 -1
  44. package/lib/express/idempotency.js +1 -1
  45. package/lib/helpers/capabilities.js +25 -0
  46. package/lib/index.js +6 -4
  47. package/lib/jsonwp-proxy/protocol-converter.js +15 -18
  48. package/lib/jsonwp-proxy/proxy.js +17 -15
  49. package/lib/protocol/errors.js +1 -1
  50. package/lib/protocol/helpers.js +5 -25
  51. package/lib/protocol/protocol.js +43 -54
  52. package/lib/protocol/routes.js +60 -1
  53. package/package.json +29 -22
  54. package/test/basedriver/capabilities-specs.js +34 -2
  55. package/test/basedriver/capability-specs.js +120 -146
  56. package/test/basedriver/commands/log-specs.js +12 -3
  57. package/test/basedriver/driver-tests.js +12 -7
  58. package/test/basedriver/helpers-specs.js +4 -0
  59. package/test/basedriver/timeout-specs.js +6 -11
  60. package/build/lib/protocol/sessions-cache.js +0 -88
  61. package/lib/protocol/sessions-cache.js +0 -74
@@ -38,7 +38,7 @@ const IDEMPOTENT_RESPONSES = new _lruCache.default({
38
38
  const MONITORED_METHODS = ['POST', 'PATCH'];
39
39
  const IDEMPOTENCY_KEY_HEADER = 'x-idempotency-key';
40
40
  process.on('exit', () => {
41
- const resPaths = IDEMPOTENT_RESPONSES.values().map(({
41
+ const resPaths = [...IDEMPOTENT_RESPONSES.values()].map(({
42
42
  response
43
43
  }) => response).filter(Boolean);
44
44
 
@@ -192,4 +192,4 @@ async function handleIdempotency(req, res, next) {
192
192
  }require('source-map-support').install();
193
193
 
194
194
 
195
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbCIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7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bSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gSURFTVBPVEVOVF9SRVNQT05TRVMudmFsdWVzKClcbiAgICAubWFwKCh7cmVzcG9uc2V9KSA9PiByZXNwb25zZSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICBmb3IgKGNvbnN0IHJlc1BhdGggb2YgcmVzUGF0aHMpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG9uRXhpdCBoYW5kbGVyXG4gICAgICBmcy5yaW1yYWZTeW5jKHJlc1BhdGgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxufSk7XG5cblxuZnVuY3Rpb24gY2FjaGVSZXNwb25zZSAoa2V5LCByZXEsIHJlcykge1xuICBjb25zdCByZXNwb25zZVN0YXRlTGlzdGVuZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIElERU1QT1RFTlRfUkVTUE9OU0VTLnNldChrZXksIHtcbiAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgcGF0aDogcmVxLnBhdGgsXG4gICAgcmVzcG9uc2U6IG51bGwsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9KTtcbiAgY29uc3QgdG1wRmlsZSA9IHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgYCR7dXRpbC51dWlkVjQoKX0ucmVzcG9uc2VgKTtcbiAgY29uc3QgcmVzcG9uc2VMaXN0ZW5lciA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRtcEZpbGUsIHtcbiAgICBlbWl0Q2xvc2U6IHRydWUsXG4gIH0pO1xuICBjb25zdCBvcmlnaW5hbFNvY2tldFdyaXRlciA9IHJlcy5zb2NrZXQud3JpdGUuYmluZChyZXMuc29ja2V0KTtcbiAgY29uc3QgcGF0Y2hlZFdyaXRlciA9IChjaHVuaywgZW5jb2RpbmcsIG5leHQpID0+IHtcbiAgICBpZiAocmVzcG9uc2VMaXN0ZW5lci53cml0YWJsZSkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci53cml0ZShjaHVuayk7XG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFNvY2tldFdyaXRlcihjaHVuaywgZW5jb2RpbmcsIG5leHQpO1xuICB9O1xuICByZXMuc29ja2V0LndyaXRlID0gcGF0Y2hlZFdyaXRlcjtcbiAgbGV0IHdyaXRlRXJyb3IgPSBudWxsO1xuICBsZXQgaXNSZXNwb25zZUZ1bGx5U2VudCA9IGZhbHNlO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Vycm9yJywgKGUpID0+IHtcbiAgICB3cml0ZUVycm9yID0gZTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgaXNSZXNwb25zZUZ1bGx5U2VudCA9IHRydWU7XG4gICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgfSk7XG4gIHJlcy5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAoIWlzUmVzcG9uc2VGdWxseVNlbnQpIHtcbiAgICAgIHJlc3BvbnNlTGlzdGVuZXIuZW5kKCk7XG4gICAgfVxuICB9KTtcbiAgcmVzcG9uc2VMaXN0ZW5lci5vbmNlKCdjbG9zZScsICgpID0+IHtcbiAgICBpZiAocmVzLnNvY2tldD8ud3JpdGUgPT09IHBhdGNoZWRXcml0ZXIpIHtcbiAgICAgIHJlcy5zb2NrZXQud3JpdGUgPSBvcmlnaW5hbFNvY2tldFdyaXRlcjtcbiAgICB9XG5cbiAgICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLiBgICtcbiAgICAgICAgYENhY2hlIGNvbnNpc3RlbmN5IGhhcyBiZWVuIGRhbWFnZWRgKTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKHdyaXRlRXJyb3IpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fSc6ICR7d3JpdGVFcnJvci5tZXNzYWdlfWApO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JywgYCArXG4gICAgICAgIGBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiBjb21wbGV0ZWRgKTtcbiAgICAgIGxvZy5pbmZvKCdEb2VzIHRoZSBjbGllbnQgdGVybWluYXRlIGNvbm5lY3Rpb25zIHRvbyBlYXJseT8nKTtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbChrZXkpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cblxuICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmdldChrZXkpLnJlc3BvbnNlID0gdG1wRmlsZTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCB0bXBGaWxlKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUlkZW1wb3RlbmN5IChyZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBrZXkgPSByZXEuaGVhZGVyc1tJREVNUE9URU5DWV9LRVlfSEVBREVSXTtcbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG4gIGlmICghTU9OSVRPUkVEX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHtcbiAgICAvLyBHRVQsIERFTEVURSwgZXRjLiByZXF1ZXN0cyBhcmUgaWRlbXBvdGVudCBieSBkZWZhdWx0XG4gICAgLy8gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWNoZSB0aGVtXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZyhgUmVxdWVzdCBpZGVtcG90ZW5jeSBrZXk6ICR7a2V5fWApO1xuICBpZiAoIUlERU1QT1RFTlRfUkVTUE9OU0VTLmhhcyhrZXkpKSB7XG4gICAgY2FjaGVSZXNwb25zZShrZXksIHJlcSwgcmVzKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG1ldGhvZDogc3RvcmVkTWV0aG9kLFxuICAgIHBhdGg6IHN0b3JlZFBhdGgsXG4gICAgcmVzcG9uc2UsXG4gICAgcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLFxuICB9ID0gSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSk7XG4gIGlmIChyZXEubWV0aG9kICE9PSBzdG9yZWRNZXRob2QgfHwgcmVxLnBhdGggIT09IHN0b3JlZFBhdGgpIHtcbiAgICBsb2cud2FybihgR290IHR3byBkaWZmZXJlbnQgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBpZGVtcG90ZW5jeSBrZXkgJyR7a2V5fSdgKTtcbiAgICBsb2cud2FybignSXMgdGhlIGNsaWVudCBnZW5lcmF0aW5nIGlkZW1wb3RlbmN5IGtleXMgcHJvcGVybHk/Jyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGNvbnN0IHJlcm91dGVDYWNoZWRSZXNwb25zZSA9IGFzeW5jIChjYWNoZWRSZXNQYXRoKSA9PiB7XG4gICAgaWYgKCFhd2FpdCBmcy5leGlzdHMoY2FjaGVkUmVzUGF0aCkpIHtcbiAgICAgIElERU1QT1RFTlRfUkVTUE9OU0VTLmRlbChrZXkpO1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCByZWFkIHRoZSBjYWNoZWQgcmVzcG9uc2UgaWRlbnRpZmllZCBieSBrZXkgJyR7a2V5fSdgKTtcbiAgICAgIGxvZy53YXJuKCdUaGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaXMgbm90IGFjY2Vzc2libGUgYW55bW9yZScpO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgZnMuY3JlYXRlUmVhZFN0cmVhbShjYWNoZWRSZXNQYXRoKS5waXBlKHJlcy5zb2NrZXQpO1xuICB9O1xuXG4gIGlmIChyZXNwb25zZSkge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBSZXJvdXRpbmcgaXRzIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKGBUaGUgc2FtZSByZXF1ZXN0IHdpdGggdGhlIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9JyBpcyBiZWluZyBwcm9jZXNzZWRgKTtcbiAgICBsb2cuaW5mbyhgV2FpdGluZyBmb3IgdGhlIHJlc3BvbnNlIHRvIGJlIHJlcm91dGVkIHRvIHRoZSBjdXJyZW50IHJlcXVlc3RgKTtcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIub25jZSgncmVhZHknLCBhc3luYyAoY2FjaGVkUmVzcG9uc2VQYXRoKSA9PiB7XG4gICAgICBpZiAoIWNhY2hlZFJlc3BvbnNlUGF0aCkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlKGNhY2hlZFJlc3BvbnNlUGF0aCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgaGFuZGxlSWRlbXBvdGVuY3kgfTtcbiJdLCJmaWxlIjoibGliL2V4cHJlc3MvaWRlbXBvdGVuY3kuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
195
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbCIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7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ImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWwoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl0sImZpbGUiOiJsaWIvZXhwcmVzcy9pZGVtcG90ZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.isW3cCaps = isW3cCaps;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
14
+ function isW3cCaps(caps) {
15
+ if (!_lodash.default.isPlainObject(caps)) {
16
+ return false;
17
+ }
18
+
19
+ const isFirstMatchValid = () => _lodash.default.isArray(caps.firstMatch) && !_lodash.default.isEmpty(caps.firstMatch) && _lodash.default.every(caps.firstMatch, _lodash.default.isPlainObject);
20
+
21
+ const isAlwaysMatchValid = () => _lodash.default.isPlainObject(caps.alwaysMatch);
22
+
23
+ if (_lodash.default.has(caps, 'firstMatch') && _lodash.default.has(caps, 'alwaysMatch')) {
24
+ return isFirstMatchValid() && isAlwaysMatchValid();
25
+ }
26
+
27
+ if (_lodash.default.has(caps, 'firstMatch')) {
28
+ return isFirstMatchValid();
29
+ }
30
+
31
+ if (_lodash.default.has(caps, 'alwaysMatch')) {
32
+ return isAlwaysMatchValid();
33
+ }
34
+
35
+ return false;
36
+ }require('source-map-support').install();
37
+
38
+
39
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzL2NhcGFiaWxpdGllcy5qcyJdLCJuYW1lcyI6WyJpc1czY0NhcHMiLCJjYXBzIiwiXyIsImlzUGxhaW5PYmplY3QiLCJpc0ZpcnN0TWF0Y2hWYWxpZCIsImlzQXJyYXkiLCJmaXJzdE1hdGNoIiwiaXNFbXB0eSIsImV2ZXJ5IiwiaXNBbHdheXNNYXRjaFZhbGlkIiwiYWx3YXlzTWF0Y2giLCJoYXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsU0FBU0EsU0FBVCxDQUFvQkMsSUFBcEIsRUFBMEI7QUFDeEIsTUFBSSxDQUFDQyxnQkFBRUMsYUFBRixDQUFnQkYsSUFBaEIsQ0FBTCxFQUE0QjtBQUMxQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxRQUFNRyxpQkFBaUIsR0FBRyxNQUFNRixnQkFBRUcsT0FBRixDQUFVSixJQUFJLENBQUNLLFVBQWYsS0FDM0IsQ0FBQ0osZ0JBQUVLLE9BQUYsQ0FBVU4sSUFBSSxDQUFDSyxVQUFmLENBRDBCLElBQ0lKLGdCQUFFTSxLQUFGLENBQVFQLElBQUksQ0FBQ0ssVUFBYixFQUF5QkosZ0JBQUVDLGFBQTNCLENBRHBDOztBQUVBLFFBQU1NLGtCQUFrQixHQUFHLE1BQU1QLGdCQUFFQyxhQUFGLENBQWdCRixJQUFJLENBQUNTLFdBQXJCLENBQWpDOztBQUNBLE1BQUlSLGdCQUFFUyxHQUFGLENBQU1WLElBQU4sRUFBWSxZQUFaLEtBQTZCQyxnQkFBRVMsR0FBRixDQUFNVixJQUFOLEVBQVksYUFBWixDQUFqQyxFQUE2RDtBQUMzRCxXQUFPRyxpQkFBaUIsTUFBTUssa0JBQWtCLEVBQWhEO0FBQ0Q7O0FBQ0QsTUFBSVAsZ0JBQUVTLEdBQUYsQ0FBTVYsSUFBTixFQUFZLFlBQVosQ0FBSixFQUErQjtBQUM3QixXQUFPRyxpQkFBaUIsRUFBeEI7QUFDRDs7QUFDRCxNQUFJRixnQkFBRVMsR0FBRixDQUFNVixJQUFOLEVBQVksYUFBWixDQUFKLEVBQWdDO0FBQzlCLFdBQU9RLGtCQUFrQixFQUF6QjtBQUNEOztBQUNELFNBQU8sS0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZnVuY3Rpb24gaXNXM2NDYXBzIChjYXBzKSB7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXNGaXJzdE1hdGNoVmFsaWQgPSAoKSA9PiBfLmlzQXJyYXkoY2Fwcy5maXJzdE1hdGNoKVxuICAgICYmICFfLmlzRW1wdHkoY2Fwcy5maXJzdE1hdGNoKSAmJiBfLmV2ZXJ5KGNhcHMuZmlyc3RNYXRjaCwgXy5pc1BsYWluT2JqZWN0KTtcbiAgY29uc3QgaXNBbHdheXNNYXRjaFZhbGlkID0gKCkgPT4gXy5pc1BsYWluT2JqZWN0KGNhcHMuYWx3YXlzTWF0Y2gpO1xuICBpZiAoXy5oYXMoY2FwcywgJ2ZpcnN0TWF0Y2gnKSAmJiBfLmhhcyhjYXBzLCAnYWx3YXlzTWF0Y2gnKSkge1xuICAgIHJldHVybiBpc0ZpcnN0TWF0Y2hWYWxpZCgpICYmIGlzQWx3YXlzTWF0Y2hWYWxpZCgpO1xuICB9XG4gIGlmIChfLmhhcyhjYXBzLCAnZmlyc3RNYXRjaCcpKSB7XG4gICAgcmV0dXJuIGlzRmlyc3RNYXRjaFZhbGlkKCk7XG4gIH1cbiAgaWYgKF8uaGFzKGNhcHMsICdhbHdheXNNYXRjaCcpKSB7XG4gICAgcmV0dXJuIGlzQWx3YXlzTWF0Y2hWYWxpZCgpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IHtcbiAgaXNXM2NDYXBzLFxufTsiXSwiZmlsZSI6ImxpYi9oZWxwZXJzL2NhcGFiaWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -3,14 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CREATE_SESSION_COMMAND = exports.BaseDriver = exports.BASEDRIVER_HANDLED_SETTINGS = exports.ALL_COMMANDS = void 0;
6
+ exports.CREATE_SESSION_COMMAND = exports.BaseDriver = exports.ALL_COMMANDS = void 0;
7
7
  Object.defineProperty(exports, "DEFAULT_BASE_PATH", {
8
8
  enumerable: true,
9
9
  get: function () {
10
10
  return _constants.DEFAULT_BASE_PATH;
11
11
  }
12
12
  });
13
- exports.NO_SESSION_ID_COMMANDS = exports.METHOD_MAP = exports.JWProxy = exports.DeviceSettings = exports.DELETE_SESSION_COMMAND = exports.DEFAULT_WS_PATHNAME_PREFIX = void 0;
13
+ exports.NO_SESSION_ID_COMMANDS = exports.METHOD_MAP = exports.JWProxy = exports.GET_STATUS_COMMAND = exports.DeviceSettings = exports.DELETE_SESSION_COMMAND = exports.DEFAULT_WS_PATHNAME_PREFIX = void 0;
14
14
  Object.defineProperty(exports, "PROTOCOLS", {
15
15
  enumerable: true,
16
16
  get: function () {
@@ -50,10 +50,8 @@ const {
50
50
  } = driver;
51
51
  exports.BaseDriver = BaseDriver;
52
52
  const {
53
- DeviceSettings,
54
- BASEDRIVER_HANDLED_SETTINGS
53
+ DeviceSettings
55
54
  } = deviceSettings;
56
- exports.BASEDRIVER_HANDLED_SETTINGS = BASEDRIVER_HANDLED_SETTINGS;
57
55
  exports.DeviceSettings = DeviceSettings;
58
56
  var _default = BaseDriver;
59
57
  exports.default = _default;
@@ -72,8 +70,10 @@ const {
72
70
  normalizeBasePath,
73
71
  determineProtocol,
74
72
  CREATE_SESSION_COMMAND,
75
- DELETE_SESSION_COMMAND
73
+ DELETE_SESSION_COMMAND,
74
+ GET_STATUS_COMMAND
76
75
  } = protocol;
76
+ exports.GET_STATUS_COMMAND = GET_STATUS_COMMAND;
77
77
  exports.DELETE_SESSION_COMMAND = DELETE_SESSION_COMMAND;
78
78
  exports.CREATE_SESSION_COMMAND = CREATE_SESSION_COMMAND;
79
79
  exports.determineProtocol = determineProtocol;
@@ -121,4 +121,4 @@ const {
121
121
  exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;require('source-map-support').install();
122
122
 
123
123
 
124
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNlRHJpdmVyIiwiZHJpdmVyIiwiRGV2aWNlU2V0dGluZ3MiLCJCQVNFRFJJVkVSX0hBTkRMRURfU0VUVElOR1MiLCJkZXZpY2VTZXR0aW5ncyIsIlByb3RvY29sIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiZXJyb3JzIiwiaXNFcnJvclR5cGUiLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiQUxMX0NPTU1BTkRTIiwiTUVUSE9EX01BUCIsInJvdXRlVG9Db21tYW5kTmFtZSIsIk5PX1NFU1NJT05fSURfQ09NTUFORFMiLCJpc1Nlc3Npb25Db21tYW5kIiwibm9ybWFsaXplQmFzZVBhdGgiLCJkZXRlcm1pbmVQcm90b2NvbCIsIkNSRUFURV9TRVNTSU9OX0NPTU1BTkQiLCJERUxFVEVfU0VTU0lPTl9DT01NQU5EIiwicHJvdG9jb2wiLCJTVEFUSUNfRElSIiwic3RhdGljSW5kZXgiLCJzZXJ2ZXIiLCJzZXJ2ZXJJbmRleCIsIkpXUHJveHkiLCJwcm94eUluZGV4IiwiY29kZXMiLCJzdGF0dXNDb2RlcyIsImdldFN1bW1hcnlCeUNvZGUiLCJzdGF0dXNJbmRleCIsInByb2Nlc3NDYXBhYmlsaXRpZXMiLCJpc1N0YW5kYXJkQ2FwIiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwid3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBVUE7O0FBQ0E7O0FBb0JBOztBQUlBOztBQUtBOztBQUtBOztBQUtBOztBQUtBOzs7Ozs7QUFyREEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQWlCQyxNQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLGNBQUY7QUFBa0JDLEVBQUFBO0FBQWxCLElBQWtEQyxjQUF4RDs7O2VBR2VKLFU7O0FBU2YsTUFBTTtBQUNKSyxFQUFBQSxRQURJO0FBQ01DLEVBQUFBLHdCQUROO0FBQ2dDQyxFQUFBQSxNQURoQztBQUN3Q0MsRUFBQUEsV0FEeEM7QUFFSkMsRUFBQUEsMEJBRkk7QUFFd0JDLEVBQUFBLG9CQUZ4QjtBQUU4Q0MsRUFBQUEsWUFGOUM7QUFFNERDLEVBQUFBLFVBRjVEO0FBR0pDLEVBQUFBLGtCQUhJO0FBR2dCQyxFQUFBQSxzQkFIaEI7QUFHd0NDLEVBQUFBLGdCQUh4QztBQUlKQyxFQUFBQSxpQkFKSTtBQUllQyxFQUFBQSxpQkFKZjtBQUlrQ0MsRUFBQUEsc0JBSmxDO0FBSTBEQyxFQUFBQTtBQUoxRCxJQUtGQyxRQUxKOzs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFpQkMsV0FBdkI7O0FBSUEsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWFDLFdBQW5COztBQUtBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFjQyxVQUFwQjs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBLEtBQUssRUFBRUMsV0FBVDtBQUFzQkMsRUFBQUE7QUFBdEIsSUFBMkNDLFdBQWpEOzs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBLG1CQUFGO0FBQXVCQyxFQUFBQSxhQUF2QjtBQUFzQ0MsRUFBQUE7QUFBdEMsSUFBdURDLElBQTdEOzs7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWlDQyxFQUF2QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbi8vIEJhc2VEcml2ZXIgZXhwb3J0c1xuaW1wb3J0ICogYXMgZHJpdmVyIGZyb20gJy4vYmFzZWRyaXZlci9kcml2ZXInO1xuaW1wb3J0ICogYXMgZGV2aWNlU2V0dGluZ3MgZnJvbSAnLi9iYXNlZHJpdmVyL2RldmljZS1zZXR0aW5ncyc7XG5cbmNvbnN0IHsgQmFzZURyaXZlciB9ID0gZHJpdmVyO1xuY29uc3QgeyBEZXZpY2VTZXR0aW5ncywgQkFTRURSSVZFUl9IQU5ETEVEX1NFVFRJTkdTIH0gPSBkZXZpY2VTZXR0aW5ncztcblxuZXhwb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MsIEJBU0VEUklWRVJfSEFORExFRF9TRVRUSU5HUyB9O1xuZXhwb3J0IGRlZmF1bHQgQmFzZURyaXZlcjtcblxuXG4vLyBNSlNPTldQIGV4cG9ydHNcbmltcG9ydCAqIGFzIHByb3RvY29sIGZyb20gJy4vcHJvdG9jb2wnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9CQVNFX1BBVEgsIFBST1RPQ09MU1xufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcbiAgUHJvdG9jb2wsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiwgZXJyb3JzLCBpc0Vycm9yVHlwZSxcbiAgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlLCBBTExfQ09NTUFORFMsIE1FVEhPRF9NQVAsXG4gIHJvdXRlVG9Db21tYW5kTmFtZSwgTk9fU0VTU0lPTl9JRF9DT01NQU5EUywgaXNTZXNzaW9uQ29tbWFuZCxcbiAgbm9ybWFsaXplQmFzZVBhdGgsIGRldGVybWluZVByb3RvY29sLCBDUkVBVEVfU0VTU0lPTl9DT01NQU5ELCBERUxFVEVfU0VTU0lPTl9DT01NQU5ELFxufSA9IHByb3RvY29sO1xuXG5leHBvcnQge1xuICBQcm90b2NvbCwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBQUk9UT0NPTFMsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlIGFzIGVycm9yRnJvbUNvZGUsIEFMTF9DT01NQU5EUywgTUVUSE9EX01BUCxcbiAgcm91dGVUb0NvbW1hbmROYW1lLCBOT19TRVNTSU9OX0lEX0NPTU1BTkRTLCBpc1Nlc3Npb25Db21tYW5kLFxuICBERUZBVUxUX0JBU0VfUEFUSCwgbm9ybWFsaXplQmFzZVBhdGgsIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsIERFTEVURV9TRVNTSU9OX0NPTU1BTkRcbn07XG5cbi8vIEV4cHJlc3MgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdGljSW5kZXggZnJvbSAnLi9leHByZXNzL3N0YXRpYyc7XG5jb25zdCB7IFNUQVRJQ19ESVIgfSA9IHN0YXRpY0luZGV4O1xuZXhwb3J0IHsgU1RBVElDX0RJUiB9O1xuXG5pbXBvcnQgKiBhcyBzZXJ2ZXJJbmRleCBmcm9tICcuL2V4cHJlc3Mvc2VydmVyJztcbmNvbnN0IHsgc2VydmVyIH0gPSBzZXJ2ZXJJbmRleDtcbmV4cG9ydCB7IHNlcnZlciB9O1xuXG4vLyBqc29ud3AtcHJveHkgZXhwb3J0c1xuaW1wb3J0ICogYXMgcHJveHlJbmRleCBmcm9tICcuL2pzb253cC1wcm94eS9wcm94eSc7XG5jb25zdCB7IEpXUHJveHkgfSA9IHByb3h5SW5kZXg7XG5leHBvcnQgeyBKV1Byb3h5IH07XG5cbi8vIGpzb253cC1zdGF0dXMgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdHVzSW5kZXggZnJvbSAnLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5jb25zdCB7IGNvZGVzOiBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9ID0gc3RhdHVzSW5kZXg7XG5leHBvcnQgeyBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9O1xuXG4vLyBXM0MgY2FwYWJpbGl0aWVzIHBhcnNlclxuaW1wb3J0ICogYXMgY2FwcyBmcm9tICcuL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH0gPSBjYXBzO1xuZXhwb3J0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH07XG5cbi8vIFdlYiBzb2NrZXQgaGVscGVyc1xuaW1wb3J0ICogYXMgd3MgZnJvbSAnLi9leHByZXNzL3dlYnNvY2tldCc7XG5jb25zdCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH0gPSB3cztcbmV4cG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH07XG4iXSwiZmlsZSI6ImxpYi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
124
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNlRHJpdmVyIiwiZHJpdmVyIiwiRGV2aWNlU2V0dGluZ3MiLCJkZXZpY2VTZXR0aW5ncyIsIlByb3RvY29sIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiZXJyb3JzIiwiaXNFcnJvclR5cGUiLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwiQUxMX0NPTU1BTkRTIiwiTUVUSE9EX01BUCIsInJvdXRlVG9Db21tYW5kTmFtZSIsIk5PX1NFU1NJT05fSURfQ09NTUFORFMiLCJpc1Nlc3Npb25Db21tYW5kIiwibm9ybWFsaXplQmFzZVBhdGgiLCJkZXRlcm1pbmVQcm90b2NvbCIsIkNSRUFURV9TRVNTSU9OX0NPTU1BTkQiLCJERUxFVEVfU0VTU0lPTl9DT01NQU5EIiwiR0VUX1NUQVRVU19DT01NQU5EIiwicHJvdG9jb2wiLCJTVEFUSUNfRElSIiwic3RhdGljSW5kZXgiLCJzZXJ2ZXIiLCJzZXJ2ZXJJbmRleCIsIkpXUHJveHkiLCJwcm94eUluZGV4IiwiY29kZXMiLCJzdGF0dXNDb2RlcyIsImdldFN1bW1hcnlCeUNvZGUiLCJzdGF0dXNJbmRleCIsInByb2Nlc3NDYXBhYmlsaXRpZXMiLCJpc1N0YW5kYXJkQ2FwIiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsIkRFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIiwid3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBVUE7O0FBQ0E7O0FBc0JBOztBQUlBOztBQUtBOztBQUtBOztBQUtBOztBQUtBOzs7Ozs7QUF2REEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQWlCQyxNQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBcUJDLGNBQTNCOztlQUdlSCxVOztBQVNmLE1BQU07QUFDSkksRUFBQUEsUUFESTtBQUNNQyxFQUFBQSx3QkFETjtBQUNnQ0MsRUFBQUEsTUFEaEM7QUFDd0NDLEVBQUFBLFdBRHhDO0FBRUpDLEVBQUFBLDBCQUZJO0FBRXdCQyxFQUFBQSxvQkFGeEI7QUFFOENDLEVBQUFBLFlBRjlDO0FBRTREQyxFQUFBQSxVQUY1RDtBQUdKQyxFQUFBQSxrQkFISTtBQUdnQkMsRUFBQUEsc0JBSGhCO0FBR3dDQyxFQUFBQSxnQkFIeEM7QUFJSkMsRUFBQUEsaUJBSkk7QUFJZUMsRUFBQUEsaUJBSmY7QUFJa0NDLEVBQUFBLHNCQUpsQztBQUtKQyxFQUFBQSxzQkFMSTtBQUtvQkMsRUFBQUE7QUFMcEIsSUFNRkMsUUFOSjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWlCQyxXQUF2Qjs7QUFJQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBYUMsV0FBbkI7O0FBS0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWNDLFVBQXBCOztBQUtBLE1BQU07QUFBRUMsRUFBQUEsS0FBSyxFQUFFQyxXQUFUO0FBQXNCQyxFQUFBQTtBQUF0QixJQUEyQ0MsV0FBakQ7OztBQUtBLE1BQU07QUFBRUMsRUFBQUEsbUJBQUY7QUFBdUJDLEVBQUFBLGFBQXZCO0FBQXNDQyxFQUFBQTtBQUF0QyxJQUF1REMsSUFBN0Q7Ozs7QUFLQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBaUNDLEVBQXZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1haW5cblxuLy8gQmFzZURyaXZlciBleHBvcnRzXG5pbXBvcnQgKiBhcyBkcml2ZXIgZnJvbSAnLi9iYXNlZHJpdmVyL2RyaXZlcic7XG5pbXBvcnQgKiBhcyBkZXZpY2VTZXR0aW5ncyBmcm9tICcuL2Jhc2Vkcml2ZXIvZGV2aWNlLXNldHRpbmdzJztcblxuY29uc3QgeyBCYXNlRHJpdmVyIH0gPSBkcml2ZXI7XG5jb25zdCB7IERldmljZVNldHRpbmdzIH0gPSBkZXZpY2VTZXR0aW5ncztcblxuZXhwb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MgfTtcbmV4cG9ydCBkZWZhdWx0IEJhc2VEcml2ZXI7XG5cblxuLy8gTUpTT05XUCBleHBvcnRzXG5pbXBvcnQgKiBhcyBwcm90b2NvbCBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFNcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCB7XG4gIFByb3RvY29sLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIGVycm9ycywgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgQUxMX0NPTU1BTkRTLCBNRVRIT0RfTUFQLFxuICByb3V0ZVRvQ29tbWFuZE5hbWUsIE5PX1NFU1NJT05fSURfQ09NTUFORFMsIGlzU2Vzc2lvbkNvbW1hbmQsXG4gIG5vcm1hbGl6ZUJhc2VQYXRoLCBkZXRlcm1pbmVQcm90b2NvbCwgQ1JFQVRFX1NFU1NJT05fQ09NTUFORCxcbiAgREVMRVRFX1NFU1NJT05fQ09NTUFORCwgR0VUX1NUQVRVU19DT01NQU5ELFxufSA9IHByb3RvY29sO1xuXG5leHBvcnQge1xuICBQcm90b2NvbCwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBlcnJvcnMsIGlzRXJyb3JUeXBlLCBQUk9UT0NPTFMsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSwgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlIGFzIGVycm9yRnJvbUNvZGUsIEFMTF9DT01NQU5EUywgTUVUSE9EX01BUCxcbiAgcm91dGVUb0NvbW1hbmROYW1lLCBOT19TRVNTSU9OX0lEX0NPTU1BTkRTLCBpc1Nlc3Npb25Db21tYW5kLFxuICBERUZBVUxUX0JBU0VfUEFUSCwgbm9ybWFsaXplQmFzZVBhdGgsIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsXG4gIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsIEdFVF9TVEFUVVNfQ09NTUFORCxcbn07XG5cbi8vIEV4cHJlc3MgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdGljSW5kZXggZnJvbSAnLi9leHByZXNzL3N0YXRpYyc7XG5jb25zdCB7IFNUQVRJQ19ESVIgfSA9IHN0YXRpY0luZGV4O1xuZXhwb3J0IHsgU1RBVElDX0RJUiB9O1xuXG5pbXBvcnQgKiBhcyBzZXJ2ZXJJbmRleCBmcm9tICcuL2V4cHJlc3Mvc2VydmVyJztcbmNvbnN0IHsgc2VydmVyIH0gPSBzZXJ2ZXJJbmRleDtcbmV4cG9ydCB7IHNlcnZlciB9O1xuXG4vLyBqc29ud3AtcHJveHkgZXhwb3J0c1xuaW1wb3J0ICogYXMgcHJveHlJbmRleCBmcm9tICcuL2pzb253cC1wcm94eS9wcm94eSc7XG5jb25zdCB7IEpXUHJveHkgfSA9IHByb3h5SW5kZXg7XG5leHBvcnQgeyBKV1Byb3h5IH07XG5cbi8vIGpzb253cC1zdGF0dXMgZXhwb3J0c1xuaW1wb3J0ICogYXMgc3RhdHVzSW5kZXggZnJvbSAnLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5jb25zdCB7IGNvZGVzOiBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9ID0gc3RhdHVzSW5kZXg7XG5leHBvcnQgeyBzdGF0dXNDb2RlcywgZ2V0U3VtbWFyeUJ5Q29kZSB9O1xuXG4vLyBXM0MgY2FwYWJpbGl0aWVzIHBhcnNlclxuaW1wb3J0ICogYXMgY2FwcyBmcm9tICcuL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH0gPSBjYXBzO1xuZXhwb3J0IHsgcHJvY2Vzc0NhcGFiaWxpdGllcywgaXNTdGFuZGFyZENhcCwgdmFsaWRhdGVDYXBzIH07XG5cbi8vIFdlYiBzb2NrZXQgaGVscGVyc1xuaW1wb3J0ICogYXMgd3MgZnJvbSAnLi9leHByZXNzL3dlYnNvY2tldCc7XG5jb25zdCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH0gPSB3cztcbmV4cG9ydCB7IERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIH07XG4iXSwiZmlsZSI6ImxpYi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -17,10 +17,6 @@ var _helpers = require("../basedriver/helpers");
17
17
 
18
18
  var _constants = require("../constants");
19
19
 
20
- var _helpers2 = require("../protocol/helpers");
21
-
22
- const log = _support.logger.getLogger('Protocol Converter');
23
-
24
20
  const COMMAND_URLS_CONFLICTS = [{
25
21
  commandNames: ['execute', 'executeAsync'],
26
22
  jsonwpConverter: url => url.replace(/\/execute.*/, url.includes('async') ? '/execute_async' : '/execute'),
@@ -45,7 +41,6 @@ const COMMAND_URLS_CONFLICTS = [{
45
41
  jsonwpConverter: w3cUrl => {
46
42
  const w3cPropertyRegex = /\/element\/([^/]+)\/property\/([^/]+)/;
47
43
  const jsonwpUrl = w3cUrl.replace(w3cPropertyRegex, '/element/$1/attribute/$2');
48
- log.info(`Converting W3C '${w3cUrl}' to '${jsonwpUrl}'`);
49
44
  return jsonwpUrl;
50
45
  },
51
46
  w3cConverter: jsonwpUrl => jsonwpUrl
@@ -56,10 +51,19 @@ const {
56
51
  W3C
57
52
  } = _constants.PROTOCOLS;
58
53
 
54
+ const DEFAULT_LOG = _support.logger.getLogger('Protocol Converter');
55
+
59
56
  class ProtocolConverter {
60
- constructor(proxyFunc) {
57
+ constructor(proxyFunc, log = null) {
61
58
  this.proxyFunc = proxyFunc;
62
59
  this._downstreamProtocol = null;
60
+ this._log = log;
61
+ }
62
+
63
+ get log() {
64
+ var _this$_log;
65
+
66
+ return (_this$_log = this._log) !== null && _this$_log !== void 0 ? _this$_log : DEFAULT_LOG;
63
67
  }
64
68
 
65
69
  set downstreamProtocol(value) {
@@ -96,7 +100,7 @@ class ProtocolConverter {
96
100
  async proxySetTimeouts(url, method, body) {
97
101
  let response, resBody;
98
102
  const timeoutRequestObjects = this.getTimeoutRequestObjects(body);
99
- log.debug(`Will send the following request bodies to /timeouts: ${JSON.stringify(timeoutRequestObjects)}`);
103
+ this.log.debug(`Will send the following request bodies to /timeouts: ${JSON.stringify(timeoutRequestObjects)}`);
100
104
 
101
105
  for (const timeoutObj of timeoutRequestObjects) {
102
106
  [response, resBody] = await this.proxyFunc(url, method, timeoutObj);
@@ -118,14 +122,14 @@ class ProtocolConverter {
118
122
 
119
123
  if (_lodash.default.isPlainObject(bodyObj)) {
120
124
  if (this.downstreamProtocol === W3C && _lodash.default.has(bodyObj, 'name') && !_lodash.default.has(bodyObj, 'handle')) {
121
- log.debug(`Copied 'name' value '${bodyObj.name}' to 'handle' as per W3C spec`);
125
+ this.log.debug(`Copied 'name' value '${bodyObj.name}' to 'handle' as per W3C spec`);
122
126
  return await this.proxyFunc(url, method, { ...bodyObj,
123
127
  handle: bodyObj.name
124
128
  });
125
129
  }
126
130
 
127
131
  if (this.downstreamProtocol === MJSONWP && _lodash.default.has(bodyObj, 'handle') && !_lodash.default.has(bodyObj, 'name')) {
128
- log.debug(`Copied 'handle' value '${bodyObj.handle}' to 'name' as per JSONWP spec`);
132
+ this.log.debug(`Copied 'handle' value '${bodyObj.handle}' to 'name' as per JSONWP spec`);
129
133
  return await this.proxyFunc(url, method, { ...bodyObj,
130
134
  name: bodyObj.handle
131
135
  });
@@ -146,10 +150,10 @@ class ProtocolConverter {
146
150
 
147
151
  if (_support.util.hasValue(text) && !_support.util.hasValue(value)) {
148
152
  value = _lodash.default.isString(text) ? [...text] : _lodash.default.isArray(text) ? text : [];
149
- log.debug(`Added 'value' property ${JSON.stringify(value)} to 'setValue' request body`);
153
+ this.log.debug(`Added 'value' property ${JSON.stringify(value)} to 'setValue' request body`);
150
154
  } else if (!_support.util.hasValue(text) && _support.util.hasValue(value)) {
151
155
  text = _lodash.default.isArray(value) ? value.join('') : _lodash.default.isString(value) ? value : '';
152
- log.debug(`Added 'text' property ${JSON.stringify(text)} to 'setValue' request body`);
156
+ this.log.debug(`Added 'text' property ${JSON.stringify(text)} to 'setValue' request body`);
153
157
  }
154
158
 
155
159
  return await this.proxyFunc(url, method, Object.assign({}, bodyObj, {
@@ -181,8 +185,7 @@ class ProtocolConverter {
181
185
 
182
186
  async convertAndProxy(commandName, url, method, body) {
183
187
  if (!this.downstreamProtocol) {
184
- const [res, resBodyObj] = await this.proxyFunc(url, method, body);
185
- return [res, (0, _helpers2.formatStatus)(resBodyObj, res.statusCode)];
188
+ return await this.proxyFunc(url, method, body);
186
189
  }
187
190
 
188
191
  switch (commandName) {
@@ -220,11 +223,11 @@ class ProtocolConverter {
220
223
  const rewrittenUrl = this.downstreamProtocol === MJSONWP ? jsonwpConverter(url) : w3cConverter(url);
221
224
 
222
225
  if (rewrittenUrl === url) {
223
- log.debug(`Did not know how to rewrite the original URL '${url}' ` + `for ${this.downstreamProtocol} protocol`);
226
+ this.log.debug(`Did not know how to rewrite the original URL '${url}' ` + `for ${this.downstreamProtocol} protocol`);
224
227
  break;
225
228
  }
226
229
 
227
- log.info(`Rewrote the original URL '${url}' to '${rewrittenUrl}' ` + `for ${this.downstreamProtocol} protocol`);
230
+ this.log.info(`Rewrote the original URL '${url}' to '${rewrittenUrl}' ` + `for ${this.downstreamProtocol} protocol`);
228
231
  return await this.proxyFunc(rewrittenUrl, method, body);
229
232
  }
230
233
 
@@ -237,4 +240,4 @@ var _default = ProtocolConverter;
237
240
  exports.default = _default;require('source-map-support').install();
238
241
 
239
242
 
240
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIkNPTU1BTkRfVVJMU19DT05GTElDVFMiLCJjb21tYW5kTmFtZXMiLCJqc29ud3BDb252ZXJ0ZXIiLCJ1cmwiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJ3M2NDb252ZXJ0ZXIiLCJ0ZXN0IiwidzNjVXJsIiwidzNjUHJvcGVydHlSZWdleCIsImpzb253cFVybCIsImluZm8iLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJjb25zdHJ1Y3RvciIsInByb3h5RnVuYyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImJvZHkiLCJfIiwiaGFzIiwidHlwZVRvVzNDIiwieCIsInR5cGUiLCJtcyIsInR5cGVUb0pTT05XUCIsInRvUGFpcnMiLCJmaWx0ZXIiLCJwYWlyIiwibWFwIiwicHJveHlTZXRUaW1lb3V0cyIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzQm9keSIsInRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVvdXRPYmoiLCJzdGF0dXNDb2RlIiwicHJveHlTZXRXaW5kb3ciLCJib2R5T2JqIiwidXRpbCIsInNhZmVKc29uUGFyc2UiLCJpc1BsYWluT2JqZWN0IiwibmFtZSIsImhhbmRsZSIsInByb3h5U2V0VmFsdWUiLCJoYXNWYWx1ZSIsInRleHQiLCJpc1N0cmluZyIsImlzQXJyYXkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwicHJveHlTZXRGcmFtZSIsImlkIiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsIlczQ19FTEVNRU5UX0tFWSIsInByb3h5UGVyZm9ybUFjdGlvbnMiLCJwcm94eVJlbGVhc2VBY3Rpb25zIiwiY29udmVy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QUFDbEYsVUFBSSxDQUFDQyxZQUFZLENBQUNJLFFBQWIsQ0FBc0I2RCxXQUF0QixDQUFMLEVBQXlDO0FBQ3ZDO0FBQ0Q7O0FBRUQsWUFBTUcsWUFBWSxHQUFHLEtBQUtsRCxrQkFBTCxLQUE0QlAsT0FBNUIsR0FDakJWLGVBQWUsQ0FBQ0MsR0FBRCxDQURFLEdBRWpCRyxZQUFZLENBQUNILEdBQUQsQ0FGaEI7O0FBR0EsVUFBSWtFLFlBQVksS0FBS2xFLEdBQXJCLEVBQTBCO0FBQ3hCTixRQUFBQSxHQUFHLENBQUMwQyxLQUFKLENBQVcsaURBQWdEcEMsR0FBSSxJQUFyRCxHQUNQLE9BQU0sS0FBS2dCLGtCQUFtQixXQURqQztBQUVBO0FBQ0Q7O0FBQ0R0QixNQUFBQSxHQUFHLENBQUNjLElBQUosQ0FBVSw2QkFBNEJSLEdBQUksU0FBUWtFLFlBQWEsSUFBdEQsR0FDTixPQUFNLEtBQUtsRCxrQkFBbUIsV0FEakM7QUFFQSxhQUFPLE1BQU0sS0FBS0YsU0FBTCxDQUFlb0QsWUFBZixFQUE2QmxDLE1BQTdCLEVBQXFDYixJQUFyQyxDQUFiO0FBQ0Q7O0FBR0QsV0FBTyxNQUFNLEtBQUtMLFNBQUwsQ0FBZWQsR0FBZixFQUFvQmdDLE1BQXBCLEVBQTRCYixJQUE1QixDQUFiO0FBQ0Q7O0FBdk1xQjs7ZUEwTVRQLGlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBkdXBsaWNhdGVLZXlzIH0gZnJvbSAnLi4vYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCB7XG4gIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSwgUFJPVE9DT0xTXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cblxuZXhwb3J0IGNvbnN0IENPTU1BTkRfVVJMU19DT05GTElDVFMgPSBbXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZXhlY3V0ZScsICdleGVjdXRlQXN5bmMnXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9leGVjdXRlLiovLFxuICAgICAgdXJsLmluY2x1ZGVzKCdhc3luYycpID8gJy9leGVjdXRlX2FzeW5jJyA6ICcvZXhlY3V0ZScpLFxuICAgIHczY0NvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sXG4gICAgICB1cmwuaW5jbHVkZXMoJ2FzeW5jJykgPyAnL2V4ZWN1dGUvYXN5bmMnIDogJy9leGVjdXRlL3N5bmMnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRFbGVtZW50U2NyZWVuc2hvdCddLFxuICAgIGpzb253cENvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2VsZW1lbnRcXC8oW14vXSspXFwvc2NyZWVuc2hvdCQvLFxuICAgICAgJy9zY3JlZW5zaG90LyQxJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvc2NyZWVuc2hvdFxcLyhbXi9dKykvLFxuICAgICAgJy9lbGVtZW50LyQxL3NjcmVlbnNob3QnKSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRXaW5kb3dIYW5kbGVzJywgJ2dldFdpbmRvd0hhbmRsZSddLFxuICAgIGpzb253cENvbnZlcnRlciAodXJsKSB7XG4gICAgICByZXR1cm4gL1xcL3dpbmRvdyQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3ckLywgJy93aW5kb3dfaGFuZGxlJylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93XFwvaGFuZGxlKHM/KSQvLCAnL3dpbmRvd19oYW5kbGUkMScpO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyICh1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93X2hhbmRsZSQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlJC8sICcvd2luZG93JylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93X2hhbmRsZXMkLywgJy93aW5kb3cvaGFuZGxlcycpO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0UHJvcGVydHknXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh3M2NVcmwpID0+IHtcbiAgICAgIGNvbnN0IHczY1Byb3BlcnR5UmVnZXggPSAvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9wcm9wZXJ0eVxcLyhbXi9dKykvO1xuICAgICAgY29uc3QganNvbndwVXJsID0gdzNjVXJsLnJlcGxhY2UodzNjUHJvcGVydHlSZWdleCwgJy9lbGVtZW50LyQxL2F0dHJpYnV0ZS8kMicpO1xuICAgICAgbG9nLmluZm8oYENvbnZlcnRpbmcgVzNDICcke3czY1VybH0nIHRvICcke2pzb253cFVybH0nYCk7XG4gICAgICByZXR1cm4ganNvbndwVXJsO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyOiAoanNvbndwVXJsKSA9PiBqc29ud3BVcmwgLy8gRG9uJ3QgY29udmVydCBKU09OV1AgVVJMIHRvIFczQy4gVzNDIGFjY2VwdHMgL2F0dHJpYnV0ZSBhbmQgL3Byb3BlcnR5XG4gIH1cbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5cbmNsYXNzIFByb3RvY29sQ29udmVydGVyIHtcbiAgY29uc3RydWN0b3IgKHByb3h5RnVuYykge1xuICAgIHRoaXMucHJveHlGdW5jID0gcHJveHlGdW5jO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXM0MgL3RpbWVvdXRzIGNhbiB0YWtlIGFzIG1hbnkgYXMgMyB0aW1lb3V0IHR5cGVzIGF0IG9uY2UsIE1KU09OV1AgL3RpbWVvdXRzIG9ubHkgdGFrZXMgb25lXG4gICAqIGF0IGEgdGltZS4gU28gaWYgd2UncmUgdXNpbmcgVzNDIGFuZCBwcm94eWluZyB0byBNSlNPTldQIGFuZCB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgdGltZW91dCB0eXBlXG4gICAqIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0LCB3ZSBuZWVkIHRvIGRvIDMgcHJveGllcyBhbmQgY29tYmluZSB0aGUgcmVzdWx0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBib2R5IFJlcXVlc3QgYm9keVxuICAgKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgb2YgVzNDICsgTUpTT05XUCBjb21wYXRpYmxlIHRpbWVvdXQgb2JqZWN0c1xuICAgKi9cbiAgZ2V0VGltZW91dFJlcXVlc3RPYmplY3RzIChib2R5KSB7XG4gICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keSwgJ21zJykgJiYgXy5oYXMoYm9keSwgJ3R5cGUnKSkge1xuICAgICAgY29uc3QgdHlwZVRvVzNDID0gKHgpID0+IHggPT09ICdwYWdlIGxvYWQnID8gJ3BhZ2VMb2FkJyA6IHg7XG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgW3R5cGVUb1czQyhib2R5LnR5cGUpXTogYm9keS5tcyxcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUCAmJiAoIV8uaGFzKGJvZHksICdtcycpIHx8ICFfLmhhcyhib2R5LCAndHlwZScpKSkge1xuICAgICAgY29uc3QgdHlwZVRvSlNPTldQID0gKHgpID0+IHggPT09ICdwYWdlTG9hZCcgPyAncGFnZSBsb2FkJyA6IHg7XG4gICAgICByZXR1cm4gXy50b1BhaXJzKGJvZHkpXG4gICAgICAgIC8vIE9ubHkgdHJhbnNmb3JtIHRoZSBlbnRyeSBpZiBtcyB2YWx1ZSBpcyBhIHZhbGlkIHBvc2l0aXZlIGZsb2F0IG51bWJlclxuICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiAvXlxcZCsoPzpbLixdXFxkKj8pPyQvLnRlc3QoYCR7cGFpclsxXX1gKSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAocGFpcikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlVG9KU09OV1AocGFpclswXSksXG4gICAgICAgICAgICBtczogcGFpclsxXSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2JvZHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IGFuIGFycmF5IG9mIHRpbWVvdXQgb2JqZWN0cyBhbmQgbWVyZ2UgdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIEVuZHBvaW50IHVybFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIEVuZHBvaW50IG1ldGhvZFxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICovXG4gIGFzeW5jIHByb3h5U2V0VGltZW91dHMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgbGV0IHJlc3BvbnNlLCByZXNCb2R5O1xuXG4gICAgY29uc3QgdGltZW91dFJlcXVlc3RPYmplY3RzID0gdGhpcy5nZXRUaW1lb3V0UmVxdWVzdE9iamVjdHMoYm9keSk7XG4gICAgbG9nLmRlYnVnKGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkodGltZW91dFJlcXVlc3RPYmplY3RzKX1gKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikpIHtcbiAgICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gVzNDICYmIF8uaGFzKGJvZHlPYmosICduYW1lJykgJiYgIV8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnbmFtZScgdmFsdWUgJyR7Ym9keU9iai5uYW1lfScgdG8gJ2hhbmRsZScgYXMgcGVyIFczQyBzcGVjYCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwge1xuICAgICAgICAgIC4uLmJvZHlPYmosXG4gICAgICAgICAgaGFuZGxlOiBib2R5T2JqLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBNSlNPTldQICYmIF8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSAmJiAhXy5oYXMoYm9keU9iaiwgJ25hbWUnKSkge1xuICAgICAgICBsb2cuZGVidWcoYENvcGllZCAnaGFuZGxlJyB2YWx1ZSAnJHtib2R5T2JqLmhhbmRsZX0nIHRvICduYW1lJyBhcyBwZXIgSlNPTldQIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBuYW1lOiBib2R5T2JqLmhhbmRsZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0VmFsdWUgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICBpZiAoXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopICYmICh1dGlsLmhhc1ZhbHVlKGJvZHlPYmoudGV4dCkgfHwgdXRpbC5oYXNWYWx1ZShib2R5T2JqLnZhbHVlKSkpIHtcbiAgICAgIGxldCB7dGV4dCwgdmFsdWV9ID0gYm9keU9iajtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRleHQpICYmICF1dGlsLmhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZSA9IF8uaXNTdHJpbmcodGV4dClcbiAgICAgICAgICA/IFsuLi50ZXh0XVxuICAgICAgICAgIDogKF8uaXNBcnJheSh0ZXh0KSA/IHRleHQgOiBbXSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQWRkZWQgJ3ZhbHVlJyBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXV0aWwuaGFzVmFsdWUodGV4dCkgJiYgdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdGV4dCA9IF8uaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJycpXG4gICAgICAgICAgOiAoXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnKTtcbiAgICAgICAgbG9nLmRlYnVnKGBBZGRlZCAndGV4dCcgcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeSh0ZXh0KX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgT2JqZWN0LmFzc2lnbih7fSwgYm9keU9iaiwge1xuICAgICAgICB0ZXh0LFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlTZXRGcmFtZSAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmhhcyhib2R5T2JqLCAnaWQnKSAmJiBfLmlzUGxhaW5PYmplY3QoYm9keU9iai5pZClcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgaWQ6IGR1cGxpY2F0ZUtleXMoYm9keU9iai5pZCwgTUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZKSxcbiAgICAgIH0pXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UGVyZm9ybUFjdGlvbnMgKHVybCwgbWV0aG9kLCBib2R5KSB7XG4gICAgY29uc3QgYm9keU9iaiA9IHV0aWwuc2FmZUpzb25QYXJzZShib2R5KTtcbiAgICByZXR1cm4gXy5pc1BsYWluT2JqZWN0KGJvZHlPYmopXG4gICAgICA/IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBkdXBsaWNhdGVLZXlzKGJvZHlPYmosIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSkpXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVsZWFzZUFjdGlvbnMgKHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXCJjcm9zc2luZ1wiIGVuZHBvaW50cyBmb3IgdGhlIGNhc2VcbiAgICogd2hlbiB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSBkcml2ZXJzIG9wZXJhdGUgZGlmZmVyZW50IHByb3RvY29sc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqIEBwYXJhbSB7P3N0cmluZ3xvYmplY3R9IGJvZHlcbiAgICogQHJldHVybnMgVGhlIHByb3h5ZnlpbmcgcmVzdWx0IGFzIFtyZXNwb25zZSwgcmVzcG9uc2VCb2R5XSB0dXBsZVxuICAgKi9cbiAgYXN5bmMgY29udmVydEFuZFByb3h5IChjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBpZiAoIXRoaXMuZG93bnN0cmVhbVByb3RvY29sKSB7XG4gICAgICAvLyBQYXRjaCBjYWxscyB3aXRoIEdFTkVSSUMgcHJvdG9jb2xcbiAgICAgIC8vIHRvIHByZXNlcnZlIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICBjb25zdCBbcmVzLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIHJldHVybiBbcmVzLCBmb3JtYXRTdGF0dXMocmVzQm9keU9iaiwgcmVzLnN0YXR1c0NvZGUpXTtcbiAgICB9XG5cbiAgICAvLyBTYW1lIHVybCwgYnV0IGRpZmZlcmVudCBhcmd1bWVudHNcbiAgICBzd2l0Y2ggKGNvbW1hbmROYW1lKSB7XG4gICAgICBjYXNlICd0aW1lb3V0cyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0VGltZW91dHModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0V2luZG93JzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRXaW5kb3codXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0VmFsdWUnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFZhbHVlKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3BlcmZvcm1BY3Rpb25zJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlQZXJmb3JtQWN0aW9ucyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdyZWxlYXNlQWN0aW9ucyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5UmVsZWFzZUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAnc2V0RnJhbWUnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldEZyYW1lKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFNhbWUgYXJndW1lbnRzLCBidXQgZGlmZmVyZW50IFVSTHNcbiAgICBmb3IgKGNvbnN0IHtjb21tYW5kTmFtZXMsIGpzb253cENvbnZlcnRlciwgdzNjQ29udmVydGVyfSBvZiBDT01NQU5EX1VSTFNfQ09ORkxJQ1RTKSB7XG4gICAgICBpZiAoIWNvbW1hbmROYW1lcy5pbmNsdWRlcyhjb21tYW5kTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJld3JpdHRlblVybCA9IHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBNSlNPTldQXG4gICAgICAgID8ganNvbndwQ29udmVydGVyKHVybClcbiAgICAgICAgOiB3M2NDb252ZXJ0ZXIodXJsKTtcbiAgICAgIGlmIChyZXdyaXR0ZW5VcmwgPT09IHVybCkge1xuICAgICAgICBsb2cuZGVidWcoYERpZCBub3Qga25vdyBob3cgdG8gcmV3cml0ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIGAgK1xuICAgICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsb2cuaW5mbyhgUmV3cm90ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIHRvICcke3Jld3JpdHRlblVybH0nIGAgK1xuICAgICAgICBgZm9yICR7dGhpcy5kb3duc3RyZWFtUHJvdG9jb2x9IHByb3RvY29sYCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmMocmV3cml0dGVuVXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cblxuICAgIC8vIE5vIG1hdGNoZXMgZm91bmQuIFByb2NlZWQgbm9ybWFsbHlcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb3RvY29sQ29udmVydGVyO1xuIl0sImZpbGUiOiJsaWIvanNvbndwLXByb3h5L3Byb3RvY29sLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
243
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sIm5hbWVzIjpbIkNPTU1BTkRfVVJMU19DT05GTElDVFMiLCJjb21tYW5kTmFtZXMiLCJqc29ud3BDb252ZXJ0ZXIiLCJ1cmwiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJ3M2NDb252ZXJ0ZXIiLCJ0ZXN0IiwidzNjVXJsIiwidzNjUHJvcGVydHlSZWdleCIsImpzb253cFVybCIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIlByb3RvY29sQ29udmVydGVyIiwiY29uc3RydWN0b3IiLCJwcm94eUZ1bmMiLCJsb2ciLCJfZG93bnN0cmVhbVByb3RvY29sIiwiX2xvZyIsImRvd25zdHJlYW1Qcm90b2NvbCIsInZhbHVlIiwiZ2V0VGltZW91dFJlcXVlc3RPYmplY3RzIiwiYm9keSIsIl8iLCJoYXMiLCJ0eXBlVG9XM0MiLCJ4IiwidHlwZSIsIm1zIiwidHlwZVRvSlNPTldQIiwidG9QYWlycyIsImZpbHRlciIsInBhaXIiLCJtYXAiLCJwcm94eVNldFRpbWVvdXRzIiwibWV0aG9kIiwicmVzcG9uc2UiLCJyZXNCb2R5IiwidGltZW91dFJlcXVlc3RPYmplY3RzIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidGltZW91dE9iaiIsInN0YXR1c0NvZGUiLCJwcm94eVNldFdpbmRvdyIsImJvZHlPYmoiLCJ1dGlsIiwic2FmZUpzb25QYXJzZSIsImlzUGxhaW5PYmplY3QiLCJuYW1lIiwiaGFuZGxlIiwicHJveHlTZXRWYWx1ZSIsImhhc1ZhbHVlIiwidGV4dCIsImlzU3RyaW5nIiwiaXNBcnJheSIsImpvaW4iLCJPYmplY3QiLCJhc3NpZ24iLCJwcm94eVNldEZyYW1lIiwiaWQiLCJNSlNPTldQX0VMRU1FTlRfS0VZIiwiVzNDX0VMRU1FTlRfS0VZIiwicHJveHlQZXJmb3JtQWN0aW9ucyIsInByb3h5UmVsZWFzZUFj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LFdBQXRCLENBQUwsRUFBeUM7QUFDdkM7QUFDRDs7QUFFRCxZQUFNQyxZQUFZLEdBQUcsS0FBS2hELGtCQUFMLEtBQTRCWixPQUE1QixHQUNqQlQsZUFBZSxDQUFDQyxHQUFELENBREUsR0FFakJHLFlBQVksQ0FBQ0gsR0FBRCxDQUZoQjs7QUFHQSxVQUFJb0UsWUFBWSxLQUFLcEUsR0FBckIsRUFBMEI7QUFDeEIsYUFBS2lCLEdBQUwsQ0FBU3VCLEtBQVQsQ0FBZ0IsaURBQWdEeEMsR0FBSSxJQUFyRCxHQUNaLE9BQU0sS0FBS29CLGtCQUFtQixXQURqQztBQUVBO0FBQ0Q7O0FBQ0QsV0FBS0gsR0FBTCxDQUFTb0QsSUFBVCxDQUFlLDZCQUE0QnJFLEdBQUksU0FBUW9FLFlBQWEsSUFBdEQsR0FDWCxPQUFNLEtBQUtoRCxrQkFBbUIsV0FEakM7QUFFQSxhQUFPLE1BQU0sS0FBS0osU0FBTCxDQUFlb0QsWUFBZixFQUE2QmhDLE1BQTdCLEVBQXFDYixJQUFyQyxDQUFiO0FBQ0Q7O0FBR0QsV0FBTyxNQUFNLEtBQUtQLFNBQUwsQ0FBZWhCLEdBQWYsRUFBb0JvQyxNQUFwQixFQUE0QmIsSUFBNUIsQ0FBYjtBQUNEOztBQXpNcUI7O2VBNE1UVCxpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBsb2dnZXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZHVwbGljYXRlS2V5cyB9IGZyb20gJy4uL2Jhc2Vkcml2ZXIvaGVscGVycyc7XG5pbXBvcnQge1xuICBNSlNPTldQX0VMRU1FTlRfS0VZLCBXM0NfRUxFTUVOVF9LRVksIFBST1RPQ09MU1xufSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgQ09NTUFORF9VUkxTX0NPTkZMSUNUUyA9IFtcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydleGVjdXRlJywgJ2V4ZWN1dGVBc3luYyddLFxuICAgIGpzb253cENvbnZlcnRlcjogKHVybCkgPT4gdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sXG4gICAgICB1cmwuaW5jbHVkZXMoJ2FzeW5jJykgPyAnL2V4ZWN1dGVfYXN5bmMnIDogJy9leGVjdXRlJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvZXhlY3V0ZS4qLyxcbiAgICAgIHVybC5pbmNsdWRlcygnYXN5bmMnKSA/ICcvZXhlY3V0ZS9hc3luYycgOiAnL2V4ZWN1dGUvc3luYycpLFxuICB9LFxuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2dldEVsZW1lbnRTY3JlZW5zaG90J10sXG4gICAganNvbndwQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9zY3JlZW5zaG90JC8sXG4gICAgICAnL3NjcmVlbnNob3QvJDEnKSxcbiAgICB3M2NDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9zY3JlZW5zaG90XFwvKFteL10rKS8sXG4gICAgICAnL2VsZW1lbnQvJDEvc2NyZWVuc2hvdCcpLFxuICB9LFxuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2dldFdpbmRvd0hhbmRsZXMnLCAnZ2V0V2luZG93SGFuZGxlJ10sXG4gICAganNvbndwQ29udmVydGVyICh1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93JC8udGVzdCh1cmwpXG4gICAgICAgID8gdXJsLnJlcGxhY2UoL1xcL3dpbmRvdyQvLCAnL3dpbmRvd19oYW5kbGUnKVxuICAgICAgICA6IHVybC5yZXBsYWNlKC9cXC93aW5kb3dcXC9oYW5kbGUocz8pJC8sICcvd2luZG93X2hhbmRsZSQxJyk7XG4gICAgfSxcbiAgICB3M2NDb252ZXJ0ZXIgKHVybCkge1xuICAgICAgcmV0dXJuIC9cXC93aW5kb3dfaGFuZGxlJC8udGVzdCh1cmwpXG4gICAgICAgID8gdXJsLnJlcGxhY2UoL1xcL3dpbmRvd19oYW5kbGUkLywgJy93aW5kb3cnKVxuICAgICAgICA6IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlcyQvLCAnL3dpbmRvdy9oYW5kbGVzJyk7XG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGNvbW1hbmROYW1lczogWydnZXRQcm9wZXJ0eSddLFxuICAgIGpzb253cENvbnZlcnRlcjogKHczY1VybCkgPT4ge1xuICAgICAgY29uc3QgdzNjUHJvcGVydHlSZWdleCA9IC9cXC9lbGVtZW50XFwvKFteL10rKVxcL3Byb3BlcnR5XFwvKFteL10rKS87XG4gICAgICBjb25zdCBqc29ud3BVcmwgPSB3M2NVcmwucmVwbGFjZSh3M2NQcm9wZXJ0eVJlZ2V4LCAnL2VsZW1lbnQvJDEvYXR0cmlidXRlLyQyJyk7XG4gICAgICByZXR1cm4ganNvbndwVXJsO1xuICAgIH0sXG4gICAgdzNjQ29udmVydGVyOiAoanNvbndwVXJsKSA9PiBqc29ud3BVcmwgLy8gRG9uJ3QgY29udmVydCBKU09OV1AgVVJMIHRvIFczQy4gVzNDIGFjY2VwdHMgL2F0dHJpYnV0ZSBhbmQgL3Byb3BlcnR5XG4gIH1cbl07XG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcbmNvbnN0IERFRkFVTFRfTE9HID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cblxuY2xhc3MgUHJvdG9jb2xDb252ZXJ0ZXIge1xuICBjb25zdHJ1Y3RvciAocHJveHlGdW5jLCBsb2cgPSBudWxsKSB7XG4gICAgdGhpcy5wcm94eUZ1bmMgPSBwcm94eUZ1bmM7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICB0aGlzLl9sb2cgPSBsb2c7XG4gIH1cblxuICBnZXQgbG9nICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nID8/IERFRkFVTFRfTE9HO1xuICB9XG5cbiAgc2V0IGRvd25zdHJlYW1Qcm90b2NvbCAodmFsdWUpIHtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICAvKipcbiAgICogVzNDIC90aW1lb3V0cyBjYW4gdGFrZSBhcyBtYW55IGFzIDMgdGltZW91dCB0eXBlcyBhdCBvbmNlLCBNSlNPTldQIC90aW1lb3V0cyBvbmx5IHRha2VzIG9uZVxuICAgKiBhdCBhIHRpbWUuIFNvIGlmIHdlJ3JlIHVzaW5nIFczQyBhbmQgcHJveHlpbmcgdG8gTUpTT05XUCBhbmQgdGhlcmUncyBtb3JlIHRoYW4gb25lIHRpbWVvdXQgdHlwZVxuICAgKiBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCwgd2UgbmVlZCB0byBkbyAzIHByb3hpZXMgYW5kIGNvbWJpbmUgdGhlIHJlc3VsdFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICogQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIFczQyArIE1KU09OV1AgY29tcGF0aWJsZSB0aW1lb3V0IG9iamVjdHNcbiAgICovXG4gIGdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyAoYm9keSkge1xuICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gVzNDICYmIF8uaGFzKGJvZHksICdtcycpICYmIF8uaGFzKGJvZHksICd0eXBlJykpIHtcbiAgICAgIGNvbnN0IHR5cGVUb1czQyA9ICh4KSA9PiB4ID09PSAncGFnZSBsb2FkJyA/ICdwYWdlTG9hZCcgOiB4O1xuICAgICAgcmV0dXJuIFt7XG4gICAgICAgIFt0eXBlVG9XM0MoYm9keS50eXBlKV06IGJvZHkubXMsXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiYgKCFfLmhhcyhib2R5LCAnbXMnKSB8fCAhXy5oYXMoYm9keSwgJ3R5cGUnKSkpIHtcbiAgICAgIGNvbnN0IHR5cGVUb0pTT05XUCA9ICh4KSA9PiB4ID09PSAncGFnZUxvYWQnID8gJ3BhZ2UgbG9hZCcgOiB4O1xuICAgICAgcmV0dXJuIF8udG9QYWlycyhib2R5KVxuICAgICAgICAvLyBPbmx5IHRyYW5zZm9ybSB0aGUgZW50cnkgaWYgbXMgdmFsdWUgaXMgYSB2YWxpZCBwb3NpdGl2ZSBmbG9hdCBudW1iZXJcbiAgICAgICAgLmZpbHRlcigocGFpcikgPT4gL15cXGQrKD86Wy4sXVxcZCo/KT8kLy50ZXN0KGAke3BhaXJbMV19YCkpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHBhaXIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogdHlwZVRvSlNPTldQKHBhaXJbMF0pLFxuICAgICAgICAgICAgbXM6IHBhaXJbMV0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtib2R5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm94eSBhbiBhcnJheSBvZiB0aW1lb3V0IG9iamVjdHMgYW5kIG1lcmdlIHRoZSByZXN1bHRcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBFbmRwb2ludCB1cmxcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZCBFbmRwb2ludCBtZXRob2RcbiAgICogQHBhcmFtIHtPYmplY3R9IGJvZHkgUmVxdWVzdCBib2R5XG4gICAqL1xuICBhc3luYyBwcm94eVNldFRpbWVvdXRzICh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGxldCByZXNwb25zZSwgcmVzQm9keTtcblxuICAgIGNvbnN0IHRpbWVvdXRSZXF1ZXN0T2JqZWN0cyA9IHRoaXMuZ2V0VGltZW91dFJlcXVlc3RPYmplY3RzKGJvZHkpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkodGltZW91dFJlcXVlc3RPYmplY3RzKX1gKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikpIHtcbiAgICAgIGlmICh0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gVzNDICYmIF8uaGFzKGJvZHlPYmosICduYW1lJykgJiYgIV8uaGFzKGJvZHlPYmosICdoYW5kbGUnKSkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQ29waWVkICduYW1lJyB2YWx1ZSAnJHtib2R5T2JqLm5hbWV9JyB0byAnaGFuZGxlJyBhcyBwZXIgVzNDIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBoYW5kbGU6IGJvZHlPYmoubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiYgXy5oYXMoYm9keU9iaiwgJ2hhbmRsZScpICYmICFfLmhhcyhib2R5T2JqLCAnbmFtZScpKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDb3BpZWQgJ2hhbmRsZScgdmFsdWUgJyR7Ym9keU9iai5oYW5kbGV9JyB0byAnbmFtZScgYXMgcGVyIEpTT05XUCBzcGVjYCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwge1xuICAgICAgICAgIC4uLmJvZHlPYmosXG4gICAgICAgICAgbmFtZTogYm9keU9iai5oYW5kbGUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBwcm94eVNldFZhbHVlICh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGNvbnN0IGJvZHlPYmogPSB1dGlsLnNhZmVKc29uUGFyc2UoYm9keSk7XG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChib2R5T2JqKSAmJiAodXRpbC5oYXNWYWx1ZShib2R5T2JqLnRleHQpIHx8IHV0aWwuaGFzVmFsdWUoYm9keU9iai52YWx1ZSkpKSB7XG4gICAgICBsZXQge3RleHQsIHZhbHVlfSA9IGJvZHlPYmo7XG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZSh0ZXh0KSAmJiAhdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBfLmlzU3RyaW5nKHRleHQpXG4gICAgICAgICAgPyBbLi4udGV4dF1cbiAgICAgICAgICA6IChfLmlzQXJyYXkodGV4dCkgPyB0ZXh0IDogW10pO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWRkZWQgJ3ZhbHVlJyBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0gdG8gJ3NldFZhbHVlJyByZXF1ZXN0IGJvZHlgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXV0aWwuaGFzVmFsdWUodGV4dCkgJiYgdXRpbC5oYXNWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdGV4dCA9IF8uaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJycpXG4gICAgICAgICAgOiAoXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYEFkZGVkICd0ZXh0JyBwcm9wZXJ0eSAke0pTT04uc3RyaW5naWZ5KHRleHQpfSB0byAnc2V0VmFsdWUnIHJlcXVlc3QgYm9keWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBPYmplY3QuYXNzaWduKHt9LCBib2R5T2JqLCB7XG4gICAgICAgIHRleHQsXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBwcm94eVNldEZyYW1lICh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGNvbnN0IGJvZHlPYmogPSB1dGlsLnNhZmVKc29uUGFyc2UoYm9keSk7XG4gICAgcmV0dXJuIF8uaGFzKGJvZHlPYmosICdpZCcpICYmIF8uaXNQbGFpbk9iamVjdChib2R5T2JqLmlkKVxuICAgICAgPyBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwge1xuICAgICAgICAuLi5ib2R5T2JqLFxuICAgICAgICBpZDogZHVwbGljYXRlS2V5cyhib2R5T2JqLmlkLCBNSlNPTldQX0VMRU1FTlRfS0VZLCBXM0NfRUxFTUVOVF9LRVkpLFxuICAgICAgfSlcbiAgICAgIDogYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlQZXJmb3JtQWN0aW9ucyAodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmlzUGxhaW5PYmplY3QoYm9keU9iailcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGR1cGxpY2F0ZUtleXMoYm9keU9iaiwgTUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZKSlcbiAgICAgIDogYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgcHJveHlSZWxlYXNlQWN0aW9ucyAodXJsLCBtZXRob2QpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBcImNyb3NzaW5nXCIgZW5kcG9pbnRzIGZvciB0aGUgY2FzZVxuICAgKiB3aGVuIHVwc3RyZWFtIGFuZCBkb3duc3RyZWFtIGRyaXZlcnMgb3BlcmF0ZSBkaWZmZXJlbnQgcHJvdG9jb2xzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2RcbiAgICogQHBhcmFtIHs/c3RyaW5nfG9iamVjdH0gYm9keVxuICAgKiBAcmV0dXJucyBUaGUgcHJveHlmeWluZyByZXN1bHQgYXMgW3Jlc3BvbnNlLCByZXNwb25zZUJvZHldIHR1cGxlXG4gICAqL1xuICBhc3luYyBjb252ZXJ0QW5kUHJveHkgKGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGlmICghdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gU2FtZSB1cmwsIGJ1dCBkaWZmZXJlbnQgYXJndW1lbnRzXG4gICAgc3dpdGNoIChjb21tYW5kTmFtZSkge1xuICAgICAgY2FzZSAndGltZW91dHMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFRpbWVvdXRzKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFdpbmRvdyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0V2luZG93KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFZhbHVlJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRWYWx1ZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdwZXJmb3JtQWN0aW9ucyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5UGVyZm9ybUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAncmVsZWFzZUFjdGlvbnMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVJlbGVhc2VBY3Rpb25zKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldEZyYW1lJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRGcmFtZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBTYW1lIGFyZ3VtZW50cywgYnV0IGRpZmZlcmVudCBVUkxzXG4gICAgZm9yIChjb25zdCB7Y29tbWFuZE5hbWVzLCBqc29ud3BDb252ZXJ0ZXIsIHczY0NvbnZlcnRlcn0gb2YgQ09NTUFORF9VUkxTX0NPTkZMSUNUUykge1xuICAgICAgaWYgKCFjb21tYW5kTmFtZXMuaW5jbHVkZXMoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXdyaXR0ZW5VcmwgPSB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUFxuICAgICAgICA/IGpzb253cENvbnZlcnRlcih1cmwpXG4gICAgICAgIDogdzNjQ29udmVydGVyKHVybCk7XG4gICAgICBpZiAocmV3cml0dGVuVXJsID09PSB1cmwpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYERpZCBub3Qga25vdyBob3cgdG8gcmV3cml0ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIGAgK1xuICAgICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5pbmZvKGBSZXdyb3RlIHRoZSBvcmlnaW5hbCBVUkwgJyR7dXJsfScgdG8gJyR7cmV3cml0dGVuVXJsfScgYCArXG4gICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyhyZXdyaXR0ZW5VcmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gTm8gbWF0Y2hlcyBmb3VuZC4gUHJvY2VlZCBub3JtYWxseVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvdG9jb2xDb252ZXJ0ZXI7XG4iXSwiZmlsZSI6ImxpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=