appium 2.0.0-beta.34 → 2.0.0-beta.38

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 (123) hide show
  1. package/build/lib/appium.d.ts +41 -52
  2. package/build/lib/appium.d.ts.map +1 -1
  3. package/build/lib/appium.js +32 -15
  4. package/build/lib/cli/args.d.ts +1 -1
  5. package/build/lib/cli/args.d.ts.map +1 -1
  6. package/build/lib/cli/args.js +1 -1
  7. package/build/lib/cli/driver-command.d.ts +5 -5
  8. package/build/lib/cli/driver-command.d.ts.map +1 -1
  9. package/build/lib/cli/driver-command.js +8 -8
  10. package/build/lib/cli/extension-command.d.ts +78 -51
  11. package/build/lib/cli/extension-command.d.ts.map +1 -1
  12. package/build/lib/cli/extension-command.js +135 -80
  13. package/build/lib/cli/extension.d.ts +9 -5
  14. package/build/lib/cli/extension.d.ts.map +1 -1
  15. package/build/lib/cli/extension.js +5 -7
  16. package/build/lib/cli/parser.d.ts +3 -3
  17. package/build/lib/cli/parser.d.ts.map +1 -1
  18. package/build/lib/cli/parser.js +1 -1
  19. package/build/lib/cli/plugin-command.d.ts +9 -15
  20. package/build/lib/cli/plugin-command.d.ts.map +1 -1
  21. package/build/lib/cli/plugin-command.js +8 -8
  22. package/build/lib/cli/utils.js +1 -1
  23. package/build/lib/config-file.d.ts.map +1 -1
  24. package/build/lib/config-file.js +1 -1
  25. package/build/lib/config.d.ts +4 -4
  26. package/build/lib/config.d.ts.map +1 -1
  27. package/build/lib/config.js +1 -1
  28. package/build/lib/constants.d.ts.map +1 -1
  29. package/build/lib/constants.js +1 -1
  30. package/build/lib/extension/driver-config.d.ts +29 -32
  31. package/build/lib/extension/driver-config.d.ts.map +1 -1
  32. package/build/lib/extension/driver-config.js +7 -20
  33. package/build/lib/extension/extension-config.d.ts +108 -36
  34. package/build/lib/extension/extension-config.d.ts.map +1 -1
  35. package/build/lib/extension/extension-config.js +199 -60
  36. package/build/lib/extension/index.d.ts +16 -7
  37. package/build/lib/extension/index.d.ts.map +1 -1
  38. package/build/lib/extension/index.js +15 -18
  39. package/build/lib/extension/manifest.d.ts +12 -12
  40. package/build/lib/extension/manifest.d.ts.map +1 -1
  41. package/build/lib/extension/manifest.js +13 -3
  42. package/build/lib/extension/package-changed.d.ts.map +1 -1
  43. package/build/lib/extension/package-changed.js +1 -1
  44. package/build/lib/extension/plugin-config.d.ts +19 -24
  45. package/build/lib/extension/plugin-config.d.ts.map +1 -1
  46. package/build/lib/extension/plugin-config.js +9 -18
  47. package/build/lib/grid-register.d.ts.map +1 -1
  48. package/build/lib/grid-register.js +1 -1
  49. package/build/lib/logger.d.ts +1 -1
  50. package/build/lib/logger.d.ts.map +1 -1
  51. package/build/lib/logger.js +1 -1
  52. package/build/lib/logsink.d.ts.map +1 -1
  53. package/build/lib/logsink.js +3 -2
  54. package/build/lib/main.d.ts +13 -12
  55. package/build/lib/main.d.ts.map +1 -1
  56. package/build/lib/main.js +4 -4
  57. package/build/lib/schema/arg-spec.d.ts +4 -4
  58. package/build/lib/schema/arg-spec.d.ts.map +1 -1
  59. package/build/lib/schema/arg-spec.js +1 -1
  60. package/build/lib/schema/cli-args.d.ts.map +1 -1
  61. package/build/lib/schema/cli-args.js +1 -1
  62. package/build/lib/schema/cli-transformers.d.ts.map +1 -1
  63. package/build/lib/schema/cli-transformers.js +1 -1
  64. package/build/lib/schema/keywords.d.ts.map +1 -1
  65. package/build/lib/schema/keywords.js +1 -1
  66. package/build/lib/schema/schema.d.ts +2 -2
  67. package/build/lib/schema/schema.d.ts.map +1 -1
  68. package/build/lib/schema/schema.js +1 -1
  69. package/build/lib/utils.d.ts.map +1 -1
  70. package/build/lib/utils.js +1 -1
  71. package/build/tsconfig.tsbuildinfo +1 -1
  72. package/build/types/appium-manifest.d.ts +23 -4
  73. package/build/types/appium-manifest.d.ts.map +1 -1
  74. package/build/types/cli.d.ts.map +1 -1
  75. package/build/types/{external-manifest.d.ts → extension-manifest.d.ts} +15 -7
  76. package/build/types/extension-manifest.d.ts.map +1 -0
  77. package/build/types/index.d.ts +6 -5
  78. package/build/types/index.d.ts.map +1 -1
  79. package/driver.d.ts +1 -0
  80. package/driver.js +14 -0
  81. package/lib/appium.js +208 -124
  82. package/lib/cli/args.js +143 -93
  83. package/lib/cli/driver-command.js +46 -26
  84. package/lib/cli/extension-command.js +314 -157
  85. package/lib/cli/extension.js +15 -19
  86. package/lib/cli/parser.js +19 -31
  87. package/lib/cli/plugin-command.js +39 -24
  88. package/lib/cli/utils.js +8 -14
  89. package/lib/config-file.js +21 -25
  90. package/lib/config.js +82 -64
  91. package/lib/constants.js +4 -13
  92. package/lib/extension/driver-config.js +171 -171
  93. package/lib/extension/extension-config.js +347 -126
  94. package/lib/extension/index.js +72 -58
  95. package/lib/extension/manifest.js +48 -57
  96. package/lib/extension/package-changed.js +9 -8
  97. package/lib/extension/plugin-config.js +62 -62
  98. package/lib/grid-register.js +29 -18
  99. package/lib/logger.js +1 -2
  100. package/lib/logsink.js +29 -31
  101. package/lib/main.js +111 -73
  102. package/lib/schema/arg-spec.js +10 -13
  103. package/lib/schema/cli-args.js +14 -37
  104. package/lib/schema/cli-transformers.js +7 -14
  105. package/lib/schema/keywords.js +15 -13
  106. package/lib/schema/schema.js +58 -75
  107. package/lib/utils.js +50 -25
  108. package/package.json +25 -18
  109. package/plugin.d.ts +1 -0
  110. package/plugin.js +13 -0
  111. package/scripts/autoinstall-extensions.js +177 -0
  112. package/support.d.ts +1 -0
  113. package/support.js +13 -0
  114. package/types/appium-manifest.ts +27 -15
  115. package/types/cli.ts +2 -9
  116. package/types/{external-manifest.ts → extension-manifest.ts} +21 -15
  117. package/types/index.ts +12 -5
  118. package/build/types/extension.d.ts +0 -43
  119. package/build/types/extension.d.ts.map +0 -1
  120. package/build/types/external-manifest.d.ts.map +0 -1
  121. package/lib/appium-config.schema.json +0 -278
  122. package/scripts/postinstall.js +0 -71
  123. package/types/extension.ts +0 -56
@@ -57,4 +57,4 @@ const EXT_SUBCOMMAND_UPDATE = 'update';
57
57
  exports.EXT_SUBCOMMAND_UPDATE = EXT_SUBCOMMAND_UPDATE;
58
58
  const EXT_SUBCOMMAND_RUN = 'run';
