@appium/base-driver 8.7.0 → 8.7.2

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 (84) hide show
  1. package/build/lib/basedriver/capabilities.d.ts +207 -42
  2. package/build/lib/basedriver/capabilities.d.ts.map +1 -1
  3. package/build/lib/basedriver/capabilities.js +39 -44
  4. package/build/lib/basedriver/capabilities.js.map +1 -0
  5. package/build/lib/basedriver/commands/event.js +3 -3
  6. package/build/lib/basedriver/commands/event.js.map +1 -0
  7. package/build/lib/basedriver/commands/execute.js +3 -3
  8. package/build/lib/basedriver/commands/execute.js.map +1 -0
  9. package/build/lib/basedriver/commands/find.js.map +1 -0
  10. package/build/lib/basedriver/commands/index.js.map +1 -0
  11. package/build/lib/basedriver/commands/log.js +3 -3
  12. package/build/lib/basedriver/commands/log.js.map +1 -0
  13. package/build/lib/basedriver/commands/session.js +3 -3
  14. package/build/lib/basedriver/commands/session.js.map +1 -0
  15. package/build/lib/basedriver/commands/settings.js.map +1 -0
  16. package/build/lib/basedriver/commands/timeout.js +3 -3
  17. package/build/lib/basedriver/commands/timeout.js.map +1 -0
  18. package/build/lib/basedriver/core.d.ts +173 -22
  19. package/build/lib/basedriver/core.d.ts.map +1 -1
  20. package/build/lib/basedriver/core.js +4 -6
  21. package/build/lib/basedriver/core.js.map +1 -0
  22. package/build/lib/basedriver/desired-caps.d.ts +0 -2
  23. package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
  24. package/build/lib/basedriver/desired-caps.js +4 -53
  25. package/build/lib/basedriver/desired-caps.js.map +1 -0
  26. package/build/lib/basedriver/device-settings.js +3 -3
  27. package/build/lib/basedriver/device-settings.js.map +1 -0
  28. package/build/lib/basedriver/driver.d.ts +318 -28
  29. package/build/lib/basedriver/driver.d.ts.map +1 -1
  30. package/build/lib/basedriver/driver.js +23 -30
  31. package/build/lib/basedriver/driver.js.map +1 -0
  32. package/build/lib/basedriver/helpers.d.ts +1 -1
  33. package/build/lib/basedriver/helpers.d.ts.map +1 -1
  34. package/build/lib/basedriver/helpers.js +3 -3
  35. package/build/lib/basedriver/helpers.js.map +1 -0
  36. package/build/lib/basedriver/logger.js.map +1 -0
  37. package/build/lib/constants.js.map +1 -0
  38. package/build/lib/express/crash.js.map +1 -0
  39. package/build/lib/express/express-logging.js +3 -3
  40. package/build/lib/express/express-logging.js.map +1 -0
  41. package/build/lib/express/idempotency.js +3 -3
  42. package/build/lib/express/idempotency.js.map +1 -0
  43. package/build/lib/express/logger.js.map +1 -0
  44. package/build/lib/express/middleware.js +3 -3
  45. package/build/lib/express/middleware.js.map +1 -0
  46. package/build/lib/express/server.js +3 -3
  47. package/build/lib/express/server.js.map +1 -0
  48. package/build/lib/express/static.js +3 -3
  49. package/build/lib/express/static.js.map +1 -0
  50. package/build/lib/express/websocket.js +3 -3
  51. package/build/lib/express/websocket.js.map +1 -0
  52. package/build/lib/helpers/capabilities.d.ts +66 -5
  53. package/build/lib/helpers/capabilities.d.ts.map +1 -1
  54. package/build/lib/helpers/capabilities.js +7 -7
  55. package/build/lib/helpers/capabilities.js.map +1 -0
  56. package/build/lib/index.d.ts +1 -1
  57. package/build/lib/index.d.ts.map +1 -1
  58. package/build/lib/index.js +10 -3
  59. package/build/lib/index.js.map +1 -0
  60. package/build/lib/jsonwp-proxy/protocol-converter.js +3 -3
  61. package/build/lib/jsonwp-proxy/protocol-converter.js.map +1 -0
  62. package/build/lib/jsonwp-proxy/proxy.js +3 -3
  63. package/build/lib/jsonwp-proxy/proxy.js.map +1 -0
  64. package/build/lib/jsonwp-status/status.js +3 -3
  65. package/build/lib/jsonwp-status/status.js.map +1 -0
  66. package/build/lib/protocol/errors.js +3 -3
  67. package/build/lib/protocol/errors.js.map +1 -0
  68. package/build/lib/protocol/helpers.js +3 -3
  69. package/build/lib/protocol/helpers.js.map +1 -0
  70. package/build/lib/protocol/index.js.map +1 -0
  71. package/build/lib/protocol/protocol.js +3 -3
  72. package/build/lib/protocol/protocol.js.map +1 -0
  73. package/build/lib/protocol/routes.js +3 -3
  74. package/build/lib/protocol/routes.js.map +1 -0
  75. package/build/lib/protocol/validators.js +3 -3
  76. package/build/lib/protocol/validators.js.map +1 -0
  77. package/build/tsconfig.tsbuildinfo +1 -1
  78. package/lib/basedriver/capabilities.js +151 -93
  79. package/lib/basedriver/core.js +35 -19
  80. package/lib/basedriver/desired-caps.js +1 -53
  81. package/lib/basedriver/driver.js +98 -51
  82. package/lib/helpers/capabilities.js +19 -9
  83. package/lib/index.js +1 -0
  84. package/package.json +10 -11
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -28,6 +26,8 @@ var _protocol = require("../protocol");
28
26
 
29
27
  var _idempotency = require("./idempotency");
30
28
 