59
59
  exports.EXT_SUBCOMMAND_RUN = EXT_SUBCOMMAND_RUN;
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJVU0VfQUxMX1BMVUdJTlMiLCJLTk9XTl9QTFVHSU5TIiwiT2JqZWN0IiwiZnJlZXplIiwiaW1hZ2VzIiwiS05PV05fRFJJVkVSUyIsInVpYXV0b21hdG9yMiIsInhjdWl0ZXN0IiwieW91aWVuZ2luZSIsIndpbmRvd3MiLCJtYWMiLCJtYWMyIiwiZXNwcmVzc28iLCJ0aXplbiIsImZsdXR0ZXIiLCJzYWZhcmkiLCJnZWNrbyIsIkNBQ0hFX0RJUl9SRUxBVElWRV9QQVRIIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsIkVYVF9TVUJDT01NQU5EX0xJU1QiLCJFWFRfU1VCQ09NTUFORF9JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwiRVhUX1NVQkNPTU1BTkRfUlVOIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdHlwZSBmb3IgZHJpdmVyc1xuICovXG5leHBvcnQgY29uc3QgRFJJVkVSX1RZUEUgPSAnZHJpdmVyJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHR5cGUgZm9yIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9UWVBFID0gJ3BsdWdpbic7XG5cbi8qKlxuICogVGhlIGBzZXJ2ZXJgIGNvbW1hbmQgb2YgdGhlIGBhcHBpdW1gIENMSVxuICovXG5leHBvcnQgY29uc3QgU0VSVkVSX1NVQkNPTU1BTkQgPSAnc2VydmVyJztcblxuLyoqXG4gKiBUaGUgdmFsdWUgb2YgYC0tdXNlLXBsdWdpbnNgIGlmIF9hbGxfIHBsdWdpbnMgc2hvdWxkIGJlIGxvYWRlZFxuICovXG5leHBvcnQgY29uc3QgVVNFX0FMTF9QTFVHSU5TID0gJ2FsbCc7XG5cbi8vIFRoaXMgaXMgYSBtYXAgb2YgcGx1Z2luIG5hbWVzIHRvIG5wbSBwYWNrYWdlcyByZXByZXNlbnRpbmcgdGhvc2UgcGx1Z2lucy5cbi8vIFRoZSBwbHVnaW5zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgQ0xJIHNvIHVzZXJzIGNhbiBqdXN0XG4vLyB0eXBlICdhcHBpdW0gcGx1Z2luIGluc3RhbGwgJ25hbWUnJywgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHNwZWNpZnkgdGhlIGZ1bGxcbi8vIG5wbSBwYWNrYWdlLiBJLmUuLCB0aGVzZSBhcmUgdGhlIG9mZmljaWFsbHkgcmVjb2duaXplZCBwbHVnaW5zLlxuZXhwb3J0IGNvbnN0IEtOT1dOX1BMVUdJTlMgPSBPYmplY3QuZnJlZXplKFxuICAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAgIGltYWdlczogJ0BhcHBpdW0vaW1hZ2VzLXBsdWdpbicsXG4gICAgJ2V4ZWN1dGUtZHJpdmVyJzogJ0BhcHBpdW0vZXhlY3V0ZS1kcml2ZXItcGx1Z2luJyxcbiAgICAncmVsYXhlZC1jYXBzJzogJ0BhcHBpdW0vcmVsYXhlZC1jYXBzLXBsdWdpbicsXG4gIH0pLFxuKTtcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBkcml2ZXIgbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBkcml2ZXJzLlxuLy8gVGhlIGRyaXZlcnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBkcml2ZXIgaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIGRyaXZlcnMuXG5leHBvcnQgY29uc3QgS05PV05fRFJJVkVSUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgdWlhdXRvbWF0b3IyOiAnYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXInLFxuICAgIHhjdWl0ZXN0OiAnYXBwaXVtLXhjdWl0ZXN0LWRyaXZlcicsXG4gICAgeW91aWVuZ2luZTogJ2FwcGl1bS15b3VpZW5naW5lLWRyaXZlcicsXG4gICAgd2luZG93czogJ2FwcGl1bS13aW5kb3dzLWRyaXZlcicsXG4gICAgbWFjOiAnYXBwaXVtLW1hYy1kcml2ZXInLFxuICAgIG1hYzI6ICdhcHBpdW0tbWFjMi1kcml2ZXInLFxuICAgIGVzcHJlc3NvOiAnYXBwaXVtLWVzcHJlc3NvLWRyaXZlcicsXG4gICAgdGl6ZW46ICdhcHBpdW0tdGl6ZW4tZHJpdmVyJyxcbiAgICBmbHV0dGVyOiAnYXBwaXVtLWZsdXR0ZXItZHJpdmVyJyxcbiAgICBzYWZhcmk6ICdhcHBpdW0tc2FmYXJpLWRyaXZlcicsXG4gICAgZ2Vja286ICdhcHBpdW0tZ2Vja29kcml2ZXInLFxuICB9KSxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBhbnkgQXBwaXVtIGludGVybmFsIGZpbGVzXG4gKi9cbmV4cG9ydCBjb25zdCBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgJ25vZGVfbW9kdWxlcycsXG4gICcuY2FjaGUnLFxuICAnYXBwaXVtJyxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBoYXNoZmlsZSAoZnJvbSBgQVBQSVVNX0hPTUVgKSBvZiBjb25zdW1pbmcgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gIChpZiBpdCBleGlzdHMpXG4gKi9cbmV4cG9ydCBjb25zdCBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsXG4gICdwYWNrYWdlLmhhc2gnLFxuKTtcblxuXG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfTElTVCA9ICdsaXN0JztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9JTlNUQUxMID0gJ2luc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCA9ICd1bmluc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VQREFURSA9ICd1cGRhdGUnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1JVTiA9ICdydW4nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUtPLE1BQU1BLFdBQVcsR0FBRyxRQUFwQjs7QUFLQSxNQUFNQyxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsaUJBQWlCLEdBQUcsUUFBMUI7O0FBS0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCOztBQU1BLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ0w7RUFDcEJDLE1BQU0sRUFBRSx1QkFEWTtFQUVwQixrQkFBa0IsK0JBRkU7RUFHcEIsZ0JBQWdCO0FBSEksQ0FESyxDQUF0Qjs7QUFZQSxNQUFNQyxhQUFhLEdBQUdILE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0VBQ3BCRyxZQUFZLEVBQUUsNEJBRE07RUFFcEJDLFFBQVEsRUFBRSx3QkFGVTtFQUdwQkMsVUFBVSxFQUFFLDBCQUhRO0VBSXBCQyxPQUFPLEVBQUUsdUJBSlc7RUFLcEJDLEdBQUcsRUFBRSxtQkFMZTtFQU1wQkMsSUFBSSxFQUFFLG9CQU5jO0VBT3BCQyxRQUFRLEVBQUUsd0JBUFU7RUFRcEJDLEtBQUssRUFBRSxxQkFSYTtFQVNwQkMsT0FBTyxFQUFFLHVCQVRXO0VBVXBCQyxNQUFNLEVBQUUsc0JBVlk7RUFXcEJDLEtBQUssRUFBRTtBQVhhLENBREssQ0FBdEI7OztBQW1CQSxNQUFNQyx1QkFBdUIsR0FBR0MsY0FBS0MsSUFBTCxDQUNyQyxjQURxQyxFQUVyQyxRQUZxQyxFQUdyQyxRQUhxQyxDQUFoQzs7OztBQVNBLE1BQU1DLDBCQUEwQixHQUFHRixjQUFLQyxJQUFMLENBQ3hDRix1QkFEd0MsRUFFeEMsY0FGd0MsQ0FBbkM7OztBQU1BLE1BQU1JLG1CQUFtQixHQUFHLE1BQTVCOztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLFNBQS9COztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLFdBQWpDOztBQUNBLE1BQU1DLHFCQUFxQixHQUFHLFFBQTlCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCIn0=
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJVU0VfQUxMX1BMVUdJTlMiLCJLTk9XTl9QTFVHSU5TIiwiT2JqZWN0IiwiZnJlZXplIiwiaW1hZ2VzIiwiS05PV05fRFJJVkVSUyIsInVpYXV0b21hdG9yMiIsInhjdWl0ZXN0IiwieW91aWVuZ2luZSIsIndpbmRvd3MiLCJtYWMiLCJtYWMyIiwiZXNwcmVzc28iLCJ0aXplbiIsImZsdXR0ZXIiLCJzYWZhcmkiLCJnZWNrbyIsIkNBQ0hFX0RJUl9SRUxBVElWRV9QQVRIIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsIkVYVF9TVUJDT01NQU5EX0xJU1QiLCJFWFRfU1VCQ09NTUFORF9JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwiRVhUX1NVQkNPTU1BTkRfUlVOIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHR5cGUgZm9yIGRyaXZlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERSSVZFUl9UWVBFID0gJ2RyaXZlcic7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0eXBlIGZvciBwbHVnaW5zXG4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fVFlQRSA9ICdwbHVnaW4nO1xuXG4vKipcbiAqIFRoZSBgc2VydmVyYCBjb21tYW5kIG9mIHRoZSBgYXBwaXVtYCBDTElcbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9TVUJDT01NQU5EID0gJ3NlcnZlcic7XG5cbi8qKlxuICogVGhlIHZhbHVlIG9mIGAtLXVzZS1wbHVnaW5zYCBpZiBfYWxsXyBwbHVnaW5zIHNob3VsZCBiZSBsb2FkZWRcbiAqL1xuZXhwb3J0IGNvbnN0IFVTRV9BTExfUExVR0lOUyA9ICdhbGwnO1xuXG4vLyBUaGlzIGlzIGEgbWFwIG9mIHBsdWdpbiBuYW1lcyB0byBucG0gcGFja2FnZXMgcmVwcmVzZW50aW5nIHRob3NlIHBsdWdpbnMuXG4vLyBUaGUgcGx1Z2lucyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIENMSSBzbyB1c2VycyBjYW4ganVzdFxuLy8gdHlwZSAnYXBwaXVtIHBsdWdpbiBpbnN0YWxsICduYW1lJycsIHJhdGhlciB0aGFuIGhhdmluZyB0byBzcGVjaWZ5IHRoZSBmdWxsXG4vLyBucG0gcGFja2FnZS4gSS5lLiwgdGhlc2UgYXJlIHRoZSBvZmZpY2lhbGx5IHJlY29nbml6ZWQgcGx1Z2lucy5cbmV4cG9ydCBjb25zdCBLTk9XTl9QTFVHSU5TID0gT2JqZWN0LmZyZWV6ZShcbiAgLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgICBpbWFnZXM6ICdAYXBwaXVtL2ltYWdlcy1wbHVnaW4nLFxuICAgICdleGVjdXRlLWRyaXZlcic6ICdAYXBwaXVtL2V4ZWN1dGUtZHJpdmVyLXBsdWdpbicsXG4gICAgJ3JlbGF4ZWQtY2Fwcyc6ICdAYXBwaXVtL3JlbGF4ZWQtY2Fwcy1wbHVnaW4nLFxuICB9KVxuKTtcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBkcml2ZXIgbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBkcml2ZXJzLlxuLy8gVGhlIGRyaXZlcnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBkcml2ZXIgaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIGRyaXZlcnMuXG5leHBvcnQgY29uc3QgS05PV05fRFJJVkVSUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgdWlhdXRvbWF0b3IyOiAnYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXInLFxuICAgIHhjdWl0ZXN0OiAnYXBwaXVtLXhjdWl0ZXN0LWRyaXZlcicsXG4gICAgeW91aWVuZ2luZTogJ2FwcGl1bS15b3VpZW5naW5lLWRyaXZlcicsXG4gICAgd2luZG93czogJ2FwcGl1bS13aW5kb3dzLWRyaXZlcicsXG4gICAgbWFjOiAnYXBwaXVtLW1hYy1kcml2ZXInLFxuICAgIG1hYzI6ICdhcHBpdW0tbWFjMi1kcml2ZXInLFxuICAgIGVzcHJlc3NvOiAnYXBwaXVtLWVzcHJlc3NvLWRyaXZlcicsXG4gICAgdGl6ZW46ICdhcHBpdW0tdGl6ZW4tZHJpdmVyJyxcbiAgICBmbHV0dGVyOiAnYXBwaXVtLWZsdXR0ZXItZHJpdmVyJyxcbiAgICBzYWZhcmk6ICdhcHBpdW0tc2FmYXJpLWRyaXZlcicsXG4gICAgZ2Vja286ICdhcHBpdW0tZ2Vja29kcml2ZXInLFxuICB9KVxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGFueSBBcHBpdW0gaW50ZXJuYWwgZmlsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX0RJUl9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKCdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ2FwcGl1bScpO1xuXG4vKipcbiAqIFJlbGF0aXZlIHBhdGggdG8gaGFzaGZpbGUgKGZyb20gYEFQUElVTV9IT01FYCkgb2YgY29uc3VtaW5nIHByb2plY3QncyBgcGFja2FnZS5qc29uYCAoaWYgaXQgZXhpc3RzKVxuICovXG5leHBvcnQgY29uc3QgUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEggPSBwYXRoLmpvaW4oQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsICdwYWNrYWdlLmhhc2gnKTtcblxuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX0xJU1QgPSAnbGlzdCc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCA9ICdpbnN0YWxsJztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9VTklOU1RBTEwgPSAndW5pbnN0YWxsJztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9VUERBVEUgPSAndXBkYXRlJztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9SVU4gPSAncnVuJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFLTyxNQUFNQSxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsV0FBVyxHQUFHLFFBQXBCOztBQUtBLE1BQU1DLGlCQUFpQixHQUFHLFFBQTFCOztBQUtBLE1BQU1DLGVBQWUsR0FBRyxLQUF4Qjs7QUFNQSxNQUFNQyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0VBQ3BCQyxNQUFNLEVBQUUsdUJBRFk7RUFFcEIsa0JBQWtCLCtCQUZFO0VBR3BCLGdCQUFnQjtBQUhJLENBREssQ0FBdEI7O0FBWUEsTUFBTUMsYUFBYSxHQUFHSCxNQUFNLENBQUNDLE1BQVAsQ0FDTDtFQUNwQkcsWUFBWSxFQUFFLDRCQURNO0VBRXBCQyxRQUFRLEVBQUUsd0JBRlU7RUFHcEJDLFVBQVUsRUFBRSwwQkFIUTtFQUlwQkMsT0FBTyxFQUFFLHVCQUpXO0VBS3BCQyxHQUFHLEVBQUUsbUJBTGU7RUFNcEJDLElBQUksRUFBRSxvQkFOYztFQU9wQkMsUUFBUSxFQUFFLHdCQVBVO0VBUXBCQyxLQUFLLEVBQUUscUJBUmE7RUFTcEJDLE9BQU8sRUFBRSx1QkFUVztFQVVwQkMsTUFBTSxFQUFFLHNCQVZZO0VBV3BCQyxLQUFLLEVBQUU7QUFYYSxDQURLLENBQXRCOzs7QUFtQkEsTUFBTUMsdUJBQXVCLEdBQUdDLGFBQUEsQ0FBS0MsSUFBTCxDQUFVLGNBQVYsRUFBMEIsUUFBMUIsRUFBb0MsUUFBcEMsQ0FBaEM7Ozs7QUFLQSxNQUFNQywwQkFBMEIsR0FBR0YsYUFBQSxDQUFLQyxJQUFMLENBQVVGLHVCQUFWLEVBQW1DLGNBQW5DLENBQW5DOzs7QUFFQSxNQUFNSSxtQkFBbUIsR0FBRyxNQUE1Qjs7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxTQUEvQjs7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxXQUFqQzs7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxRQUE5Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUEzQiJ9
@@ -17,11 +17,10 @@ export class DriverConfig extends ExtensionConfig<"driver"> {
17
17
  * Creates a new {@link DriverConfig} instance for a {@link Manifest} instance.
18
18
  *
19
19
  * @param {Manifest} manifest
20
- * @param {DriverConfigOptions} [opts]
21
20
  * @throws If `manifest` already associated with a `DriverConfig`
22
21
  * @returns {DriverConfig}
23
22
  */
24
- static create(manifest: Manifest, { extData, logFn }?: DriverConfigOptions | undefined): DriverConfig;
23
+ static create(manifest: Manifest): DriverConfig;
25
24
  /**
26
25
  * Returns a DriverConfig associated with a Manifest
27
26
  * @param {Manifest} manifest
@@ -29,11 +28,10 @@ export class DriverConfig extends ExtensionConfig<"driver"> {
29
28
  */
30
29
  static getInstance(manifest: Manifest): DriverConfig | undefined;
31
30
  /**
32
- * Call {@link DriverConfig.create} instead.
33
- * @private
34
- * @param {import('./manifest').Manifest} manifest - Manifest instance
35
- * @param {DriverConfigOptions} [opts]
36
- */
31
+ * Call {@link DriverConfig.create} instead.
32
+ * @private
33
+ * @param {import('./manifest').Manifest} manifest - Manifest instance
34
+ */
37
35
  private constructor();
38
36
  /**
39
37
  * A set of unique automation names used by drivers.
@@ -41,41 +39,40 @@ export class DriverConfig extends ExtensionConfig<"driver"> {
41
39
  */
42
40
  knownAutomationNames: Set<string>;
43
41
  /**
44
- * Given capabilities, find a matching driver within the config. Load its class and return it along with version and driver name.
45
- * @param {Capabilities} caps
46
- * @returns {MatchedDriver}
47
- */
48
- findMatchingDriver({ automationName, platformName }: Capabilities): MatchedDriver;
42
+ * Checks extensions for problems
43
+ */
44
+ validate(): Promise<import("./extension-config").ExtRecord<"driver">>;
49
45
  /**
50
- * Given an automation name and platform name, find a suitable driver and return its extension data.
51
- * @param {string} matchAutomationName
52
- * @param {string} matchPlatformName
53
- * @returns {ExtMetadata<DriverType> & import('../../types/appium-manifest').InternalMetadata & import('../../types/external-manifest').CommonMetadata}
54
- */
55
- _getDriverBySupport(matchAutomationName: string, matchPlatformName: string): ExtMetadata<DriverType> & import('../../types/appium-manifest').InternalMetadata & import('../../types/external-manifest').CommonMetadata;
56
- }
57
- export type DriverConfigOptions = {
46
+ * @param {ExtManifest<DriverType>} extData
47
+ * @returns {import('./extension-config').ExtManifestProblem[]}
48
+ */
49
+ getConfigProblems(extData: ExtManifest<DriverType>): import('./extension-config').ExtManifestProblem[];
58
50
  /**
59
- * - Optional logging function
51
+ * Given capabilities, find a matching driver within the config. Load its class and return it along with version and driver name.
52
+ * @param {Capabilities} caps
53
+ * @returns {MatchedDriver}
60
54
  */
61
- logFn?: import("./extension-config").ExtensionLogFn | undefined;
55
+ findMatchingDriver({ automationName, platformName }: Capabilities): MatchedDriver;
62
56
  /**
63
- * - Extension data
57
+ * Given an automation name and platform name, find a suitable driver and return its extension data.
58
+ * @param {string} matchAutomationName
59
+ * @param {string} matchPlatformName
60
+ * @returns {ExtMetadata<DriverType> & import('appium/types').InternalMetadata & import('appium/types').CommonExtMetadata}
64
61
  */
65
- extData?: import("../../types").DriverRecord | undefined;
66
- };
67
- export type ExtMetadata<T> = import('../../types').ExtMetadata<T>;
68
- export type ExtManifest<T> = import('../../types').ExtManifest<T>;
69
- export type ManifestData = import('../../types').ManifestData;
70
- export type DriverType = import('../../types').DriverType;
62
+ _getDriverBySupport(matchAutomationName: string, matchPlatformName: string): ExtMetadata<DriverType> & import('appium/types').InternalMetadata & import('appium/types').CommonExtMetadata;
63
+ }
64
+ export type ExtMetadata<T> = import('appium/types').ExtMetadata<T>;
65
+ export type ExtManifest<T> = import('appium/types').ExtManifest<T>;
66
+ export type ManifestData = import('appium/types').ManifestData;
67
+ export type DriverType = import('@appium/types').DriverType;
71
68
  export type Manifest = import('./manifest').Manifest;
72
- export type ExtRecord<T> = import('../../types').ExtRecord<T>;
73
- export type ExtName<T> = import('../../types').ExtName<T>;
69
+ export type ExtRecord<T> = import('appium/types').ExtRecord<T>;
70
+ export type ExtName<T> = import('appium/types').ExtName<T>;
74
71
  /**
75
72
  * Return value of {@linkcode DriverConfig.findMatchingDriver }
76
73
  */
77
74
  export type MatchedDriver = {
78
- driver: BaseDriverBase<import("@appium/types").ExternalDriver, import("../../types").ExternalDriverStatic>;
75
+ driver: import('@appium/types').DriverClass;
79
76
  version: string;
80
77
  driverName: string;
81
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"driver-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/driver-config.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IAQE;;;;;;;;;OASG;IACF,0BAAkC;IAkBlC;;;;;;;OAOG;IACH,wBALW,QAAQ,yDAGN,YAAY,CASxB;IAED;;;;OAIG;IACH,6BAHW,QAAQ,GACN,YAAY,GAAC,SAAS,CAIlC;IAxCD;;;;;MAKE;IACF,sBAQC;IAhCF;;;OAGG;IACH,sBAFU,IAAI,MAAM,CAAC,CAEA;IAuHpB;;;;MAIE;IACF,qDAHU,YAAY,GACV,aAAa,CAmCxB;IAED;;;;;MAKE;IACF,yCAJU,MAAM,qBACN,MAAM,GACJ,YAAY,UAAU,CAAC,GAAG,OAAO,6BAA6B,EAAE,gBAAgB,GAAG,OAAO,+BAA+B,EAAE,cAAc,CAwBpJ;CACH;;;;;;;;;;;6BAUY,OAAO,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;6BAKpC,OAAO,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;2BAIpC,OAAO,aAAa,EAAE,YAAY;yBAClC,OAAO,aAAa,EAAE,UAAU;uBAChC,OAAO,YAAY,EAAE,QAAQ;2BAK7B,OAAO,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;yBAKlC,OAAO,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;;aAQ/B,MAAM;gBACN,MAAM;;2BAIP,OAAO,eAAe,EAAE,YAAY"}
1
+ {"version":3,"file":"driver-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/driver-config.js"],"names":[],"mappings":"AAKA;;GAEG;AACH;IAOE;;;;;;;;;OASG;IACH,0BAAkC;IAalC;;;;;;OAMG;IACH,wBAJW,QAAQ,GAEN,YAAY,CAWxB;IAED;;;;OAIG;IACH,6BAHW,QAAQ,GACN,YAAY,GAAC,SAAS,CAIlC;IApCD;;;;OAIG;IACH,sBAIC;IA3BD;;;OAGG;IACH,sBAFU,IAAI,MAAM,CAAC,CAEA;IAoDrB;;OAEG;IACH,sEAGC;IAED;;;OAGG;IACH,2BAHW,YAAY,UAAU,CAAC,GACrB,OAAO,oBAAoB,EAAE,kBAAkB,EAAE,CA+C7D;IAWD;;;;OAIG;IACH,qDAHW,YAAY,GACV,aAAa,CAuCzB;IAED;;;;;OAKG;IACH,yCAJW,MAAM,qBACN,MAAM,GACJ,YAAY,UAAU,CAAC,GAAG,OAAO,cAAc,EAAE,gBAAgB,GAAG,OAAO,cAAc,EAAE,iBAAiB,CA4BxH;CACF;6BAIY,OAAO,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;6BAKrC,OAAO,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;2BAIrC,OAAO,cAAc,EAAE,YAAY;yBACnC,OAAO,eAAe,EAAE,UAAU;uBAClC,OAAO,YAAY,EAAE,QAAQ;2BAK7B,OAAO,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;yBAKnC,OAAO,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;;;;;YAMhC,OAAO,eAAe,EAAE,WAAW;aACnC,MAAM;gBACN,MAAM;;2BAIP,OAAO,eAAe,EAAE,YAAY"}
@@ -21,26 +21,13 @@ class DriverConfig extends _extensionConfig.ExtensionConfig {
21
21
  knownAutomationNames;
22
22
  static _instances = new WeakMap();
23
23
 
24
- constructor(manifest, {
25
- logFn,
26
- extData
27
- } = {}) {
28
- super(_constants.DRIVER_TYPE, manifest, logFn);
24
+ constructor(manifest) {
25
+ super(_constants.DRIVER_TYPE, manifest);
29
26
  this.knownAutomationNames = new Set();
30
-
31
- if (extData) {
32
- this.validate(extData);
33
- }
34
27
  }
35
28
 
36
- static create(manifest, {
37
- extData,
38
- logFn
39
- } = {}) {
40
- const instance = new DriverConfig(manifest, {
41
- logFn,
42
- extData
43
- });
29
+ static create(manifest) {
30
+ const instance = new DriverConfig(manifest);
44
31
 
45
32
  if (DriverConfig.getInstance(manifest)) {
46
33
  throw new Error(`Manifest with APPIUM_HOME ${manifest.appiumHome} already has a DriverConfig; use DriverConfig.getInstance() to retrieve it.`);
@@ -55,9 +42,9 @@ class DriverConfig extends _extensionConfig.ExtensionConfig {
55
42
  return DriverConfig._instances.get(manifest);
56
43
  }
57
44
 
58
- validate(exts) {
45
+ async validate() {
59
46
  this.knownAutomationNames.clear();
60
- return super.validate(exts);
47
+ return await super._validate(this.manifest.getExtensionData(_constants.DRIVER_TYPE));
61
48
  }
62
49
 
63
50
  getConfigProblems(extData) {
@@ -187,4 +174,4 @@ class DriverConfig extends _extensionConfig.ExtensionConfig {
187
174
  }
188
175
 
189
176
  exports.DriverConfig = DriverConfig;
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsImxvZ0ZuIiwiZXh0RGF0YSIsIkRSSVZFUl9UWVBFIiwiU2V0IiwidmFsaWRhdGUiLCJjcmVhdGUiLCJpbnN0YW5jZSIsImdldEluc3RhbmNlIiwiRXJyb3IiLCJhcHBpdW1Ib21lIiwic2V0IiwiZ2V0IiwiZXh0cyIsImNsZWFyIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtcyIsInBsYXRmb3JtTmFtZXMiLCJhdXRvbWF0aW9uTmFtZSIsIl8iLCJpc0FycmF5IiwicHVzaCIsImVyciIsInZhbCIsImlzRW1wdHkiLCJwTmFtZSIsImlzU3RyaW5nIiwiaGFzIiwiYWRkIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIiwiZmluZE1hdGNoaW5nRHJpdmVyIiwicGxhdGZvcm1OYW1lIiwibG9nIiwiaW5mbyIsIm1haW5DbGFzcyIsIl9nZXREcml2ZXJCeVN1cHBvcnQiLCJnZXRJbnN0YWxsUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJtc2ciLCJtZXNzYWdlIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVycyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJkcml2ZXJEYXRhIiwidG9QYWlycyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBFeHRlbnNpb25Db25maWcgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vKipcbiAqIEBleHRlbmRzIHtFeHRlbnNpb25Db25maWc8RHJpdmVyVHlwZT59XG4gKi9cbmV4cG9ydCBjbGFzcyBEcml2ZXJDb25maWcgZXh0ZW5kcyBFeHRlbnNpb25Db25maWcge1xuXG4gIC8qKlxuICAgKiBBIHNldCBvZiB1bmlxdWUgYXV0b21hdGlvbiBuYW1lcyB1c2VkIGJ5IGRyaXZlcnMuXG4gICAqIEB0eXBlIHtTZXQ8c3RyaW5nPn1cbiAgICovXG4gIGtub3duQXV0b21hdGlvbk5hbWVzO1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2Yge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZXMgdG8ge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2VzLlxuICAgKlxuICAgKiBgTWFuaWZlc3RgIGFuZCBgRXh0ZW5zaW9uQ29uZmlnYCBoYXZlIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwOyBlYWNoIGBNYW5pZmVzdGAgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgIGFuZCBhIGBQbHVnaW5Db25maWdgOyBubyBtb3JlLCBubyBsZXNzLlxuICAgKlxuICAgKiBUaGlzIHZhcmlhYmxlIHRyYWNrcyB0aGUgYE1hbmlmZXN0YC10by1gRHJpdmVyQ29uZmlnYCBwb3J0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7V2Vha01hcDxNYW5pZmVzdCxEcml2ZXJDb25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgIHN0YXRpYyBfaW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgLyoqXG4gICAqIENhbGwge0BsaW5rIERyaXZlckNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IG1hbmlmZXN0IC0gTWFuaWZlc3QgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICovXG4gICBjb25zdHJ1Y3RvciAobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0gPSB7fSkge1xuICAgICBzdXBlcihEUklWRVJfVFlQRSwgbWFuaWZlc3QsIGxvZ0ZuKTtcblxuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzID0gbmV3IFNldCgpO1xuXG4gICAgIGlmIChleHREYXRhKSB7XG4gICAgICAgdGhpcy52YWxpZGF0ZShleHREYXRhKTtcbiAgICAgfVxuICAgfVxuXG4gICAvKipcbiAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2UgZm9yIGEge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZS5cbiAgICAqXG4gICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICAqIEB0aHJvd3MgSWYgYG1hbmlmZXN0YCBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgXG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfVxuICAgICovXG4gICBzdGF0aWMgY3JlYXRlIChtYW5pZmVzdCwge2V4dERhdGEsIGxvZ0ZufSA9IHt9KSB7XG4gICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyaXZlckNvbmZpZyhtYW5pZmVzdCwge2xvZ0ZuLCBleHREYXRhfSk7XG4gICAgIGlmIChEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCB3aXRoIEFQUElVTV9IT01FICR7bWFuaWZlc3QuYXBwaXVtSG9tZX0gYWxyZWFkeSBoYXMgYSBEcml2ZXJDb25maWc7IHVzZSBEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UoKSB0byByZXRyaWV2ZSBpdC5gKTtcbiAgICAgfVxuICAgICBEcml2ZXJDb25maWcuX2luc3RhbmNlcy5zZXQobWFuaWZlc3QsIGluc3RhbmNlKTtcbiAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFJldHVybnMgYSBEcml2ZXJDb25maWcgYXNzb2NpYXRlZCB3aXRoIGEgTWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfHVuZGVmaW5lZH1cbiAgICAqL1xuICAgc3RhdGljIGdldEluc3RhbmNlIChtYW5pZmVzdCkge1xuICAgICByZXR1cm4gRHJpdmVyQ29uZmlnLl9pbnN0YW5jZXMuZ2V0KG1hbmlmZXN0KTtcbiAgIH1cblxuICAgLyoqXG4gICAqIENoZWNrcyBleHRlbnNpb25zIGZvciBwcm9ibGVtc1xuICAgKiBAcGFyYW0ge0V4dFJlY29yZDxEcml2ZXJUeXBlPn0gZXh0c1xuICAgKi9cbiAgIHZhbGlkYXRlIChleHRzKSB7XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuY2xlYXIoKTtcbiAgICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlKGV4dHMpO1xuICAgfVxuXG4gICAvKipcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb25maWcnKS5Qcm9ibGVtW119XG4gICAqL1xuICAgZ2V0Q29uZmlnUHJvYmxlbXMgKGV4dERhdGEpIHtcbiAgICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICAgY29uc3Qge3BsYXRmb3JtTmFtZXMsIGF1dG9tYXRpb25OYW1lfSA9IGV4dERhdGE7XG5cbiAgICAgaWYgKCFfLmlzQXJyYXkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHN1cHBvcnRlZCBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgIHZhbDogcGxhdGZvcm1OYW1lc1xuICAgICAgIH0pO1xuICAgICB9IGVsc2Uge1xuICAgICAgIGlmIChfLmlzRW1wdHkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICBlcnI6ICdFbXB0eSBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgICAgdmFsOiBwbGF0Zm9ybU5hbWVzXG4gICAgICAgICB9KTtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICAgZm9yIChjb25zdCBwTmFtZSBvZiBwbGF0Zm9ybU5hbWVzKSB7XG4gICAgICAgICAgIGlmICghXy5pc1N0cmluZyhwTmFtZSkpIHtcbiAgICAgICAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdJbmNvcnJlY3RseSBmb3JtYXR0ZWQgcGxhdGZvcm1OYW1lLicsIHZhbDogcE5hbWV9KTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgfVxuXG4gICAgIGlmICghXy5pc1N0cmluZyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBhdXRvbWF0aW9uTmFtZScsIHZhbDogYXV0b21hdGlvbk5hbWV9KTtcbiAgICAgfVxuXG4gICAgIGlmICh0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmhhcyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ011bHRpcGxlIGRyaXZlcnMgY2xhaW0gc3VwcG9ydCBmb3IgdGhlIHNhbWUgYXV0b21hdGlvbk5hbWUnLFxuICAgICAgICAgdmFsOiBhdXRvbWF0aW9uTmFtZVxuICAgICAgIH0pO1xuICAgICB9XG5cbiAgICAgLy8gc2hvdWxkIHdlIHJldGFpbiB0aGUgbmFtZSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24sIG9uY2Ugd2UndmUgY2hlY2tlZCB0aGVyZSBhcmUgbm8gcHJvYmxlbXM/XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuYWRkKGF1dG9tYXRpb25OYW1lKTtcblxuICAgICByZXR1cm4gcHJvYmxlbXM7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RHJpdmVyVHlwZT59IGRyaXZlck5hbWVcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgIGV4dGVuc2lvbkRlc2MgKGRyaXZlck5hbWUsIHt2ZXJzaW9uLCBhdXRvbWF0aW9uTmFtZX0pIHtcbiAgICAgcmV0dXJuIGAke2RyaXZlck5hbWV9QCR7dmVyc2lvbn0gKGF1dG9tYXRpb25OYW1lICcke2F1dG9tYXRpb25OYW1lfScpYDtcbiAgIH1cblxuICAgLyoqXG4gICAqIEdpdmVuIGNhcGFiaWxpdGllcywgZmluZCBhIG1hdGNoaW5nIGRyaXZlciB3aXRoaW4gdGhlIGNvbmZpZy4gTG9hZCBpdHMgY2xhc3MgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHZlcnNpb24gYW5kIGRyaXZlciBuYW1lLlxuICAgKiBAcGFyYW0ge0NhcGFiaWxpdGllc30gY2Fwc1xuICAgKiBAcmV0dXJucyB7TWF0Y2hlZERyaXZlcn1cbiAgICovXG4gICBmaW5kTWF0Y2hpbmdEcml2ZXIgKHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lfSkge1xuICAgICBpZiAoIV8uaXNTdHJpbmcocGxhdGZvcm1OYW1lKSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhIHBsYXRmb3JtTmFtZSBjYXBhYmlsaXR5Jyk7XG4gICAgIH1cblxuICAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBpbmNsdWRlIGFuIGF1dG9tYXRpb25OYW1lIGNhcGFiaWxpdHknKTtcbiAgICAgfVxuXG4gICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGZpbmQgbWF0Y2hpbmcgZHJpdmVyIGZvciBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICcke3BsYXRmb3JtTmFtZX0nYCk7XG5cbiAgICAgdHJ5IHtcbiAgICAgICBjb25zdCB7XG4gICAgICAgICBkcml2ZXJOYW1lLFxuICAgICAgICAgbWFpbkNsYXNzLFxuICAgICAgICAgdmVyc2lvbixcbiAgICAgICB9ID0gdGhpcy5fZ2V0RHJpdmVyQnlTdXBwb3J0KGF1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWUpO1xuICAgICAgIGxvZy5pbmZvKGBUaGUgJyR7ZHJpdmVyTmFtZX0nIGRyaXZlciB3YXMgaW5zdGFsbGVkIGFuZCBtYXRjaGVkIGNhcHMuYCk7XG4gICAgICAgbG9nLmluZm8oYFdpbGwgcmVxdWlyZSBpdCBhdCAke3RoaXMuZ2V0SW5zdGFsbFBhdGgoZHJpdmVyTmFtZSl9YCk7XG4gICAgICAgY29uc3QgZHJpdmVyID0gdGhpcy5yZXF1aXJlKGRyaXZlck5hbWUpO1xuICAgICAgIGlmICghZHJpdmVyKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgZGlkIG5vdCBleHBvcnQgYSBjbGFzcyB3aXRoIG5hbWUgJyR7bWFpbkNsYXNzfScuIENvbnRhY3QgdGhlIGF1dGhvciBvZiB0aGUgZHJpdmVyIWApO1xuICAgICAgIH1cbiAgICAgICByZXR1cm4ge2RyaXZlciwgdmVyc2lvbiwgZHJpdmVyTmFtZX07XG4gICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgIGNvbnN0IG1zZyA9IGBDb3VsZCBub3QgZmluZCBhIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICR7cGxhdGZvcm1OYW1lfScuIGAgK1xuICAgICAgICAgICAgICAgICAgYEhhdmUgeW91IGluc3RhbGxlZCBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRob3NlIGAgK1xuICAgICAgICAgICAgICAgICAgYGNhcGFiaWxpdGllcz8gUnVuICdhcHBpdW0gZHJpdmVyIGxpc3QgLS1pbnN0YWxsZWQnIHRvIHNlZS4gYCArXG4gICAgICAgICAgICAgICAgICBgKExvd2VyLWxldmVsIGVycm9yOiAke2Vyci5tZXNzYWdlfSlgO1xuICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICB9XG4gICB9XG5cbiAgIC8qKlxuICAgKiBHaXZlbiBhbiBhdXRvbWF0aW9uIG5hbWUgYW5kIHBsYXRmb3JtIG5hbWUsIGZpbmQgYSBzdWl0YWJsZSBkcml2ZXIgYW5kIHJldHVybiBpdHMgZXh0ZW5zaW9uIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaEF1dG9tYXRpb25OYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaFBsYXRmb3JtTmFtZVxuICAgKiBAcmV0dXJucyB7RXh0TWV0YWRhdGE8RHJpdmVyVHlwZT4gJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkludGVybmFsTWV0YWRhdGEgJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuQ29tbW9uTWV0YWRhdGF9XG4gICAqL1xuICAgX2dldERyaXZlckJ5U3VwcG9ydCAobWF0Y2hBdXRvbWF0aW9uTmFtZSwgbWF0Y2hQbGF0Zm9ybU5hbWUpIHtcbiAgICAgY29uc3QgZHJpdmVycyA9IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgICAgZm9yIChjb25zdCBbZHJpdmVyTmFtZSwgZHJpdmVyRGF0YV0gb2YgXy50b1BhaXJzKGRyaXZlcnMpKSB7XG4gICAgICAgY29uc3Qge2F1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWVzfSA9IGRyaXZlckRhdGE7XG4gICAgICAgY29uc3QgYU5hbWVNYXRjaGVzID0gYXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbWF0Y2hBdXRvbWF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgIGNvbnN0IHBOYW1lTWF0Y2hlcyA9IF8uaW5jbHVkZXMocGxhdGZvcm1OYW1lcy5tYXAoXy50b0xvd2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hQbGF0Zm9ybU5hbWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzICYmIHBOYW1lTWF0Y2hlcykge1xuICAgICAgICAgcmV0dXJuIHtkcml2ZXJOYW1lLCAuLi5kcml2ZXJEYXRhfTtcbiAgICAgICB9XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgc3VwcG9ydHMgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JywgYnV0IEFwcGl1bSBjb3VsZCBub3QgZmluZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzdXBwb3J0IGZvciBwbGF0Zm9ybU5hbWUgJyR7bWF0Y2hQbGF0Zm9ybU5hbWV9Jy4gU3VwcG9ydGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtTmFtZXMgYXJlOiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHBsYXRmb3JtTmFtZXMpKTtcbiAgICAgICB9XG4gICAgIH1cblxuICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGluc3RhbGxlZCBkcml2ZXIgdG8gc3VwcG9ydCBnaXZlbiBjYXBzYCk7XG4gICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRHJpdmVyQ29uZmlnT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkxvZ0ZufSBbbG9nRm5dIC0gT3B0aW9uYWwgbG9nZ2luZyBmdW5jdGlvblxuICogQHByb3BlcnR5IHtNYW5pZmVzdERhdGFbJ2RyaXZlcnMnXX0gW2V4dERhdGFdIC0gRXh0ZW5zaW9uIGRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dE1ldGFkYXRhPFQ+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLk1hbmlmZXN0RGF0YX0gTWFuaWZlc3REYXRhXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5NYW5pZmVzdH0gTWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHROYW1lPFQ+fSBFeHROYW1lXG4gKi9cblxuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIERyaXZlckNvbmZpZy5maW5kTWF0Y2hpbmdEcml2ZXJ9XG4gKiBAdHlwZWRlZiBNYXRjaGVkRHJpdmVyXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZW5zaW9uJykuRHJpdmVyQ2xhc3N9IGRyaXZlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkcml2ZXJOYW1lXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2Fw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
177
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsIkRSSVZFUl9UWVBFIiwiU2V0IiwiY3JlYXRlIiwiaW5zdGFuY2UiLCJnZXRJbnN0YW5jZSIsIkVycm9yIiwiYXBwaXVtSG9tZSIsInNldCIsImdldCIsInZhbGlkYXRlIiwiY2xlYXIiLCJfdmFsaWRhdGUiLCJnZXRFeHRlbnNpb25EYXRhIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJleHREYXRhIiwicHJvYmxlbXMiLCJwbGF0Zm9ybU5hbWVzIiwiYXV0b21hdGlvbk5hbWUiLCJfIiwiaXNBcnJheSIsInB1c2giLCJlcnIiLCJ2YWwiLCJpc0VtcHR5IiwicE5hbWUiLCJpc1N0cmluZyIsImhhcyIsImFkZCIsImV4dGVuc2lvbkRlc2MiLCJkcml2ZXJOYW1lIiwidmVyc2lvbiIsImZpbmRNYXRjaGluZ0RyaXZlciIsInBsYXRmb3JtTmFtZSIsImxvZyIsImluZm8iLCJtYWluQ2xhc3MiLCJfZ2V0RHJpdmVyQnlTdXBwb3J0IiwiZ2V0SW5zdGFsbFBhdGgiLCJkcml2ZXIiLCJyZXF1aXJlIiwibXNnIiwibWVzc2FnZSIsIm1hdGNoQXV0b21hdGlvbk5hbWUiLCJtYXRjaFBsYXRmb3JtTmFtZSIsImRyaXZlcnMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiZHJpdmVyRGF0YSIsInRvUGFpcnMiLCJhTmFtZU1hdGNoZXMiLCJ0b0xvd2VyQ2FzZSIsInBOYW1lTWF0Y2hlcyIsImluY2x1ZGVzIiwibWFwIiwidG9Mb3dlciIsIkpTT04iLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXh0ZW5zaW9uL2RyaXZlci1jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7RFJJVkVSX1RZUEV9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQge0V4dGVuc2lvbkNvbmZpZ30gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPERyaXZlclR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgRHJpdmVyQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgc2V0IG9mIHVuaXF1ZSBhdXRvbWF0aW9uIG5hbWVzIHVzZWQgYnkgZHJpdmVycy5cbiAgICogQHR5cGUge1NldDxzdHJpbmc+fVxuICAgKi9cbiAga25vd25BdXRvbWF0aW9uTmFtZXM7XG5cbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlcyB0byB7QGxpbmsgRHJpdmVyQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqXG4gICAqIGBNYW5pZmVzdGAgYW5kIGBFeHRlbnNpb25Db25maWdgIGhhdmUgYSBvbmUtdG8tbWFueSByZWxhdGlvbnNoaXA7IGVhY2ggYE1hbmlmZXN0YCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgYERyaXZlckNvbmZpZ2AgYW5kIGEgYFBsdWdpbkNvbmZpZ2A7IG5vIG1vcmUsIG5vIGxlc3MuXG4gICAqXG4gICAqIFRoaXMgdmFyaWFibGUgdHJhY2tzIHRoZSBgTWFuaWZlc3RgLXRvLWBEcml2ZXJDb25maWdgIHBvcnRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtXZWFrTWFwPE1hbmlmZXN0LERyaXZlckNvbmZpZz59XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgLyoqXG4gICAqIENhbGwge0BsaW5rIERyaXZlckNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IG1hbmlmZXN0IC0gTWFuaWZlc3QgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0KSB7XG4gICAgc3VwZXIoRFJJVkVSX1RZUEUsIG1hbmlmZXN0KTtcblxuICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMgPSBuZXcgU2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgRHJpdmVyQ29uZmlnfSBpbnN0YW5jZSBmb3IgYSB7QGxpbmsgTWFuaWZlc3R9IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYFxuICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfVxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZShtYW5pZmVzdCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyaXZlckNvbmZpZyhtYW5pZmVzdCk7XG4gICAgaWYgKERyaXZlckNvbmZpZy5nZXRJbnN0YW5jZShtYW5pZmVzdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1hbmlmZXN0IHdpdGggQVBQSVVNX0hPTUUgJHttYW5pZmVzdC5hcHBpdW1Ib21lfSBhbHJlYWR5IGhhcyBhIERyaXZlckNvbmZpZzsgdXNlIERyaXZlckNvbmZpZy5nZXRJbnN0YW5jZSgpIHRvIHJldHJpZXZlIGl0LmBcbiAgICAgICk7XG4gICAgfVxuICAgIERyaXZlckNvbmZpZy5faW5zdGFuY2VzLnNldChtYW5pZmVzdCwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgRHJpdmVyQ29uZmlnIGFzc29jaWF0ZWQgd2l0aCBhIE1hbmlmZXN0XG4gICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAqIEByZXR1cm5zIHtEcml2ZXJDb25maWd8dW5kZWZpbmVkfVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIERyaXZlckNvbmZpZy5faW5zdGFuY2VzLmdldChtYW5pZmVzdCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGV4dGVuc2lvbnMgZm9yIHByb2JsZW1zXG4gICAqL1xuICBhc3luYyB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmNsZWFyKCk7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl92YWxpZGF0ZSh0aGlzLm1hbmlmZXN0LmdldEV4dGVuc2lvbkRhdGEoRFJJVkVSX1RZUEUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PERyaXZlclR5cGU+fSBleHREYXRhXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dE1hbmlmZXN0UHJvYmxlbVtdfVxuICAgKi9cbiAgZ2V0Q29uZmlnUHJvYmxlbXMoZXh0RGF0YSkge1xuICAgIGNvbnN0IHByb2JsZW1zID0gW107XG4gICAgY29uc3Qge3BsYXRmb3JtTmFtZXMsIGF1dG9tYXRpb25OYW1lfSA9IGV4dERhdGE7XG5cbiAgICBpZiAoIV8uaXNBcnJheShwbGF0Zm9ybU5hbWVzKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHN1cHBvcnRlZCBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgdmFsOiBwbGF0Zm9ybU5hbWVzLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChfLmlzRW1wdHkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICAgZXJyOiAnRW1wdHkgcGxhdGZvcm1OYW1lcyBsaXN0LicsXG4gICAgICAgICAgdmFsOiBwbGF0Zm9ybU5hbWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgcE5hbWUgb2YgcGxhdGZvcm1OYW1lcykge1xuICAgICAgICAgIGlmICghXy5pc1N0cmluZyhwTmFtZSkpIHtcbiAgICAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICAgICBlcnI6ICdJbmNvcnJlY3RseSBmb3JtYXR0ZWQgcGxhdGZvcm1OYW1lLicsXG4gICAgICAgICAgICAgIHZhbDogcE5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgYXV0b21hdGlvbk5hbWUnLFxuICAgICAgICB2YWw6IGF1dG9tYXRpb25OYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuaGFzKGF1dG9tYXRpb25OYW1lKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgIGVycjogJ011bHRpcGxlIGRyaXZlcnMgY2xhaW0gc3VwcG9ydCBmb3IgdGhlIHNhbWUgYXV0b21hdGlvbk5hbWUnLFxuICAgICAgICB2YWw6IGF1dG9tYXRpb25OYW1lLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gc2hvdWxkIHdlIHJldGFpbiB0aGUgbmFtZSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24sIG9uY2Ugd2UndmUgY2hlY2tlZCB0aGVyZSBhcmUgbm8gcHJvYmxlbXM/XG4gICAgdGhpcy5rbm93bkF1dG9tYXRpb25OYW1lcy5hZGQoYXV0b21hdGlvbk5hbWUpO1xuXG4gICAgcmV0dXJuIHByb2JsZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TmFtZTxEcml2ZXJUeXBlPn0gZHJpdmVyTmFtZVxuICAgKiBAcGFyYW0ge0V4dE1hbmlmZXN0PERyaXZlclR5cGU+fSBleHREYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBleHRlbnNpb25EZXNjKGRyaXZlck5hbWUsIHt2ZXJzaW9uLCBhdXRvbWF0aW9uTmFtZX0pIHtcbiAgICByZXR1cm4gYCR7ZHJpdmVyTmFtZX1AJHt2ZXJzaW9ufSAoYXV0b21hdGlvbk5hbWUgJyR7YXV0b21hdGlvbk5hbWV9JylgO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGNhcGFiaWxpdGllcywgZmluZCBhIG1hdGNoaW5nIGRyaXZlciB3aXRoaW4gdGhlIGNvbmZpZy4gTG9hZCBpdHMgY2xhc3MgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHZlcnNpb24gYW5kIGRyaXZlciBuYW1lLlxuICAgKiBAcGFyYW0ge0NhcGFiaWxpdGllc30gY2Fwc1xuICAgKiBAcmV0dXJucyB7TWF0Y2hlZERyaXZlcn1cbiAgICovXG4gIGZpbmRNYXRjaGluZ0RyaXZlcih7YXV0b21hdGlvbk5hbWUsIHBsYXRmb3JtTmFtZX0pIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcocGxhdGZvcm1OYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBpbmNsdWRlIGEgcGxhdGZvcm1OYW1lIGNhcGFiaWxpdHknKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IGluY2x1ZGUgYW4gYXV0b21hdGlvbk5hbWUgY2FwYWJpbGl0eScpO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKFxuICAgICAgYEF0dGVtcHRpbmcgdG8gZmluZCBtYXRjaGluZyBkcml2ZXIgZm9yIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICcke3BsYXRmb3JtTmFtZX0nYFxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RyaXZlck5hbWUsIG1haW5DbGFzcywgdmVyc2lvbn0gPSB0aGlzLl9nZXREcml2ZXJCeVN1cHBvcnQoXG4gICAgICAgIGF1dG9tYXRpb25OYW1lLFxuICAgICAgICBwbGF0Zm9ybU5hbWVcbiAgICAgICk7XG4gICAgICBsb2cuaW5mbyhgVGhlICcke2RyaXZlck5hbWV9JyBkcml2ZXIgd2FzIGluc3RhbGxlZCBhbmQgbWF0Y2hlZCBjYXBzLmApO1xuICAgICAgbG9nLmluZm8oYFdpbGwgcmVxdWlyZSBpdCBhdCAke3RoaXMuZ2V0SW5zdGFsbFBhdGgoZHJpdmVyTmFtZSl9YCk7XG4gICAgICBjb25zdCBkcml2ZXIgPSB0aGlzLnJlcXVpcmUoZHJpdmVyTmFtZSk7XG4gICAgICBpZiAoIWRyaXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYERyaXZlciAnJHtkcml2ZXJOYW1lfScgZGlkIG5vdCBleHBvcnQgYSBjbGFzcyB3aXRoIG5hbWUgJyR7bWFpbkNsYXNzfScuIENvbnRhY3QgdGhlIGF1dGhvciBvZiB0aGUgZHJpdmVyIWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7ZHJpdmVyLCB2ZXJzaW9uLCBkcml2ZXJOYW1lfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IG1zZyA9XG4gICAgICAgIGBDb3VsZCBub3QgZmluZCBhIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgIGAnJHthdXRvbWF0aW9uTmFtZX0nIGFuZCBwbGF0Zm9ybU5hbWUgJHtwbGF0Zm9ybU5hbWV9Jy4gYCArXG4gICAgICAgIGBIYXZlIHlvdSBpbnN0YWxsZWQgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aG9zZSBgICtcbiAgICAgICAgYGNhcGFiaWxpdGllcz8gUnVuICdhcHBpdW0gZHJpdmVyIGxpc3QgLS1pbnN0YWxsZWQnIHRvIHNlZS4gYCArXG4gICAgICAgIGAoTG93ZXItbGV2ZWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9KWA7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYW4gYXV0b21hdGlvbiBuYW1lIGFuZCBwbGF0Zm9ybSBuYW1lLCBmaW5kIGEgc3VpdGFibGUgZHJpdmVyIGFuZCByZXR1cm4gaXRzIGV4dGVuc2lvbiBkYXRhLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hBdXRvbWF0aW9uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hQbGF0Zm9ybU5hbWVcbiAgICogQHJldHVybnMge0V4dE1ldGFkYXRhPERyaXZlclR5cGU+ICYgaW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5JbnRlcm5hbE1ldGFkYXRhICYgaW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5Db21tb25FeHRNZXRhZGF0YX1cbiAgICovXG4gIF9nZXREcml2ZXJCeVN1cHBvcnQobWF0Y2hBdXRvbWF0aW9uTmFtZSwgbWF0Y2hQbGF0Zm9ybU5hbWUpIHtcbiAgICBjb25zdCBkcml2ZXJzID0gdGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zO1xuICAgIGZvciAoY29uc3QgW2RyaXZlck5hbWUsIGRyaXZlckRhdGFdIG9mIF8udG9QYWlycyhkcml2ZXJzKSkge1xuICAgICAgY29uc3Qge2F1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWVzfSA9IGRyaXZlckRhdGE7XG4gICAgICBjb25zdCBhTmFtZU1hdGNoZXMgPSBhdXRvbWF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpID09PSBtYXRjaEF1dG9tYXRpb25OYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBwTmFtZU1hdGNoZXMgPSBfLmluY2x1ZGVzKFxuICAgICAgICBwbGF0Zm9ybU5hbWVzLm1hcChfLnRvTG93ZXIpLFxuICAgICAgICBtYXRjaFBsYXRmb3JtTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICApO1xuXG4gICAgICBpZiAoYU5hbWVNYXRjaGVzICYmIHBOYW1lTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4ge2RyaXZlck5hbWUsIC4uLmRyaXZlckRhdGF9O1xuICAgICAgfVxuXG4gICAgICBpZiAoYU5hbWVNYXRjaGVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRHJpdmVyICcke2RyaXZlck5hbWV9JyBzdXBwb3J0cyBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgIGAnJHthdXRvbWF0aW9uTmFtZX0nLCBidXQgQXBwaXVtIGNvdWxkIG5vdCBmaW5kIGAgK1xuICAgICAgICAgICAgYHN1cHBvcnQgZm9yIHBsYXRmb3JtTmFtZSAnJHttYXRjaFBsYXRmb3JtTmFtZX0nLiBTdXBwb3J0ZWQgYCArXG4gICAgICAgICAgICBgcGxhdGZvcm1OYW1lcyBhcmU6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkocGxhdGZvcm1OYW1lcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGluc3RhbGxlZCBkcml2ZXIgdG8gc3VwcG9ydCBnaXZlbiBjYXBzYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0TWV0YWRhdGE8VD59IEV4dE1ldGFkYXRhXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5NYW5pZmVzdH0gTWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRSZWNvcmQ8VD59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkV4dE5hbWU8VD59IEV4dE5hbWVcbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIERyaXZlckNvbmZpZy5maW5kTWF0Y2hpbmdEcml2ZXJ9XG4gKiBAdHlwZWRlZiBNYXRjaGVkRHJpdmVyXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlckNsYXNzfSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZHJpdmVyTmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNhcGFiaWxpdGllc30gQ2FwYWJpbGl0aWVzXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLTyxNQUFNQSxZQUFOLFNBQTJCQyxnQ0FBM0IsQ0FBMkM7RUFLaERDLG9CQUFvQjtFQVlILE9BQVZDLFVBQVUsR0FBRyxJQUFJQyxPQUFKLEVBQUg7O0VBT2pCQyxXQUFXLENBQUNDLFFBQUQsRUFBVztJQUNwQixNQUFNQyxzQkFBTixFQUFtQkQsUUFBbkI7SUFFQSxLQUFLSixvQkFBTCxHQUE0QixJQUFJTSxHQUFKLEVBQTVCO0VBQ0Q7O0VBU1ksT0FBTkMsTUFBTSxDQUFDSCxRQUFELEVBQVc7SUFDdEIsTUFBTUksUUFBUSxHQUFHLElBQUlWLFlBQUosQ0FBaUJNLFFBQWpCLENBQWpCOztJQUNBLElBQUlOLFlBQVksQ0FBQ1csV0FBYixDQUF5QkwsUUFBekIsQ0FBSixFQUF3QztNQUN0QyxNQUFNLElBQUlNLEtBQUosQ0FDSCw2QkFBNEJOLFFBQVEsQ0FBQ08sVUFBVyw2RUFEN0MsQ0FBTjtJQUdEOztJQUNEYixZQUFZLENBQUNHLFVBQWIsQ0FBd0JXLEdBQXhC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
@@ -4,7 +4,7 @@
4
4
  * Subclasses should provide the generic parameter to implement.
5
5
  * @template {ExtensionType} ExtType
6
6
  */
7
- export class ExtensionConfig<ExtType extends import("../../types").ExtensionType> {
7
+ export class ExtensionConfig<ExtType extends import("@appium/types").ExtensionType> {
8
8
  /**
9
9
  * Intended to be called by corresponding instance methods of subclass.
10
10
  * @private
@@ -12,7 +12,7 @@ export class ExtensionConfig<ExtType extends import("../../types").ExtensionType
12
12
  * @param {string} appiumHome
13
13
  * @param {ExtType} extType
14
14
  * @param {ExtName<ExtType>} extName - Extension name (unique to its type)
15
- * @param {ExtManifestWithSchema<ExtType>} extData - Extension config
15
+ * @param {ExtManifestWithSchema<ExtType>} extManifest - Extension config
16
16
  * @returns {import('ajv').SchemaObject|undefined}
17
17
  */
18
18
  private static _readExtensionSchema;
@@ -20,15 +20,14 @@ export class ExtensionConfig<ExtType extends import("../../types").ExtensionType
20
20
  * Returns `true` if a specific {@link ExtManifest} object has a `schema` prop.
21
21
  * The {@link ExtManifest} object becomes a {@link ExtManifestWithSchema} object.
22
22
  * @template {ExtensionType} ExtType
23
- * @param {ExtManifest<ExtType>} extData
24
- * @returns {extData is ExtManifestWithSchema<ExtType>}
23
+ * @param {ExtManifest<ExtType>} extManifest
24
+ * @returns {extManifest is ExtManifestWithSchema<ExtType>}
25
25
  */
26
- static extDataHasSchema<ExtType_1 extends import("../../types").ExtensionType>(extData: ExtManifest<ExtType_1>): extData is ExtManifestWithSchema<ExtType_1>;
26
+ static extDataHasSchema<ExtType_1 extends import("@appium/types").ExtensionType>(extManifest: ExtManifest<ExtType_1>): extManifest is ExtManifestWithSchema<ExtType_1>;
27
27
  /**
28
28
  * @protected
29
29
  * @param {ExtType} extensionType - Type of extension
30
30
  * @param {Manifest} manifest - `Manifest` instance
31
- * @param {ExtensionLogFn} [logFn]
32
31
  */
33
32
  protected constructor();
34
33
  /** @type {ExtType} */
@@ -37,50 +36,118 @@ export class ExtensionConfig<ExtType extends import("../../types").ExtensionType
37
36
  configKey: `${ExtType}s`;
38
37
  /** @type {ExtRecord<ExtType>} */
39
38
  installedExtensions: ExtRecord<ExtType>;
40
- /** @type {ExtensionLogFn} */
41
- log: ExtensionLogFn;
39
+ /** @type {import('@appium/types').AppiumLogger} */
40
+ log: import('@appium/types').AppiumLogger;
42
41
  /** @type {Manifest} */
43
42
  manifest: Manifest;
43
+ /**
44
+ * @type {ExtensionListData}
45
+ */
46
+ _listDataCache: ExtensionListData;
44
47
  get manifestPath(): string;
45
48
  get appiumHome(): string;
46
49
  /**
47
- * Checks extensions for problems
48
- * @param {ExtRecord<ExtType>} exts - Extension data
50
+ * Returns a list of errors for a given extension.
51
+ *
52
+ * @param {ExtName<ExtType>} extName
53
+ * @param {ExtManifest<ExtType>} extManifest
54
+ * @returns {ExtManifestProblem[]}
49
55
  */
50
- validate(exts: ExtRecord<ExtType>): ExtRecord<ExtType>;
56
+ getProblems(extName: ExtName<ExtType>, extManifest: ExtManifest<ExtType>): ExtManifestProblem[];
51
57
  /**
52
- * @param {ExtManifest<ExtType>} extData
58
+ * Returns a list of warnings for a given extension.
59
+ *
53
60
  * @param {ExtName<ExtType>} extName
54
- * @returns {Problem[]}
61
+ * @param {ExtManifest<ExtType>} extManifest
62
+ * @returns {Promise<string[]>}
55
63
  */
56
- getSchemaProblems(extData: ExtManifest<ExtType>, extName: ExtName<ExtType>): Problem[];
64
+ getWarnings(extName: ExtName<ExtType>, extManifest: ExtManifest<ExtType>): Promise<string[]>;
57
65
  /**
58
- * @param {ExtManifest<ExtType>} extData
66
+ * Returns a list of extension-type-specific issues. To be implemented by subclasses.
67
+ * @abstract
68
+ * @param {ExtManifest<ExtType>} extManifest
59
69
  * @param {ExtName<ExtType>} extName
60
- * @returns {Problem[]}
70
+ * @returns {Promise<string[]>}
71
+ */
72
+ getConfigWarnings(extManifest: ExtManifest<ExtType>, extName: ExtName<ExtType>): Promise<string[]>;
73
+ /**
74
+ *
75
+ * @param {Map<ExtName<ExtType>,ExtManifestProblem[]>} [errorMap]
76
+ * @param {Map<ExtName<ExtType>,string[]>} [warningMap]
61
77
  */
62
- getGenericConfigProblems(extData: ExtManifest<ExtType>, extName: ExtName<ExtType>): Problem[];
78
+ getValidationResultSummaries(errorMap?: Map<string, ExtManifestProblem[]> | undefined, warningMap?: Map<string, string[]> | undefined): {
79
+ errorSummaries: string[];
80
+ warningSummaries: string[];
81
+ };
82
+ /**
83
+ * Checks extensions for problems. To be called by subclasses' `validate` method.
84
+ *
85
+ * Errors and warnings will be displayed to the user.
86
+ *
87
+ * This method mutates `exts`.
88
+ *
89
+ * @protected
90
+ * @param {ExtRecord<ExtType>} exts - Lookup of extension names to {@linkcode ExtManifest} objects
91
+ * @returns {Promise<ExtRecord<ExtType>>} The same lookup, but picking only error-free extensions
92
+ */
93
+ protected _validate(exts: ExtRecord<ExtType>): Promise<ExtRecord<ExtType>>;
94
+ /**
95
+ * Retrieves listing data for extensions via command class.
96
+ * Caches the result in {@linkcode ExtensionConfig._listDataCache}
97
+ * @protected
98
+ * @returns {Promise<ExtensionListData>}
99
+ */
100
+ protected getListData(): Promise<ExtensionListData>;
101
+ /**
102
+ * Returns a list of warnings for a particular extension.
103
+ *
104
+ * By definition, a non-empty list of warnings does _not_ imply the extension cannot be loaded,
105
+ * but it may not work as expected or otherwise throw an exception at runtime.
106
+ *
107
+ * @param {ExtManifest<ExtType>} extManifest
108
+ * @param {ExtName<ExtType>} extName
109
+ * @returns {Promise<string[]>}
110
+ */
111
+ getGenericConfigWarnings(extManifest: ExtManifest<ExtType>, extName: ExtName<ExtType>): Promise<string[]>;
112
+ /**
113
+ * Returns list of unrecoverable errors (if any) for the given extension _if_ it has a `schema` property.
114
+ *
115
+ * @param {ExtManifest<ExtType>} extManifest - Extension data (from manifest)
116
+ * @param {ExtName<ExtType>} extName - Extension name (from manifest)
117
+ * @returns {ExtManifestProblem[]}
118
+ */
119
+ getSchemaProblems(extManifest: ExtManifest<ExtType>, extName: ExtName<ExtType>): ExtManifestProblem[];
120
+ /**
121
+ * Return a list of generic unrecoverable errors for the given extension
122
+ * @param {ExtManifest<ExtType>} extManifest - Extension data (from manifest)
123
+ * @param {ExtName<ExtType>} extName - Extension name (from manifest)
124
+ * @returns {ExtManifestProblem[]}
125
+ */
126
+ getGenericConfigProblems(extManifest: ExtManifest<ExtType>, extName: ExtName<ExtType>): ExtManifestProblem[];
63
127
  /**
64
128
  * @abstract
65
- * @param {ExtManifest<ExtType>} extData
66
- * @returns {Problem[]}
129
+ * @param {ExtManifest<ExtType>} extManifest
130
+ * @param {ExtName<ExtType>} extName
131
+ * @returns {ExtManifestProblem[]}
67
132
  */
68
- getConfigProblems(extData: ExtManifest<ExtType>): Problem[];
133
+ getConfigProblems(extManifest: ExtManifest<ExtType>, extName: ExtName<ExtType>): ExtManifestProblem[];
69
134
  /**
70
135
  * @param {string} extName
71
- * @param {ExtManifest<ExtType>} extData
136
+ * @param {ExtManifest<ExtType>} extManifest
72
137
  * @param {ExtensionConfigMutationOpts} [opts]
73
138
  * @returns {Promise<void>}
74
139
  */
75
- addExtension(extName: string, extData: ExtManifest<ExtType>, { write }?: ExtensionConfigMutationOpts | undefined): Promise<void>;
140
+ addExtension(extName: string, extManifest: ExtManifest<ExtType>, { write }?: ExtensionConfigMutationOpts | undefined): Promise<void>;
76
141
  /**
77
142
  * @param {ExtName<ExtType>} extName
78
- * @param {ExtManifest<ExtType>|import('../cli/extension-command').ExtensionFields<ExtType>} extData
143
+ * @param {ExtManifest<ExtType>|import('../cli/extension-command').ExtensionFields<ExtType>} extManifest
79
144
  * @param {ExtensionConfigMutationOpts} [opts]
80
145
  * @returns {Promise<void>}
81
146
  */
82
- updateExtension(extName: ExtName<ExtType>, extData: ExtManifest<ExtType> | import('../cli/extension-command').ExtensionFields<ExtType>, { write }?: ExtensionConfigMutationOpts | undefined): Promise<void>;
147
+ updateExtension(extName: ExtName<ExtType>, extManifest: ExtManifest<ExtType> | import('../cli/extension-command').ExtensionFields<ExtType>, { write }?: ExtensionConfigMutationOpts | undefined): Promise<void>;
83
148
  /**
149
+ * Remove an extension from the list of installed extensions, and optionally avoid a write to the manifest file.
150
+ *
84
151
  * @param {ExtName<ExtType>} extName
85
152
  * @param {ExtensionConfigMutationOpts} [opts]
86
153
  * @returns {Promise<void>}
@@ -94,11 +161,11 @@ export class ExtensionConfig<ExtType extends import("../../types").ExtensionType
94
161
  /**
95
162
  * Returns a string describing the extension. Subclasses must implement.
96
163
  * @param {ExtName<ExtType>} extName - Extension name
97
- * @param {ExtManifest<ExtType>} extData - Extension data
164
+ * @param {ExtManifest<ExtType>} extManifest - Extension data
98
165
  * @returns {string}
99
166
  * @abstract
100
167
  */
101
- extensionDesc(extName: ExtName<ExtType>, extData: ExtManifest<ExtType>): string;
168
+ extensionDesc(extName: ExtName<ExtType>, extManifest: ExtManifest<ExtType>): string;
102
169
  /**
103
170
  * @param {string} extName
104
171
  * @returns {string}
@@ -119,15 +186,17 @@ export class ExtensionConfig<ExtType extends import("../../types").ExtensionType
119
186
  * If an extension provides a schema, this will load the schema and attempt to
120
187
  * register it with the schema registrar.
121
188
  * @param {ExtName<ExtType>} extName - Name of extension
122
- * @param {ExtManifestWithSchema<ExtType>} extData - Extension data
189
+ * @param {ExtManifestWithSchema<ExtType>} extManifest - Extension data
123
190
  * @returns {import('ajv').SchemaObject|undefined}
124
191
  */
125
- readExtensionSchema(extName: ExtName<ExtType>, extData: ExtManifestWithSchema<ExtType>): import('ajv').SchemaObject | undefined;
192
+ readExtensionSchema(extName: ExtName<ExtType>, extManifest: ExtManifestWithSchema<ExtType>): import('ajv').SchemaObject | undefined;
126
193
  }
127
194
  /**
128
- * Config problem
195
+ * An issue with the {@linkcode ExtManifest } for a particular extension.
196
+ *
197
+ * The existance of such an object implies that the extension cannot be loaded.
129
198
  */
130
- export type Problem = {
199
+ export type ExtManifestProblem = {
131
200
  /**
132
201
  * - Error message
133
202
  */
@@ -141,13 +210,14 @@ export type Problem = {
141
210
  * An optional logging function provided to an {@link ExtensionConfig } subclass.
142
211
  */
143
212
  export type ExtensionLogFn = (...args: any[]) => void;
144
- export type ExtensionType = import('../../types').ExtensionType;
213
+ export type ExtensionType = import('@appium/types').ExtensionType;
145
214
  export type Manifest = import('./manifest').Manifest;
146
- export type ExtManifest<T> = import('../../types/appium-manifest').ExtManifest<T>;
147
- export type ExtManifestWithSchema<T> = import('../../types/appium-manifest').ExtManifestWithSchema<T>;
148
- export type ExtName<T> = import('../../types/appium-manifest').ExtName<T>;
149
- export type ExtClass<T> = import('../../types/extension').ExtClass<T>;
150
- export type ExtRecord<T> = import('../../types/appium-manifest').ExtRecord<T>;
215
+ export type ExtManifest<T> = import('appium/types').ExtManifest<T>;
216
+ export type ExtManifestWithSchema<T> = import('appium/types').ExtManifestWithSchema<T>;
217
+ export type ExtName<T> = import('appium/types').ExtName<T>;
218
+ export type ExtClass<T> = import('appium/types').ExtClass<T>;
219
+ export type ExtRecord<T> = import('appium/types').ExtRecord<T>;
220
+ export type ExtCommand<T> = import('../cli/extension').ExtCommand<T>;
151
221
  /**
152
222
  * Options for various methods in {@link ExtensionConfig }
153
223
  */
@@ -161,6 +231,8 @@ export type ExtensionConfigMutationOpts = {
161
231
  * A valid install type
162
232
  */
163
233
  export type InstallType = typeof INSTALL_TYPE_NPM | typeof INSTALL_TYPE_GIT | typeof INSTALL_TYPE_LOCAL | typeof INSTALL_TYPE_GITHUB;
234
+ export type ExtensionListData = import('../cli/extension-command').ExtensionListData;
235
+ export type InstalledExtensionListData = import('../cli/extension-command').InstalledExtensionListData;
164
236
  export const INSTALL_TYPE_NPM: "npm";
165
237
  export const INSTALL_TYPE_GIT: "git";
166
238
  export const INSTALL_TYPE_LOCAL: "local";
@@ -1 +1 @@
1
- {"version":3,"file":"extension-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/extension-config.js"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH;IAkTE;;;;;;;;;OASG;IACH,oCAoBC;IAED;;;;;;OAMG;IACH,6JAEC;IA3UD;;;;;OAKG;IACH,wBAOC;IA5BD,sBAAsB;IACtB,eADW,OAAO,CACJ;IAEd,4BAA4B;IAC5B,WADW,GAAG,OAAO,GAAG,CACd;IAEV,iCAAiC;IACjC,qBADW,UAAU,OAAO,CAAC,CACT;IAEpB,6BAA6B;IAC7B,KADW,cAAc,CACrB;IAEJ,uBAAuB;IACvB,UADW,QAAQ,CACV;IAiBT,2BAEC;IAED,yBAEC;IAED;;;OAGG;IACH,eAFW,UAAU,OAAO,CAAC,sBAgD5B;IAED;;;;OAIG;IACH,2BAJW,YAAY,OAAO,CAAC,WACpB,QAAQ,OAAO,CAAC,GACd,OAAO,EAAE,CAyCrB;IAED;;;;OAIG;IAEH,kCALW,YAAY,OAAO,CAAC,WACpB,QAAQ,OAAO,CAAC,GACd,OAAO,EAAE,CAyCrB;IAED;;;;OAIG;IAEH,2BAJW,YAAY,OAAO,CAAC,GAClB,OAAO,EAAE,CAMrB;IAED;;;;;OAKG;IACH,sBALW,MAAM,WACN,YAAY,OAAO,CAAC,wDAElB,QAAQ,IAAI,CAAC,CAOzB;IAED;;;;;OAKG;IACH,yBALW,QAAQ,OAAO,CAAC,WAChB,YAAY,OAAO,CAAC,GAAC,OAAO,0BAA0B,EAAE,eAAe,CAAC,OAAO,CAAC,wDAE9E,QAAQ,IAAI,CAAC,CAUzB;IAED;;;;OAIG;IACH,yBAJW,QAAQ,OAAO,CAAC,wDAEd,QAAQ,IAAI,CAAC,CAOzB;IAED;;;OAGG;IAEH,2CAHa,IAAI,CAqBhB;IAED;;;;;;OAMG;IAEH,uBANW,QAAQ,OAAO,CAAC,WAChB,YAAY,OAAO,CAAC,GAClB,MAAM,CAMlB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAHW,QAAQ,OAAO,CAAC,GACd,SAAS,OAAO,CAAC,CAa7B;IAED;;;OAGG;IACH,qBAHW,MAAM,GACJ,OAAO,CAInB;IA6CD;;;;;;OAMG;IACH,6BAJW,QAAQ,OAAO,CAAC,WAChB,sBAAsB,OAAO,CAAC,GAC5B,OAAO,KAAK,EAAE,YAAY,GAAC,SAAS,CAShD;CACF;;;;;;;;SAaa,MAAM;;;;SACN,GAAG;;;;;uCAMH,GAAG,OACJ,IAAI;4BAIJ,OAAO,aAAa,EAAE,aAAa;uBACnC,OAAO,YAAY,EAAE,QAAQ;6BAK7B,OAAO,6BAA6B,EAAE,WAAW,CAAC,CAAC,CAAC;uCAKpD,OAAO,6BAA6B,EAAE,qBAAqB,CAAC,CAAC,CAAC;yBAK9D,OAAO,6BAA6B,EAAE,OAAO,CAAC,CAAC,CAAC;0BAKhD,OAAO,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;2BAK3C,OAAO,6BAA6B,EAAE,SAAS,CAAC,CAAC,CAAC;;;;;;;;;;;;;0BAWlD,uBAAuB,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,0BAA0B;AA7bvH,qCAA+B;AAG/B,qCAA+B;AAF/B,yCAAmC;AACnC,2CAAqC;AAGrC,+BAA+B;AAC/B,4BADW,IAAI,WAAW,CAAC,CAMxB"}
1
+ {"version":3,"file":"extension-config.d.ts","sourceRoot":"","sources":["../../../lib/extension/extension-config.js"],"names":[],"mappings":"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"}