29
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+
31
31
  function allowCrossDomain(req, res, next) {
32
32
  try {
33
33
  res.header('Access-Control-Allow-Origin', '*');
@@ -123,4 +123,4 @@ function patchWithSessionId(req, body) {
123
123
 
124
124
  return body;
125
125
  }
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxvd0Nyb3NzRG9tYWluIiwicmVxIiwicmVzIiwibmV4dCIsImhlYWRlciIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJlcnIiLCJsb2ciLCJlcnJvciIsInN0YWNrIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImJhc2VQYXRoIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAiLCJSZWdFeHAiLCJfIiwiZXNjYXBlUmVnRXhwIiwidGVzdCIsInVybCIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwicGF0aCIsImhlYWRlcnMiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJoZWFkZXJzU2VudCIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzdGF0dXMiLCJ3M2NTdGF0dXMiLCJqc29uIiwicGF0Y2hXaXRoU2Vzc2lvbklkIiwiY29kZSIsInZhbHVlIiwic3RhY2t0cmFjZSIsImNhdGNoNDA0SGFuZGxlciIsImRlYnVnIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlNFU1NJT05fSURfUEFUVEVSTiIsImJvZHkiLCJtYXRjaCIsImV4ZWMiLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9taWRkbGV3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge2hhbmRsZUlkZW1wb3RlbmN5fSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCkge1xuICB0cnkge1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIFBVVCwgT1BUSU9OUywgREVMRVRFJyk7XG4gICAgcmVzLmhlYWRlcihcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgICAgICdDYWNoZS1Db250cm9sLCBQcmFnbWEsIE9yaWdpbiwgWC1SZXF1ZXN0ZWQtV2l0aCwgQ29udGVudC1UeXBlLCBBY2NlcHQsIFVzZXItQWdlbnQnXG4gICAgKTtcblxuICAgIC8vIG5lZWQgdG8gcmVzcG9uZCAyMDAgdG8gT1BUSU9OU1xuICAgIGlmICgnT1BUSU9OUycgPT09IHJlcS5tZXRob2QpIHtcbiAgICAgIHJldHVybiByZXMuc2VuZFN0YXR1cygyMDApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5zdGFja31gKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gcGF0aHMgZm9yIGFzeW5jIHJlc3BvbnNlcywgc28gY292ZXIgYm90aFxuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvdHhZaUV6LzFcbiAgICBjb25zdCByZWNlaXZlQXN5bmNSZXNwb25zZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICBgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWBcbiAgICApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlKGJhc2VQYXRoKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAvLyBoYWNrIGJlY2F1c2UgcHl0aG9uIGNsaWVudCBsaWJyYXJ5IGdpdmVzIHVzIHdyb25nIGNvbnRlbnQtdHlwZVxuICAgIGlmIChcbiAgICAgIG5ldyBSZWdFeHAoYF4ke18uZXNjYXBlUmVnRXhwKGJhc2VQYXRoKX1gKS50ZXN0KHJlcS5wYXRoKSAmJlxuICAgICAgL15QeXRob24vLnRlc3QocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSlcbiAgICApIHtcbiAgICAgIGlmIChyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgICAgIH1cbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBjYXRjaEFsbEhhbmRsZXIoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihcbiAgICBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgICBzdGF0dXM6IGVycm9yLmNvZGUoKSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgICBtZXNzYWdlOiBgQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFjayxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcbiAgbG9nLmVycm9yKGVycik7XG59XG5cbmZ1bmN0aW9uIGNhdGNoNDA0SGFuZGxlcihyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24oXG4gICAgcGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgICB2YWx1ZToge1xuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAgICdyZXNvdXJjZScsXG4gICAgICAgIHN0YWNrdHJhY2U6ICcnLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xufVxuXG5jb25zdCBTRVNTSU9OX0lEX1BBVFRFUk4gPSAvXFwvc2Vzc2lvblxcLyhbXi9dKykvO1xuXG5mdW5jdGlvbiBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCBib2R5KSB7XG4gIGNvbnN0IG1hdGNoID0gU0VTU0lPTl9JRF9QQVRURVJOLmV4ZWMocmVxLnVybCk7XG4gIGlmIChtYXRjaCkge1xuICAgIGJvZHkuc2Vzc2lvbklkID0gbWF0Y2hbMV07XG4gIH1cbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxTQUFTQSxnQkFBVCxDQUEwQkMsR0FBMUIsRUFBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQztFQUN4QyxJQUFJO0lBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDZCQUFYLEVBQTBDLEdBQTFDO0lBQ0FGLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDhCQUFYLEVBQTJDLGlDQUEzQztJQUNBRixHQUFHLENBQUNFLE1BQUosQ0FDRSw4QkFERixFQUVFLG1GQUZGOztJQU1BLElBQUksY0FBY0gsR0FBRyxDQUFDSSxNQUF0QixFQUE4QjtNQUM1QixPQUFPSCxHQUFHLENBQUNJLFVBQUosQ0FBZSxHQUFmLENBQVA7SUFDRDtFQUNGLENBWkQsQ0FZRSxPQUFPQyxHQUFQLEVBQVk7SUFDWkMsZUFBQSxDQUFJQyxLQUFKLENBQVcscUJBQW9CRixHQUFHLENBQUNHLEtBQU0sRUFBekM7RUFDRDs7RUFDRFAsSUFBSTtBQUNMOztBQUVELFNBQVNRLDRCQUFULENBQXNDQyxRQUF0QyxFQUFnRDtFQUM5QyxPQUFPLENBQUNYLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0lB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
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGxvd0Nyb3NzRG9tYWluIiwicmVxIiwicmVzIiwibmV4dCIsImhlYWRlciIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJlcnIiLCJsb2ciLCJlcnJvciIsInN0YWNrIiwiYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSIsImJhc2VQYXRoIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAiLCJSZWdFeHAiLCJfIiwiZXNjYXBlUmVnRXhwIiwidGVzdCIsInVybCIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwicGF0aCIsImhlYWRlcnMiLCJkZWZhdWx0VG9KU09OQ29udGVudFR5cGUiLCJjYXRjaEFsbEhhbmRsZXIiLCJoZWFkZXJzU2VudCIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJVbmtub3duRXJyb3IiLCJzdGF0dXMiLCJ3M2NTdGF0dXMiLCJqc29uIiwicGF0Y2hXaXRoU2Vzc2lvbklkIiwiY29kZSIsInZhbHVlIiwic3RhY2t0cmFjZSIsImNhdGNoNDA0SGFuZGxlciIsImRlYnVnIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsIlNFU1NJT05fSURfUEFUVEVSTiIsImJvZHkiLCJtYXRjaCIsImV4ZWMiLCJzZXNzaW9uSWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9taWRkbGV3YXJlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge2hhbmRsZUlkZW1wb3RlbmN5fSBmcm9tICcuL2lkZW1wb3RlbmN5JztcblxuZnVuY3Rpb24gYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCkge1xuICB0cnkge1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJyk7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIFBVVCwgT1BUSU9OUywgREVMRVRFJyk7XG4gICAgcmVzLmhlYWRlcihcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJyxcbiAgICAgICdDYWNoZS1Db250cm9sLCBQcmFnbWEsIE9yaWdpbiwgWC1SZXF1ZXN0ZWQtV2l0aCwgQ29udGVudC1UeXBlLCBBY2NlcHQsIFVzZXItQWdlbnQnXG4gICAgKTtcblxuICAgIC8vIG5lZWQgdG8gcmVzcG9uZCAyMDAgdG8gT1BUSU9OU1xuICAgIGlmICgnT1BUSU9OUycgPT09IHJlcS5tZXRob2QpIHtcbiAgICAgIHJldHVybiByZXMuc2VuZFN0YXR1cygyMDApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmVycm9yKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5zdGFja31gKTtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUoYmFzZVBhdGgpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gcGF0aHMgZm9yIGFzeW5jIHJlc3BvbnNlcywgc28gY292ZXIgYm90aFxuICAgIC8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvdHhZaUV6LzFcbiAgICBjb25zdCByZWNlaXZlQXN5bmNSZXNwb25zZVJlZ0V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICBgJHtfLmVzY2FwZVJlZ0V4cChiYXNlUGF0aCl9L3Nlc3Npb24vW2EtZjAtOS1dKy8oYXBwaXVtLyk/cmVjZWl2ZV9hc3luY19yZXNwb25zZWBcbiAgICApO1xuICAgIGlmICghcmVjZWl2ZUFzeW5jUmVzcG9uc2VSZWdFeHAudGVzdChyZXEudXJsKSkge1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgYWxsb3dDcm9zc0RvbWFpbihyZXEsIHJlcywgbmV4dCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpeFB5dGhvbkNvbnRlbnRUeXBlKGJhc2VQYXRoKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAvLyBoYWNrIGJlY2F1c2UgcHl0aG9uIGNsaWVudCBsaWJyYXJ5IGdpdmVzIHVzIHdyb25nIGNvbnRlbnQtdHlwZVxuICAgIGlmIChcbiAgICAgIG5ldyBSZWdFeHAoYF4ke18uZXNjYXBlUmVnRXhwKGJhc2VQYXRoKX1gKS50ZXN0KHJlcS5wYXRoKSAmJlxuICAgICAgL15QeXRob24vLnRlc3QocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSlcbiAgICApIHtcbiAgICAgIGlmIChyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSB7XG4gICAgICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JztcbiAgICAgIH1cbiAgICB9XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pIHtcbiAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5mdW5jdGlvbiBjYXRjaEFsbEhhbmRsZXIoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBpZiAocmVzLmhlYWRlcnNTZW50KSB7XG4gICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgfVxuXG4gIGxvZy5lcnJvcihgVW5jYXVnaHQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIGxvZy5lcnJvcignU2VuZGluZyBnZW5lcmljIGVycm9yIHJlc3BvbnNlJyk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25FcnJvcjtcbiAgcmVzLnN0YXR1cyhlcnJvci53M2NTdGF0dXMoKSkuanNvbihcbiAgICBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCB7XG4gICAgICBzdGF0dXM6IGVycm9yLmNvZGUoKSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGVycm9yOiBlcnJvci5lcnJvcigpLFxuICAgICAgICBtZXNzYWdlOiBgQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFjayxcbiAgICAgIH0sXG4gICAgfSlcbiAgKTtcbiAgbG9nLmVycm9yKGVycik7XG59XG5cbmZ1bmN0aW9uIGNhdGNoNDA0SGFuZGxlcihyZXEsIHJlcykge1xuICBsb2cuZGVidWcoYE5vIHJvdXRlIGZvdW5kIGZvciAke3JlcS51cmx9YCk7XG4gIGNvbnN0IGVycm9yID0gZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3I7XG4gIHJlcy5zdGF0dXMoZXJyb3IudzNjU3RhdHVzKCkpLmpzb24oXG4gICAgcGF0Y2hXaXRoU2Vzc2lvbklkKHJlcSwge1xuICAgICAgc3RhdHVzOiBlcnJvci5jb2RlKCksXG4gICAgICB2YWx1ZToge1xuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3IoKSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQsIG9yIGEgcmVxdWVzdCB3YXMgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkIHVzaW5nIGFuIEhUVFAgbWV0aG9kIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWFwcGVkICcgK1xuICAgICAgICAgICdyZXNvdXJjZScsXG4gICAgICAgIHN0YWNrdHJhY2U6ICcnLFxuICAgICAgfSxcbiAgICB9KVxuICApO1xufVxuXG5jb25zdCBTRVNTSU9OX0lEX1BBVFRFUk4gPSAvXFwvc2Vzc2lvblxcLyhbXi9dKykvO1xuXG5mdW5jdGlvbiBwYXRjaFdpdGhTZXNzaW9uSWQocmVxLCBib2R5KSB7XG4gIGNvbnN0IG1hdGNoID0gU0VTU0lPTl9JRF9QQVRURVJOLmV4ZWMocmVxLnVybCk7XG4gIGlmIChtYXRjaCkge1xuICAgIGJvZHkuc2Vzc2lvbklkID0gbWF0Y2hbMV07XG4gIH1cbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxnQkFBVCxDQUEwQkMsR0FBMUIsRUFBK0JDLEdBQS9CLEVBQW9DQyxJQUFwQyxFQUEwQztFQUN4QyxJQUFJO0lBQ0ZELEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDZCQUFYLEVBQTBDLEdBQTFDO0lBQ0FGLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLDhCQUFYLEVBQTJDLGlDQUEzQztJQUNBRixHQUFHLENBQUNFLE1BQUosQ0FDRSw4QkFERixFQUVFLG1GQUZGOztJQU1BLElBQUksY0FBY0gsR0FBRyxDQUFDSSxNQUF0QixFQUE4QjtNQUM1QixPQUFPSCxHQUFHLENBQUNJLFVBQUosQ0FBZSxHQUFmLENBQVA7SUFDRDtFQUNGLENBWkQsQ0FZRSxPQUFPQyxHQUFQLEVBQVk7SUFDWkMsZUFBQSxDQUFJQyxLQUFKLENBQVcscUJBQW9CRixHQUFHLENBQUNHLEtBQU0sRUFBekM7RUFDRDs7RUFDRFAsSUFBSTtBQUNMOztBQUVELFNBQVNRLDRCQUFULENBQXNDQyxRQUF0QyxFQUFnRDtFQUM5QyxPQUFPLENBQUNYLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0lB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","names":["allowCrossDomain","req","res","next","header","method","sendStatus","err","log","error","stack","allowCrossDomainAsyncExecute","basePath","receiveAsyncResponseRegExp","RegExp","_","escapeRegExp","test","url","fixPythonContentType","path","headers","defaultToJSONContentType","catchAllHandler","headersSent","message","errors","UnknownError","status","w3cStatus","json","patchWithSessionId","code","value","stacktrace","catch404Handler","debug","UnknownCommandError","SESSION_ID_PATTERN","body","match","exec","sessionId"],"sources":["../../../lib/express/middleware.js"],"sourcesContent":["import _ from 'lodash';\nimport log from './logger';\nimport {errors} from '../protocol';\nimport {handleIdempotency} from './idempotency';\n\nfunction allowCrossDomain(req, res, next) {\n try {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DELETE');\n res.header(\n 'Access-Control-Allow-Headers',\n 'Cache-Control, Pragma, Origin, X-Requested-With, Content-Type, Accept, User-Agent'\n );\n\n // need to respond 200 to OPTIONS\n if ('OPTIONS' === req.method) {\n return res.sendStatus(200);\n }\n } catch (err) {\n log.error(`Unexpected error: ${err.stack}`);\n }\n next();\n}\n\nfunction allowCrossDomainAsyncExecute(basePath) {\n return (req, res, next) => {\n // there are two paths for async responses, so cover both\n // https://regex101.com/r/txYiEz/1\n const receiveAsyncResponseRegExp = new RegExp(\n `${_.escapeRegExp(basePath)}/session/[a-f0-9-]+/(appium/)?receive_async_response`\n );\n if (!receiveAsyncResponseRegExp.test(req.url)) {\n return next();\n }\n allowCrossDomain(req, res, next);\n };\n}\n\nfunction fixPythonContentType(basePath) {\n return (req, res, next) => {\n // hack because python client library gives us wrong content-type\n if (\n new RegExp(`^${_.escapeRegExp(basePath)}`).test(req.path) &&\n /^Python/.test(req.headers['user-agent'])\n ) {\n if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {\n req.headers['content-type'] = 'application/json; charset=utf-8';\n }\n }\n next();\n };\n}\n\nfunction defaultToJSONContentType(req, res, next) {\n if (!req.headers['content-type']) {\n req.headers['content-type'] = 'application/json; charset=utf-8';\n }\n next();\n}\n\nfunction catchAllHandler(err, req, res, next) {\n if (res.headersSent) {\n return next(err);\n }\n\n log.error(`Uncaught error: ${err.message}`);\n log.error('Sending generic error response');\n const error = errors.UnknownError;\n res.status(error.w3cStatus()).json(\n patchWithSessionId(req, {\n status: error.code(),\n value: {\n error: error.error(),\n message: `An unknown server-side error occurred while processing the command: ${err.message}`,\n stacktrace: err.stack,\n },\n })\n );\n log.error(err);\n}\n\nfunction catch404Handler(req, res) {\n log.debug(`No route found for ${req.url}`);\n const error = errors.UnknownCommandError;\n res.status(error.w3cStatus()).json(\n patchWithSessionId(req, {\n status: error.code(),\n value: {\n error: error.error(),\n message:\n 'The requested resource could not be found, or a request was ' +\n 'received using an HTTP method that is not supported by the mapped ' +\n 'resource',\n stacktrace: '',\n },\n })\n );\n}\n\nconst SESSION_ID_PATTERN = /\\/session\\/([^/]+)/;\n\nfunction patchWithSessionId(req, body) {\n const match = SESSION_ID_PATTERN.exec(req.url);\n if (match) {\n body.sessionId = match[1];\n }\n return body;\n}\n\nexport {\n allowCrossDomain,\n fixPythonContentType,\n defaultToJSONContentType,\n catchAllHandler,\n allowCrossDomainAsyncExecute,\n handleIdempotency,\n catch404Handler,\n};\n"],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -43,6 +41,8 @@ var _constants = require("../constants");
43
41
 
44
42
  var _events = require("events");
45
43
 
44
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
+
46
46
  const KEEP_ALIVE_TIMEOUT_MS = 10 * 60 * 1000;
47
47
 
48
48
  async function server(opts) {
@@ -232,4 +232,4 @@ function normalizeBasePath(basePath) {
232
232
 
233
233
  return basePath;
234
234
  }
235
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLRUVQX0FMSVZFX1RJTUVPVVRfTVMiLCJzZXJ2ZXIiLCJvcHRzIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwicG9ydCIsImhvc3RuYW1lIiwiY2xpQXJncyIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlclVwZGF0ZXJzIiwia2VlcEFsaXZlVGltZW91dCIsImFwcCIsImV4cHJlc3MiLCJodHRwU2VydmVyIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXBwaXVtU2VydmVyIiwiY29uZmlndXJlSHR0cCIsImNvbmZpZ3VyZVNlcnZlciIsImFkZFJvdXRlcyIsInVwZGF0ZXIiLCJhbGwiLCJjYXRjaDQwNEhhbmRsZXIiLCJzdGFydFNlcnZlciIsImVyciIsIm5vcm1hbGl6ZUJhc2VQYXRoIiwidXNlIiwiZW5kTG9nRm9ybWF0dGVyIiwiZmF2aWNvbiIsInBhdGgiLCJTVEFUSUNfRElSIiwic3RhdGljIiwicHJvZHVjZUVycm9yIiwicHJvZHVjZUNyYXNoIiwiYWxsb3dDcm9zc0RvbWFpbiIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiYm9keVBhcnNlciIsInVybGVuY29kZWQiLCJleHRlbmRlZCIsIm1ldGhvZE92ZXJyaWRlIiwiY2F0Y2hBbGxIYW5kbGVyIiwianNvbiIsImxpbWl0Iiwic3RhcnRMb2dGb3JtYXR0ZXIiLCJ3ZWxjb21lIiwiZ3VpbmVhUGlnIiwiZ3VpbmVhUGlnU2Nyb2xsYWJsZSIsImd1aW5lYVBpZ0FwcEJhbm5lciIsInNlcnZlclN0YXRlIiwibm90aWZpZXIiLCJFdmVudEVtaXR0ZXIiLCJjbG9zZWQiLCJhZGRXZWJTb2NrZXRIYW5kbGVyIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJjbG9zZSIsImJpbmQiLCJlbWl0IiwibG9nIiwiaW5mbyIsIm9uIiwiY29kZSIsImVycm9yIiwic29ja2V0Iiwic2V0VGltZW91dCIsImRlc3Ryb3kiLCJfb3BlblJlcUNvdW50Iiwib25jZSIsInJlbW92ZUxpc3RlbmVyIiwicmVxIiwicmVzIiwiY29ubmVjdGlvbiIsInN0YXJ0IiwicHJvbWlzaWZ5IiwibGlzdGVuIiwiY29udGV4dCIsInN0YXJ0UHJvbWlzZSIsImhlYWRlcnNUaW1lb3V0IiwiXyIsImlzU3RyaW5nIiwiRXJyb3IiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4cHJlc3Mvc2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgZmF2aWNvbiBmcm9tICdzZXJ2ZS1mYXZpY29uJztcbmltcG9ydCBib2R5UGFyc2VyIGZyb20gJ2JvZHktcGFyc2VyJztcbmltcG9ydCBtZXRob2RPdmVycmlkZSBmcm9tICdtZXRob2Qtb3ZlcnJpZGUnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge3N0YXJ0TG9nRm9ybWF0dGVyLCBlbmRMb2dGb3JtYXR0ZXJ9IGZyb20gJy4vZXhwcmVzcy1sb2dnaW5nJztcbmltcG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn0gZnJvbSAnLi9taWRkbGV3YXJlJztcbmltcG9ydCB7Z3VpbmVhUGlnLCBndWluZWFQaWdTY3JvbGxhYmxlLCBndWluZWFQaWdBcHBCYW5uZXIsIHdlbGNvbWUsIFNUQVRJQ19ESVJ9IGZyb20gJy4vc3RhdGljJztcbmltcG9ydCB7cHJvZHVjZUVycm9yLCBwcm9kdWNlQ3Jhc2h9IGZyb20gJy4vY3Jhc2gnO1xuaW1wb3J0IHtcbiAgYWRkV2ViU29ja2V0SGFuZGxlcixcbiAgcmVtb3ZlV2ViU29ja2V0SGFuZGxlcixcbiAgcmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMsXG4gIGdldFdlYlNvY2tldEhhbmRsZXJzLFxufSBmcm9tICcuL3dlYnNvY2tldCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQge0RFRkFVTFRfQkFTRV9QQVRIfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJ2V2ZW50cyc7XG5cbmNvbnN0IEtFRVBfQUxJVkVfVElNRU9VVF9NUyA9IDEwICogNjAgKiAxMDAwOyAvLyAxMCBtaW51dGVzXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7U2VydmVyT3B0c30gb3B0c1xuICogQHJldHVybnMge1Byb21pc2U8QXBwaXVtU2VydmVyPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VydmVyKG9wdHMpIHtcbiAgY29uc3Qge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0LFxuICAgIGhvc3RuYW1lLFxuICAgIGNsaUFyZ3MsXG4gICAgYWxsb3dDb3JzID0gdHJ1ZSxcbiAgICBiYXNlUGF0aCA9IERFRkFVTFRfQkFTRV9QQVRILFxuICAgIGV4dHJhTWV0aG9kTWFwID0ge30sXG4gICAgc2VydmVyVXBkYXRlcnMgPSBbXSxcbiAgICBrZWVwQWxpdmVUaW1lb3V0ID0gS0VFUF9BTElWRV9USU1FT1VUX01TLFxuICB9ID0gb3B0cztcblxuICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBodHRwIHNlcnZlclxuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG4gIGNvbnN0IGh0dHBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhcHApO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIHdlIHB1dCBhbiBhc3luYyBmdW5jdGlvbiBhcyB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvciBiZWNhdXNlIHdlIHdhbnQgc29tZSB0aGluZ3MgdG8gaGFwcGVuIGluXG4gICAgLy8gc2VyaWFsIChhcHBsaWNhdGlvbiBvZiBwbHVnaW4gdXBkYXRlcywgZm9yIGV4YW1wbGUpLiBCdXQgd2Ugc3RpbGwgbmVlZCB0byB1c2UgYSBwcm9taXNlIGhlcmVcbiAgICAvLyBiZWNhdXNlIHNvbWUgZWxlbWVudHMgb2Ygc2VydmVyIHN0YXJ0IGZhaWx1cmUgb25seSBoYXBwZW4gaW4gaHR0cFNlcnZlciBsaXN0ZW5lcnMuIFNvIHRoZVxuICAgIC8vIHdheSB3ZSByZXNvbHZlIGl0IGlzIHRvIHVzZSBhbiBhc3luYyBmdW5jdGlvbiBoZXJlIGJ1dCB0byB3cmFwIGFsbCB0aGUgaW5uZXIgbG9naWMgaW5cbiAgICAvLyB0cnkvY2F0Y2ggc28gYW55IGVycm9ycyBjYW4gYmUgcGFzc2VkIHRvIHJlamVjdC5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBwaXVtU2VydmVyID0gY29uZmlndXJlSHR0cCh7XG4gICAgICAgIGh0dHBTZXJ2ZXIsXG4gICAgICAgIHJlamVjdCxcbiAgICAgICAga2VlcEFsaXZlVGltZW91dCxcbiAgICAgIH0pO1xuICAgICAgY29uZmlndXJlU2VydmVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBhZGRSb3V0ZXM6IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICAgICAgYWxsb3dDb3JzLFxuICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgZXh0cmFNZXRob2RNYXAsXG4gICAgICB9KTtcbiAgICAgIC8vIGFsbG93IGV4dGVuc2lvbnMgdG8gdXBkYXRlIHRoZSBhcHAgYW5kIGh0dHAgc2VydmVyIG9iamVjdHNcbiAgICAgIGZvciAoY29uc3QgdXBkYXRlciBvZiBzZXJ2ZXJVcGRhdGVycykge1xuICAgICAgICBhd2FpdCB1cGRhdGVyKGFwcCwgYXBwaXVtU2VydmVyLCBjbGlBcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8gb25jZSBhbGwgY29uZmlndXJhdGlvbnMgYW5kIHVwZGF0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkLCBtYWtlIHN1cmUgdG8gc2V0IHVwIGEgY2F0Y2hhbGxcbiAgICAgIC8vIGhhbmRsZXIgc28gdGhhdCBhbnl0aGluZyB1bmtub3duIDQwNHMuIEJ1dCBkbyB0aGlzIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSBzaW5jZSB3ZSBkb24ndFxuICAgICAgLy8gd2FudCB0byBibG9jayBleHRlbnNpb25zJyBhYmlsaXR5IHRvIGFkZCByb3V0ZXMgaWYgdGhleSB3YW50LlxuICAgICAgYXBwLmFsbCgnKicsIGNhdGNoNDA0SGFuZGxlcik7XG5cbiAgICAgIGF3YWl0IHN0YXJ0U2VydmVyKHtodHRwU2VydmVyLCBob3N0bmFtZSwgcG9ydCwga2VlcEFsaXZlVGltZW91dH0pO1xuXG4gICAgICByZXNvbHZlKGFwcGl1bVNlcnZlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldHMgdXAgc29tZSBFeHByZXNzIG1pZGRsZXdhcmUgYW5kIHN0dWZmXG4gKiBAcGFyYW0ge0NvbmZpZ3VyZVNlcnZlck9wdHN9IG9wdHNcbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlU2VydmVyKHtcbiAgYXBwLFxuICBhZGRSb3V0ZXMsXG4gIGFsbG93Q29ycyA9IHRydWUsXG4gIGJhc2VQYXRoID0gREVGQVVMVF9CQVNFX1BBVEgsXG4gIGV4dHJhTWV0aG9kTWFwID0ge30sXG59KSB7XG4gIGJhc2VQYXRoID0gbm9ybWFsaXplQmFzZVBhdGgoYmFzZVBhdGgpO1xuXG4gIGFwcC51c2UoZW5kTG9nRm9ybWF0dGVyKTtcblxuICAvLyBzZXQgdXAgc3RhdGljIGFzc2V0c1xuICBhcHAudXNlKGZhdmljb24ocGF0aC5yZXNvbHZlKFNUQVRJQ19ESVIsICdmYXZpY29uLmljbycpKSk7XG4gIGFwcC51c2UoZXhwcmVzcy5zdGF0aWMoU1RBVElDX0RJUikpO1xuXG4gIC8vIGNyYXNoIHJvdXRlcywgZm9yIHRlc3RpbmdcbiAgYXBwLnVzZShgJHtiYXNlUGF0aH0vcHJvZHVjZV9lcnJvcmAsIHByb2R1Y2VFcnJvcik7XG4gIGFwcC51c2UoYCR7YmFzZVBhdGh9L2NyYXNoYCwgcHJvZHVjZUNyYXNoKTtcblxuICAvLyBhZGQgbWlkZGxld2FyZXNcbiAgaWYgKGFsbG93Q29ycykge1xuICAgIGFwcC51c2UoYWxsb3dDcm9zc0RvbWFpbik7XG4gIH0gZWxzZSB7XG4gICAgYXBwLnVzZShhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlKGJhc2VQYXRoKSk7XG4gIH1cbiAgYXBwLnVzZShoYW5kbGVJZGVtcG90ZW5jeSk7XG4gIGFwcC51c2UoZml4UHl0aG9uQ29udGVudFR5cGUoYmFzZVBhdGgpKTtcbiAgYXBwLnVzZShkZWZhdWx0VG9KU09OQ29udGVudFR5cGUpO1xuICBhcHAudXNlKGJvZHlQYXJzZXIudXJsZW5jb2RlZCh7ZXh0ZW5kZWQ6IHRydWV9KSk7XG4gIGFwcC51c2UobWV0aG9kT3ZlcnJpZGUoKSk7XG4gIGFwcC51c2UoY2F0Y2hBbGxIYW5kbGVyKTtcblxuICAvLyBtYWtlIHN1cmUgYXBwaXVtIG5ldmVyIGZhaWxzIGJlY2F1c2Ugb2YgYSBmaWxlIHNpemUgdXBsb2FkIGxpbWl0XG4gIGFwcC51c2UoYm9keVBhcnNlci5qc29uKHtsaW1pdDogJzFnYid9KSk7XG5cbiAgLy8gc2V0IHVwIHN0YXJ0IGxvZ2dpbmcgKHdoaWNoIGRlcGVuZHMgb24gYm9keVBhcnNlciBkb2luZyBpdHMgdGhpbmcpXG4gIGFwcC51c2Uoc3RhcnRMb2dGb3JtYXR0ZXIpO1xuXG4gIGFkZFJvdXRlcyhhcHAsIHtiYXNlUGF0aCwgZXh0cmFNZXRob2RNYXB9KTtcblxuICAvLyBkeW5hbWljIHJvdXRlcyBmb3IgdGVzdGluZywgZXRjLlxuICBhcHAuYWxsKCcvd2VsY29tZScsIHdlbGNvbWUpO1xuICBhcHAuYWxsKCcvdGVzdC9ndWluZWEtcGlnJywgZ3VpbmVhUGlnKTtcbiAgYXBwLmFsbCgnL3Rlc3QvZ3VpbmVhLXBpZy1zY3JvbGxhYmxlJywgZ3VpbmVhUGlnU2Nyb2xsYWJsZSk7XG4gIGFwcC5hbGwoJy90ZXN0L2d1aW5lYS1waWctYXBwLWJhbm5lcicsIGd1aW5lYVBpZ0FwcEJhbm5lcik7XG59XG5cbi8qKlxuICogTW9ua2V5cGF0Y2hlcyB0aGUgYGh0dHAuU2VydmVyYCBpbnN0YW5jZSBhbmQgcmV0dXJucyBhIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfS5cbiAqIFRoaXMgZnVuY3Rpb24gX211dGF0ZXNfIHRoZSBgaHR0cFNlcnZlcmAgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtDb25maWd1cmVIdHRwT3B0c30gb3B0c1xuICogQHJldHVybnMge0FwcGl1bVNlcnZlcn1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlSHR0cCh7aHR0cFNlcnZlciwgcmVqZWN0LCBrZWVwQWxpdmVUaW1lb3V0fSkge1xuICBjb25zdCBzZXJ2ZXJTdGF0ZSA9IHtcbiAgICBub3RpZmllcjogbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgIGNsb3NlZDogZmFsc2UsXG4gIH07XG4gIC8vIFRTIGRvZXMgbm90IGxvdmUgbW9ua2V5cGF0Y2hpbmcuXG4gIGNvbnN0IGFwcGl1bVNlcnZlciA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAoaHR0cFNlcnZlcikpO1xuICBhcHBpdW1TZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlciA9IGFkZFdlYlNvY2tldEhhbmRsZXI7XG4gIGFwcGl1bVNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyID0gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcjtcbiAgYXBwaXVtU2VydmVyLnJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzID0gcmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnM7XG4gIGFwcGl1bVNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyA9IGdldFdlYlNvY2tldEhhbmRsZXJzO1xuXG4gIC8vIGh0dHAuU2VydmVyLmNsb3NlKCkgb25seSBzdG9wcyBuZXcgY29ubmVjdGlvbnMsIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgdW50aWxcbiAgLy8gYWxsIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5kIHRoZSBgY2xvc2VgIGV2ZW50IGlzIGVtaXR0ZWRcbiAgY29uc3QgY2xvc2UgPSBhcHBpdW1TZXJ2ZXIuY2xvc2UuYmluZChhcHBpdW1TZXJ2ZXIpO1xuICBhcHBpdW1TZXJ2ZXIuY2xvc2UgPSBhc3luYyAoKSA9PlxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS12MC54LWFyY2hpdmUvaXNzdWVzLzkwNjYjaXNzdWVjb21tZW50LTEyNDIxMDU3NlxuICAgICAgc2VydmVyU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLmVtaXQoJ3NodXRkb3duJyk7XG4gICAgICBsb2cuaW5mbygnV2FpdGluZyB1bnRpbCB0aGUgc2VydmVyIGlzIGNsb3NlZCcpO1xuICAgICAgaHR0cFNlcnZlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdSZWNlaXZlZCBzZXJ2ZXIgY2xvc2UgZXZlbnQnKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICB9KTtcbiAgICB9KTtcblxuICBhcHBpdW1TZXJ2ZXIub24oXG4gICAgJ2Vycm9yJyxcbiAgICAvKiogQHBhcmFtIHtOb2RlSlMuRXJybm9FeGNlcHRpb259IGVyciAqLyAoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUREUk5PVEFWQUlMJykge1xuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgJ0NvdWxkIG5vdCBzdGFydCBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyLiAnICsgJ1JlcXVlc3RlZCBhZGRyZXNzIGlzIG5vdCBhdmFpbGFibGUuJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICdDb3VsZCBub3Qgc3RhcnQgUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lci4gVGhlIHJlcXVlc3RlZCAnICtcbiAgICAgICAgICAgICdwb3J0IG1heSBhbHJlYWR5IGJlIGluIHVzZS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyAnICtcbiAgICAgICAgICAgICdvdGhlciBpbnN0YW5jZSBvZiB0aGlzIHNlcnZlciBydW5uaW5nIGFscmVhZHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbihcbiAgICAnY29ubmVjdGlvbicsXG4gICAgLyoqIEBwYXJhbSB7QXBwaXVtU2VydmVyU29ja2V0fSBzb2NrZXQgKi8gKHNvY2tldCkgPT4ge1xuICAgICAgc29ja2V0LnNldFRpbWVvdXQoa2VlcEFsaXZlVGltZW91dCk7XG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgICAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50ID0gMDtcbiAgICAgIHNvY2tldC5vbmNlKCdjbG9zZScsICgpID0+IHNlcnZlclN0YXRlLm5vdGlmaWVyLnJlbW92ZUxpc3RlbmVyKCdzaHV0ZG93bicsIGRlc3Ryb3kpKTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLm9uY2UoJ3NodXRkb3duJywgZGVzdHJveSk7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbigncmVxdWVzdCcsIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgIGNvbnN0IHNvY2tldCA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyU29ja2V0fSAqLyAocmVxLmNvbm5lY3Rpb24gfHwgcmVxLnNvY2tldCk7XG4gICAgc29ja2V0Ll9vcGVuUmVxQ291bnQrKztcbiAgICByZXMub24oJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50LS07XG4gICAgICBpZiAoc2VydmVyU3RhdGUuY2xvc2VkICYmIHNvY2tldC5fb3BlblJlcUNvdW50ID09PSAwKSB7XG4gICAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBhcHBpdW1TZXJ2ZXI7XG59XG5cbi8qKlxuICogU3RhcnRzIGFuIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtTdGFydFNlcnZlck9wdHN9IG9wdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcih7aHR0cFNlcnZlciwgcG9ydCwgaG9zdG5hbWUsIGtlZXBBbGl2ZVRpbWVvdXR9KSB7XG4gIC8vIElmIHRoZSBob3N0bmFtZSBpcyBvbWl0dGVkLCB0aGUgc2VydmVyIHdpbGwgYWNjZXB0XG4gIC8vIGNvbm5lY3Rpb25zIG9uIGFueSBJUCBhZGRyZXNzXG4gIC8qKiBAdHlwZSB7KHBvcnQ6IG51bWJlciwgaG9zdG5hbWU/OiBzdHJpbmcpID0+IEI8aHR0cC5TZXJ2ZXI+fSAqL1xuICBjb25zdCBzdGFydCA9IEIucHJvbWlzaWZ5KGh0dHBTZXJ2ZXIubGlzdGVuLCB7Y29udGV4dDogaHR0cFNlcnZlcn0pO1xuICBjb25zdCBzdGFydFByb21pc2UgPSBzdGFydChwb3J0LCBob3N0bmFtZSk7XG4gIGh0dHBTZXJ2ZXIua2VlcEFsaXZlVGltZW91dCA9IGtlZXBBbGl2ZVRpbWVvdXQ7XG4gIC8vIGhlYWRlcnMgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBrZWVwQWxpdmVUaW1lb3V0XG4gIGh0dHBTZXJ2ZXIuaGVhZGVyc1RpbWVvdXQgPSBrZWVwQWxpdmVUaW1lb3V0ICsgNSAqIDEwMDA7XG4gIGF3YWl0IHN0YXJ0UHJvbWlzZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYmFzZSBwYXRoIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVCYXNlUGF0aChiYXNlUGF0aCkge1xuICBpZiAoIV8uaXNTdHJpbmcoYmFzZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggcHJlZml4ICR7YmFzZVBhdGh9YCk7XG4gIH1cblxuICAvLyBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgbm90IGVuZCBpbiAnLycsIHNpbmNlIG91ciBtZXRob2QgbWFwXG4gIC8vIHN0YXJ0cyBhbGwgcGF0aHMgd2l0aCAnLydcbiAgYmFzZVBhdGggPSBiYXNlUGF0aC5yZXBsYWNlKC9cXC8kLywgJycpO1xuXG4gIC8vIGxpa2V3aXNlLCBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgYWx3YXlzIFNUQVJUIHdpdGggLywgdW5sZXNzIHRoZSBwYXRoXG4gIC8vIGlzIGVtcHR5IG1lYW5pbmcgbm8gYmFzZSBwYXRoIGF0IGFsbFxuICBpZiAoYmFzZVBhdGggIT09ICcnICYmIGJhc2VQYXRoWzBdICE9PSAnLycpIHtcbiAgICBiYXNlUGF0aCA9IGAvJHtiYXNlUGF0aH1gO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VQYXRoO1xufVxuXG5leHBvcnQge3NlcnZlciwgY29uZmlndXJlU2VydmVyLCBub3JtYWxpemVCYXNlUGF0aH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzdGFydFNlcnZlcn0uXG4gKiBAdHlwZWRlZiBTdGFydFNlcnZlck9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwb3J0IC0gUG9ydCB0byBydW4gb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0bmFtZV0gLSBPcHRpb25hbCBob3N0bmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gQXBwaXVtU2VydmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyU29ja2V0fSBBcHBpdW1TZXJ2ZXJTb2NrZXRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9IE1ldGhvZE1hcFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb25maWd1cmVIdHRwfVxuICogQHR5cGVkZWYgQ29uZmlndXJlSHR0cE9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7KGVycm9yPzogYW55KSA9PiB2b2lkfSByZWplY3QgLSBSZWplY3Rpb24gZnVuY3Rpb24gZnJvbSBgUHJvbWlzZWAgY29uc3RydWN0b3JcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzZXJ2ZXJ9XG4gKiBAdHlwZWRlZiBTZXJ2ZXJPcHRzXG4gKiBAcHJvcGVydHkge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn0gcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gcG9ydFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5TZXJ2ZXJBcmdzfSBjbGlBcmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RuYW1lXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbYWxsb3dDb3JzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtiYXNlUGF0aF1cbiAqIEBwcm9wZXJ0eSB7TWV0aG9kTWFwfSBbZXh0cmFNZXRob2RNYXBdXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlVwZGF0ZVNlcnZlckNhbGxiYWNrW119IFtzZXJ2ZXJVcGRhdGVyc11cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBba2VlcEFsaXZlVGltZW91dF1cbiAqL1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gd2hpY2ggY29uZmlndXJlcyByb3V0ZXNcbiAqIEBjYWxsYmFjayBSb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb25cbiAqIEBwYXJhbSB7aW1wb3J0KCdleHByZXNzJykuRXhwcmVzc30gYXBwXG4gKiBAcGFyYW0ge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbk9wdHN9IFtvcHRzXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHtAbGlua2NvZGUgUm91dGVDb25maWd1cmluZ0Z1bmN0aW9ufVxuICogQHR5cGVkZWYgUm91dGVDb25maWd1cmluZ0Z1bmN0aW9uT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtiYXNlUGF0aF1cbiAqIEBwcm9wZXJ0eSB7TWV0aG9kTWFwfSBbZXh0cmFNZXRob2RNYXBdXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIGNvbmZpZ3VyZVNlcnZlcn1cbiAqIEB0eXBlZGVmIENvbmZpZ3VyZVNlcnZlck9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdleHByZXNzJykuRXhwcmVzc30gYXBwXG4gKiBAcHJvcGVydHkge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn0gYWRkUm91dGVzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthbGxvd0NvcnNdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Jhc2VQYXRoXVxuICogQHByb3BlcnR5IHtNZXRob2RNYXB9IFtleHRyYU1ldGhvZE1hcF1cbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7O0FBT0EsZUFBZUMsTUFBZixDQUFzQkMsSUFBdEIsRUFBNEI7RUFDMUIsTUFBTTtJQUNKQyx3QkFESTtJQUVKQyxJQUZJO0lBR0pDLFFBSEk7SUFJSkMsT0FKSTtJQUtKQyxTQUFTLEdBQUcsSUFMUjtJQU1KQyxRQUFRLEdBQUdDLDRCQU5QO0lBT0pDLGNBQWMsR0FBRyxFQVBiO0lBUUpDLGNBQWMsR0FBRyxFQVJiO0lBU0pDLGdCQUFnQixHQUFHWjtFQVRmLElBVUZFLElBVko7RUFhQSxNQUFNVyxHQUFHLEdBQUcsSUFBQUMsZ0JBQUEsR0FBWjs7RUFDQSxNQUFNQyxVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsWUFBTCxDQUFrQkosR0FBbEIsQ0FBbkI7O0VBQ0EsT0FBTyxNQUFNLElBQUlLLGlCQUFKLENBQU0sT0FBT0MsT0FBUCxFQUFnQkMsTUFBaEIsS0FBMkI7SUFNNUMsSUFBSTtNQUNGLE1BQU1DLFlBQVksR0FBR0MsYUFBYSxDQUFDO1FBQ2pDUCxVQURpQztRQUVqQ0ssTUFGaUM7UUFHakNSO01BSGlDLENBQUQsQ0FBbEM7TUFLQVcsZUFBZSxDQUFDO1FBQ2RWLEdBRGM7UUFFZFcsU0FB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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLRUVQX0FMSVZFX1RJTUVPVVRfTVMiLCJzZXJ2ZXIiLCJvcHRzIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwicG9ydCIsImhvc3RuYW1lIiwiY2xpQXJncyIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlclVwZGF0ZXJzIiwia2VlcEFsaXZlVGltZW91dCIsImFwcCIsImV4cHJlc3MiLCJodHRwU2VydmVyIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXBwaXVtU2VydmVyIiwiY29uZmlndXJlSHR0cCIsImNvbmZpZ3VyZVNlcnZlciIsImFkZFJvdXRlcyIsInVwZGF0ZXIiLCJhbGwiLCJjYXRjaDQwNEhhbmRsZXIiLCJzdGFydFNlcnZlciIsImVyciIsIm5vcm1hbGl6ZUJhc2VQYXRoIiwidXNlIiwiZW5kTG9nRm9ybWF0dGVyIiwiZmF2aWNvbiIsInBhdGgiLCJTVEFUSUNfRElSIiwic3RhdGljIiwicHJvZHVjZUVycm9yIiwicHJvZHVjZUNyYXNoIiwiYWxsb3dDcm9zc0RvbWFpbiIsImFsbG93Q3Jvc3NEb21haW5Bc3luY0V4ZWN1dGUiLCJoYW5kbGVJZGVtcG90ZW5jeSIsImZpeFB5dGhvbkNvbnRlbnRUeXBlIiwiZGVmYXVsdFRvSlNPTkNvbnRlbnRUeXBlIiwiYm9keVBhcnNlciIsInVybGVuY29kZWQiLCJleHRlbmRlZCIsIm1ldGhvZE92ZXJyaWRlIiwiY2F0Y2hBbGxIYW5kbGVyIiwianNvbiIsImxpbWl0Iiwic3RhcnRMb2dGb3JtYXR0ZXIiLCJ3ZWxjb21lIiwiZ3VpbmVhUGlnIiwiZ3VpbmVhUGlnU2Nyb2xsYWJsZSIsImd1aW5lYVBpZ0FwcEJhbm5lciIsInNlcnZlclN0YXRlIiwibm90aWZpZXIiLCJFdmVudEVtaXR0ZXIiLCJjbG9zZWQiLCJhZGRXZWJTb2NrZXRIYW5kbGVyIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwiZ2V0V2ViU29ja2V0SGFuZGxlcnMiLCJjbG9zZSIsImJpbmQiLCJlbWl0IiwibG9nIiwiaW5mbyIsIm9uIiwiY29kZSIsImVycm9yIiwic29ja2V0Iiwic2V0VGltZW91dCIsImRlc3Ryb3kiLCJfb3BlblJlcUNvdW50Iiwib25jZSIsInJlbW92ZUxpc3RlbmVyIiwicmVxIiwicmVzIiwiY29ubmVjdGlvbiIsInN0YXJ0IiwicHJvbWlzaWZ5IiwibGlzdGVuIiwiY29udGV4dCIsInN0YXJ0UHJvbWlzZSIsImhlYWRlcnNUaW1lb3V0IiwiXyIsImlzU3RyaW5nIiwiRXJyb3IiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4cHJlc3Mvc2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgZmF2aWNvbiBmcm9tICdzZXJ2ZS1mYXZpY29uJztcbmltcG9ydCBib2R5UGFyc2VyIGZyb20gJ2JvZHktcGFyc2VyJztcbmltcG9ydCBtZXRob2RPdmVycmlkZSBmcm9tICdtZXRob2Qtb3ZlcnJpZGUnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge3N0YXJ0TG9nRm9ybWF0dGVyLCBlbmRMb2dGb3JtYXR0ZXJ9IGZyb20gJy4vZXhwcmVzcy1sb2dnaW5nJztcbmltcG9ydCB7XG4gIGFsbG93Q3Jvc3NEb21haW4sXG4gIGZpeFB5dGhvbkNvbnRlbnRUeXBlLFxuICBkZWZhdWx0VG9KU09OQ29udGVudFR5cGUsXG4gIGNhdGNoQWxsSGFuZGxlcixcbiAgYWxsb3dDcm9zc0RvbWFpbkFzeW5jRXhlY3V0ZSxcbiAgaGFuZGxlSWRlbXBvdGVuY3ksXG4gIGNhdGNoNDA0SGFuZGxlcixcbn0gZnJvbSAnLi9taWRkbGV3YXJlJztcbmltcG9ydCB7Z3VpbmVhUGlnLCBndWluZWFQaWdTY3JvbGxhYmxlLCBndWluZWFQaWdBcHBCYW5uZXIsIHdlbGNvbWUsIFNUQVRJQ19ESVJ9IGZyb20gJy4vc3RhdGljJztcbmltcG9ydCB7cHJvZHVjZUVycm9yLCBwcm9kdWNlQ3Jhc2h9IGZyb20gJy4vY3Jhc2gnO1xuaW1wb3J0IHtcbiAgYWRkV2ViU29ja2V0SGFuZGxlcixcbiAgcmVtb3ZlV2ViU29ja2V0SGFuZGxlcixcbiAgcmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMsXG4gIGdldFdlYlNvY2tldEhhbmRsZXJzLFxufSBmcm9tICcuL3dlYnNvY2tldCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQge0RFRkFVTFRfQkFTRV9QQVRIfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJ2V2ZW50cyc7XG5cbmNvbnN0IEtFRVBfQUxJVkVfVElNRU9VVF9NUyA9IDEwICogNjAgKiAxMDAwOyAvLyAxMCBtaW51dGVzXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7U2VydmVyT3B0c30gb3B0c1xuICogQHJldHVybnMge1Byb21pc2U8QXBwaXVtU2VydmVyPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VydmVyKG9wdHMpIHtcbiAgY29uc3Qge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0LFxuICAgIGhvc3RuYW1lLFxuICAgIGNsaUFyZ3MsXG4gICAgYWxsb3dDb3JzID0gdHJ1ZSxcbiAgICBiYXNlUGF0aCA9IERFRkFVTFRfQkFTRV9QQVRILFxuICAgIGV4dHJhTWV0aG9kTWFwID0ge30sXG4gICAgc2VydmVyVXBkYXRlcnMgPSBbXSxcbiAgICBrZWVwQWxpdmVUaW1lb3V0ID0gS0VFUF9BTElWRV9USU1FT1VUX01TLFxuICB9ID0gb3B0cztcblxuICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBodHRwIHNlcnZlclxuICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG4gIGNvbnN0IGh0dHBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhcHApO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIHdlIHB1dCBhbiBhc3luYyBmdW5jdGlvbiBhcyB0aGUgcHJvbWlzZSBjb25zdHJ1Y3RvciBiZWNhdXNlIHdlIHdhbnQgc29tZSB0aGluZ3MgdG8gaGFwcGVuIGluXG4gICAgLy8gc2VyaWFsIChhcHBsaWNhdGlvbiBvZiBwbHVnaW4gdXBkYXRlcywgZm9yIGV4YW1wbGUpLiBCdXQgd2Ugc3RpbGwgbmVlZCB0byB1c2UgYSBwcm9taXNlIGhlcmVcbiAgICAvLyBiZWNhdXNlIHNvbWUgZWxlbWVudHMgb2Ygc2VydmVyIHN0YXJ0IGZhaWx1cmUgb25seSBoYXBwZW4gaW4gaHR0cFNlcnZlciBsaXN0ZW5lcnMuIFNvIHRoZVxuICAgIC8vIHdheSB3ZSByZXNvbHZlIGl0IGlzIHRvIHVzZSBhbiBhc3luYyBmdW5jdGlvbiBoZXJlIGJ1dCB0byB3cmFwIGFsbCB0aGUgaW5uZXIgbG9naWMgaW5cbiAgICAvLyB0cnkvY2F0Y2ggc28gYW55IGVycm9ycyBjYW4gYmUgcGFzc2VkIHRvIHJlamVjdC5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBwaXVtU2VydmVyID0gY29uZmlndXJlSHR0cCh7XG4gICAgICAgIGh0dHBTZXJ2ZXIsXG4gICAgICAgIHJlamVjdCxcbiAgICAgICAga2VlcEFsaXZlVGltZW91dCxcbiAgICAgIH0pO1xuICAgICAgY29uZmlndXJlU2VydmVyKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBhZGRSb3V0ZXM6IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICAgICAgYWxsb3dDb3JzLFxuICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgZXh0cmFNZXRob2RNYXAsXG4gICAgICB9KTtcbiAgICAgIC8vIGFsbG93IGV4dGVuc2lvbnMgdG8gdXBkYXRlIHRoZSBhcHAgYW5kIGh0dHAgc2VydmVyIG9iamVjdHNcbiAgICAgIGZvciAoY29uc3QgdXBkYXRlciBvZiBzZXJ2ZXJVcGRhdGVycykge1xuICAgICAgICBhd2FpdCB1cGRhdGVyKGFwcCwgYXBwaXVtU2VydmVyLCBjbGlBcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8gb25jZSBhbGwgY29uZmlndXJhdGlvbnMgYW5kIHVwZGF0ZXJzIGhhdmUgYmVlbiBhcHBsaWVkLCBtYWtlIHN1cmUgdG8gc2V0IHVwIGEgY2F0Y2hhbGxcbiAgICAgIC8vIGhhbmRsZXIgc28gdGhhdCBhbnl0aGluZyB1bmtub3duIDQwNHMuIEJ1dCBkbyB0aGlzIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSBzaW5jZSB3ZSBkb24ndFxuICAgICAgLy8gd2FudCB0byBibG9jayBleHRlbnNpb25zJyBhYmlsaXR5IHRvIGFkZCByb3V0ZXMgaWYgdGhleSB3YW50LlxuICAgICAgYXBwLmFsbCgnKicsIGNhdGNoNDA0SGFuZGxlcik7XG5cbiAgICAgIGF3YWl0IHN0YXJ0U2VydmVyKHtodHRwU2VydmVyLCBob3N0bmFtZSwgcG9ydCwga2VlcEFsaXZlVGltZW91dH0pO1xuXG4gICAgICByZXNvbHZlKGFwcGl1bVNlcnZlcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFNldHMgdXAgc29tZSBFeHByZXNzIG1pZGRsZXdhcmUgYW5kIHN0dWZmXG4gKiBAcGFyYW0ge0NvbmZpZ3VyZVNlcnZlck9wdHN9IG9wdHNcbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlU2VydmVyKHtcbiAgYXBwLFxuICBhZGRSb3V0ZXMsXG4gIGFsbG93Q29ycyA9IHRydWUsXG4gIGJhc2VQYXRoID0gREVGQVVMVF9CQVNFX1BBVEgsXG4gIGV4dHJhTWV0aG9kTWFwID0ge30sXG59KSB7XG4gIGJhc2VQYXRoID0gbm9ybWFsaXplQmFzZVBhdGgoYmFzZVBhdGgpO1xuXG4gIGFwcC51c2UoZW5kTG9nRm9ybWF0dGVyKTtcblxuICAvLyBzZXQgdXAgc3RhdGljIGFzc2V0c1xuICBhcHAudXNlKGZhdmljb24ocGF0aC5yZXNvbHZlKFNUQVRJQ19ESVIsICdmYXZpY29uLmljbycpKSk7XG4gIGFwcC51c2UoZXhwcmVzcy5zdGF0aWMoU1RBVElDX0RJUikpO1xuXG4gIC8vIGNyYXNoIHJvdXRlcywgZm9yIHRlc3RpbmdcbiAgYXBwLnVzZShgJHtiYXNlUGF0aH0vcHJvZHVjZV9lcnJvcmAsIHByb2R1Y2VFcnJvcik7XG4gIGFwcC51c2UoYCR7YmFzZVBhdGh9L2NyYXNoYCwgcHJvZHVjZUNyYXNoKTtcblxuICAvLyBhZGQgbWlkZGxld2FyZXNcbiAgaWYgKGFsbG93Q29ycykge1xuICAgIGFwcC51c2UoYWxsb3dDcm9zc0RvbWFpbik7XG4gIH0gZWxzZSB7XG4gICAgYXBwLnVzZShhbGxvd0Nyb3NzRG9tYWluQXN5bmNFeGVjdXRlKGJhc2VQYXRoKSk7XG4gIH1cbiAgYXBwLnVzZShoYW5kbGVJZGVtcG90ZW5jeSk7XG4gIGFwcC51c2UoZml4UHl0aG9uQ29udGVudFR5cGUoYmFzZVBhdGgpKTtcbiAgYXBwLnVzZShkZWZhdWx0VG9KU09OQ29udGVudFR5cGUpO1xuICBhcHAudXNlKGJvZHlQYXJzZXIudXJsZW5jb2RlZCh7ZXh0ZW5kZWQ6IHRydWV9KSk7XG4gIGFwcC51c2UobWV0aG9kT3ZlcnJpZGUoKSk7XG4gIGFwcC51c2UoY2F0Y2hBbGxIYW5kbGVyKTtcblxuICAvLyBtYWtlIHN1cmUgYXBwaXVtIG5ldmVyIGZhaWxzIGJlY2F1c2Ugb2YgYSBmaWxlIHNpemUgdXBsb2FkIGxpbWl0XG4gIGFwcC51c2UoYm9keVBhcnNlci5qc29uKHtsaW1pdDogJzFnYid9KSk7XG5cbiAgLy8gc2V0IHVwIHN0YXJ0IGxvZ2dpbmcgKHdoaWNoIGRlcGVuZHMgb24gYm9keVBhcnNlciBkb2luZyBpdHMgdGhpbmcpXG4gIGFwcC51c2Uoc3RhcnRMb2dGb3JtYXR0ZXIpO1xuXG4gIGFkZFJvdXRlcyhhcHAsIHtiYXNlUGF0aCwgZXh0cmFNZXRob2RNYXB9KTtcblxuICAvLyBkeW5hbWljIHJvdXRlcyBmb3IgdGVzdGluZywgZXRjLlxuICBhcHAuYWxsKCcvd2VsY29tZScsIHdlbGNvbWUpO1xuICBhcHAuYWxsKCcvdGVzdC9ndWluZWEtcGlnJywgZ3VpbmVhUGlnKTtcbiAgYXBwLmFsbCgnL3Rlc3QvZ3VpbmVhLXBpZy1zY3JvbGxhYmxlJywgZ3VpbmVhUGlnU2Nyb2xsYWJsZSk7XG4gIGFwcC5hbGwoJy90ZXN0L2d1aW5lYS1waWctYXBwLWJhbm5lcicsIGd1aW5lYVBpZ0FwcEJhbm5lcik7XG59XG5cbi8qKlxuICogTW9ua2V5cGF0Y2hlcyB0aGUgYGh0dHAuU2VydmVyYCBpbnN0YW5jZSBhbmQgcmV0dXJucyBhIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfS5cbiAqIFRoaXMgZnVuY3Rpb24gX211dGF0ZXNfIHRoZSBgaHR0cFNlcnZlcmAgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtDb25maWd1cmVIdHRwT3B0c30gb3B0c1xuICogQHJldHVybnMge0FwcGl1bVNlcnZlcn1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlSHR0cCh7aHR0cFNlcnZlciwgcmVqZWN0LCBrZWVwQWxpdmVUaW1lb3V0fSkge1xuICBjb25zdCBzZXJ2ZXJTdGF0ZSA9IHtcbiAgICBub3RpZmllcjogbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgIGNsb3NlZDogZmFsc2UsXG4gIH07XG4gIC8vIFRTIGRvZXMgbm90IGxvdmUgbW9ua2V5cGF0Y2hpbmcuXG4gIGNvbnN0IGFwcGl1bVNlcnZlciA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyfSAqLyAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyAoaHR0cFNlcnZlcikpO1xuICBhcHBpdW1TZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlciA9IGFkZFdlYlNvY2tldEhhbmRsZXI7XG4gIGFwcGl1bVNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyID0gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcjtcbiAgYXBwaXVtU2VydmVyLnJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzID0gcmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnM7XG4gIGFwcGl1bVNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycyA9IGdldFdlYlNvY2tldEhhbmRsZXJzO1xuXG4gIC8vIGh0dHAuU2VydmVyLmNsb3NlKCkgb25seSBzdG9wcyBuZXcgY29ubmVjdGlvbnMsIGJ1dCB3ZSBuZWVkIHRvIHdhaXQgdW50aWxcbiAgLy8gYWxsIGNvbm5lY3Rpb25zIGFyZSBjbG9zZWQgYW5kIHRoZSBgY2xvc2VgIGV2ZW50IGlzIGVtaXR0ZWRcbiAgY29uc3QgY2xvc2UgPSBhcHBpdW1TZXJ2ZXIuY2xvc2UuYmluZChhcHBpdW1TZXJ2ZXIpO1xuICBhcHBpdW1TZXJ2ZXIuY2xvc2UgPSBhc3luYyAoKSA9PlxuICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS12MC54LWFyY2hpdmUvaXNzdWVzLzkwNjYjaXNzdWVjb21tZW50LTEyNDIxMDU3NlxuICAgICAgc2VydmVyU3RhdGUuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLmVtaXQoJ3NodXRkb3duJyk7XG4gICAgICBsb2cuaW5mbygnV2FpdGluZyB1bnRpbCB0aGUgc2VydmVyIGlzIGNsb3NlZCcpO1xuICAgICAgaHR0cFNlcnZlci5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICAgIGxvZy5pbmZvKCdSZWNlaXZlZCBzZXJ2ZXIgY2xvc2UgZXZlbnQnKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gICAgICB9KTtcbiAgICB9KTtcblxuICBhcHBpdW1TZXJ2ZXIub24oXG4gICAgJ2Vycm9yJyxcbiAgICAvKiogQHBhcmFtIHtOb2RlSlMuRXJybm9FeGNlcHRpb259IGVyciAqLyAoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFQUREUk5PVEFWQUlMJykge1xuICAgICAgICBsb2cuZXJyb3IoXG4gICAgICAgICAgJ0NvdWxkIG5vdCBzdGFydCBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyLiAnICsgJ1JlcXVlc3RlZCBhZGRyZXNzIGlzIG5vdCBhdmFpbGFibGUuJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICdDb3VsZCBub3Qgc3RhcnQgUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lci4gVGhlIHJlcXVlc3RlZCAnICtcbiAgICAgICAgICAgICdwb3J0IG1heSBhbHJlYWR5IGJlIGluIHVzZS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyAnICtcbiAgICAgICAgICAgICdvdGhlciBpbnN0YW5jZSBvZiB0aGlzIHNlcnZlciBydW5uaW5nIGFscmVhZHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbihcbiAgICAnY29ubmVjdGlvbicsXG4gICAgLyoqIEBwYXJhbSB7QXBwaXVtU2VydmVyU29ja2V0fSBzb2NrZXQgKi8gKHNvY2tldCkgPT4ge1xuICAgICAgc29ja2V0LnNldFRpbWVvdXQoa2VlcEFsaXZlVGltZW91dCk7XG4gICAgICBzb2NrZXQub24oJ2Vycm9yJywgcmVqZWN0KTtcblxuICAgICAgZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50ID0gMDtcbiAgICAgIHNvY2tldC5vbmNlKCdjbG9zZScsICgpID0+IHNlcnZlclN0YXRlLm5vdGlmaWVyLnJlbW92ZUxpc3RlbmVyKCdzaHV0ZG93bicsIGRlc3Ryb3kpKTtcbiAgICAgIHNlcnZlclN0YXRlLm5vdGlmaWVyLm9uY2UoJ3NodXRkb3duJywgZGVzdHJveSk7XG4gICAgfVxuICApO1xuXG4gIGFwcGl1bVNlcnZlci5vbigncmVxdWVzdCcsIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgIGNvbnN0IHNvY2tldCA9IC8qKiBAdHlwZSB7QXBwaXVtU2VydmVyU29ja2V0fSAqLyAocmVxLmNvbm5lY3Rpb24gfHwgcmVxLnNvY2tldCk7XG4gICAgc29ja2V0Ll9vcGVuUmVxQ291bnQrKztcbiAgICByZXMub24oJ2ZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNvY2tldC5fb3BlblJlcUNvdW50LS07XG4gICAgICBpZiAoc2VydmVyU3RhdGUuY2xvc2VkICYmIHNvY2tldC5fb3BlblJlcUNvdW50ID09PSAwKSB7XG4gICAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBhcHBpdW1TZXJ2ZXI7XG59XG5cbi8qKlxuICogU3RhcnRzIGFuIHtAbGlua2NvZGUgQXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtTdGFydFNlcnZlck9wdHN9IG9wdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlcih7aHR0cFNlcnZlciwgcG9ydCwgaG9zdG5hbWUsIGtlZXBBbGl2ZVRpbWVvdXR9KSB7XG4gIC8vIElmIHRoZSBob3N0bmFtZSBpcyBvbWl0dGVkLCB0aGUgc2VydmVyIHdpbGwgYWNjZXB0XG4gIC8vIGNvbm5lY3Rpb25zIG9uIGFueSBJUCBhZGRyZXNzXG4gIC8qKiBAdHlwZSB7KHBvcnQ6IG51bWJlciwgaG9zdG5hbWU/OiBzdHJpbmcpID0+IEI8aHR0cC5TZXJ2ZXI+fSAqL1xuICBjb25zdCBzdGFydCA9IEIucHJvbWlzaWZ5KGh0dHBTZXJ2ZXIubGlzdGVuLCB7Y29udGV4dDogaHR0cFNlcnZlcn0pO1xuICBjb25zdCBzdGFydFByb21pc2UgPSBzdGFydChwb3J0LCBob3N0bmFtZSk7XG4gIGh0dHBTZXJ2ZXIua2VlcEFsaXZlVGltZW91dCA9IGtlZXBBbGl2ZVRpbWVvdXQ7XG4gIC8vIGhlYWRlcnMgdGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBrZWVwQWxpdmVUaW1lb3V0XG4gIGh0dHBTZXJ2ZXIuaGVhZGVyc1RpbWVvdXQgPSBrZWVwQWxpdmVUaW1lb3V0ICsgNSAqIDEwMDA7XG4gIGF3YWl0IHN0YXJ0UHJvbWlzZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYmFzZSBwYXRoIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVCYXNlUGF0aChiYXNlUGF0aCkge1xuICBpZiAoIV8uaXNTdHJpbmcoYmFzZVBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhdGggcHJlZml4ICR7YmFzZVBhdGh9YCk7XG4gIH1cblxuICAvLyBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgbm90IGVuZCBpbiAnLycsIHNpbmNlIG91ciBtZXRob2QgbWFwXG4gIC8vIHN0YXJ0cyBhbGwgcGF0aHMgd2l0aCAnLydcbiAgYmFzZVBhdGggPSBiYXNlUGF0aC5yZXBsYWNlKC9cXC8kLywgJycpO1xuXG4gIC8vIGxpa2V3aXNlLCBlbnN1cmUgdGhlIHBhdGggcHJlZml4IGRvZXMgYWx3YXlzIFNUQVJUIHdpdGggLywgdW5sZXNzIHRoZSBwYXRoXG4gIC8vIGlzIGVtcHR5IG1lYW5pbmcgbm8gYmFzZSBwYXRoIGF0IGFsbFxuICBpZiAoYmFzZVBhdGggIT09ICcnICYmIGJhc2VQYXRoWzBdICE9PSAnLycpIHtcbiAgICBiYXNlUGF0aCA9IGAvJHtiYXNlUGF0aH1gO1xuICB9XG5cbiAgcmV0dXJuIGJhc2VQYXRoO1xufVxuXG5leHBvcnQge3NlcnZlciwgY29uZmlndXJlU2VydmVyLCBub3JtYWxpemVCYXNlUGF0aH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzdGFydFNlcnZlcn0uXG4gKiBAdHlwZWRlZiBTdGFydFNlcnZlck9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwb3J0IC0gUG9ydCB0byBydW4gb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtob3N0bmFtZV0gLSBPcHRpb25hbCBob3N0bmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcn0gQXBwaXVtU2VydmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyU29ja2V0fSBBcHBpdW1TZXJ2ZXJTb2NrZXRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9IE1ldGhvZE1hcFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBjb25maWd1cmVIdHRwfVxuICogQHR5cGVkZWYgQ29uZmlndXJlSHR0cE9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdodHRwJykuU2VydmVyfSBodHRwU2VydmVyIC0gSFRUUCBzZXJ2ZXIgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7KGVycm9yPzogYW55KSA9PiB2b2lkfSByZWplY3QgLSBSZWplY3Rpb24gZnVuY3Rpb24gZnJvbSBgUHJvbWlzZWAgY29uc3RydWN0b3JcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBrZWVwQWxpdmVUaW1lb3V0IC0gS2VlcC1hbGl2ZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kc1xuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzZXJ2ZXJ9XG4gKiBAdHlwZWRlZiBTZXJ2ZXJPcHRzXG4gKiBAcHJvcGVydHkge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn0gcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gcG9ydFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5TZXJ2ZXJBcmdzfSBjbGlBcmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hvc3RuYW1lXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbYWxsb3dDb3JzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtiYXNlUGF0aF1cbiAqIEBwcm9wZXJ0eSB7TWV0aG9kTWFwfSBbZXh0cmFNZXRob2RNYXBdXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlVwZGF0ZVNlcnZlckNhbGxiYWNrW119IFtzZXJ2ZXJVcGRhdGVyc11cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBba2VlcEFsaXZlVGltZW91dF1cbiAqL1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gd2hpY2ggY29uZmlndXJlcyByb3V0ZXNcbiAqIEBjYWxsYmFjayBSb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb25cbiAqIEBwYXJhbSB7aW1wb3J0KCdleHByZXNzJykuRXhwcmVzc30gYXBwXG4gKiBAcGFyYW0ge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbk9wdHN9IFtvcHRzXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIHtAbGlua2NvZGUgUm91dGVDb25maWd1cmluZ0Z1bmN0aW9ufVxuICogQHR5cGVkZWYgUm91dGVDb25maWd1cmluZ0Z1bmN0aW9uT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtiYXNlUGF0aF1cbiAqIEBwcm9wZXJ0eSB7TWV0aG9kTWFwfSBbZXh0cmFNZXRob2RNYXBdXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIGNvbmZpZ3VyZVNlcnZlcn1cbiAqIEB0eXBlZGVmIENvbmZpZ3VyZVNlcnZlck9wdHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdleHByZXNzJykuRXhwcmVzc30gYXBwXG4gKiBAcHJvcGVydHkge1JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbn0gYWRkUm91dGVzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthbGxvd0NvcnNdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Jhc2VQYXRoXVxuICogQHByb3BlcnR5IHtNZXRob2RNYXB9IFtleHRyYU1ldGhvZE1hcF1cbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVNBOztBQUNBOztBQUNBOztBQU1BOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7O0FBT0EsZUFBZUMsTUFBZixDQUFzQkMsSUFBdEIsRUFBNEI7RUFDMUIsTUFBTTtJQUNKQyx3QkFESTtJQUVKQyxJQUZJO0lBR0pDLFFBSEk7SUFJSkMsT0FKSTtJQUtKQyxTQUFTLEdBQUcsSUFMUjtJQU1KQyxRQUFRLEdBQUdDLDRCQU5QO0lBT0pDLGNBQWMsR0FBRyxFQVBiO0lBUUpDLGNBQWMsR0FBRyxFQVJiO0lBU0pDLGdCQUFnQixHQUFHWjtFQVRmLElBVUZFLElBVko7RUFhQSxNQUFNVyxHQUFHLEdBQUcsSUFBQUMsZ0JBQUEsR0FBWjs7RUFDQSxNQUFNQyxVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsWUFBTCxDQUFrQkosR0FBbEIsQ0FBbkI7O0VBQ0EsT0FBTyxNQUFNLElBQUlLLGlCQUFKLENBQU0sT0FBT0MsT0FBUCxFQUFnQkMsTUFBaEIsS0FBMkI7SUFNNUMsSUFBSTtNQUNGLE1BQU1DLFlBQVksR0FBR0MsYUFBYSxDQUFDO1FBQ2pDUCxVQURpQztRQUVqQ0ssTUFGaUM7UUFHakNSO01BSGlDLENBQUQsQ0FBbEM7TUFLQVcsZUFBZSxDQUFDO1FBQ2RWLEdBRGM7UUFFZFcsU0FBUyxFQUFFckIsd0JBRkc7UUFHZEksU0FIYztRQUlkQyxRQUpjO1FBS2RFO01BTGMsQ0FBRCxDQUFmOztNQVFBLEtBQUssTUFBTWUsT0FBWCxJQUFzQmQsY0FBdEIsRUFBc0M7UUFDcEMsTUFBTWMsT0FBTyxDQUFDWixHQUFELEVBQU1RLFlBQU4sRUFBb0JmLE9BQXBCLENBQWI7TUFDRDs7TUFLRE8sR0FBRyxDQUFDYSxHQUFKLENBQVEsR0FBUixFQUFhQywyQkFBYjtNQUVBLE1BQU1DLFdBQVcsQ0FBQztRQUFDYixVQUFEO1FBQWFWLFFBQWI7UUFBdUJELElBQXZCO1FBQTZCUTtNQUE3QixDQUFELENBQWpCO01BRUFPLE9BQU8sQ0FBQ0UsWUFBRCxDQUFQO0lBQ0QsQ0ExQkQsQ0EwQkUsT0FBT1EsR0FBUCxFQUFZO01BQ1pULE1BQU0sQ0FBQ1MsR0FBRCxDQUFOO0lBQ0Q7RUFDRixDQW5DWSxDQUFiO0FBb0NEOztBQU1ELFNBQVNOLGVBQVQsQ0FBeUI7RUFDdkJWLEdBRHVCO0VBRXZCVyxTQUZ1QjtFQUd2QmpCLFNBQVMsR0FBRyxJQUhXO0VBSXZCQyxRQUFRLEdBQUdDLDRCQUpZO0VBS3ZCQyxjQUFjLEdBQUc7QUFMTSxDQUF6QixFQU1HO0VBQ0RGLFFBQVEsR0FBR3NCLGlCQUFpQixDQUFDdEIsUUFBRCxDQUE1QjtFQUVBSyxHQUFHLENBQUNrQixHQUFKLENBQVFDLCtCQUFSO0VBR0FuQixHQUFHLENBQUNrQixHQUFKLENBQVEsSUFBQUUscUJBQUEsRUFBUUMsYUFBQSxDQUFLZixPQUFMLENBQWFnQixrQkFBYixFQUF5QixhQUF6QixDQUFSLENBQVI7RUFDQXRCLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUWpCLGdCQUFBLENBQVFzQixNQUFSLENBQWVELGtCQUFmLENBQVI7RUFHQXRCLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUyxHQUFFdkIsUUFBUyxnQkFBcEIsRUFBcUM2QixtQkFBckM7RUFDQXhCLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUyxHQUFFdkIsUUFBUyxRQUFwQixFQUE2QjhCLG1CQUE3Qjs7RUFHQSxJQUFJL0IsU0FBSixFQUFlO0lBQ2JNLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUVEsNEJBQVI7RUFDRCxDQUZELE1BRU87SUFDTDFCLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUSxJQUFBUyx3Q0FBQSxFQUE2QmhDLFFBQTdCLENBQVI7RUFDRDs7RUFDREssR0FBRyxDQUFDa0IsR0FBSixDQUFRVSw2QkFBUjtFQUNBNUIsR0FBRyxDQUFDa0IsR0FBSixDQUFRLElBQUFXLGdDQUFBLEVBQXFCbEMsUUFBckIsQ0FBUjtFQUNBSyxHQUFHLENBQUNrQixHQUFKLENBQVFZLG9DQUFSO0VBQ0E5QixHQUFHLENBQUNrQixHQUFKLENBQVFhLG1CQUFBLENBQVdDLFVBQVgsQ0FBc0I7SUFBQ0MsUUFBUSxFQUFFO0VBQVgsQ0FBdEIsQ0FBUjtFQUNBakMsR0FBRyxDQUFDa0IsR0FBSixDQUFRLElBQUFnQix1QkFBQSxHQUFSO0VBQ0FsQyxHQUFHLENBQUNrQixHQUFKLENBQVFpQiwyQkFBUjtFQUdBbkMsR0FBRyxDQUFDa0IsR0FBSixDQUFRYSxtQkFBQSxDQUFXSyxJQUFYLENBQWdCO0lBQUNDLEtBQUssRUFBRTtFQUFSLENBQWhCLENBQVI7RUFHQXJDLEdBQUcsQ0FBQ2tCLEdBQUosQ0FBUW9CLGlDQUFSO0VBRUEzQixTQUFTLENBQUNYLEdBQUQsRUFBTTtJQUFDTCxRQUFEO0lBQVdFO0VBQVgsQ0FBTixDQUFUO0VBR0FHLEdBQUcsQ0FBQ2EsR0FBSixDQUFRLFVBQVIsRUFBb0IwQixlQUFwQjtFQUNBdkMsR0FBRyxDQUFDYSxHQUFKLENBQVEsa0JBQVIsRUFBNEIyQixpQkFBNUI7RUFDQXhDLEdBQUcsQ0FBQ2EsR0FBSixDQUFRLDZCQUFSLEVBQXVDNEIsMkJBQXZDO0VBQ0F6QyxHQUFHLENBQUNhLEdBQUosQ0FBUSw2QkFBUixFQUF1QzZCLDBCQUF2QztBQUNEOztBQVFELFNBQVNqQyxhQUFULENBQXVCO0VBQUNQLFVBQUQ7RUFBYUssTUFBYjtFQUFxQlI7QUFBckIsQ0FBdkIsRUFBK0Q7RUFDN0QsTUFBTTRDLFdBQVcsR0FBRztJQUNsQkMsUUFBUSxFQUFFLElBQUlDLG9CQUFKLEVBRFE7SUFFbEJDLE1BQU0sRUFBRTtFQUZVLENBQXBCO0VBS0EsTUFBTXRDLFlBQVksR0FBd0ROLFVBQTFFO0VBQ0FNLFlBQVksQ0FBQ3VDLG1CQUFiLEdBQW1DQSw4QkFBbkM7RUFDQXZDLFlBQVksQ0FBQ3dDLHNCQUFiLEdBQXNDQSxpQ0FBdEM7RUFDQXhDLFlBQVksQ0FBQ3lDLDBCQUFiLEdBQTBDQSxxQ0FBMUM7RUFDQXpDLFlBQVksQ0FBQzBDLG9CQUFiLEdBQW9DQSwrQkFBcEM7RUFJQSxNQUFNQyxLQUFLLEdBQUczQyxZQUFZLENBQUMyQyxLQUFiLENBQW1CQyxJQUFuQixDQUF3QjVDLFlBQXhCLENBQWQ7O0VBQ0FBLFlBQVksQ0FBQzJDLEtBQWIsR0FBcUIsWUFDbkIsTUFBTSxJQUFJOUMsaUJBQUosQ0FBTSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7SUFFL0JvQyxXQUFXLENBQUNHLE1BQVosR0FBcUIsSUFBckI7SUFDQUgsV0FBVyxDQUFDQyxRQUFaLENBQXFCUyxJQUFyQixDQUEwQixVQUExQjs7SUFDQUMsZUFBQSxDQUFJQyxJQUFKLENBQVMsb0NBQVQ7O0lBQ0FyRCxVQUFVLENBQUNzRCxFQUFYLENBQWMsT0FBZCxFQUF1QixNQUFNO01BQzNCRixlQUFBLENBQUlDLElBQUosQ0FBUyw2QkFBVDs7TUFDQWpELE9BQU87SUFDUixDQUhEO0lBSUE2QyxLQUFLLENBQUVuQyxHQUFELElBQVM7TUFDYixJQUFJQSxHQUFKLEVBQVNULE1BQU0sQ0FBQ1MsR0FBRCxDQUFOO0lBQ1YsQ0FGSSxDQUFMO0VBR0QsQ0FaSyxDQURSOztFQWVBUixZQUFZLENBQUNnRCxFQUFiLENBQ0UsT0FERixFQUU2Q3hDLEdBQUQsSUFBUztJQUNqRCxJQUFJQSxHQUFHLENBQUN5QyxJQUFKLEtBQWEsZUFBakIsRUFBa0M7TUFDaENILGVBQUEsQ0FBSUksS0FBSixDQUNFLG1EQUFtRCxxQ0FEckQ7SUFHRCxDQUpELE1BSU87TUFDTEosZUFBQSxDQUFJSSxLQUFKLENBQ0UsaUVBQ0UsMkRBREYsR0FFRSxnREFISjtJQUtEOztJQUNEbkQsTUFBTSxDQUFDUyxHQUFELENBQU47RUFDRCxDQWZIO0VBa0JBUixZQUFZLENBQUNnRCxFQUFiLENBQ0UsWUFERixFQUU2Q0csTUFBRCxJQUFZO0lBQ3BEQSxNQUFNLENBQUNDLFVBQVAsQ0FBa0I3RCxnQkFBbEI7SUFDQTRELE1BQU0sQ0FBQ0gsRUFBUCxDQUFVLE9BQVYsRUFBbUJqRCxNQUFuQjs7SUFFQSxTQUFTc0QsT0FBVCxHQUFtQjtNQUNqQkYsTUFBTSxDQUFDRSxPQUFQO0lBQ0Q7O0lBQ0RGLE1BQU0sQ0FBQ0csYUFBUCxHQUF1QixDQUF2QjtJQUNBSCxNQUFNLENBQUNJLElBQVAsQ0FBWSxPQUFaLEVBQXFCLE1BQU1wQixXQUFXLENBQUNDLFFBQVosQ0FBcUJvQixjQUFyQixDQUFvQyxVQUFwQyxFQUFnREgsT0FBaEQsQ0FBM0I7SUFDQWxCLFdBQVcsQ0FBQ0MsUUFBWixDQUFxQm1CLElBQXJCLENBQTBCLFVBQTFCLEVBQXNDRixPQUF0QztFQUNELENBWkg7RUFlQXJELFlBQVksQ0FBQ2dELEVBQWIsQ0FBZ0IsU0FBaEIsRUFBMkIsVUFBVVMsR0FBVixFQUFlQyxHQUFmLEVBQW9CO0lBQzdDLE1BQU1QLE1BQU0sR0FBc0NNLEdBQUcsQ0FBQ0UsVUFBSixJQUFrQkYsR0FBRyxDQUFDTixNQUF4RTtJQUNBQSxNQUFNLENBQUNHLGFBQVA7SUFDQUksR0FBRyxDQUFDVixFQUFKLENBQU8sUUFBUCxFQUFpQixZQUFZO01BQzNCRyxNQUFNLENBQUNHLGFBQVA7O01BQ0EsSUFBSW5CLFdBQVcsQ0FBQ0csTUFBWixJQUFzQmEsTUFBTSxDQUFDRyxhQUFQLEtBQXlCLENBQW5ELEVBQXNEO1FBQ3BESCxNQUFNLENBQUNFLE9BQVA7TUFDRDtJQUNGLENBTEQ7RUFNRCxDQVREO0VBV0EsT0FBT3JELFlBQVA7QUFDRDs7QUFPRCxlQUFlTyxXQUFmLENBQTJCO0VBQUNiLFVBQUQ7RUFBYVgsSUFBYjtFQUFtQkMsUUFBbkI7RUFBNkJPO0FBQTdCLENBQTNCLEVBQTJFO0VBSXpFLE1BQU1xRSxLQUFLLEdBQUcvRCxpQkFBQSxDQUFFZ0UsU0FBRixDQUFZbkUsVUFBVSxDQUFDb0UsTUFBdkIsRUFBK0I7SUFBQ0MsT0FBTyxFQUFFckU7RUFBVixDQUEvQixDQUFkOztFQUNBLE1BQU1zRSxZQUFZLEdBQUdKLEtBQUssQ0FBQzdFLElBQUQsRUFBT0MsUUFBUCxDQUExQjtFQUNBVSxVQUFVLENBQUNILGdCQUFYLEdBQThCQSxnQkFBOUI7RUFFQUcsVUFBVSxDQUFDdUUsY0FBWCxHQUE0QjFFLGdCQUFnQixHQUFHLElBQUksSUFBbkQ7RUFDQSxNQUFNeUUsWUFBTjtBQUNEOztBQU9ELFNBQVN2RCxpQkFBVCxDQUEyQnRCLFFBQTNCLEVBQXFDO0VBQ25DLElBQUksQ0FBQytFLGVBQUEsQ0FBRUMsUUFBRixDQUFXaEYsUUFBWCxDQUFMLEVBQTJCO0lBQ3pCLE1BQU0sSUFBSWlGLEtBQUosQ0FBVyx1QkFBc0JqRixRQUFTLEVBQTFDLENBQU47RUFDRDs7RUFJREEsUUFBUSxHQUFHQSxRQUFRLENBQUNrRixPQUFULENBQWlCLEtBQWpCLEVBQXdCLEVBQXhCLENBQVg7O0VBSUEsSUFBSWxGLFFBQVEsS0FBSyxFQUFiLElBQW1CQSxRQUFRLENBQUMsQ0FBRCxDQUFSLEtBQWdCLEdBQXZDLEVBQTRDO0lBQzFDQSxRQUFRLEdBQUksSUFBR0EsUUFBUyxFQUF4QjtFQUNEOztFQUVELE9BQU9BLFFBQVA7QUFDRCJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","names":["KEEP_ALIVE_TIMEOUT_MS","server","opts","routeConfiguringFunction","port","hostname","cliArgs","allowCors","basePath","DEFAULT_BASE_PATH","extraMethodMap","serverUpdaters","keepAliveTimeout","app","express","httpServer","http","createServer","B","resolve","reject","appiumServer","configureHttp","configureServer","addRoutes","updater","all","catch404Handler","startServer","err","normalizeBasePath","use","endLogFormatter","favicon","path","STATIC_DIR","static","produceError","produceCrash","allowCrossDomain","allowCrossDomainAsyncExecute","handleIdempotency","fixPythonContentType","defaultToJSONContentType","bodyParser","urlencoded","extended","methodOverride","catchAllHandler","json","limit","startLogFormatter","welcome","guineaPig","guineaPigScrollable","guineaPigAppBanner","serverState","notifier","EventEmitter","closed","addWebSocketHandler","removeWebSocketHandler","removeAllWebSocketHandlers","getWebSocketHandlers","close","bind","emit","log","info","on","code","error","socket","setTimeout","destroy","_openReqCount","once","removeListener","req","res","connection","start","promisify","listen","context","startPromise","headersTimeout","_","isString","Error","replace"],"sources":["../../../lib/express/server.js"],"sourcesContent":["import _ from 'lodash';\nimport path from 'path';\nimport express from 'express';\nimport http from 'http';\nimport favicon from 'serve-favicon';\nimport bodyParser from 'body-parser';\nimport methodOverride from 'method-override';\nimport log from './logger';\nimport {startLogFormatter, endLogFormatter} from './express-logging';\nimport {\n allowCrossDomain,\n fixPythonContentType,\n defaultToJSONContentType,\n catchAllHandler,\n allowCrossDomainAsyncExecute,\n handleIdempotency,\n catch404Handler,\n} from './middleware';\nimport {guineaPig, guineaPigScrollable, guineaPigAppBanner, welcome, STATIC_DIR} from './static';\nimport {produceError, produceCrash} from './crash';\nimport {\n addWebSocketHandler,\n removeWebSocketHandler,\n removeAllWebSocketHandlers,\n getWebSocketHandlers,\n} from './websocket';\nimport B from 'bluebird';\nimport {DEFAULT_BASE_PATH} from '../constants';\nimport {EventEmitter} from 'events';\n\nconst KEEP_ALIVE_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes\n\n/**\n *\n * @param {ServerOpts} opts\n * @returns {Promise<AppiumServer>}\n */\nasync function server(opts) {\n const {\n routeConfiguringFunction,\n port,\n hostname,\n cliArgs,\n allowCors = true,\n basePath = DEFAULT_BASE_PATH,\n extraMethodMap = {},\n serverUpdaters = [],\n keepAliveTimeout = KEEP_ALIVE_TIMEOUT_MS,\n } = opts;\n\n // create the actual http server\n const app = express();\n const httpServer = http.createServer(app);\n return await new B(async (resolve, reject) => {\n // we put an async function as the promise constructor because we want some things to happen in\n // serial (application of plugin updates, for example). But we still need to use a promise here\n // because some elements of server start failure only happen in httpServer listeners. So the\n // way we resolve it is to use an async function here but to wrap all the inner logic in\n // try/catch so any errors can be passed to reject.\n try {\n const appiumServer = configureHttp({\n httpServer,\n reject,\n keepAliveTimeout,\n });\n configureServer({\n app,\n addRoutes: routeConfiguringFunction,\n allowCors,\n basePath,\n extraMethodMap,\n });\n // allow extensions to update the app and http server objects\n for (const updater of serverUpdaters) {\n await updater(app, appiumServer, cliArgs);\n }\n\n // once all configurations and updaters have been applied, make sure to set up a catchall\n // handler so that anything unknown 404s. But do this after everything else since we don't\n // want to block extensions' ability to add routes if they want.\n app.all('*', catch404Handler);\n\n await startServer({httpServer, hostname, port, keepAliveTimeout});\n\n resolve(appiumServer);\n } catch (err) {\n reject(err);\n }\n });\n}\n\n/**\n * Sets up some Express middleware and stuff\n * @param {ConfigureServerOpts} opts\n */\nfunction configureServer({\n app,\n addRoutes,\n allowCors = true,\n basePath = DEFAULT_BASE_PATH,\n extraMethodMap = {},\n}) {\n basePath = normalizeBasePath(basePath);\n\n app.use(endLogFormatter);\n\n // set up static assets\n app.use(favicon(path.resolve(STATIC_DIR, 'favicon.ico')));\n app.use(express.static(STATIC_DIR));\n\n // crash routes, for testing\n app.use(`${basePath}/produce_error`, produceError);\n app.use(`${basePath}/crash`, produceCrash);\n\n // add middlewares\n if (allowCors) {\n app.use(allowCrossDomain);\n } else {\n app.use(allowCrossDomainAsyncExecute(basePath));\n }\n app.use(handleIdempotency);\n app.use(fixPythonContentType(basePath));\n app.use(defaultToJSONContentType);\n app.use(bodyParser.urlencoded({extended: true}));\n app.use(methodOverride());\n app.use(catchAllHandler);\n\n // make sure appium never fails because of a file size upload limit\n app.use(bodyParser.json({limit: '1gb'}));\n\n // set up start logging (which depends on bodyParser doing its thing)\n app.use(startLogFormatter);\n\n addRoutes(app, {basePath, extraMethodMap});\n\n // dynamic routes for testing, etc.\n app.all('/welcome', welcome);\n app.all('/test/guinea-pig', guineaPig);\n app.all('/test/guinea-pig-scrollable', guineaPigScrollable);\n app.all('/test/guinea-pig-app-banner', guineaPigAppBanner);\n}\n\n/**\n * Monkeypatches the `http.Server` instance and returns a {@linkcode AppiumServer}.\n * This function _mutates_ the `httpServer` parameter.\n * @param {ConfigureHttpOpts} opts\n * @returns {AppiumServer}\n */\nfunction configureHttp({httpServer, reject, keepAliveTimeout}) {\n const serverState = {\n notifier: new EventEmitter(),\n closed: false,\n };\n // TS does not love monkeypatching.\n const appiumServer = /** @type {AppiumServer} */ (/** @type {unknown} */ (httpServer));\n appiumServer.addWebSocketHandler = addWebSocketHandler;\n appiumServer.removeWebSocketHandler = removeWebSocketHandler;\n appiumServer.removeAllWebSocketHandlers = removeAllWebSocketHandlers;\n appiumServer.getWebSocketHandlers = getWebSocketHandlers;\n\n // http.Server.close() only stops new connections, but we need to wait until\n // all connections are closed and the `close` event is emitted\n const close = appiumServer.close.bind(appiumServer);\n appiumServer.close = async () =>\n await new B((resolve, reject) => {\n // https://github.com/nodejs/node-v0.x-archive/issues/9066#issuecomment-124210576\n serverState.closed = true;\n serverState.notifier.emit('shutdown');\n log.info('Waiting until the server is closed');\n httpServer.on('close', () => {\n log.info('Received server close event');\n resolve();\n });\n close((err) => {\n if (err) reject(err); // eslint-disable-line curly\n });\n });\n\n appiumServer.on(\n 'error',\n /** @param {NodeJS.ErrnoException} err */ (err) => {\n if (err.code === 'EADDRNOTAVAIL') {\n log.error(\n 'Could not start REST http interface listener. ' + 'Requested address is not available.'\n );\n } else {\n log.error(\n 'Could not start REST http interface listener. The requested ' +\n 'port may already be in use. Please make sure there is no ' +\n 'other instance of this server running already.'\n );\n }\n reject(err);\n }\n );\n\n appiumServer.on(\n 'connection',\n /** @param {AppiumServerSocket} socket */ (socket) => {\n socket.setTimeout(keepAliveTimeout);\n socket.on('error', reject);\n\n function destroy() {\n socket.destroy();\n }\n socket._openReqCount = 0;\n socket.once('close', () => serverState.notifier.removeListener('shutdown', destroy));\n serverState.notifier.once('shutdown', destroy);\n }\n );\n\n appiumServer.on('request', function (req, res) {\n const socket = /** @type {AppiumServerSocket} */ (req.connection || req.socket);\n socket._openReqCount++;\n res.on('finish', function () {\n socket._openReqCount--;\n if (serverState.closed && socket._openReqCount === 0) {\n socket.destroy();\n }\n });\n });\n\n return appiumServer;\n}\n\n/**\n * Starts an {@linkcode AppiumServer}\n * @param {StartServerOpts} opts\n * @returns {Promise<void>}\n */\nasync function startServer({httpServer, port, hostname, keepAliveTimeout}) {\n // If the hostname is omitted, the server will accept\n // connections on any IP address\n /** @type {(port: number, hostname?: string) => B<http.Server>} */\n const start = B.promisify(httpServer.listen, {context: httpServer});\n const startPromise = start(port, hostname);\n httpServer.keepAliveTimeout = keepAliveTimeout;\n // headers timeout must be greater than keepAliveTimeout\n httpServer.headersTimeout = keepAliveTimeout + 5 * 1000;\n await startPromise;\n}\n\n/**\n * Normalize base path string\n * @param {string} basePath\n * @returns {string}\n */\nfunction normalizeBasePath(basePath) {\n if (!_.isString(basePath)) {\n throw new Error(`Invalid path prefix ${basePath}`);\n }\n\n // ensure the path prefix does not end in '/', since our method map\n // starts all paths with '/'\n basePath = basePath.replace(/\\/$/, '');\n\n // likewise, ensure the path prefix does always START with /, unless the path\n // is empty meaning no base path at all\n if (basePath !== '' && basePath[0] !== '/') {\n basePath = `/${basePath}`;\n }\n\n return basePath;\n}\n\nexport {server, configureServer, normalizeBasePath};\n\n/**\n * Options for {@linkcode startServer}.\n * @typedef StartServerOpts\n * @property {import('http').Server} httpServer - HTTP server instance\n * @property {number} port - Port to run on\n * @property {number} keepAliveTimeout - Keep-alive timeout in milliseconds\n * @property {string} [hostname] - Optional hostname\n */\n\n/**\n * @typedef {import('@appium/types').AppiumServer} AppiumServer\n * @typedef {import('@appium/types').AppiumServerSocket} AppiumServerSocket\n * @typedef {import('@appium/types').MethodMap} MethodMap\n */\n\n/**\n * Options for {@linkcode configureHttp}\n * @typedef ConfigureHttpOpts\n * @property {import('http').Server} httpServer - HTTP server instance\n * @property {(error?: any) => void} reject - Rejection function from `Promise` constructor\n * @property {number} keepAliveTimeout - Keep-alive timeout in milliseconds\n */\n\n/**\n * Options for {@linkcode server}\n * @typedef ServerOpts\n * @property {RouteConfiguringFunction} routeConfiguringFunction\n * @property {number} port\n * @property {import('@appium/types').ServerArgs} cliArgs\n * @property {string} [hostname]\n * @property {boolean} [allowCors]\n * @property {string} [basePath]\n * @property {MethodMap} [extraMethodMap]\n * @property {import('@appium/types').UpdateServerCallback[]} [serverUpdaters]\n * @property {number} [keepAliveTimeout]\n */\n\n/**\n * A function which configures routes\n * @callback RouteConfiguringFunction\n * @param {import('express').Express} app\n * @param {RouteConfiguringFunctionOpts} [opts]\n * @returns {void}\n */\n\n/**\n * Options for a {@linkcode RouteConfiguringFunction}\n * @typedef RouteConfiguringFunctionOpts\n * @property {string} [basePath]\n * @property {MethodMap} [extraMethodMap]\n */\n\n/**\n * Options for {@linkcode configureServer}\n * @typedef ConfigureServerOpts\n * @property {import('express').Express} app\n * @property {RouteConfiguringFunction} addRoutes\n * @property {boolean} [allowCors]\n * @property {string} [basePath]\n * @property {MethodMap} [extraMethodMap]\n */\n"],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -23,6 +21,8 @@ var _support = require("@appium/support");
23
21
 
24
22
  var _bluebird = _interopRequireDefault(require("bluebird"));
25
23
 
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
26
  let STATIC_DIR = _path.default.resolve(__dirname, '..', '..', '..', 'static');
27
27
 
28
28
  exports.STATIC_DIR = STATIC_DIR;
@@ -93,4 +93,4 @@ async function getTemplate(templateName) {
93
93
  let content = await _support.fs.readFile(_path.default.resolve(STATIC_DIR, 'test', templateName));
94
94
  return _lodash.default.template(content.toString());
95
95
  }
96
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFUSUNfRElSIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJfIiwiaXNOdWxsIiwibWF0Y2giLCJndWluZWFQaWdUZW1wbGF0ZSIsInJlcSIsInJlcyIsInBhZ2UiLCJkZWxheSIsInBhcnNlSW50IiwicGFyYW1zIiwicXVlcnkiLCJ0aHJvd0Vycm9yIiwic2VydmVyVGltZSIsIkRhdGUiLCJ1c2VyQWdlbnQiLCJoZWFkZXJzIiwiY29tbWVudCIsIm1ldGhvZCIsImJvZHkiLCJjb21tZW50cyIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsIkIiLCJzZXQiLCJjb29raWUiLCJkb21haW4iLCJzZW5kIiwiZ2V0VGVtcGxhdGUiLCJndWluZWFQaWciLCJndWluZWFQaWdTY3JvbGxhYmxlIiwiZ3VpbmVhUGlnQXBwQmFubmVyIiwid2VsY29tZSIsIm1lc3NhZ2UiLCJ0ZW1wbGF0ZU5hbWUiLCJjb250ZW50IiwiZnMiLCJyZWFkRmlsZSIsInRlbXBsYXRlIiwidG9TdHJpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9zdGF0aWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2ZzfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5sZXQgU1RBVElDX0RJUiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdzdGF0aWMnKTtcbmlmIChfLmlzTnVsbChwYXRoLnJlc29sdmUoX19kaXJuYW1lKS5tYXRjaCgvYnVpbGRbL1xcXFxdbGliWy9cXFxcXWV4cHJlc3MkLykpKSB7XG4gIC8vIGluIHNvbWUgY29udGV4dHMgd2UgYXJlIG5vdCBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LFxuICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIGdvIGJhY2sgdGhlIGV4dHJhIGxldmVsXG4gIFNUQVRJQ19ESVIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnc3RhdGljJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ1RlbXBsYXRlKHJlcSwgcmVzLCBwYWdlKSB7XG4gIGNvbnN0IGRlbGF5ID0gcGFyc2VJbnQocmVxLnBhcmFtcy5kZWxheSB8fCByZXEucXVlcnkuZGVsYXkgfHwgMCwgMTApO1xuICBjb25zdCB0aHJvd0Vycm9yID0gcmVxLnBhcmFtcy50aHJvd0Vycm9yIHx8IHJlcS5xdWVyeS50aHJvd0Vycm9yIHx8ICcnO1xuICBsZXQgcGFyYW1zID0ge1xuICAgIHRocm93RXJyb3IsXG4gICAgc2VydmVyVGltZTogbmV3IERhdGUoKSxcbiAgICB1c2VyQWdlbnQ6IHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10sXG4gICAgY29tbWVudDogJ05vbmUnLFxuICB9O1xuICBpZiAocmVxLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgcGFyYW1zLmNvbW1lbnQgPSByZXEuYm9keS5jb21tZW50cyB8fCBwYXJhbXMuY29tbWVudDtcbiAgfVxuICBsb2cuZGVidWcoYFNlbmRpbmcgZ3VpbmVhIHBpZyByZXNwb25zZSB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICBpZiAoZGVsYXkpIHtcbiAgICBsb2cuZGVidWcoYFdhaXRpbmcgJHtkZWxheX1tcyBiZWZvcmUgcmVzcG9uZGluZ2ApO1xuICAgIGF3YWl0IEIuZGVsYXkoZGVsYXkpO1xuICB9XG4gIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgcmVzLmNvb2tpZSgnZ3VpbmVhY29va2llMScsICdpIGFtIGEgY29va2llIHZhbHVlJywge3BhdGg6ICcvJ30pO1xuICByZXMuY29va2llKCdndWluZWFjb29raWUyJywgJ2Nvb2tpw6kyJywge3BhdGg6ICcvJ30pO1xuICByZXMuY29va2llKCdndWluZWFjb29raWUzJywgJ2NhbnQgYWNjZXNzIHRoaXMnLCB7XG4gICAgZG9tYWluOiAnLmJsYXJnaW1hcmcuY29tJyxcbiAgICBwYXRoOiAnLycsXG4gIH0pO1xuICByZXMuc2VuZCgoYXdhaXQgZ2V0VGVtcGxhdGUocGFnZSkpKHBhcmFtcykpO1xufVxuXG4vKlxuICogRHluYW1pYyBwYWdlIG1hcHBlZCB0byAvdGVzdC9ndWluZWEtcGlnXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZyhyZXEsIHJlcykge1xuICByZXR1cm4gYXdhaXQgZ3VpbmVhUGlnVGVtcGxhdGUocmVxLCByZXMsICdndWluZWEtcGlnLmh0bWwnKTtcbn1cblxuLypcbiAqIER5bmFtaWMgcGFnZSBtYXBwZWQgdG8gL3Rlc3QvZ3VpbmVhLXBpZy1zY3JvbGxhYmxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ1Njcm9sbGFibGUocmVxLCByZXMpIHtcbiAgcmV0dXJuIGF3YWl0IGd1aW5lYVBpZ1RlbXBsYXRlKHJlcSwgcmVzLCAnZ3VpbmVhLXBpZy1zY3JvbGxhYmxlLmh0bWwnKTtcbn1cblxuLypcbiAqIER5bmFtaWMgcGFnZSBtYXBwZWQgdG8gL3Rlc3QvZ3VpbmVhLXBpZy1hcHAtYmFubmVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ0FwcEJhbm5lcihyZXEsIHJlcykge1xuICByZXR1cm4gYXdhaXQgZ3VpbmVhUGlnVGVtcGxhdGUocmVxLCByZXMsICdndWluZWEtcGlnLWFwcC1iYW5uZXIuaHRtbCcpO1xufVxuXG4vKlxuICogRHluYW1pYyBwYWdlIG1hcHBlZCB0byAvd2VsY29tZVxuICovXG5hc3luYyBmdW5jdGlvbiB3ZWxjb21lKHJlcSwgcmVzKSB7XG4gIGxldCBwYXJhbXMgPSB7bWVzc2FnZTogXCJMZXQncyBicm93c2UhXCJ9O1xuICBsb2cuZGVidWcoYFNlbmRpbmcgd2VsY29tZSByZXNwb25zZSB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICByZXMuc2VuZCgoYXdhaXQgZ2V0VGVtcGxhdGUoJ3dlbGNvbWUuaHRtbCcpKShwYXJhbXMpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VGVtcGxhdGUodGVtcGxhdGVOYW1lKSB7XG4gIGxldCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKFNUQVRJQ19ESVIsICd0ZXN0JywgdGVtcGxhdGVOYW1lKSk7XG4gIHJldHVybiBfLnRlbXBsYXRlKGNvbnRlbnQudG9TdHJpbmcoKSk7XG59XG5cbmV4cG9ydCB7Z3VpbmVhUGlnLCBndWluZWFQaWdTY3JvbGxhYmxlLCBndWluZWFQaWdBcHBCYW5uZXIsIHdlbGNvbWUsIFNUQVRJQ19ESVJ9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLFFBQTFDLENBQWpCOzs7O0FBQ0EsSUFBSUMsZUFBQSxDQUFFQyxNQUFGLENBQVNKLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCRyxLQUF4QixDQUE4Qiw0QkFBOUIsQ0FBVCxDQUFKLEVBQTJFO0VBR3pFLHFCQUFBTixVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLFFBQXBDLENBQWI7QUFDRDs7QUFFRCxlQUFlSSxpQkFBZixDQUFpQ0MsR0FBakMsRUFBc0NDLEdBQXRDLEVBQTJDQyxJQUEzQyxFQUFpRDtFQUMvQyxNQUFNQyxLQUFLLEdBQUdDLFFBQVEsQ0FBQ0osR0FBRyxDQUFDSyxNQUFKLENBQVdGLEtBQVgsSUFBb0JILEdBQUcsQ0FBQ00sS0FBSixDQUFVSCxLQUE5QixJQUF1QyxDQUF4QyxFQUEyQyxFQUEzQyxDQUF0QjtFQUNBLE1BQU1JLFVBQVUs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
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVEFUSUNfRElSIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJfIiwiaXNOdWxsIiwibWF0Y2giLCJndWluZWFQaWdUZW1wbGF0ZSIsInJlcSIsInJlcyIsInBhZ2UiLCJkZWxheSIsInBhcnNlSW50IiwicGFyYW1zIiwicXVlcnkiLCJ0aHJvd0Vycm9yIiwic2VydmVyVGltZSIsIkRhdGUiLCJ1c2VyQWdlbnQiLCJoZWFkZXJzIiwiY29tbWVudCIsIm1ldGhvZCIsImJvZHkiLCJjb21tZW50cyIsImxvZyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsIkIiLCJzZXQiLCJjb29raWUiLCJkb21haW4iLCJzZW5kIiwiZ2V0VGVtcGxhdGUiLCJndWluZWFQaWciLCJndWluZWFQaWdTY3JvbGxhYmxlIiwiZ3VpbmVhUGlnQXBwQmFubmVyIiwid2VsY29tZSIsIm1lc3NhZ2UiLCJ0ZW1wbGF0ZU5hbWUiLCJjb250ZW50IiwiZnMiLCJyZWFkRmlsZSIsInRlbXBsYXRlIiwidG9TdHJpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXhwcmVzcy9zdGF0aWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2ZzfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5sZXQgU1RBVElDX0RJUiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdzdGF0aWMnKTtcbmlmIChfLmlzTnVsbChwYXRoLnJlc29sdmUoX19kaXJuYW1lKS5tYXRjaCgvYnVpbGRbL1xcXFxdbGliWy9cXFxcXWV4cHJlc3MkLykpKSB7XG4gIC8vIGluIHNvbWUgY29udGV4dHMgd2UgYXJlIG5vdCBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LFxuICAvLyBzbyB3ZSBkb24ndCB3YW50IHRvIGdvIGJhY2sgdGhlIGV4dHJhIGxldmVsXG4gIFNUQVRJQ19ESVIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnc3RhdGljJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ1RlbXBsYXRlKHJlcSwgcmVzLCBwYWdlKSB7XG4gIGNvbnN0IGRlbGF5ID0gcGFyc2VJbnQocmVxLnBhcmFtcy5kZWxheSB8fCByZXEucXVlcnkuZGVsYXkgfHwgMCwgMTApO1xuICBjb25zdCB0aHJvd0Vycm9yID0gcmVxLnBhcmFtcy50aHJvd0Vycm9yIHx8IHJlcS5xdWVyeS50aHJvd0Vycm9yIHx8ICcnO1xuICBsZXQgcGFyYW1zID0ge1xuICAgIHRocm93RXJyb3IsXG4gICAgc2VydmVyVGltZTogbmV3IERhdGUoKSxcbiAgICB1c2VyQWdlbnQ6IHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10sXG4gICAgY29tbWVudDogJ05vbmUnLFxuICB9O1xuICBpZiAocmVxLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgcGFyYW1zLmNvbW1lbnQgPSByZXEuYm9keS5jb21tZW50cyB8fCBwYXJhbXMuY29tbWVudDtcbiAgfVxuICBsb2cuZGVidWcoYFNlbmRpbmcgZ3VpbmVhIHBpZyByZXNwb25zZSB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICBpZiAoZGVsYXkpIHtcbiAgICBsb2cuZGVidWcoYFdhaXRpbmcgJHtkZWxheX1tcyBiZWZvcmUgcmVzcG9uZGluZ2ApO1xuICAgIGF3YWl0IEIuZGVsYXkoZGVsYXkpO1xuICB9XG4gIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgcmVzLmNvb2tpZSgnZ3VpbmVhY29va2llMScsICdpIGFtIGEgY29va2llIHZhbHVlJywge3BhdGg6ICcvJ30pO1xuICByZXMuY29va2llKCdndWluZWFjb29raWUyJywgJ2Nvb2tpw6kyJywge3BhdGg6ICcvJ30pO1xuICByZXMuY29va2llKCdndWluZWFjb29raWUzJywgJ2NhbnQgYWNjZXNzIHRoaXMnLCB7XG4gICAgZG9tYWluOiAnLmJsYXJnaW1hcmcuY29tJyxcbiAgICBwYXRoOiAnLycsXG4gIH0pO1xuICByZXMuc2VuZCgoYXdhaXQgZ2V0VGVtcGxhdGUocGFnZSkpKHBhcmFtcykpO1xufVxuXG4vKlxuICogRHluYW1pYyBwYWdlIG1hcHBlZCB0byAvdGVzdC9ndWluZWEtcGlnXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZyhyZXEsIHJlcykge1xuICByZXR1cm4gYXdhaXQgZ3VpbmVhUGlnVGVtcGxhdGUocmVxLCByZXMsICdndWluZWEtcGlnLmh0bWwnKTtcbn1cblxuLypcbiAqIER5bmFtaWMgcGFnZSBtYXBwZWQgdG8gL3Rlc3QvZ3VpbmVhLXBpZy1zY3JvbGxhYmxlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ1Njcm9sbGFibGUocmVxLCByZXMpIHtcbiAgcmV0dXJuIGF3YWl0IGd1aW5lYVBpZ1RlbXBsYXRlKHJlcSwgcmVzLCAnZ3VpbmVhLXBpZy1zY3JvbGxhYmxlLmh0bWwnKTtcbn1cblxuLypcbiAqIER5bmFtaWMgcGFnZSBtYXBwZWQgdG8gL3Rlc3QvZ3VpbmVhLXBpZy1hcHAtYmFubmVyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGd1aW5lYVBpZ0FwcEJhbm5lcihyZXEsIHJlcykge1xuICByZXR1cm4gYXdhaXQgZ3VpbmVhUGlnVGVtcGxhdGUocmVxLCByZXMsICdndWluZWEtcGlnLWFwcC1iYW5uZXIuaHRtbCcpO1xufVxuXG4vKlxuICogRHluYW1pYyBwYWdlIG1hcHBlZCB0byAvd2VsY29tZVxuICovXG5hc3luYyBmdW5jdGlvbiB3ZWxjb21lKHJlcSwgcmVzKSB7XG4gIGxldCBwYXJhbXMgPSB7bWVzc2FnZTogXCJMZXQncyBicm93c2UhXCJ9O1xuICBsb2cuZGVidWcoYFNlbmRpbmcgd2VsY29tZSByZXNwb25zZSB3aXRoIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWApO1xuICByZXMuc2VuZCgoYXdhaXQgZ2V0VGVtcGxhdGUoJ3dlbGNvbWUuaHRtbCcpKShwYXJhbXMpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VGVtcGxhdGUodGVtcGxhdGVOYW1lKSB7XG4gIGxldCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKFNUQVRJQ19ESVIsICd0ZXN0JywgdGVtcGxhdGVOYW1lKSk7XG4gIHJldHVybiBfLnRlbXBsYXRlKGNvbnRlbnQudG9TdHJpbmcoKSk7XG59XG5cbmV4cG9ydCB7Z3VpbmVhUGlnLCBndWluZWFQaWdTY3JvbGxhYmxlLCBndWluZWFQaWdBcHBCYW5uZXIsIHdlbGNvbWUsIFNUQVRJQ19ESVJ9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxJQUFJQSxVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLFFBQTFDLENBQWpCOzs7O0FBQ0EsSUFBSUMsZUFBQSxDQUFFQyxNQUFGLENBQVNKLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCRyxLQUF4QixDQUE4Qiw0QkFBOUIsQ0FBVCxDQUFKLEVBQTJFO0VBR3pFLHFCQUFBTixVQUFVLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLFFBQXBDLENBQWI7QUFDRDs7QUFFRCxlQUFlSSxpQkFBZixDQUFpQ0MsR0FBakMsRUFBc0NDLEdBQXRDLEVBQTJDQyxJQUEzQyxFQUFpRDtFQUMvQyxNQUFNQyxLQUFLLEdBQUdDLFFBQVEsQ0FBQ0osR0FBRyxDQUFDSyxNQUFKLENBQVdGLEtBQVgsSUFBb0JILEdBQUcsQ0FBQ00sS0FBSixDQUFVSCxLQUE5QixJQUF1QyxDQUF4QyxFQUEyQyxFQUEzQyxDQUF0QjtFQUNBLE1BQU1JLFVBQVUs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.js","names":["STATIC_DIR","path","resolve","__dirname","_","isNull","match","guineaPigTemplate","req","res","page","delay","parseInt","params","query","throwError","serverTime","Date","userAgent","headers","comment","method","body","comments","log","debug","JSON","stringify","B","set","cookie","domain","send","getTemplate","guineaPig","guineaPigScrollable","guineaPigAppBanner","welcome","message","templateName","content","fs","readFile","template","toString"],"sources":["../../../lib/express/static.js"],"sourcesContent":["import path from 'path';\nimport log from './logger';\nimport _ from 'lodash';\nimport {fs} from '@appium/support';\nimport B from 'bluebird';\n\nlet STATIC_DIR = path.resolve(__dirname, '..', '..', '..', 'static');\nif (_.isNull(path.resolve(__dirname).match(/build[/\\\\]lib[/\\\\]express$/))) {\n // in some contexts we are not in the build directory,\n // so we don't want to go back the extra level\n STATIC_DIR = path.resolve(__dirname, '..', '..', 'static');\n}\n\nasync function guineaPigTemplate(req, res, page) {\n const delay = parseInt(req.params.delay || req.query.delay || 0, 10);\n const throwError = req.params.throwError || req.query.throwError || '';\n let params = {\n throwError,\n serverTime: new Date(),\n userAgent: req.headers['user-agent'],\n comment: 'None',\n };\n if (req.method === 'POST') {\n params.comment = req.body.comments || params.comment;\n }\n log.debug(`Sending guinea pig response with params: ${JSON.stringify(params)}`);\n if (delay) {\n log.debug(`Waiting ${delay}ms before responding`);\n await B.delay(delay);\n }\n res.set('content-type', 'text/html');\n res.cookie('guineacookie1', 'i am a cookie value', {path: '/'});\n res.cookie('guineacookie2', 'cookié2', {path: '/'});\n res.cookie('guineacookie3', 'cant access this', {\n domain: '.blargimarg.com',\n path: '/',\n });\n res.send((await getTemplate(page))(params));\n}\n\n/*\n * Dynamic page mapped to /test/guinea-pig\n */\nasync function guineaPig(req, res) {\n return await guineaPigTemplate(req, res, 'guinea-pig.html');\n}\n\n/*\n * Dynamic page mapped to /test/guinea-pig-scrollable\n */\nasync function guineaPigScrollable(req, res) {\n return await guineaPigTemplate(req, res, 'guinea-pig-scrollable.html');\n}\n\n/*\n * Dynamic page mapped to /test/guinea-pig-app-banner\n */\nasync function guineaPigAppBanner(req, res) {\n return await guineaPigTemplate(req, res, 'guinea-pig-app-banner.html');\n}\n\n/*\n * Dynamic page mapped to /welcome\n */\nasync function welcome(req, res) {\n let params = {message: \"Let's browse!\"};\n log.debug(`Sending welcome response with params: ${JSON.stringify(params)}`);\n res.send((await getTemplate('welcome.html'))(params));\n}\n\nasync function getTemplate(templateName) {\n let content = await fs.readFile(path.resolve(STATIC_DIR, 'test', templateName));\n return _.template(content.toString());\n}\n\nexport {guineaPig, guineaPigScrollable, guineaPigAppBanner, welcome, STATIC_DIR};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,IAAIA,UAAU,GAAGC,aAAA,CAAKC,OAAL,CAAaC,SAAb,EAAwB,IAAxB,EAA8B,IAA9B,EAAoC,IAApC,EAA0C,QAA1C,CAAjB;;;;AACA,IAAIC,eAAA,CAAEC,MAAF,CAASJ,aAAA,CAAKC,OAAL,CAAaC,SAAb,EAAwBG,KAAxB,CAA8B,4BAA9B,CAAT,CAAJ,EAA2E;EAGzE,qBAAAN,UAAU,GAAGC,aAAA,CAAKC,OAAL,CAAaC,SAAb,EAAwB,IAAxB,EAA8B,IAA9B,EAAoC,QAApC,CAAb;AACD;;AAED,eAAeI,iBAAf,CAAiCC,GAAjC,EAAsCC,GAAtC,EAA2CC,IAA3C,EAAiD;EAC/C,MAAMC,KAAK,GAAGC,QAAQ,CAACJ,GAAG,CAACK,MAAJ,CAAWF,KAAX,IAAoBH,GAAG,CAACM,KAAJ,CAAUH,KAA9B,IAAuC,CAAxC,EAA2C,EAA3C,CAAtB;EACA,MAAMI,UAAU,GAAGP,GAAG,CAACK,MAAJ,CAAWE,UAAX,IAAyBP,GAAG,CAACM,KAAJ,CAAUC,UAAnC,IAAiD,EAApE;EACA,IAAIF,MAAM,GAAG;IACXE,UADW;IAEXC,UAAU,EAAE,IAAIC,IAAJ,EAFD;IAGXC,SAAS,EAAEV,GAAG,CAACW,OAAJ,CAAY,YAAZ,CAHA;IAIXC,OAAO,EAAE;EAJE,CAAb;;EAMA,IAAIZ,GAAG,CAACa,MAAJ,KAAe,MAAnB,EAA2B;IACzBR,MAAM,CAACO,OAAP,GAAiBZ,GAAG,CAACc,IAAJ,CAASC,QAAT,IAAqBV,MAAM,CAACO,OAA7C;EACD;;EACDI,eAAA,CAAIC,KAAJ,CAAW,4CAA2CC,IAAI,CAACC,SAAL,CAAed,MAAf,CAAuB,EAA7E;;EACA,IAAIF,KAAJ,EAAW;IACTa,eAAA,CAAIC,KAAJ,CAAW,WAAUd,KAAM,sBAA3B;;IACA,MAAMiB,iBAAA,CAAEjB,KAAF,CAAQA,KAAR,CAAN;EACD;;EACDF,GAAG,CAACoB,GAAJ,CAAQ,cAAR,EAAwB,WAAxB;EACApB,GAAG,CAACqB,MAAJ,CAAW,eAAX,EAA4B,qBAA5B,EAAmD;IAAC7B,IAAI,EAAE;EAAP,CAAnD;EACAQ,GAAG,CAACqB,MAAJ,CAAW,eAAX,EAA4B,SAA5B,EAAuC;IAAC7B,IAAI,EAAE;EAAP,CAAvC;EACAQ,GAAG,CAACqB,MAAJ,CAAW,eAAX,EAA4B,kBAA5B,EAAgD;IAC9CC,MAAM,EAAE,iBADsC;IAE9C9B,IAAI,EAAE;EAFwC,CAAhD;EAIAQ,GAAG,CAACuB,IAAJ,CAAS,CAAC,MAAMC,WAAW,CAACvB,IAAD,CAAlB,EAA0BG,MAA1B,CAAT;AACD;;AAKD,eAAeqB,SAAf,CAAyB1B,GAAzB,EAA8BC,GAA9B,EAAmC;EACjC,OAAO,MAAMF,iBAAiB,CAACC,GAAD,EAAMC,GAAN,EAAW,iBAAX,CAA9B;AACD;;AAKD,eAAe0B,mBAAf,CAAmC3B,GAAnC,EAAwCC,GAAxC,EAA6C;EAC3C,OAAO,MAAMF,iBAAiB,CAACC,GAAD,EAAMC,GAAN,EAAW,4BAAX,CAA9B;AACD;;AAKD,eAAe2B,kBAAf,CAAkC5B,GAAlC,EAAuCC,GAAvC,EAA4C;EAC1C,OAAO,MAAMF,iBAAiB,CAACC,GAAD,EAAMC,GAAN,EAAW,4BAAX,CAA9B;AACD;;AAKD,eAAe4B,OAAf,CAAuB7B,GAAvB,EAA4BC,GAA5B,EAAiC;EAC/B,IAAII,MAAM,GAAG;IAACyB,OAAO,EAAE;EAAV,CAAb;;EACAd,eAAA,CAAIC,KAAJ,CAAW,yCAAwCC,IAAI,CAACC,SAAL,CAAed,MAAf,CAAuB,EAA1E;;EACAJ,GAAG,CAACuB,IAAJ,CAAS,CAAC,MAAMC,WAAW,CAAC,cAAD,CAAlB,EAAoCpB,MAApC,CAAT;AACD;;AAED,eAAeoB,WAAf,CAA2BM,YAA3B,EAAyC;EACvC,IAAIC,OAAO,GAAG,MAAMC,WAAA,CAAGC,QAAH,CAAYzC,aAAA,CAAKC,OAAL,CAAaF,UAAb,EAAyB,MAAzB,EAAiCuC,YAAjC,CAAZ,CAApB;EACA,OAAOnC,eAAA,CAAEuC,QAAF,CAAWH,OAAO,CAACI,QAAR,EAAX,CAAP;AACD"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -19,6 +17,8 @@ var _url = require("url");
19
17
 
20
18
  var _bluebird = _interopRequireDefault(require("bluebird"));
21
19
 
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
22
  const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
23
23
  exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;
24
24
 
@@ -97,4 +97,4 @@ async function removeAllWebSocketHandlers() {
97
97
 
98
98
  return _lodash.default.some(await _bluebird.default.all(_lodash.default.keys(this.webSocketsMapping).map(pathname => this.removeWebSocketHandler(pathname))));
99
99
  }
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJoYW5kbGVyUGF0aG5hbWUiLCJoYW5kbGVyU2VydmVyIiwic2VydmVyIiwiXyIsImlzVW5kZWZpbmVkIiwid2ViU29ja2V0c01hcHBpbmciLCJvbiIsInJlcXVlc3QiLCJzb2NrZXQiLCJoZWFkIiwiY3VycmVudFBhdGhuYW1lIiwiVVJMIiwidXJsIiwicGF0aG5hbWUiLCJ3c1NlcnZlciIsInRvUGFpcnMiLCJoYW5kbGVVcGdyYWRlIiwid3MiLCJlbWl0IiwiZGVzdHJveSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwia2V5c0ZpbHRlciIsImlzRW1wdHkiLCJyZWR1Y2UiLCJhY2MiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImNsb3NlIiwiY2xpZW50IiwiY2xpZW50cyIsInRlcm1pbmF0ZSIsImlnbiIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwic29tZSIsIkIiLCJhbGwiLCJrZXlzIiwibWFwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4cHJlc3Mvd2Vic29ja2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1VSTH0gZnJvbSAndXJsJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggPSAnL3dzJztcblxuLyoqXG4gKiBBZGRzIHdlYnNvY2tldCBoYW5kbGVyIHRvIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHRoaXMge0FwcGl1bVNlcnZlcn0gLSBBbiBpbnN0YW5jZSBvZiBleHByZXNzIEhUVFAgc2VydmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJQYXRobmFtZSAtIFdlYiBzb2NrZXQgZW5kcG9pbnQgcGF0aCBzdGFydGluZyB3aXRoXG4gKiBhIHNpbmdsZSBzbGFzaCBjaGFyYWN0ZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cyBhZGRcbiAqIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIHRvIGFsbCB3ZWIgc29ja2V0IHBhdGhuYW1lcy5cbiAqIEBwYXJhbSB7aW1wb3J0KCd3cycpLlNlcnZlcn0gaGFuZGxlclNlcnZlciAtIFdlYlNvY2tldCBzZXJ2ZXIgaW5zdGFuY2UuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC84ODUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUgaGFuZGxlciBwcm9wZXJseS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRXZWJTb2NrZXRIYW5kbGVyKGhhbmRsZXJQYXRobmFtZSwgaGFuZGxlclNlcnZlcikge1xuICBjb25zdCBzZXJ2ZXIgPSAvKiogQHR5cGUge0FwcGl1bVNlcnZlcn0gKi8gKHRoaXMpO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHNlcnZlci53ZWJTb2NrZXRzTWFwcGluZyA9IHt9O1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvODg1XG4gICAgc2VydmVyLm9uKCd1cGdyYWRlJywgKHJlcXVlc3QsIHNvY2tldCwgaGVhZCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRQYXRobmFtZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gcmVxdWVzdC51cmw7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtwYXRobmFtZSwgd3NTZXJ2ZXJdIG9mIF8udG9QYWlycyhzZXJ2ZXIud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgICAgIGlmIChjdXJyZW50UGF0aG5hbWUgPT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgd3NTZXJ2ZXIuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsICh3cykgPT4ge1xuICAgICAgICAgICAgd3NTZXJ2ZXIuZW1pdCgnY29ubmVjdGlvbicsIHdzLCByZXF1ZXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdID0gaGFuZGxlclNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdlYiBzb2NrZXQgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIHNlcnZlclxuICogaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtzdHJpbmc/fSBba2V5c0ZpbHRlcl0gLSBPbmx5IGluY2x1ZGUgcGF0aG5hbWVzIHdpdGggZ2l2ZW5cbiAqIGBrZXlzRmlsdGVyYCB2YWx1ZSBpZiBzZXQuIEFsbCBwYWlycyB3aWxsIGJlIGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ3dzJykuU2VydmVyPj59IHBhdGhuYW1lcyB0byB3ZWJzb2NrZXQgc2VydmVyIGluc3RhbmNlcyBtYXBwaW5nIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEgb3IgYW4gZW1wdHkgb2JqZWN0IG90aGVyd2lzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmFzeW5jIGZ1bmN0aW9uIGdldFdlYlNvY2tldEhhbmRsZXJzKGtleXNGaWx0ZXIgPSBudWxsKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpLnJlZHVjZSgoYWNjLCBbcGF0aG5hbWUsIHdzU2VydmVyXSkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhrZXlzRmlsdGVyKSB8fCBwYXRobmFtZS5pbmNsdWRlcyhrZXlzRmlsdGVyKSkge1xuICAgICAgYWNjW3BhdGhuYW1lXSA9IHdzU2VydmVyO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogVGhlIGNhbGwgaXMgaWdub3JlZCBpZiB0aGUgZ2l2ZW4gYGhhbmRsZXJQYXRobmFtZWAgaGFuZGxlclxuICogaXMgbm90IHByZXNlbnQgaW4gdGhlIGhhbmRsZXJzIGxpc3QuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqIEB0aGlzIHtBcHBpdW1TZXJ2ZXJ9XG4gKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlclBhdGhuYW1lIC0gV2Vic29ja2V0IGVuZHBvaW50IHBhdGguXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gdHJ1ZSBpZiB0aGUgaGFuZGxlclBhdGhuYW1lIHdhcyBmb3VuZCBhbmQgZGVsZXRlZFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcihoYW5kbGVyUGF0aG5hbWUpIHtcbiAgY29uc3Qgd3NTZXJ2ZXIgPSB0aGlzLndlYlNvY2tldHNNYXBwaW5nPy5baGFuZGxlclBhdGhuYW1lXTtcbiAgaWYgKCF3c1NlcnZlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgd3NTZXJ2ZXIuY2xvc2UoKTtcbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiB3c1NlcnZlci5jbGllbnRzIHx8IFtdKSB7XG4gICAgICBjbGllbnQudGVybWluYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICAvLyBpZ25vcmVcbiAgfSBmaW5hbGx5IHtcbiAgICBkZWxldGUgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IHRydWUgaWYgYXQgbGVhc3Qgb25lIGhhbmRsZXIgaGFzIGJlZW4gZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycygpIHtcbiAgaWYgKF8uaXNFbXB0eSh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBfLnNvbWUoXG4gICAgYXdhaXQgQi5hbGwoXG4gICAgICBfLmtleXModGhpcy53ZWJTb2NrZXRzTWFwcGluZykubWFwKChwYXRobmFtZSkgPT4gdGhpcy5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCB7XG4gIGFkZFdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZVdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzLFxuICBnZXRXZWJTb2NrZXRIYW5kbGVycyxcbiAgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1TZXJ2ZXJ9IEFwcGl1bVNlcnZlclxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLDBCQUEwQixHQUFHLEtBQW5DOzs7QUFnQkEsZUFBZUMsbUJBQWYsQ0FBbUNDLGVBQW5DLEVBQW9EQyxhQUFwRCxFQUFtRTtFQUNqRSxNQUFNQyxNQUFNLEdBQWdDLElBQTVDOztFQUNBLElBQUlDLGVBQUEsQ0FBRUMsV0FBRixDQUFjLEtBQUtDLGlCQUFuQixDQUFKLEVBQTJDO0lBQ3pDSCxNQUFNLENBQUNHLGlCQUFQLEdBQTJCLEVBQTNCO0lBRUFILE1BQU0sQ0FBQ0ksRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQWtCQyxJQUFsQixLQUEyQjtNQUM5QyxJQUFJQyxlQUFKOztNQUNBLElBQUk7UUFFRkEsZUFBZSxHQUFHLElBQUlDLFFBQUosQ0FBUUosT0FBTyxDQUFDSyxHQUFoQixFQUFxQkMsUUFBdkM7TUFDRCxDQUhELENBR0UsTUFBTTtRQUNOSCxlQUFlLEdBQUdILE9BQU8sQ0FBQ0ssR0FBMUI7TUFDRDs7TUFDRCxLQUFLLE1BQU0sQ0FBQ0MsUUFBRCxFQUFXQyxRQUFYLENBQVgsSUFBbUNYLGVBQUEsQ0FBRVksT0FBRixDQUFVYixNQUFNLENBQUNHLGlCQUFqQixDQUFuQyxFQUF3RTtRQUN0RSxJQUFJSyxlQUFlLEtBQUtHLFFBQXhCLEVBQWtDO1VBQ2hDQyxRQUFRLENBQUNFLGFBQVQsQ0FBdUJULE9BQXZCLEVBQWdDQyxNQUFoQyxFQUF3Q0MsSUFBeEMsRUFBK0NRLEVBQUQsSUFBUTtZQUNwREgsUUFBUSxDQUFDSSxJQUFULENBQWMsWUFBZCxFQUE0QkQsRUFBNUIsRUFBZ0NWLE9BQWhDO1VBQ0QsQ0FGRDtVQUdBO1FBQ0Q7TUFDRjs7TUFDREMsTUFBTSxDQUFDVyxPQUFQO0lBQ0QsQ0FqQkQ7RUFrQkQ7O0VBQ0QsS0FBS2QsaUJBQUwsQ0FBdUJMLGVBQXZCLElBQTBDQyxhQUExQztBQUNEOztBQWNELGVBQWVtQixvQkFBZixDQUFvQ0MsVUFBVSxHQUFHLElBQWpELEVBQXVEO0VBQ3JELElBQUlsQixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxFQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFWSxPQUFGLENBQVUsS0FBS1YsaUJBQWYsRUFBa0NrQixNQUFsQyxDQUF5QyxDQUFDQyxHQUFELEVBQU0sQ0FBQ1gsUUFBRCxFQUFXQyxRQUFYLENBQU4sS0FBK0I7SUFDN0UsSUFBSSxDQUFDWCxlQUFBLENBQUVzQixRQUFGLENBQVdKLFVBQVgsQ0FBRCxJQUEyQlIsUUFBUSxDQUFDYSxRQUFULENBQWtCTCxVQUFsQixDQUEvQixFQUE4RDtNQUM1REcsR0FBRyxDQUFDWCxRQUFELENBQUgsR0FBZ0JDLFFBQWhCO0lBQ0Q7O0lBQ0QsT0FBT1UsR0FBUDtFQUNELENBTE0sRUFLSixFQUxJLENBQVA7QUFNRDs7QUFhRCxlQUFlRyxzQkFBZixDQUFzQzNCLGVBQXRDLEVBQXVEO0VBQUE7O0VBQ3JELE1BQU1jLFFBQVEsNEJBQUcsS0FBS1QsaUJBQVIsMERBQUcsc0JBQXlCTCxlQUF6QixDQUFqQjs7RUFDQSxJQUFJLENBQUNjLFFBQUwsRUFBZTtJQUNiLE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUk7SUFDRkEsUUFBUSxDQUFDYyxLQUFUOztJQUNBLEtBQUssTUFBTUMsTUFBWCxJQUFxQmYsUUFBUSxDQUFDZ0IsT0FBVCxJQUFvQixFQUF6QyxFQUE2QztNQUMzQ0QsTUFBTSxDQUFDRSxTQUFQO0lBQ0Q7O0lBQ0QsT0FBTyxJQUFQO0VBQ0QsQ0FORCxDQU1FLE9BQU9DLEdBQVAsRUFBWSxDQUViLENBUkQsU0FRVTtJQUNSLE9BQU8sS0FBSzNCLGlCQUFMLENBQXVCTCxlQUF2QixDQUFQO0VBQ0Q7O0VBQ0QsT0FBTyxLQUFQO0FBQ0Q7O0FBU0QsZUFBZWlDLDBCQUFmLEdBQTRDO0VBQzFDLElBQUk5QixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFK0IsSUFBRixDQUNMLE1BQU1DLGlCQUFBLENBQUVDLEdBQUYsQ0FDSmpDLGVBQUEsQ0FBRWtDLElBQUYsQ0FBTyxLQUFLaEMsaUJBQVosRUFBK0JpQyxHQUEvQixDQUFvQ3pCLFFBQUQsSUFBYyxLQUFLYyxzQkFBTCxDQUE0QmQsUUFBNUIsQ0FBakQsQ0FESSxDQURELENBQVA7QUFLRCJ9
100
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJoYW5kbGVyUGF0aG5hbWUiLCJoYW5kbGVyU2VydmVyIiwic2VydmVyIiwiXyIsImlzVW5kZWZpbmVkIiwid2ViU29ja2V0c01hcHBpbmciLCJvbiIsInJlcXVlc3QiLCJzb2NrZXQiLCJoZWFkIiwiY3VycmVudFBhdGhuYW1lIiwiVVJMIiwidXJsIiwicGF0aG5hbWUiLCJ3c1NlcnZlciIsInRvUGFpcnMiLCJoYW5kbGVVcGdyYWRlIiwid3MiLCJlbWl0IiwiZGVzdHJveSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwia2V5c0ZpbHRlciIsImlzRW1wdHkiLCJyZWR1Y2UiLCJhY2MiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImNsb3NlIiwiY2xpZW50IiwiY2xpZW50cyIsInRlcm1pbmF0ZSIsImlnbiIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwic29tZSIsIkIiLCJhbGwiLCJrZXlzIiwibWFwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2V4cHJlc3Mvd2Vic29ja2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1VSTH0gZnJvbSAndXJsJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggPSAnL3dzJztcblxuLyoqXG4gKiBBZGRzIHdlYnNvY2tldCBoYW5kbGVyIHRvIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHRoaXMge0FwcGl1bVNlcnZlcn0gLSBBbiBpbnN0YW5jZSBvZiBleHByZXNzIEhUVFAgc2VydmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJQYXRobmFtZSAtIFdlYiBzb2NrZXQgZW5kcG9pbnQgcGF0aCBzdGFydGluZyB3aXRoXG4gKiBhIHNpbmdsZSBzbGFzaCBjaGFyYWN0ZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cyBhZGRcbiAqIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIHRvIGFsbCB3ZWIgc29ja2V0IHBhdGhuYW1lcy5cbiAqIEBwYXJhbSB7aW1wb3J0KCd3cycpLlNlcnZlcn0gaGFuZGxlclNlcnZlciAtIFdlYlNvY2tldCBzZXJ2ZXIgaW5zdGFuY2UuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC84ODUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUgaGFuZGxlciBwcm9wZXJseS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRXZWJTb2NrZXRIYW5kbGVyKGhhbmRsZXJQYXRobmFtZSwgaGFuZGxlclNlcnZlcikge1xuICBjb25zdCBzZXJ2ZXIgPSAvKiogQHR5cGUge0FwcGl1bVNlcnZlcn0gKi8gKHRoaXMpO1xuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHNlcnZlci53ZWJTb2NrZXRzTWFwcGluZyA9IHt9O1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXRzL3dzL3B1bGwvODg1XG4gICAgc2VydmVyLm9uKCd1cGdyYWRlJywgKHJlcXVlc3QsIHNvY2tldCwgaGVhZCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRQYXRobmFtZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gbmV3IFVSTChyZXF1ZXN0LnVybCkucGF0aG5hbWU7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gcmVxdWVzdC51cmw7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtwYXRobmFtZSwgd3NTZXJ2ZXJdIG9mIF8udG9QYWlycyhzZXJ2ZXIud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgICAgIGlmIChjdXJyZW50UGF0aG5hbWUgPT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgd3NTZXJ2ZXIuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsICh3cykgPT4ge1xuICAgICAgICAgICAgd3NTZXJ2ZXIuZW1pdCgnY29ubmVjdGlvbicsIHdzLCByZXF1ZXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdID0gaGFuZGxlclNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdlYiBzb2NrZXQgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIHNlcnZlclxuICogaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHBhcmFtIHtzdHJpbmc/fSBba2V5c0ZpbHRlcl0gLSBPbmx5IGluY2x1ZGUgcGF0aG5hbWVzIHdpdGggZ2l2ZW5cbiAqIGBrZXlzRmlsdGVyYCB2YWx1ZSBpZiBzZXQuIEFsbCBwYWlycyB3aWxsIGJlIGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ3dzJykuU2VydmVyPj59IHBhdGhuYW1lcyB0byB3ZWJzb2NrZXQgc2VydmVyIGluc3RhbmNlcyBtYXBwaW5nIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEgb3IgYW4gZW1wdHkgb2JqZWN0IG90aGVyd2lzZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmFzeW5jIGZ1bmN0aW9uIGdldFdlYlNvY2tldEhhbmRsZXJzKGtleXNGaWx0ZXIgPSBudWxsKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpLnJlZHVjZSgoYWNjLCBbcGF0aG5hbWUsIHdzU2VydmVyXSkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhrZXlzRmlsdGVyKSB8fCBwYXRobmFtZS5pbmNsdWRlcyhrZXlzRmlsdGVyKSkge1xuICAgICAgYWNjW3BhdGhuYW1lXSA9IHdzU2VydmVyO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogVGhlIGNhbGwgaXMgaWdub3JlZCBpZiB0aGUgZ2l2ZW4gYGhhbmRsZXJQYXRobmFtZWAgaGFuZGxlclxuICogaXMgbm90IHByZXNlbnQgaW4gdGhlIGhhbmRsZXJzIGxpc3QuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqIEB0aGlzIHtBcHBpdW1TZXJ2ZXJ9XG4gKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlclBhdGhuYW1lIC0gV2Vic29ja2V0IGVuZHBvaW50IHBhdGguXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gdHJ1ZSBpZiB0aGUgaGFuZGxlclBhdGhuYW1lIHdhcyBmb3VuZCBhbmQgZGVsZXRlZFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlV2ViU29ja2V0SGFuZGxlcihoYW5kbGVyUGF0aG5hbWUpIHtcbiAgY29uc3Qgd3NTZXJ2ZXIgPSB0aGlzLndlYlNvY2tldHNNYXBwaW5nPy5baGFuZGxlclBhdGhuYW1lXTtcbiAgaWYgKCF3c1NlcnZlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgd3NTZXJ2ZXIuY2xvc2UoKTtcbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiB3c1NlcnZlci5jbGllbnRzIHx8IFtdKSB7XG4gICAgICBjbGllbnQudGVybWluYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICAvLyBpZ25vcmVcbiAgfSBmaW5hbGx5IHtcbiAgICBkZWxldGUgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKiBAdGhpcyB7QXBwaXVtU2VydmVyfVxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IHRydWUgaWYgYXQgbGVhc3Qgb25lIGhhbmRsZXIgaGFzIGJlZW4gZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycygpIHtcbiAgaWYgKF8uaXNFbXB0eSh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBfLnNvbWUoXG4gICAgYXdhaXQgQi5hbGwoXG4gICAgICBfLmtleXModGhpcy53ZWJTb2NrZXRzTWFwcGluZykubWFwKChwYXRobmFtZSkgPT4gdGhpcy5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCB7XG4gIGFkZFdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZVdlYlNvY2tldEhhbmRsZXIsXG4gIHJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzLFxuICBnZXRXZWJTb2NrZXRIYW5kbGVycyxcbiAgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1TZXJ2ZXJ9IEFwcGl1bVNlcnZlclxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLDBCQUEwQixHQUFHLEtBQW5DOzs7QUFnQkEsZUFBZUMsbUJBQWYsQ0FBbUNDLGVBQW5DLEVBQW9EQyxhQUFwRCxFQUFtRTtFQUNqRSxNQUFNQyxNQUFNLEdBQWdDLElBQTVDOztFQUNBLElBQUlDLGVBQUEsQ0FBRUMsV0FBRixDQUFjLEtBQUtDLGlCQUFuQixDQUFKLEVBQTJDO0lBQ3pDSCxNQUFNLENBQUNHLGlCQUFQLEdBQTJCLEVBQTNCO0lBRUFILE1BQU0sQ0FBQ0ksRUFBUCxDQUFVLFNBQVYsRUFBcUIsQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQWtCQyxJQUFsQixLQUEyQjtNQUM5QyxJQUFJQyxlQUFKOztNQUNBLElBQUk7UUFFRkEsZUFBZSxHQUFHLElBQUlDLFFBQUosQ0FBUUosT0FBTyxDQUFDSyxHQUFoQixFQUFxQkMsUUFBdkM7TUFDRCxDQUhELENBR0UsTUFBTTtRQUNOSCxlQUFlLEdBQUdILE9BQU8sQ0FBQ0ssR0FBMUI7TUFDRDs7TUFDRCxLQUFLLE1BQU0sQ0FBQ0MsUUFBRCxFQUFXQyxRQUFYLENBQVgsSUFBbUNYLGVBQUEsQ0FBRVksT0FBRixDQUFVYixNQUFNLENBQUNHLGlCQUFqQixDQUFuQyxFQUF3RTtRQUN0RSxJQUFJSyxlQUFlLEtBQUtHLFFBQXhCLEVBQWtDO1VBQ2hDQyxRQUFRLENBQUNFLGFBQVQsQ0FBdUJULE9BQXZCLEVBQWdDQyxNQUFoQyxFQUF3Q0MsSUFBeEMsRUFBK0NRLEVBQUQsSUFBUTtZQUNwREgsUUFBUSxDQUFDSSxJQUFULENBQWMsWUFBZCxFQUE0QkQsRUFBNUIsRUFBZ0NWLE9BQWhDO1VBQ0QsQ0FGRDtVQUdBO1FBQ0Q7TUFDRjs7TUFDREMsTUFBTSxDQUFDVyxPQUFQO0lBQ0QsQ0FqQkQ7RUFrQkQ7O0VBQ0QsS0FBS2QsaUJBQUwsQ0FBdUJMLGVBQXZCLElBQTBDQyxhQUExQztBQUNEOztBQWNELGVBQWVtQixvQkFBZixDQUFvQ0MsVUFBVSxHQUFHLElBQWpELEVBQXVEO0VBQ3JELElBQUlsQixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxFQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFWSxPQUFGLENBQVUsS0FBS1YsaUJBQWYsRUFBa0NrQixNQUFsQyxDQUF5QyxDQUFDQyxHQUFELEVBQU0sQ0FBQ1gsUUFBRCxFQUFXQyxRQUFYLENBQU4sS0FBK0I7SUFDN0UsSUFBSSxDQUFDWCxlQUFBLENBQUVzQixRQUFGLENBQVdKLFVBQVgsQ0FBRCxJQUEyQlIsUUFBUSxDQUFDYSxRQUFULENBQWtCTCxVQUFsQixDQUEvQixFQUE4RDtNQUM1REcsR0FBRyxDQUFDWCxRQUFELENBQUgsR0FBZ0JDLFFBQWhCO0lBQ0Q7O0lBQ0QsT0FBT1UsR0FBUDtFQUNELENBTE0sRUFLSixFQUxJLENBQVA7QUFNRDs7QUFhRCxlQUFlRyxzQkFBZixDQUFzQzNCLGVBQXRDLEVBQXVEO0VBQUE7O0VBQ3JELE1BQU1jLFFBQVEsNEJBQUcsS0FBS1QsaUJBQVIsMERBQUcsc0JBQXlCTCxlQUF6QixDQUFqQjs7RUFDQSxJQUFJLENBQUNjLFFBQUwsRUFBZTtJQUNiLE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUk7SUFDRkEsUUFBUSxDQUFDYyxLQUFUOztJQUNBLEtBQUssTUFBTUMsTUFBWCxJQUFxQmYsUUFBUSxDQUFDZ0IsT0FBVCxJQUFvQixFQUF6QyxFQUE2QztNQUMzQ0QsTUFBTSxDQUFDRSxTQUFQO0lBQ0Q7O0lBQ0QsT0FBTyxJQUFQO0VBQ0QsQ0FORCxDQU1FLE9BQU9DLEdBQVAsRUFBWSxDQUViLENBUkQsU0FRVTtJQUNSLE9BQU8sS0FBSzNCLGlCQUFMLENBQXVCTCxlQUF2QixDQUFQO0VBQ0Q7O0VBQ0QsT0FBTyxLQUFQO0FBQ0Q7O0FBU0QsZUFBZWlDLDBCQUFmLEdBQTRDO0VBQzFDLElBQUk5QixlQUFBLENBQUVtQixPQUFGLENBQVUsS0FBS2pCLGlCQUFmLENBQUosRUFBdUM7SUFDckMsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsT0FBT0YsZUFBQSxDQUFFK0IsSUFBRixDQUNMLE1BQU1DLGlCQUFBLENBQUVDLEdBQUYsQ0FDSmpDLGVBQUEsQ0FBRWtDLElBQUYsQ0FBTyxLQUFLaEMsaUJBQVosRUFBK0JpQyxHQUEvQixDQUFvQ3pCLFFBQUQsSUFBYyxLQUFLYyxzQkFBTCxDQUE0QmQsUUFBNUIsQ0FBakQsQ0FESSxDQURELENBQVA7QUFLRCJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","names":["DEFAULT_WS_PATHNAME_PREFIX","addWebSocketHandler","handlerPathname","handlerServer","server","_","isUndefined","webSocketsMapping","on","request","socket","head","currentPathname","URL","url","pathname","wsServer","toPairs","handleUpgrade","ws","emit","destroy","getWebSocketHandlers","keysFilter","isEmpty","reduce","acc","isString","includes","removeWebSocketHandler","close","client","clients","terminate","ign","removeAllWebSocketHandlers","some","B","all","keys","map"],"sources":["../../../lib/express/websocket.js"],"sourcesContent":["/* eslint-disable require-await */\nimport _ from 'lodash';\nimport {URL} from 'url';\nimport B from 'bluebird';\n\nconst DEFAULT_WS_PATHNAME_PREFIX = '/ws';\n\n/**\n * Adds websocket handler to express server instance.\n * It is expected this function is called in Express\n * server instance context.\n *\n * @this {AppiumServer} - An instance of express HTTP server.\n * @param {string} handlerPathname - Web socket endpoint path starting with\n * a single slash character. It is recommended to always add\n * DEFAULT_WS_PATHNAME_PREFIX to all web socket pathnames.\n * @param {import('ws').Server} handlerServer - WebSocket server instance. See\n * https://github.com/websockets/ws/pull/885 for more details\n * on how to configure the handler properly.\n * @returns {Promise<void>}\n */\nasync function addWebSocketHandler(handlerPathname, handlerServer) {\n const server = /** @type {AppiumServer} */ (this);\n if (_.isUndefined(this.webSocketsMapping)) {\n server.webSocketsMapping = {};\n // https://github.com/websockets/ws/pull/885\n server.on('upgrade', (request, socket, head) => {\n let currentPathname;\n try {\n // @ts-expect-error\n currentPathname = new URL(request.url).pathname;\n } catch {\n currentPathname = request.url;\n }\n for (const [pathname, wsServer] of _.toPairs(server.webSocketsMapping)) {\n if (currentPathname === pathname) {\n wsServer.handleUpgrade(request, socket, head, (ws) => {\n wsServer.emit('connection', ws, request);\n });\n return;\n }\n }\n socket.destroy();\n });\n }\n this.webSocketsMapping[handlerPathname] = handlerServer;\n}\n\n/**\n * Returns web socket handlers registered for the given server\n * instance.\n * It is expected this function is called in Express\n * server instance context.\n *\n * @this {AppiumServer}\n * @param {string?} [keysFilter] - Only include pathnames with given\n * `keysFilter` value if set. All pairs will be included by default.\n * @returns {Promise<Record<string, import('ws').Server>>} pathnames to websocket server instances mapping matching the search criteria or an empty object otherwise.\n */\n// eslint-disable-next-line require-await\nasync function getWebSocketHandlers(keysFilter = null) {\n if (_.isEmpty(this.webSocketsMapping)) {\n return {};\n }\n\n return _.toPairs(this.webSocketsMapping).reduce((acc, [pathname, wsServer]) => {\n if (!_.isString(keysFilter) || pathname.includes(keysFilter)) {\n acc[pathname] = wsServer;\n }\n return acc;\n }, {});\n}\n\n/**\n * Removes existing websocket handler from express server instance.\n * The call is ignored if the given `handlerPathname` handler\n * is not present in the handlers list.\n * It is expected this function is called in Express\n * server instance context.\n * @this {AppiumServer}\n * @param {string} handlerPathname - Websocket endpoint path.\n * @returns {Promise<boolean>} true if the handlerPathname was found and deleted\n */\n// eslint-disable-next-line require-await\nasync function removeWebSocketHandler(handlerPathname) {\n const wsServer = this.webSocketsMapping?.[handlerPathname];\n if (!wsServer) {\n return false;\n }\n\n try {\n wsServer.close();\n for (const client of wsServer.clients || []) {\n client.terminate();\n }\n return true;\n } catch (ign) {\n // ignore\n } finally {\n delete this.webSocketsMapping[handlerPathname];\n }\n return false;\n}\n\n/**\n * Removes all existing websocket handler from express server instance.\n * It is expected this function is called in Express\n * server instance context.\n * @this {AppiumServer}\n * @returns {Promise<boolean>} true if at least one handler has been deleted\n */\nasync function removeAllWebSocketHandlers() {\n if (_.isEmpty(this.webSocketsMapping)) {\n return false;\n }\n\n return _.some(\n await B.all(\n _.keys(this.webSocketsMapping).map((pathname) => this.removeWebSocketHandler(pathname))\n )\n );\n}\n\nexport {\n addWebSocketHandler,\n removeWebSocketHandler,\n removeAllWebSocketHandlers,\n getWebSocketHandlers,\n DEFAULT_WS_PATHNAME_PREFIX,\n};\n\n/**\n * @typedef {import('@appium/types').AppiumServer} AppiumServer\n */\n"],"mappings":";;;;;;;;;;;;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,0BAA0B,GAAG,KAAnC;;;AAgBA,eAAeC,mBAAf,CAAmCC,eAAnC,EAAoDC,aAApD,EAAmE;EACjE,MAAMC,MAAM,GAAgC,IAA5C;;EACA,IAAIC,eAAA,CAAEC,WAAF,CAAc,KAAKC,iBAAnB,CAAJ,EAA2C;IACzCH,MAAM,CAACG,iBAAP,GAA2B,EAA3B;IAEAH,MAAM,CAACI,EAAP,CAAU,SAAV,EAAqB,CAACC,OAAD,EAAUC,MAAV,EAAkBC,IAAlB,KAA2B;MAC9C,IAAIC,eAAJ;;MACA,IAAI;QAEFA,eAAe,GAAG,IAAIC,QAAJ,CAAQJ,OAAO,CAACK,GAAhB,EAAqBC,QAAvC;MACD,CAHD,CAGE,MAAM;QACNH,eAAe,GAAGH,OAAO,CAACK,GAA1B;MACD;;MACD,KAAK,MAAM,CAACC,QAAD,EAAWC,QAAX,CAAX,IAAmCX,eAAA,CAAEY,OAAF,CAAUb,MAAM,CAACG,iBAAjB,CAAnC,EAAwE;QACtE,IAAIK,eAAe,KAAKG,QAAxB,EAAkC;UAChCC,QAAQ,CAACE,aAAT,CAAuBT,OAAvB,EAAgCC,MAAhC,EAAwCC,IAAxC,EAA+CQ,EAAD,IAAQ;YACpDH,QAAQ,CAACI,IAAT,CAAc,YAAd,EAA4BD,EAA5B,EAAgCV,OAAhC;UACD,CAFD;UAGA;QACD;MACF;;MACDC,MAAM,CAACW,OAAP;IACD,CAjBD;EAkBD;;EACD,KAAKd,iBAAL,CAAuBL,eAAvB,IAA0CC,aAA1C;AACD;;AAcD,eAAemB,oBAAf,CAAoCC,UAAU,GAAG,IAAjD,EAAuD;EACrD,IAAIlB,eAAA,CAAEmB,OAAF,CAAU,KAAKjB,iBAAf,CAAJ,EAAuC;IACrC,OAAO,EAAP;EACD;;EAED,OAAOF,eAAA,CAAEY,OAAF,CAAU,KAAKV,iBAAf,EAAkCkB,MAAlC,CAAyC,CAACC,GAAD,EAAM,CAACX,QAAD,EAAWC,QAAX,CAAN,KAA+B;IAC7E,IAAI,CAACX,eAAA,CAAEsB,QAAF,CAAWJ,UAAX,CAAD,IAA2BR,QAAQ,CAACa,QAAT,CAAkBL,UAAlB,CAA/B,EAA8D;MAC5DG,GAAG,CAACX,QAAD,CAAH,GAAgBC,QAAhB;IACD;;IACD,OAAOU,GAAP;EACD,CALM,EAKJ,EALI,CAAP;AAMD;;AAaD,eAAeG,sBAAf,CAAsC3B,eAAtC,EAAuD;EAAA;;EACrD,MAAMc,QAAQ,4BAAG,KAAKT,iBAAR,0DAAG,sBAAyBL,eAAzB,CAAjB;;EACA,IAAI,CAACc,QAAL,EAAe;IACb,OAAO,KAAP;EACD;;EAED,IAAI;IACFA,QAAQ,CAACc,KAAT;;IACA,KAAK,MAAMC,MAAX,IAAqBf,QAAQ,CAACgB,OAAT,IAAoB,EAAzC,EAA6C;MAC3CD,MAAM,CAACE,SAAP;IACD;;IACD,OAAO,IAAP;EACD,CAND,CAME,OAAOC,GAAP,EAAY,CAEb,CARD,SAQU;IACR,OAAO,KAAK3B,iBAAL,CAAuBL,eAAvB,CAAP;EACD;;EACD,OAAO,KAAP;AACD;;AASD,eAAeiC,0BAAf,GAA4C;EAC1C,IAAI9B,eAAA,CAAEmB,OAAF,CAAU,KAAKjB,iBAAf,CAAJ,EAAuC;IACrC,OAAO,KAAP;EACD;;EAED,OAAOF,eAAA,CAAE+B,IAAF,CACL,MAAMC,iBAAA,CAAEC,GAAF,CACJjC,eAAA,CAAEkC,IAAF,CAAO,KAAKhC,iBAAZ,EAA+BiC,GAA/B,CAAoCzB,QAAD,IAAc,KAAKc,sBAAL,CAA4Bd,QAA5B,CAAjD,CADI,CADD,CAAP;AAKD"}
@@ -1,13 +1,74 @@
1
- export type Capabilities = import('@appium/types').Capabilities;
2
1
  export type Constraints = import('@appium/types').Constraints;
3
2
  export type AppiumLogger = import('@appium/types').AppiumLogger;
3
+ export type StringRecord = import('@appium/types').StringRecord;
4
+ export type BaseDriverCapConstraints = import('@appium/types').BaseDriverCapConstraints;
5
+ export type Capabilities<C extends Readonly<Record<string, import("@appium/types").Constraint>> = {
6
+ readonly platformName: {
7
+ readonly presence: true;
8
+ readonly isString: true;
9
+ };
10
+ readonly app: {
11
+ readonly isString: true;
12
+ };
13
+ readonly deviceName: {
14
+ readonly isString: true;
15
+ };
16
+ readonly platformVersion: {
17
+ readonly isString: true;
18
+ };
19
+ readonly newCommandTimeout: {
20
+ readonly isNumber: true;
21
+ };
22
+ readonly automationName: {
23
+ readonly isString: true;
24
+ };
25
+ readonly autoLaunch: {
26
+ readonly isBoolean: true;
27
+ };
28
+ readonly udid: {
29
+ readonly isString: true;
30
+ };
31
+ /**
32
+ *
33
+ * @template {Constraints} C
34
+ * @param {any} oldCaps
35
+ * @param {C} desiredCapConstraints
36
+ * @param {AppiumLogger} log
37
+ * @returns {Capabilities<C>}
38
+ */
39
+ readonly orientation: {
40
+ readonly inclusion: readonly ["LANDSCAPE", "PORTRAIT"];
41
+ };
42
+ readonly autoWebview: {
43
+ readonly isBoolean: true;
44
+ };
45
+ readonly noReset: {
46
+ readonly isBoolean: true;
47
+ };
48
+ readonly fullReset: {
49
+ readonly isBoolean: true;
50
+ };
51
+ readonly language: {
52
+ readonly isString: true;
53
+ };
54
+ readonly locale: {
55
+ readonly isString: true;
56
+ };
57
+ readonly eventTimings: {
58
+ readonly isBoolean: true;
59
+ };
60
+ readonly printPageSourceOnFindFailure: {
61
+ readonly isBoolean: true;
62
+ };
63
+ }, Extra extends void | import("@appium/types").StringRecord = void> = import('@appium/types').Capabilities<C, Extra>;
4
64
  export function isW3cCaps(caps: any): boolean;
5
65
  /**
6
66
  *
7
- * @param {Capabilities} originalCaps
8
- * @param {Constraints} desiredCapConstraints
67
+ * @template {Constraints} C
68
+ * @param {any} oldCaps
69
+ * @param {C} desiredCapConstraints
9
70
  * @param {AppiumLogger} log
10
- * @returns {Capabilities}
71
+ * @returns {Capabilities<C>}
11
72
  */
12
- export function fixCaps(originalCaps: Capabilities, desiredCapConstraints: Constraints, log: AppiumLogger): Capabilities;
73
+ export function fixCaps<C extends Readonly<Record<string, import("@appium/types").Constraint>>>(oldCaps: any, desiredCapConstraints: C, log: AppiumLogger): Partial<import("@appium/types").ConstraintsToCaps<C> & void>;
13
74
  //# sourceMappingURL=capabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../lib/helpers/capabilities.js"],"names":[],"mappings":"2BA2Ea,OAAO,eAAe,EAAE,YAAY;0BACpC,OAAO,eAAe,EAAE,WAAW;2BACnC,OAAO,eAAe,EAAE,YAAY;AAzEjD,8CAoBC;AAED;;;;;;GAMG;AACH,sCALW,YAAY,yBACZ,WAAW,OACX,YAAY,GACV,YAAY,CAuCxB"}
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../lib/helpers/capabilities.js"],"names":[],"mappings":"0BA8Ea,OAAO,eAAe,EAAE,WAAW;2BACnC,OAAO,eAAe,EAAE,YAAY;2BACpC,OAAO,eAAe,EAAE,YAAY;uCACpC,OAAO,eAAe,EAAE,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;IAvD7D;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;uEAsDU,OAAO,eAAe,EAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;AAnF3D,8CAoBC;AAED;;;;;;;GAOG;AACH,yGALW,GAAG,iCAEH,YAAY,gEA0CtB"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -12,6 +10,8 @@ require("source-map-support/register");
12
10
 
13
11
  var _lodash = _interopRequireDefault(require("lodash"));
14
12
 
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
15
  function isW3cCaps(caps) {
16
16
  if (!_lodash.default.isPlainObject(caps)) {
17
17
  return false;
@@ -36,13 +36,13 @@ function isW3cCaps(caps) {
36
36
  return false;
37
37
  }
38
38
 
39
- function fixCaps(originalCaps, desiredCapConstraints, log) {
40
- let caps = _lodash.default.clone(originalCaps);
39
+ function fixCaps(oldCaps, desiredCapConstraints, log) {
40
+ let caps = _lodash.default.clone(oldCaps);
41
41
 
42
42
  let booleanCaps = _lodash.default.keys(_lodash.default.pickBy(desiredCapConstraints, k => k.isBoolean === true));
43
43
 
44
44
  for (let cap of booleanCaps) {
45
- let value = originalCaps[cap];
45
+ let value = oldCaps[cap];
46
46
 
47
47
  if (_lodash.default.isString(value)) {
48
48
  value = value.toLowerCase();
@@ -57,7 +57,7 @@ function fixCaps(originalCaps, desiredCapConstraints, log) {
57
57
  let intCaps = _lodash.default.keys(_lodash.default.pickBy(desiredCapConstraints, k => k.isNumber === true));
58
58
 
59
59
  for (let cap of intCaps) {
60
- let value = originalCaps[cap];
60
+ let value = oldCaps[cap];
61
61
 
62
62
  if (_lodash.default.isString(value)) {
63
63
  value = value.trim();
@@ -74,4 +74,4 @@ function fixCaps(originalCaps, desiredCapConstraints, log) {
74
74
 
75
75
  return caps;
76
76
  }
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1czY0NhcHMiLCJjYXBzIiwiXyIsImlzUGxhaW5PYmplY3QiLCJpc0ZpcnN0TWF0Y2hWYWxpZCIsImlzQXJyYXkiLCJmaXJzdE1hdGNoIiwiaXNFbXB0eSIsImV2ZXJ5IiwiaXNBbHdheXNNYXRjaFZhbGlkIiwiYWx3YXlzTWF0Y2giLCJoYXMiLCJmaXhDYXBzIiwib3JpZ2luYWxDYXBzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibG9nIiwiY2xvbmUiLCJib29sZWFuQ2FwcyIsImtleXMiLCJwaWNrQnkiLCJrIiwiaXNCb29sZWFuIiwiY2FwIiwidmFsdWUiLCJpc1N0cmluZyIsInRvTG93ZXJDYXNlIiwid2FybiIsImludENhcHMiLCJpc051bWJlciIsInRyaW0iLCJuZXdWYWx1ZSIsInBhcnNlSW50IiwicGFyc2VGbG9hdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oZWxwZXJzL2NhcGFiaWxpdGllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuZnVuY3Rpb24gaXNXM2NDYXBzKGNhcHMpIHtcbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FwcykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpc0ZpcnN0TWF0Y2hWYWxpZCA9ICgpID0+XG4gICAgXy5pc0FycmF5KGNhcHMuZmlyc3RNYXRjaCkgJiZcbiAgICAhXy5pc0VtcHR5KGNhcHMuZmlyc3RNYXRjaCkgJiZcbiAgICBfLmV2ZXJ5KGNhcHMuZmlyc3RNYXRjaCwgXy5pc1BsYWluT2JqZWN0KTtcbiAgY29uc3QgaXNBbHdheXNNYXRjaFZhbGlkID0gKCkgPT4gXy5pc1BsYWluT2JqZWN0KGNhcHMuYWx3YXlzTWF0Y2gpO1xuICBpZiAoXy5oYXMoY2FwcywgJ2ZpcnN0TWF0Y2gnKSAmJiBfLmhhcyhjYXBzLCAnYWx3YXlzTWF0Y2gnKSkge1xuICAgIHJldHVybiBpc0ZpcnN0TWF0Y2hWYWxpZCgpICYmIGlzQWx3YXlzTWF0Y2hWYWxpZCgpO1xuICB9XG4gIGlmIChfLmhhcyhjYXBzLCAnZmlyc3RNYXRjaCcpKSB7XG4gICAgcmV0dXJuIGlzRmlyc3RNYXRjaFZhbGlkKCk7XG4gIH1cbiAgaWYgKF8uaGFzKGNhcHMsICdhbHdheXNNYXRjaCcpKSB7XG4gICAgcmV0dXJuIGlzQWx3YXlzTWF0Y2hWYWxpZCgpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtDYXBhYmlsaXRpZXN9IG9yaWdpbmFsQ2Fwc1xuICogQHBhcmFtIHtDb25zdHJhaW50c30gZGVzaXJlZENhcENvbnN0cmFpbnRzXG4gKiBAcGFyYW0ge0FwcGl1bUxvZ2dlcn0gbG9nXG4gKiBAcmV0dXJucyB7Q2FwYWJpbGl0aWVzfVxuICovXG5mdW5jdGlvbiBmaXhDYXBzKG9yaWdpbmFsQ2FwcywgZGVzaXJlZENhcENvbnN0cmFpbnRzLCBsb2cpIHtcbiAgbGV0IGNhcHMgPSBfLmNsb25lKG9yaWdpbmFsQ2Fwcyk7XG5cbiAgLy8gYm9vbGVhbiBjYXBhYmlsaXRpZXMgY2FuIGJlIHBhc3NlZCBpbiBhcyBzdHJpbmdzICdmYWxzZScgYW5kICd0cnVlJ1xuICAvLyB3aGljaCB3ZSB3YW50IHRvIHRyYW5zbGF0ZSBpbnRvIGJvb2xlYW4gdmFsdWVzXG4gIGxldCBib29sZWFuQ2FwcyA9IF8ua2V5cyhfLnBpY2tCeShkZXNpcmVkQ2FwQ29uc3RyYWludHMsIChrKSA9PiBrLmlzQm9vbGVhbiA9PT0gdHJ1ZSkpO1xuICBmb3IgKGxldCBjYXAgb2YgYm9vbGVhbkNhcHMpIHtcbiAgICBsZXQgdmFsdWUgPSBvcmlnaW5hbENhcHNbY2FwXTtcbiAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICAgIGxvZy53YXJuKFxuICAgICAgICAgIGBDYXBhYmlsaXR5ICcke2NhcH0nIGNoYW5nZWQgZnJvbSBzdHJpbmcgdG8gYm9vbGVhbi4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmBcbiAgICAgICAgKTtcbiAgICAgICAgY2Fwc1tjYXBdID0gdmFsdWUgPT09ICd0cnVlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBpbnQgY2FwYWJpbGl0aWVzIGFyZSBvZnRlbiBzZW50IGluIGFzIHN0cmluZ3MgYnkgZnJhbWV3b3Jrc1xuICBsZXQgaW50Q2FwcyA9IF8ua2V5cyhfLnBpY2tCeShkZXNpcmVkQ2FwQ29uc3RyYWludHMsIChrKSA9PiBrLmlzTnVtYmVyID09PSB0cnVlKSk7XG4gIGZvciAobGV0IGNhcCBvZiBpbnRDYXBzKSB7XG4gICAgbGV0IHZhbHVlID0gb3JpZ2luYWxDYXBzW2NhcF07XG4gICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAodmFsdWUgIT09IGAke25ld1ZhbHVlfWApIHtcbiAgICAgICAgbmV3VmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGxvZy53YXJuKFxuICAgICAgICBgQ2FwYWJpbGl0eSAnJHtjYXB9JyBjaGFuZ2VkIGZyb20gc3RyaW5nICgnJHt2YWx1ZX0nKSB0byBpbnRlZ2VyICgke25ld1ZhbHVlfSkuIFRoaXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JgXG4gICAgICApO1xuICAgICAgY2Fwc1tjYXBdID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNhcHM7XG59XG5cbmV4cG9ydCB7aXNXM2NDYXBzLCBmaXhDYXBzfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2FwYWJpbGl0aWVzfSBDYXBhYmlsaXRpZXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Db25zdHJhaW50c30gQ29uc3RyYWludHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJ9IEFwcGl1bUxvZ2dlclxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUVBOztBQUVBLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCO0VBQ3ZCLElBQUksQ0FBQ0MsZUFBQSxDQUFFQyxhQUFGLENBQWdCRixJQUFoQixDQUFMLEVBQTRCO0lBQzFCLE9BQU8sS0FBUDtFQUNEOztFQUVELE1BQU1HLGlCQUFpQixHQUFHLE1BQ3hCRixlQUFBLENBQUVHLE9BQUYsQ0FBVUosSUFBSSxDQUFDSyxVQUFmLEtBQ0EsQ0FBQ0osZUFBQSxDQUFFSyxPQUFGLENBQVVOLElBQUksQ0FBQ0ssVUFBZixDQURELElBRUFKLGVBQUEsQ0FBRU0sS0FBRixDQUFRUCxJQUFJLENBQUNLLFVBQWIsRUFBeUJKLGVBQUEsQ0FBRUMsYUFBM0IsQ0FIRjs7RUFJQSxNQUFNTSxrQkFBa0IsR0FBRyxNQUFNUCxlQUFBLENBQUVDLGFBQUYsQ0FBZ0JGLElBQUksQ0FBQ1MsV0FBckIsQ0FBakM7O0VBQ0EsSUFBSVIsZUFBQSxDQUFFUyxHQUFGLENBQU1WLElBQU4sRUFBWSxZQUFaLEtBQTZCQyxlQUFBLENBQUVTLEdBQUYsQ0FBTVYsSUFBTixFQUFZLGFBQVosQ0FBakMsRUFBNkQ7SUFDM0QsT0FBT0csaUJBQWlCLE1BQU1LLGtCQUFrQixFQUFoRDtFQUNEOztFQUNELElBQUlQLGVBQUEsQ0FBRVMsR0FBRixDQUFNVixJQUFOLEVBQVksWUFBWixDQUFKLEVBQStCO0lBQzdCLE9BQU9HLGlCQUFpQixFQUF4QjtFQUNEOztFQUNELElBQUlGLGVBQUEsQ0FBRVMsR0FBRixDQUFNVixJQUFOLEVBQVksYUFBWixDQUFKLEVBQWdDO0lBQzlCLE9BQU9RLGtCQUFrQixFQUF6QjtFQUNEOztFQUNELE9BQU8sS0FBUDtBQUNEOztBQVNELFNBQVNHLE9BQVQsQ0FBaUJDLFlBQWpCLEVBQStCQyxxQkFBL0IsRUFBc0RDLEdBQXRELEVBQTJEO0VBQ3pELElBQUlkLElBQUksR0FBR0MsZUFBQSxDQUFFYyxLQUFGLENBQVFILFlBQVIsQ0FBWDs7RUFJQSxJQUFJSSxXQUFXLEdBQUdmLGVBQUEsQ0FBRWdCLElBQUYsQ0FBT2hCLGVBQUEsQ0FBRWlCLE1BQUYsQ0FBU0wscUJBQVQsRUFBaUNNLENBQUQsSUFBT0EsQ0FBQyxDQUFDQyxTQUFGLEtBQWdCLElBQXZELENBQVAsQ0FBbEI7O0VBQ0EsS0FBSyxJQUFJQyxHQUFULElBQWdCTCxXQUFoQixFQUE2QjtJQUMzQixJQUFJTSxLQUFLLEdBQUdWLFlBQVksQ0FBQ1MsR0FBRCxDQUF4Qjs7SUFDQSxJQUFJcEIsZUFBQSxDQUFFc0IsUUFBRixDQUFXRCxLQUFYLENBQUosRUFBdUI7TUFDckJBLEtBQUssR0FBR0EsS0FBSyxDQUFDRSxXQUFOLEVBQVI7O01BQ0EsSUFBSUYsS0FBSyxLQUFLLE1BQVYsSUFBb0JBLEtBQUssS0FBSyxPQUFsQyxFQUEyQztRQUN6Q1IsR0FBRyxDQUFDVyxJQUFKLENBQ0csZUFBY0osR0FBSSxzRUFEckI7UUFHQXJCLElBQUksQ0FBQ3FCLEdBQUQsQ0FBSixHQUFZQyxLQUFLLEtBQUssTUFBdEI7TUFDRDtJQUNGO0VBQ0Y7O0VBR0QsSUFBSUksT0FBTyxHQUFHekIsZUFBQSxDQUFFZ0IsSUFBRixDQUFPaEIsZUFBQSxDQUFFaUIsTUFBRixDQUFTTCxxQkFBVCxFQUFpQ00sQ0FBRCxJQUFPQSxDQUFDLENBQUNRLFFBQUYsS0FBZSxJQUF0RCxDQUFQLENBQWQ7O0VBQ0EsS0FBSyxJQUFJTixHQUFULElBQWdCSyxPQUFoQixFQUF5QjtJQUN2QixJQUFJSixLQUFLLEdBQUdWLFlBQVksQ0FBQ1MsR0FBRCxDQUF4Qjs7SUFDQSxJQUFJcEIsZUFBQSxDQUFFc0IsUUFBRixDQUFXRCxLQUFYLENBQUosRUFBdUI7TUFDckJBLEtBQUssR0FBR0EsS0FBSyxDQUFDTSxJQUFOLEVBQVI7TUFDQSxJQUFJQyxRQUFRLEdBQUdDLFFBQVEsQ0FBQ1IsS0FBRCxFQUFRLEVBQVIsQ0FBdkI7O01BQ0EsSUFBSUEsS0FBSyxLQUFNLEdBQUVPLFFBQVMsRUFBMUIsRUFBNkI7UUFDM0JBLFFBQVEsR0FBR0UsVUFBVSxDQUFDVCxLQUFELENBQXJCO01BQ0Q7O01BQ0RSLEdBQUcsQ0FBQ1csSUFBSixDQUNHLGVBQWNKLEdBQUksMkJBQTBCQyxLQUFNLGtCQUFpQk8sUUFBUyx1Q0FEL0U7TUFHQTdCLElBQUksQ0FBQ3FCLEdBQUQsQ0FBSixHQUFZUSxRQUFaO0lBQ0Q7RUFDRjs7RUFFRCxPQUFPN0IsSUFBUDtBQUNEIn0=
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1czY0NhcHMiLCJjYXBzIiwiXyIsImlzUGxhaW5PYmplY3QiLCJpc0ZpcnN0TWF0Y2hWYWxpZCIsImlzQXJyYXkiLCJmaXJzdE1hdGNoIiwiaXNFbXB0eSIsImV2ZXJ5IiwiaXNBbHdheXNNYXRjaFZhbGlkIiwiYWx3YXlzTWF0Y2giLCJoYXMiLCJmaXhDYXBzIiwib2xkQ2FwcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImxvZyIsImNsb25lIiwiYm9vbGVhbkNhcHMiLCJrZXlzIiwicGlja0J5IiwiayIsImlzQm9vbGVhbiIsImNhcCIsInZhbHVlIiwiaXNTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsIndhcm4iLCJpbnRDYXBzIiwiaXNOdW1iZXIiLCJ0cmltIiwibmV3VmFsdWUiLCJwYXJzZUludCIsInBhcnNlRmxvYXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvaGVscGVycy9jYXBhYmlsaXRpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmZ1bmN0aW9uIGlzVzNjQ2FwcyhjYXBzKSB7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXNGaXJzdE1hdGNoVmFsaWQgPSAoKSA9PlxuICAgIF8uaXNBcnJheShjYXBzLmZpcnN0TWF0Y2gpICYmXG4gICAgIV8uaXNFbXB0eShjYXBzLmZpcnN0TWF0Y2gpICYmXG4gICAgXy5ldmVyeShjYXBzLmZpcnN0TWF0Y2gsIF8uaXNQbGFpbk9iamVjdCk7XG4gIGNvbnN0IGlzQWx3YXlzTWF0Y2hWYWxpZCA9ICgpID0+IF8uaXNQbGFpbk9iamVjdChjYXBzLmFsd2F5c01hdGNoKTtcbiAgaWYgKF8uaGFzKGNhcHMsICdmaXJzdE1hdGNoJykgJiYgXy5oYXMoY2FwcywgJ2Fsd2F5c01hdGNoJykpIHtcbiAgICByZXR1cm4gaXNGaXJzdE1hdGNoVmFsaWQoKSAmJiBpc0Fsd2F5c01hdGNoVmFsaWQoKTtcbiAgfVxuICBpZiAoXy5oYXMoY2FwcywgJ2ZpcnN0TWF0Y2gnKSkge1xuICAgIHJldHVybiBpc0ZpcnN0TWF0Y2hWYWxpZCgpO1xuICB9XG4gIGlmIChfLmhhcyhjYXBzLCAnYWx3YXlzTWF0Y2gnKSkge1xuICAgIHJldHVybiBpc0Fsd2F5c01hdGNoVmFsaWQoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICpcbiAqIEB0ZW1wbGF0ZSB7Q29uc3RyYWludHN9IENcbiAqIEBwYXJhbSB7YW55fSBvbGRDYXBzXG4gKiBAcGFyYW0ge0N9IGRlc2lyZWRDYXBDb25zdHJhaW50c1xuICogQHBhcmFtIHtBcHBpdW1Mb2dnZXJ9IGxvZ1xuICogQHJldHVybnMge0NhcGFiaWxpdGllczxDPn1cbiAqL1xuZnVuY3Rpb24gZml4Q2FwcyhvbGRDYXBzLCBkZXNpcmVkQ2FwQ29uc3RyYWludHMsIGxvZykge1xuICBsZXQgY2FwcyA9IF8uY2xvbmUob2xkQ2Fwcyk7XG5cbiAgLy8gYm9vbGVhbiBjYXBhYmlsaXRpZXMgY2FuIGJlIHBhc3NlZCBpbiBhcyBzdHJpbmdzICdmYWxzZScgYW5kICd0cnVlJ1xuICAvLyB3aGljaCB3ZSB3YW50IHRvIHRyYW5zbGF0ZSBpbnRvIGJvb2xlYW4gdmFsdWVzXG4gIGxldCBib29sZWFuQ2FwcyA9IF8ua2V5cyhfLnBpY2tCeShkZXNpcmVkQ2FwQ29uc3RyYWludHMsIChrKSA9PiBrLmlzQm9vbGVhbiA9PT0gdHJ1ZSkpO1xuICBmb3IgKGxldCBjYXAgb2YgYm9vbGVhbkNhcHMpIHtcbiAgICBsZXQgdmFsdWUgPSBvbGRDYXBzW2NhcF07XG4gICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBsb2cud2FybihcbiAgICAgICAgICBgQ2FwYWJpbGl0eSAnJHtjYXB9JyBjaGFuZ2VkIGZyb20gc3RyaW5nIHRvIGJvb2xlYW4uIFRoaXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JgXG4gICAgICAgICk7XG4gICAgICAgIGNhcHNbY2FwXSA9IHZhbHVlID09PSAndHJ1ZSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gaW50IGNhcGFiaWxpdGllcyBhcmUgb2Z0ZW4gc2VudCBpbiBhcyBzdHJpbmdzIGJ5IGZyYW1ld29ya3NcbiAgbGV0IGludENhcHMgPSAvKiogQHR5cGUge2ltcG9ydCgndHlwZS1mZXN0JykuU3RyaW5nS2V5T2Y8dHlwZW9mIGNhcHM+W119ICovIChcbiAgICBfLmtleXMoXy5waWNrQnkoZGVzaXJlZENhcENvbnN0cmFpbnRzLCAoaykgPT4gay5pc051bWJlciA9PT0gdHJ1ZSkpXG4gICk7XG4gIGZvciAobGV0IGNhcCBvZiBpbnRDYXBzKSB7XG4gICAgbGV0IHZhbHVlID0gb2xkQ2Fwc1tjYXBdO1xuICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgICBsZXQgbmV3VmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgaWYgKHZhbHVlICE9PSBgJHtuZXdWYWx1ZX1gKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBsb2cud2FybihcbiAgICAgICAgYENhcGFiaWxpdHkgJyR7Y2FwfScgY2hhbmdlZCBmcm9tIHN0cmluZyAoJyR7dmFsdWV9JykgdG8gaW50ZWdlciAoJHtuZXdWYWx1ZX0pLiBUaGlzIG1heSBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yYFxuICAgICAgKTtcbiAgICAgIGNhcHNbY2FwXSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYXBzO1xufVxuXG5leHBvcnQge2lzVzNjQ2FwcywgZml4Q2Fwc307XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNvbnN0cmFpbnRzfSBDb25zdHJhaW50c1xuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUxvZ2dlcn0gQXBwaXVtTG9nZ2VyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuU3RyaW5nUmVjb3JkfSBTdHJpbmdSZWNvcmRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5CYXNlRHJpdmVyQ2FwQ29uc3RyYWludHN9IEJhc2VEcml2ZXJDYXBDb25zdHJhaW50c1xuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtDb25zdHJhaW50c30gW0M9QmFzZURyaXZlckNhcENvbnN0cmFpbnRzXVxuICogQHRlbXBsYXRlIHtTdHJpbmdSZWNvcmR8dm9pZH0gW0V4dHJhPXZvaWRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2FwYWJpbGl0aWVzPEMsIEV4dHJhPn0gQ2FwYWJpbGl0aWVzXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBOzs7O0FBRUEsU0FBU0EsU0FBVCxDQUFtQkMsSUFBbkIsRUFBeUI7RUFDdkIsSUFBSSxDQUFDQyxlQUFBLENBQUVDLGFBQUYsQ0FBZ0JGLElBQWhCLENBQUwsRUFBNEI7SUFDMUIsT0FBTyxLQUFQO0VBQ0Q7O0VBRUQsTUFBTUcsaUJBQWlCLEdBQUcsTUFDeEJGLGVBQUEsQ0FBRUcsT0FBRixDQUFVSixJQUFJLENBQUNLLFVBQWYsS0FDQSxDQUFDSixlQUFBLENBQUVLLE9BQUYsQ0FBVU4sSUFBSSxDQUFDSyxVQUFmLENBREQsSUFFQUosZUFBQSxDQUFFTSxLQUFGLENBQVFQLElBQUksQ0FBQ0ssVUFBYixFQUF5QkosZUFBQSxDQUFFQyxhQUEzQixDQUhGOztFQUlBLE1BQU1NLGtCQUFrQixHQUFHLE1BQU1QLGVBQUEsQ0FBRUMsYUFBRixDQUFnQkYsSUFBSSxDQUFDUyxXQUFyQixDQUFqQzs7RUFDQSxJQUFJUixlQUFBLENBQUVT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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","names":["isW3cCaps","caps","_","isPlainObject","isFirstMatchValid","isArray","firstMatch","isEmpty","every","isAlwaysMatchValid","alwaysMatch","has","fixCaps","oldCaps","desiredCapConstraints","log","clone","booleanCaps","keys","pickBy","k","isBoolean","cap","value","isString","toLowerCase","warn","intCaps","isNumber","trim","newValue","parseInt","parseFloat"],"sources":["../../../lib/helpers/capabilities.js"],"sourcesContent":["// @ts-check\n\nimport _ from 'lodash';\n\nfunction isW3cCaps(caps) {\n if (!_.isPlainObject(caps)) {\n return false;\n }\n\n const isFirstMatchValid = () =>\n _.isArray(caps.firstMatch) &&\n !_.isEmpty(caps.firstMatch) &&\n _.every(caps.firstMatch, _.isPlainObject);\n const isAlwaysMatchValid = () => _.isPlainObject(caps.alwaysMatch);\n if (_.has(caps, 'firstMatch') && _.has(caps, 'alwaysMatch')) {\n return isFirstMatchValid() && isAlwaysMatchValid();\n }\n if (_.has(caps, 'firstMatch')) {\n return isFirstMatchValid();\n }\n if (_.has(caps, 'alwaysMatch')) {\n return isAlwaysMatchValid();\n }\n return false;\n}\n\n/**\n *\n * @template {Constraints} C\n * @param {any} oldCaps\n * @param {C} desiredCapConstraints\n * @param {AppiumLogger} log\n * @returns {Capabilities<C>}\n */\nfunction fixCaps(oldCaps, desiredCapConstraints, log) {\n let caps = _.clone(oldCaps);\n\n // boolean capabilities can be passed in as strings 'false' and 'true'\n // which we want to translate into boolean values\n let booleanCaps = _.keys(_.pickBy(desiredCapConstraints, (k) => k.isBoolean === true));\n for (let cap of booleanCaps) {\n let value = oldCaps[cap];\n if (_.isString(value)) {\n value = value.toLowerCase();\n if (value === 'true' || value === 'false') {\n log.warn(\n `Capability '${cap}' changed from string to boolean. This may cause unexpected behavior`\n );\n caps[cap] = value === 'true';\n }\n }\n }\n\n // int capabilities are often sent in as strings by frameworks\n let intCaps = /** @type {import('type-fest').StringKeyOf<typeof caps>[]} */ (\n _.keys(_.pickBy(desiredCapConstraints, (k) => k.isNumber === true))\n );\n for (let cap of intCaps) {\n let value = oldCaps[cap];\n if (_.isString(value)) {\n value = value.trim();\n let newValue = parseInt(value, 10);\n if (value !== `${newValue}`) {\n newValue = parseFloat(value);\n }\n log.warn(\n `Capability '${cap}' changed from string ('${value}') to integer (${newValue}). This may cause unexpected behavior`\n );\n caps[cap] = newValue;\n }\n }\n\n return caps;\n}\n\nexport {isW3cCaps, fixCaps};\n\n/**\n * @typedef {import('@appium/types').Constraints} Constraints\n * @typedef {import('@appium/types').AppiumLogger} AppiumLogger\n * @typedef {import('@appium/types').StringRecord} StringRecord\n * @typedef {import('@appium/types').BaseDriverCapConstraints} BaseDriverCapConstraints\n */\n\n/**\n * @template {Constraints} [C=BaseDriverCapConstraints]\n * @template {StringRecord|void} [Extra=void]\n * @typedef {import('@appium/types').Capabilities<C, Extra>} Capabilities\n */\n"],"mappings":";;;;;;;;;;AAEA;;;;AAEA,SAASA,SAAT,CAAmBC,IAAnB,EAAyB;EACvB,IAAI,CAACC,eAAA,CAAEC,aAAF,CAAgBF,IAAhB,CAAL,EAA4B;IAC1B,OAAO,KAAP;EACD;;EAED,MAAMG,iBAAiB,GAAG,MACxBF,eAAA,CAAEG,OAAF,CAAUJ,IAAI,CAACK,UAAf,KACA,CAACJ,eAAA,CAAEK,OAAF,CAAUN,IAAI,CAACK,UAAf,CADD,IAEAJ,eAAA,CAAEM,KAAF,CAAQP,IAAI,CAACK,UAAb,EAAyBJ,eAAA,CAAEC,aAA3B,CAHF;;EAIA,MAAMM,kBAAkB,GAAG,MAAMP,eAAA,CAAEC,aAAF,CAAgBF,IAAI,CAACS,WAArB,CAAjC;;EACA,IAAIR,eAAA,CAAES,GAAF,CAAMV,IAAN,EAAY,YAAZ,KAA6BC,eAAA,CAAES,GAAF,CAAMV,IAAN,EAAY,aAAZ,CAAjC,EAA6D;IAC3D,OAAOG,iBAAiB,MAAMK,kBAAkB,EAAhD;EACD;;EACD,IAAIP,eAAA,CAAES,GAAF,CAAMV,IAAN,EAAY,YAAZ,CAAJ,EAA+B;IAC7B,OAAOG,iBAAiB,EAAxB;EACD;;EACD,IAAIF,eAAA,CAAES,GAAF,CAAMV,IAAN,EAAY,aAAZ,CAAJ,EAAgC;IAC9B,OAAOQ,kBAAkB,EAAzB;EACD;;EACD,OAAO,KAAP;AACD;;AAUD,SAASG,OAAT,CAAiBC,OAAjB,EAA0BC,qBAA1B,EAAiDC,GAAjD,EAAsD;EACpD,IAAId,IAAI,GAAGC,eAAA,CAAEc,KAAF,CAAQH,OAAR,CAAX;;EAIA,IAAII,WAAW,GAAGf,eAAA,CAAEgB,IAAF,CAAOhB,eAAA,CAAEiB,MAAF,CAASL,qBAAT,EAAiCM,CAAD,IAAOA,CAAC,CAACC,SAAF,KAAgB,IAAvD,CAAP,CAAlB;;EACA,KAAK,IAAIC,GAAT,IAAgBL,WAAhB,EAA6B;IAC3B,IAAIM,KAAK,GAAGV,OAAO,CAACS,GAAD,CAAnB;;IACA,IAAIpB,eAAA,CAAEsB,QAAF,CAAWD,KAAX,CAAJ,EAAuB;MACrBA,KAAK,GAAGA,KAAK,CAACE,WAAN,EAAR;;MACA,IAAIF,KAAK,KAAK,MAAV,IAAoBA,KAAK,KAAK,OAAlC,EAA2C;QACzCR,GAAG,CAACW,IAAJ,CACG,eAAcJ,GAAI,sEADrB;QAGArB,IAAI,CAACqB,GAAD,CAAJ,GAAYC,KAAK,KAAK,MAAtB;MACD;IACF;EACF;;EAGD,IAAII,OAAO,GACTzB,eAAA,CAAEgB,IAAF,CAAOhB,eAAA,CAAEiB,MAAF,CAASL,qBAAT,EAAiCM,CAAD,IAAOA,CAAC,CAACQ,QAAF,KAAe,IAAtD,CAAP,CADF;;EAGA,KAAK,IAAIN,GAAT,IAAgBK,OAAhB,EAAyB;IACvB,IAAIJ,KAAK,GAAGV,OAAO,CAACS,GAAD,CAAnB;;IACA,IAAIpB,eAAA,CAAEsB,QAAF,CAAWD,KAAX,CAAJ,EAAuB;MACrBA,KAAK,GAAGA,KAAK,CAACM,IAAN,EAAR;MACA,IAAIC,QAAQ,GAAGC,QAAQ,CAACR,KAAD,EAAQ,EAAR,CAAvB;;MACA,IAAIA,KAAK,KAAM,GAAEO,QAAS,EAA1B,EAA6B;QAC3BA,QAAQ,GAAGE,UAAU,CAACT,KAAD,CAArB;MACD;;MACDR,GAAG,CAACW,IAAJ,CACG,eAAcJ,GAAI,2BAA0BC,KAAM,kBAAiBO,QAAS,uCAD/E;MAGA7B,IAAI,CAACqB,GAAD,CAAJ,GAAYQ,QAAZ;IACD;EACF;;EAED,OAAO7B,IAAP;AACD"}
@@ -12,5 +12,5 @@ import { BaseDriver } from "./basedriver/driver";
12
12
  export { DEFAULT_BASE_PATH, PROTOCOLS } from "./constants";
13
13
  export { server, normalizeBasePath } from "./express/server";
14
14
  export { getSummaryByCode, codes as statusCodes } from "./jsonwp-status/status";
15
- export { PREFIXED_APPIUM_OPTS_CAP, processCapabilities, isStandardCap, validateCaps } from "./basedriver/capabilities";
15
+ export { PREFIXED_APPIUM_OPTS_CAP, STANDARD_CAPS, processCapabilities, isStandardCap, validateCaps } from "./basedriver/capabilities";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.js"],"names":[],"mappings":";;;;;;;;;yBAyCa,OAAO,kBAAkB,EAAE,UAAU"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.js"],"names":[],"mappings":";;;;;;;;;yBA0Ca,OAAO,kBAAkB,EAAE,UAAU"}