appium 2.0.0-beta.26 → 2.0.0-beta.29

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 (118) hide show
  1. package/build/lib/appium.d.ts +215 -0
  2. package/build/lib/appium.d.ts.map +1 -0
  3. package/build/lib/appium.js +62 -54
  4. package/build/lib/cli/args.d.ts +20 -0
  5. package/build/lib/cli/args.d.ts.map +1 -0
  6. package/build/lib/cli/args.js +1 -1
  7. package/build/lib/cli/driver-command.d.ts +36 -0
  8. package/build/lib/cli/driver-command.d.ts.map +1 -0
  9. package/build/lib/cli/driver-command.js +8 -7
  10. package/build/lib/cli/extension-command.d.ts +345 -0
  11. package/build/lib/cli/extension-command.d.ts.map +1 -0
  12. package/build/lib/cli/extension-command.js +52 -38
  13. package/build/lib/cli/extension.d.ts +14 -0
  14. package/build/lib/cli/extension.d.ts.map +1 -0
  15. package/build/lib/cli/extension.js +7 -2
  16. package/build/lib/cli/parser.d.ts +79 -0
  17. package/build/lib/cli/parser.d.ts.map +1 -0
  18. package/build/lib/cli/parser.js +1 -1
  19. package/build/lib/cli/plugin-command.d.ts +39 -0
  20. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  21. package/build/lib/cli/plugin-command.js +6 -7
  22. package/build/lib/cli/utils.d.ts +29 -0
  23. package/build/lib/cli/utils.d.ts.map +1 -0
  24. package/build/lib/cli/utils.js +1 -1
  25. package/build/lib/config-file.d.ts +100 -0
  26. package/build/lib/config-file.d.ts.map +1 -0
  27. package/build/lib/config-file.js +1 -1
  28. package/build/lib/config.d.ts +40 -0
  29. package/build/lib/config.d.ts.map +1 -0
  30. package/build/lib/config.js +2 -2
  31. package/build/lib/constants.d.ts +48 -0
  32. package/build/lib/constants.d.ts.map +1 -0
  33. package/build/lib/constants.js +1 -1
  34. package/build/lib/extension/driver-config.d.ts +84 -0
  35. package/build/lib/extension/driver-config.d.ts.map +1 -0
  36. package/build/lib/extension/driver-config.js +1 -1
  37. package/build/lib/extension/extension-config.d.ts +170 -0
  38. package/build/lib/extension/extension-config.d.ts.map +1 -0
  39. package/build/lib/extension/extension-config.js +2 -2
  40. package/build/lib/extension/index.d.ts +39 -0
  41. package/build/lib/extension/index.d.ts.map +1 -0
  42. package/build/lib/extension/index.js +1 -1
  43. package/build/lib/extension/manifest.d.ts +174 -0
  44. package/build/lib/extension/manifest.d.ts.map +1 -0
  45. package/build/lib/extension/manifest.js +1 -1
  46. package/build/lib/extension/package-changed.d.ts +11 -0
  47. package/build/lib/extension/package-changed.d.ts.map +1 -0
  48. package/build/lib/extension/package-changed.js +1 -1
  49. package/build/lib/extension/plugin-config.d.ts +62 -0
  50. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  51. package/build/lib/extension/plugin-config.js +1 -1
  52. package/build/lib/grid-register.d.ts +10 -0
  53. package/build/lib/grid-register.d.ts.map +1 -0
  54. package/build/lib/logger.d.ts +3 -0
  55. package/build/lib/logger.d.ts.map +1 -0
  56. package/build/lib/logsink.d.ts +4 -0
  57. package/build/lib/logsink.d.ts.map +1 -0
  58. package/build/lib/logsink.js +1 -1
  59. package/build/lib/main.d.ts +51 -0
  60. package/build/lib/main.d.ts.map +1 -0
  61. package/build/lib/main.js +1 -1
  62. package/build/lib/schema/arg-spec.d.ts +143 -0
  63. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  64. package/build/lib/schema/arg-spec.js +1 -1
  65. package/build/lib/schema/cli-args.d.ts +19 -0
  66. package/build/lib/schema/cli-args.d.ts.map +1 -0
  67. package/build/lib/schema/cli-args.js +1 -1
  68. package/build/lib/schema/cli-transformers.d.ts +5 -0
  69. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  70. package/build/lib/schema/cli-transformers.js +1 -1
  71. package/build/lib/schema/index.d.ts +3 -0
  72. package/build/lib/schema/index.d.ts.map +1 -0
  73. package/build/lib/schema/keywords.d.ts +24 -0
  74. package/build/lib/schema/keywords.d.ts.map +1 -0
  75. package/build/lib/schema/keywords.js +1 -1
  76. package/build/lib/schema/schema.d.ts +259 -0
  77. package/build/lib/schema/schema.d.ts.map +1 -0
  78. package/build/lib/schema/schema.js +3 -3
  79. package/build/lib/utils.d.ts +66 -0
  80. package/build/lib/utils.d.ts.map +1 -0
  81. package/build/lib/utils.js +6 -4
  82. package/build/tsconfig.tsbuildinfo +1 -0
  83. package/lib/appium.js +163 -81
  84. package/lib/cli/args.js +1 -2
  85. package/lib/cli/driver-command.js +11 -8
  86. package/lib/cli/extension-command.js +129 -80
  87. package/lib/cli/extension.js +13 -3
  88. package/lib/cli/parser.js +1 -2
  89. package/lib/cli/plugin-command.js +16 -6
  90. package/lib/cli/utils.js +1 -1
  91. package/lib/config-file.js +3 -4
  92. package/lib/config.js +12 -8
  93. package/lib/constants.js +0 -1
  94. package/lib/extension/driver-config.js +31 -12
  95. package/lib/extension/extension-config.js +21 -22
  96. package/lib/extension/index.js +1 -2
  97. package/lib/extension/manifest.js +23 -127
  98. package/lib/extension/package-changed.js +0 -1
  99. package/lib/extension/plugin-config.js +9 -7
  100. package/lib/logsink.js +4 -0
  101. package/lib/main.js +9 -10
  102. package/lib/schema/arg-spec.js +10 -6
  103. package/lib/schema/cli-args.js +0 -1
  104. package/lib/schema/cli-transformers.js +0 -1
  105. package/lib/schema/keywords.js +0 -1
  106. package/lib/schema/schema.js +2 -3
  107. package/lib/utils.js +49 -16
  108. package/package.json +12 -14
  109. package/types/appium-manifest.d.ts +61 -0
  110. package/types/cli.d.ts +134 -0
  111. package/types/extension.d.ts +56 -0
  112. package/types/external-manifest.d.ts +58 -0
  113. package/types/index.d.ts +7 -0
  114. package/build/lib/appium-config.schema.json +0 -278
  115. package/build/lib/schema/appium-config-schema.js +0 -251
  116. package/lib/schema/appium-config-schema.js +0 -287
  117. package/types/appium-config.d.ts +0 -197
  118. package/types/types.d.ts +0 -245
@@ -141,4 +141,4 @@ const serverArgsDisallowedInConfig = new Map([[['--shell'], {
141
141
  required: false,
142
142
  help: 'Explicit path to Appium configuration file'
143
143
  }]]);
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvYXJncy5qcyJdLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiSU5TVEFMTF9UWVBFU19BUlJBWSIsIklOU1RBTExfVFlQRVMiLCJFWFRFTlNJT05fVFlQRVMiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiZ2xvYmFsRXh0ZW5zaW9uQXJncyIsIk1hcCIsInJlcXVpcmVkIiwiZGVmYXVsdCIsImFjdGlvbiIsImhlbHAiLCJkZXN0IiwiZ2V0RXh0ZW5zaW9uQXJncyIsIl8iLCJtZW1vaXplIiwiZXh0ZW5zaW9uQXJncyIsInR5cGUiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwibWFrZUxpc3RBcmdzIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIm1ha2VJbnN0YWxsQXJncyIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIm1ha2VVbmluc3RhbGxBcmdzIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwibWFrZVVwZGF0ZUFyZ3MiLCJFWFRfU1VCQ09NTUFORF9SVU4iLCJtYWtlUnVuQXJncyIsImNob2ljZXMiLCJqb2luIiwiZ2V0U2VydmVyQXJncyIsInNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWciLCJjb25zdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EsTUFBTUEsY0FBYyxHQUFHLFVBQXZCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGVBQXZCO0FBTUEsTUFBTUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHQyw4QkFBSixDQUE1QjtBQUdBLE1BQU1DLGVBQWUsR0FBRyxJQUFJQyxHQUFKLENBQVEsQ0FBQ0Msc0JBQUQsRUFBY0Msc0JBQWQsQ0FBUixDQUF4QjtBQUlBLE1BQU1DLG1CQUFtQixHQUFHLElBQUlDLEdBQUosQ0FBUSxDQUNsQyxDQUFDLENBQUMsUUFBRCxDQUFELEVBQWE7QUFDWEMsRUFBQUEsUUFBUSxFQUFF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LEVBRUU7QUFDRUMsRUFBQUEsSUFBSSxFQUFFLFlBRFI7QUFFRUssRUFBQUEsSUFBSSxFQUFFLFFBRlI7QUFHRVQsRUFBQUEsUUFBUSxFQUFFLEtBSFo7QUFJRUcsRUFBQUEsSUFBSSxFQUFFO0FBSlIsQ0FGRixDQS9CMkMsQ0FBUixDQUFyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFLCBFWFRfU1VCQ09NTUFORF9JTlNUQUxMLCBFWFRfU1VCQ09NTUFORF9MSVNULCBFWFRfU1VCQ09NTUFORF9SVU4sIEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCwgRVhUX1NVQkNPTU1BTkRfVVBEQVRFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IElOU1RBTExfVFlQRVMgfSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgeyB0b1BhcnNlckFyZ3MgfSBmcm9tICcuLi9zY2hlbWEvY2xpLWFyZ3MnO1xuY29uc3QgRFJJVkVSX0VYQU1QTEUgPSAneGN1aXRlc3QnO1xuY29uc3QgUExVR0lOX0VYQU1QTEUgPSAnZmluZF9ieV9pbWFnZSc7XG5cbi8qKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBwYXNzIHRoZSBhcnJheSBpbnRvIGBhcmdwYXJzZWAuIGBhcmdwYXJzZWAgaXMgYmFkIGFuZCBtdXRhdGVzIHRoaW5ncy4gV2UgZG9uJ3Qgd2FudCB0aGF0LlxuICogQmFkIGBhcmdwYXJzZWAhIEJhZCFcbiAqL1xuY29uc3QgSU5TVEFMTF9UWVBFU19BUlJBWSA9IFsuLi5JTlNUQUxMX1RZUEVTXTtcblxuLyoqIEB0eXBlIHtTZXQ8RXh0ZW5zaW9uVHlwZT59ICovXG5jb25zdCBFWFRFTlNJT05fVFlQRVMgPSBuZXcgU2V0KFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKTtcblxuLy8gdGhpcyBzZXQgb2YgYXJncyB3b3JrcyBmb3IgYm90aCBkcml2ZXJzIGFuZCBwbHVnaW5zICgnZXh0ZW5zaW9ucycpXG4vKiogQHR5cGUge0FyZ3VtZW50RGVmaW5pdGlvbnN9ICovXG5jb25zdCBnbG9iYWxFeHRlbnNpb25BcmdzID0gbmV3IE1hcChbXG4gIFtbJy0tanNvbiddLCB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgIGhlbHA6ICdVc2UgSlNPTiBmb3Igb3V0cHV0IGZvcm1hdCcsXG4gICAgZGVzdDogJ2pzb24nXG4gIH1dXG5dKTtcblxuLyoqXG4gKiBCdWlsZHMgYSBSZWNvcmQgb2YgZXh0ZW5zaW9uIHR5cGVzIHRvIGEgUmVjb3JkIG9mIHN1YmNvbW1hbmRzIHRvIHRoZWlyIGFyZ3VtZW50IGRlZmluaXRpb25zXG4gKi9cbmNvbnN0IGdldEV4dGVuc2lvbkFyZ3MgPSBfLm1lbW9pemUoZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQXJncyAoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSB7fTtcbiAgZm9yIChjb25zdCB0eXBlIG9mIEVYVEVOU0lPTl9UWVBFUykge1xuICAgIGV4dGVuc2lvbkFyZ3NbdHlwZV0gPSB7XG4gICAgICBbRVhUX1NVQkNPTU1BTkRfTElTVF06IG1ha2VMaXN0QXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9JTlNUQUxMXTogbWFrZUluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VOSU5TVEFMTF06IG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1VQREFURV06IG1ha2VVcGRhdGVBcmdzKHR5cGUpLFxuICAgICAgW0VYVF9TVUJDT01NQU5EX1JVTl06IG1ha2VSdW5BcmdzKHR5cGUpLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7UmVjb3JkPEV4dGVuc2lvblR5cGUsIFJlY29yZDxpbXBvcnQoJy4uLy4uL3R5cGVzL3R5cGVzJykuQ2xpRXh0ZW5zaW9uU3ViY29tbWFuZCxBcmd1bWVudERlZmluaXRpb25zPj59ICovKGV4dGVuc2lvbkFyZ3MpO1xufSk7XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgbGlzdGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZS5cbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VMaXN0QXJncyAodHlwZSkge1xuICByZXR1cm4gbmV3IE1hcChbXG4gICAgLi4uZ2xvYmFsRXh0ZW5zaW9uQXJncyxcbiAgICBbWyctLWluc3RhbGxlZCddLCB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgaGVscDogYExpc3Qgb25seSBpbnN0YWxsZWQgJHt0eXBlfXNgLFxuICAgICAgZGVzdDogJ3Nob3dJbnN0YWxsZWQnXG4gICAgfV0sXG4gICAgW1snLS11cGRhdGVzJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICBoZWxwOiAnU2hvdyBpbmZvcm1hdGlvbiBhYm91dCBuZXdlciB2ZXJzaW9ucycsXG4gICAgICBkZXN0OiAnc2hvd1VwZGF0ZXMnXG4gICAgfV1cbiAgXSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgaW5zdGFsbGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZUluc3RhbGxBcmdzICh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gaW5zdGFsbCwgZm9yIGV4YW1wbGU6IGAgK1xuICAgICAgICAgICAgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgIH1dLFxuICAgIFtbJy0tc291cmNlJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICBjaG9pY2VzOiBJTlNUQUxMX1RZUEVTX0FSUkFZLFxuICAgICAgaGVscDogYFdoZXJlIHRvIGxvb2sgZm9yIHRoZSAke3R5cGV9IGlmIGl0IGlzIG5vdCBvbmUgb2YgQXBwaXVtJ3MgdmVyaWZpZWQgYCArXG4gICAgICAgICAgICBgJHt0eXBlfXMuIFBvc3NpYmxlIHZhbHVlczogJHtJTlNUQUxMX1RZUEVTX0FSUkFZLmpvaW4oJywgJyl9YCxcbiAgICAgIGRlc3Q6ICdpbnN0YWxsVHlwZSdcbiAgICB9XSxcbiAgICBbWyctLXBhY2thZ2UnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYElmIGluc3RhbGxpbmcgZnJvbSBHaXQgb3IgR2l0SHViLCB0aGUgcGFja2FnZSBuYW1lLCBhcyBkZWZpbmVkIGluIHRoZSBwbHVnaW4ncyBgICtcbiAgICAgICAgICAgIGBwYWNrYWdlLmpzb24gZmlsZSBpbiB0aGUgXCJuYW1lXCIgZmllbGQsIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHksIGFuZCBgICtcbiAgICAgICAgICAgIGBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBpbnN0YWxsIHdpbGwgcHJvYmFibHkgZmFpbC5gLFxuICAgICAgZGVzdDogJ3BhY2thZ2VOYW1lJyxcbiAgICB9XSxcbiAgXSk7XG59XG5cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGB1bmluc3RhbGxgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VVbmluc3RhbGxBcmdzICh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogJ05hbWUgb2YgdGhlIGRyaXZlciB0byB1bmluc3RhbGwsIGZvciBleGFtcGxlOiAnICtcbiAgICAgICAgICAgIHR5cGUgPT09IERSSVZFUl9UWVBFID8gRFJJVkVSX0VYQU1QTEUgOiBQTFVHSU5fRVhBTVBMRVxuICAgIH1dLFxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGB1cGRhdGVgIHN1YmNvbW1hbmQgZm9yIGVhY2ggZXh0ZW5zaW9uIHR5cGVcbiAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gdHlwZVxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIG1ha2VVcGRhdGVBcmdzICh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gdXBkYXRlLCBvciB0aGUgd29yZCBcImluc3RhbGxlZFwiIHRvIHVwZGF0ZSBhbGwgaW5zdGFsbGVkIGAgK1xuICAgICAgICAgICAgYCR7dHlwZX1zLiBUbyBzZWUgYXZhaWxhYmxlIHVwZGF0ZXMsIHJ1biBcImFwcGl1bSAke3R5cGV9IGxpc3QgLS1pbnN0YWxsZWQgLS11cGRhdGVzXCIuIGAgK1xuICAgICAgICAgICAgJ0ZvciBleGFtcGxlOiAnICsgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgIH1dLFxuICAgIFtbJy0tdW5zYWZlJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICBoZWxwOiBgSW5jbHVkZSB1cGRhdGVzIHRoYXQgbWlnaHQgaGF2ZSBhIG5ldyBtYWpvciByZXZpc2lvbiwgYW5kIHBvdGVudGlhbGx5IGluY2x1ZGUgYCArXG4gICAgICAgICAgICBgYnJlYWtpbmcgY2hhbmdlc2AsXG4gICAgfV0sXG4gIF0pO1xufVxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYHJ1bmAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZVJ1bkFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byBydW4gYSBzY3JpcHQgZnJvbSwgZm9yIGV4YW1wbGU6IGAgK1xuICAgICAgICAgICAgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgIH1dLFxuICAgIFtbJ3NjcmlwdE5hbWUnXSwge1xuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYE5hbWUgb2YgdGhlIHNjcmlwdCB0byBydW4gZnJvbSB0aGUgJHt0eXBlfS4gVGhlIHNjcmlwdCBuYW1lIG11c3QgYmUgY2FjaGVkIGAgK1xuICAgICAgICAgICAgYGluc2lkZSB0aGUgXCJzY3JpcHRzXCIgZmllbGQgdW5kZXIgXCJhcHBpdW1cIiBpbnNpZGUgdGhlICR7dHlwZX0ncyBcInBhY2thZ2UuanNvblwiIGZpbGVgXG4gICAgfV0sXG4gIF0pO1xufVxuXG4vKipcbiAqIERlcml2ZXMgdGhlIG9wdGlvbnMgZm9yIHRoZSBgc2VydmVyYCBjb21tYW5kIGZyb20gdGhlIHNjaGVtYSwgYW5kIGFkZHMgdGhlIGFyZ3VtZW50c1xuICogd2hpY2ggYXJlIGRpc2FsbG93ZWQgaW4gdGhlIGNvbmZpZyBmaWxlLlxuICogQHJldHVybnMge0FyZ3VtZW50RGVmaW5pdGlvbnN9XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlckFyZ3MgKCkge1xuICByZXR1cm4gbmV3IE1hcChbXG4gICAgLi4udG9QYXJzZXJBcmdzKCksXG4gICAgLi4uc2VydmVyQXJnc0Rpc2FsbG93ZWRJbkNvbmZpZyxcbiAgXSk7XG59XG5cbi8qKlxuICogVGhlc2UgZG9uJ3QgbWFrZSBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhIGNvbmZpZyBmaWxlIGZvciBvYnZpb3VzIHJlYXNvbnMuXG4gKiBAdHlwZSB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuY29uc3Qgc2VydmVyQXJnc0Rpc2FsbG93ZWRJbkNvbmZpZyA9IG5ldyBNYXAoW1xuICBbXG4gICAgWyctLXNoZWxsJ10sXG4gICAge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ0VudGVyIFJFUEwgbW9kZScsXG4gICAgICBhY3Rpb246ICdzdG9yZV9jb25zdCcsXG4gICAgICBjb25zdDogdHJ1ZSxcbiAgICAgIGRlc3Q6ICdzaGVsbCcsXG4gICAgfSxcbiAgXSxcbiAgW1xuICAgIFsnLS1zaG93LWJ1aWxkLWluZm8nXSxcbiAgICB7XG4gICAgICBkZXN0OiAnc2hvd0J1aWxkSW5mbycsXG4gICAgICBhY3Rpb246ICdzdG9yZV9jb25zdCcsXG4gICAgICBjb25zdDogdHJ1ZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhlbHA6ICdTaG93IGluZm8gYWJvdXQgdGhlIEFwcGl1bSBidWlsZCBhbmQgZXhpdCcsXG4gICAgfSxcbiAgXSxcbiAgW1xuICAgIFsnLS1zaG93LWNvbmZpZyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdzaG93Q29uZmlnJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ1Nob3cgdGhlIGN1cnJlbnQgQXBwaXVtIGNvbmZpZ3VyYXRpb24gYW5kIGV4aXQnLFxuICAgIH1cbiAgXSxcbiAgW1xuICAgIFsnLS1jb25maWcnXSxcbiAgICB7XG4gICAgICBkZXN0OiAnY29uZmlnRmlsZScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGhlbHA6ICdFeHBsaWNpdCBwYXRoIHRvIEFwcGl1bSBjb25maWd1cmF0aW9uIGZpbGUnLFxuICAgIH0sXG4gIF0sXG5dKTtcblxuZXhwb3J0IHtcbiAgZ2V0U2VydmVyQXJncyxcbiAgZ2V0RXh0ZW5zaW9uQXJnc1xufTtcblxuLyoqXG4gKiBBbGlhc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vZXh0ZW5zaW9uL21hbmlmZXN0JykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICovXG5cbi8qKlxuICogQSB0dXBsZSBvZiBhcmd1bWVudCBhbGlhc2VzIGFuZCBhcmd1bWVudCBvcHRpb25zXG4gKiBAdHlwZWRlZiB7TWFwPHN0cmluZ1tdLGltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnM+fSBBcmd1bWVudERlZmluaXRpb25zXG4gKi9cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvYXJncy5qcyJdLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiSU5TVEFMTF9UWVBFU19BUlJBWSIsIklOU1RBTExfVFlQRVMiLCJFWFRFTlNJT05fVFlQRVMiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiZ2xvYmFsRXh0ZW5zaW9uQXJncyIsIk1hcCIsInJlcXVpcmVkIiwiZGVmYXVsdCIsImFjdGlvbiIsImhlbHAiLCJkZXN0IiwiZ2V0RXh0ZW5zaW9uQXJncyIsIl8iLCJtZW1vaXplIiwiZXh0ZW5zaW9uQXJncyIsInR5cGUiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwibWFrZUxpc3RBcmdzIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIm1ha2VJbnN0YWxsQXJncyIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIm1ha2VVbmluc3RhbGxBcmdzIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwibWFrZVVwZGF0ZUFyZ3MiLCJFWFRfU1VCQ09NTUFORF9SVU4iLCJtYWtlUnVuQXJncyIsImNob2ljZXMiLCJqb2luIiwiZ2V0U2VydmVyQXJncyIsInNlcnZlckFyZ3NEaXNhbGxvd2VkSW5Db25maWciLCJjb25zdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EsTUFBTUEsY0FBYyxHQUFHLFVBQXZCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGVBQXZCO0FBTUEsTUFBTUMsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHQyw4QkFBSixDQUE1QjtBQUdBLE1BQU1DLGVBQWUsR0FBRyxJQUFJQyxHQUFKLENBQVEsQ0FBQ0Msc0JBQUQsRUFBY0Msc0JBQWQsQ0FBUixDQUF4QjtBQUlBLE1BQU1DLG1CQUFtQixHQUFHLElBQUlDLEdBQUosQ0FBUSxDQUNsQyxDQUFDLENBQUMsUUFBRCxDQUFELEVBQWE7QUFDWEMsRUFBQUEsUUFBUSxFQUFF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LEVBRUU7QUFDRUMsRUFBQUEsSUFBSSxFQUFFLFlBRFI7QUFFRUssRUFBQUEsSUFBSSxFQUFFLFFBRlI7QUFHRVQsRUFBQUEsUUFBUSxFQUFFLEtBSFo7QUFJRUcsRUFBQUEsSUFBSSxFQUFFO0FBSlIsQ0FGRixDQS9CMkMsQ0FBUixDQUFyQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCwgRVhUX1NVQkNPTU1BTkRfTElTVCwgRVhUX1NVQkNPTU1BTkRfUlVOLCBFWFRfU1VCQ09NTUFORF9VTklOU1RBTEwsIEVYVF9TVUJDT01NQU5EX1VQREFURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVTIH0gZnJvbSAnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgdG9QYXJzZXJBcmdzIH0gZnJvbSAnLi4vc2NoZW1hL2NsaS1hcmdzJztcbmNvbnN0IERSSVZFUl9FWEFNUExFID0gJ3hjdWl0ZXN0JztcbmNvbnN0IFBMVUdJTl9FWEFNUExFID0gJ2ZpbmRfYnlfaW1hZ2UnO1xuXG4vKipcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgcGFzcyB0aGUgYXJyYXkgaW50byBgYXJncGFyc2VgLiBgYXJncGFyc2VgIGlzIGJhZCBhbmQgbXV0YXRlcyB0aGluZ3MuIFdlIGRvbid0IHdhbnQgdGhhdC5cbiAqIEJhZCBgYXJncGFyc2VgISBCYWQhXG4gKi9cbmNvbnN0IElOU1RBTExfVFlQRVNfQVJSQVkgPSBbLi4uSU5TVEFMTF9UWVBFU107XG5cbi8qKiBAdHlwZSB7U2V0PEV4dGVuc2lvblR5cGU+fSAqL1xuY29uc3QgRVhURU5TSU9OX1RZUEVTID0gbmV3IFNldChbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSk7XG5cbi8vIHRoaXMgc2V0IG9mIGFyZ3Mgd29ya3MgZm9yIGJvdGggZHJpdmVycyBhbmQgcGx1Z2lucyAoJ2V4dGVuc2lvbnMnKVxuLyoqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfSAqL1xuY29uc3QgZ2xvYmFsRXh0ZW5zaW9uQXJncyA9IG5ldyBNYXAoW1xuICBbWyctLWpzb24nXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBoZWxwOiAnVXNlIEpTT04gZm9yIG91dHB1dCBmb3JtYXQnLFxuICAgIGRlc3Q6ICdqc29uJ1xuICB9XVxuXSk7XG5cbi8qKlxuICogQnVpbGRzIGEgUmVjb3JkIG9mIGV4dGVuc2lvbiB0eXBlcyB0byBhIFJlY29yZCBvZiBzdWJjb21tYW5kcyB0byB0aGVpciBhcmd1bWVudCBkZWZpbml0aW9uc1xuICovXG5jb25zdCBnZXRFeHRlbnNpb25BcmdzID0gXy5tZW1vaXplKGZ1bmN0aW9uIGdldEV4dGVuc2lvbkFyZ3MgKCkge1xuICBjb25zdCBleHRlbnNpb25BcmdzID0ge307XG4gIGZvciAoY29uc3QgdHlwZSBvZiBFWFRFTlNJT05fVFlQRVMpIHtcbiAgICBleHRlbnNpb25BcmdzW3R5cGVdID0ge1xuICAgICAgW0VYVF9TVUJDT01NQU5EX0xJU1RdOiBtYWtlTGlzdEFyZ3ModHlwZSksXG4gICAgICBbRVhUX1NVQkNPTU1BTkRfSU5TVEFMTF06IG1ha2VJbnN0YWxsQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9VTklOU1RBTExdOiBtYWtlVW5pbnN0YWxsQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9VUERBVEVdOiBtYWtlVXBkYXRlQXJncyh0eXBlKSxcbiAgICAgIFtFWFRfU1VCQ09NTUFORF9SVU5dOiBtYWtlUnVuQXJncyh0eXBlKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiAvKiogQHR5cGUge1JlY29yZDxFeHRlbnNpb25UeXBlLCBSZWNvcmQ8aW1wb3J0KCcuLi8uLi90eXBlcy9jbGknKS5DbGlFeHRlbnNpb25TdWJjb21tYW5kLEFyZ3VtZW50RGVmaW5pdGlvbnM+Pn0gKi8oZXh0ZW5zaW9uQXJncyk7XG59KTtcblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBsaXN0YCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlLlxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZUxpc3RBcmdzICh0eXBlKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbJy0taW5zdGFsbGVkJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICBoZWxwOiBgTGlzdCBvbmx5IGluc3RhbGxlZCAke3R5cGV9c2AsXG4gICAgICBkZXN0OiAnc2hvd0luc3RhbGxlZCdcbiAgICB9XSxcbiAgICBbWyctLXVwZGF0ZXMnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgIGhlbHA6ICdTaG93IGluZm9ybWF0aW9uIGFib3V0IG5ld2VyIHZlcnNpb25zJyxcbiAgICAgIGRlc3Q6ICdzaG93VXBkYXRlcydcbiAgICB9XVxuICBdKTtcbn1cblxuLyoqXG4gKiBNYWtlcyB0aGUgb3B0cyBmb3IgdGhlIGBpbnN0YWxsYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlSW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byBpbnN0YWxsLCBmb3IgZXhhbXBsZTogYCArXG4gICAgICAgICAgICB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snLS1zb3VyY2UnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIGNob2ljZXM6IElOU1RBTExfVFlQRVNfQVJSQVksXG4gICAgICBoZWxwOiBgV2hlcmUgdG8gbG9vayBmb3IgdGhlICR7dHlwZX0gaWYgaXQgaXMgbm90IG9uZSBvZiBBcHBpdW0ncyB2ZXJpZmllZCBgICtcbiAgICAgICAgICAgIGAke3R5cGV9cy4gUG9zc2libGUgdmFsdWVzOiAke0lOU1RBTExfVFlQRVNfQVJSQVkuam9pbignLCAnKX1gLFxuICAgICAgZGVzdDogJ2luc3RhbGxUeXBlJ1xuICAgIH1dLFxuICAgIFtbJy0tcGFja2FnZSddLCB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgSWYgaW5zdGFsbGluZyBmcm9tIEdpdCBvciBHaXRIdWIsIHRoZSBwYWNrYWdlIG5hbWUsIGFzIGRlZmluZWQgaW4gdGhlIHBsdWdpbidzIGAgK1xuICAgICAgICAgICAgYHBhY2thZ2UuanNvbiBmaWxlIGluIHRoZSBcIm5hbWVcIiBmaWVsZCwgY2Fubm90IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSwgYW5kIGAgK1xuICAgICAgICAgICAgYHNob3VsZCBiZSByZXBvcnRlZCBoZXJlLCBvdGhlcndpc2UgdGhlIGluc3RhbGwgd2lsbCBwcm9iYWJseSBmYWlsLmAsXG4gICAgICBkZXN0OiAncGFja2FnZU5hbWUnLFxuICAgIH1dLFxuICBdKTtcbn1cblxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYHVuaW5zdGFsbGAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZVVuaW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiAnTmFtZSBvZiB0aGUgZHJpdmVyIHRvIHVuaW5zdGFsbCwgZm9yIGV4YW1wbGU6ICcgK1xuICAgICAgICAgICAgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFXG4gICAgfV0sXG4gIF0pO1xufVxuXG4vKipcbiAqIE1ha2VzIHRoZSBvcHRzIGZvciB0aGUgYHVwZGF0ZWAgc3ViY29tbWFuZCBmb3IgZWFjaCBleHRlbnNpb24gdHlwZVxuICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSB0eXBlXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gbWFrZVVwZGF0ZUFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIG5ldyBNYXAoW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byB1cGRhdGUsIG9yIHRoZSB3b3JkIFwiaW5zdGFsbGVkXCIgdG8gdXBkYXRlIGFsbCBpbnN0YWxsZWQgYCArXG4gICAgICAgICAgICBgJHt0eXBlfXMuIFRvIHNlZSBhdmFpbGFibGUgdXBkYXRlcywgcnVuIFwiYXBwaXVtICR7dHlwZX0gbGlzdCAtLWluc3RhbGxlZCAtLXVwZGF0ZXNcIi4gYCArXG4gICAgICAgICAgICAnRm9yIGV4YW1wbGU6ICcgKyB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snLS11bnNhZmUnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgIGhlbHA6IGBJbmNsdWRlIHVwZGF0ZXMgdGhhdCBtaWdodCBoYXZlIGEgbmV3IG1ham9yIHJldmlzaW9uLCBhbmQgcG90ZW50aWFsbHkgaW5jbHVkZSBgICtcbiAgICAgICAgICAgIGBicmVha2luZyBjaGFuZ2VzYCxcbiAgICB9XSxcbiAgXSk7XG59XG5cbi8qKlxuICogTWFrZXMgdGhlIG9wdHMgZm9yIHRoZSBgcnVuYCBzdWJjb21tYW5kIGZvciBlYWNoIGV4dGVuc2lvbiB0eXBlXG4gKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IHR5cGVcbiAqIEByZXR1cm5zIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5mdW5jdGlvbiBtYWtlUnVuQXJncyAodHlwZSkge1xuICByZXR1cm4gbmV3IE1hcChbXG4gICAgLi4uZ2xvYmFsRXh0ZW5zaW9uQXJncyxcbiAgICBbW3R5cGVdLCB7XG4gICAgICB0eXBlOiAnc3RyJyxcbiAgICAgIGhlbHA6IGBOYW1lIG9mIHRoZSAke3R5cGV9IHRvIHJ1biBhIHNjcmlwdCBmcm9tLCBmb3IgZXhhbXBsZTogYCArXG4gICAgICAgICAgICB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snc2NyaXB0TmFtZSddLCB7XG4gICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgc2NyaXB0IHRvIHJ1biBmcm9tIHRoZSAke3R5cGV9LiBUaGUgc2NyaXB0IG5hbWUgbXVzdCBiZSBjYWNoZWQgYCArXG4gICAgICAgICAgICBgaW5zaWRlIHRoZSBcInNjcmlwdHNcIiBmaWVsZCB1bmRlciBcImFwcGl1bVwiIGluc2lkZSB0aGUgJHt0eXBlfSdzIFwicGFja2FnZS5qc29uXCIgZmlsZWBcbiAgICB9XSxcbiAgXSk7XG59XG5cbi8qKlxuICogRGVyaXZlcyB0aGUgb3B0aW9ucyBmb3IgdGhlIGBzZXJ2ZXJgIGNvbW1hbmQgZnJvbSB0aGUgc2NoZW1hLCBhbmQgYWRkcyB0aGUgYXJndW1lbnRzXG4gKiB3aGljaCBhcmUgZGlzYWxsb3dlZCBpbiB0aGUgY29uZmlnIGZpbGUuXG4gKiBAcmV0dXJucyB7QXJndW1lbnREZWZpbml0aW9uc31cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyQXJncyAoKSB7XG4gIHJldHVybiBuZXcgTWFwKFtcbiAgICAuLi50b1BhcnNlckFyZ3MoKSxcbiAgICAuLi5zZXJ2ZXJBcmdzRGlzYWxsb3dlZEluQ29uZmlnLFxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGVzZSBkb24ndCBtYWtlIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGEgY29uZmlnIGZpbGUgZm9yIG9idmlvdXMgcmVhc29ucy5cbiAqIEB0eXBlIHtBcmd1bWVudERlZmluaXRpb25zfVxuICovXG5jb25zdCBzZXJ2ZXJBcmdzRGlzYWxsb3dlZEluQ29uZmlnID0gbmV3IE1hcChbXG4gIFtcbiAgICBbJy0tc2hlbGwnXSxcbiAgICB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnRW50ZXIgUkVQTCBtb2RlJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgZGVzdDogJ3NoZWxsJyxcbiAgICB9LFxuICBdLFxuICBbXG4gICAgWyctLXNob3ctYnVpbGQtaW5mbyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdzaG93QnVpbGRJbmZvJyxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX2NvbnN0JyxcbiAgICAgIGNvbnN0OiB0cnVlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ1Nob3cgaW5mbyBhYm91dCB0aGUgQXBwaXVtIGJ1aWxkIGFuZCBleGl0JyxcbiAgICB9LFxuICBdLFxuICBbXG4gICAgWyctLXNob3ctY29uZmlnJ10sXG4gICAge1xuICAgICAgZGVzdDogJ3Nob3dDb25maWcnLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfY29uc3QnLFxuICAgICAgY29uc3Q6IHRydWUsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBoZWxwOiAnU2hvdyB0aGUgY3VycmVudCBBcHBpdW0gY29uZmlndXJhdGlvbiBhbmQgZXhpdCcsXG4gICAgfVxuICBdLFxuICBbXG4gICAgWyctLWNvbmZpZyddLFxuICAgIHtcbiAgICAgIGRlc3Q6ICdjb25maWdGaWxlJyxcbiAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgaGVscDogJ0V4cGxpY2l0IHBhdGggdG8gQXBwaXVtIGNvbmZpZ3VyYXRpb24gZmlsZScsXG4gICAgfSxcbiAgXSxcbl0pO1xuXG5leHBvcnQge1xuICBnZXRTZXJ2ZXJBcmdzLFxuICBnZXRFeHRlbnNpb25BcmdzXG59O1xuXG4vKipcbiAqIEFsaWFzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9leHRlbnNpb24vbWFuaWZlc3QnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cblxuLyoqXG4gKiBBIHR1cGxlIG9mIGFyZ3VtZW50IGFsaWFzZXMgYW5kIGFyZ3VtZW50IG9wdGlvbnNcbiAqIEB0eXBlZGVmIHtNYXA8c3RyaW5nW10saW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9ucz59IEFyZ3VtZW50RGVmaW5pdGlvbnNcbiAqL1xuIl19
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @extends {ExtensionCommand<import('../extension/manifest').DriverType>}
3
+ */
4
+ export default class DriverCommand extends ExtensionCommand<"driver"> {
5
+ /**
6
+ * @param {DriverCommandOptions} opts
7
+ */
8
+ constructor({ config, json }: DriverCommandOptions);
9
+ install({ driver, installType, packageName }: {
10
+ driver: any;
11
+ installType: any;
12
+ packageName: any;
13
+ }): Promise<import("./extension-command").ExtRecord<"driver">>;
14
+ uninstall({ driver }: {
15
+ driver: any;
16
+ }): Promise<import("./extension-command").ExtRecord<"driver">>;
17
+ update({ driver, unsafe }: {
18
+ driver: any;
19
+ unsafe: any;
20
+ }): Promise<import("./extension-command").ExtensionUpdateResult>;
21
+ run({ driver, scriptName }: {
22
+ driver: any;
23
+ scriptName: any;
24
+ }): Promise<import("./extension-command").RunOutput>;
25
+ getPostInstallText({ extName, extData }: {
26
+ extName: any;
27
+ extData: any;
28
+ }): string;
29
+ validateExtensionFields(appiumPkgData: any): void;
30
+ }
31
+ export type DriverCommandOptions = {
32
+ config: import('../extension/extension-config').ExtensionConfig<import('../extension/manifest').DriverType>;
33
+ json: boolean;
34
+ };
35
+ import ExtensionCommand from "./extension-command";
36
+ //# sourceMappingURL=driver-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/driver-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IAEE;;OAEG;IACH,8BAFW,oBAAoB,EAK9B;IAED;;;;mEAEC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;yDAEC;IAED;;;eAIC;IAED,kDAUC;CAEF;;YAIa,OAAO,+BAA+B,EAAE,eAAe,CAAC,OAAO,uBAAuB,EAAE,UAAU,CAAC;UACnG,OAAO"}
@@ -15,6 +15,8 @@ var _extensionCommand = _interopRequireDefault(require("./extension-command"));
15
15
 
16
16
  var _constants = require("../constants");
17
17
 
18
+ require("@colors/colors");
19
+
18
20
  const REQ_DRIVER_FIELDS = ['driverName', 'automationName', 'platformNames', 'mainClass'];
19
21
 
20
22
  class DriverCommand extends _extensionCommand.default {
@@ -24,8 +26,7 @@ class DriverCommand extends _extensionCommand.default {
24
26
  }) {
25
27
  super({
26
28
  config,
27
- json,
28
- type: _constants.DRIVER_TYPE
29
+ json
29
30
  });
30
31
  this.knownExtensions = _constants.KNOWN_DRIVERS;
31
32
  }
@@ -35,7 +36,7 @@ class DriverCommand extends _extensionCommand.default {
35
36
  installType,
36
37
  packageName
37
38
  }) {
38
- return await super.install({
39
+ return await super._install({
39
40
  ext: driver,
40
41
  installType,
41
42
  packageName
@@ -45,7 +46,7 @@ class DriverCommand extends _extensionCommand.default {
45
46
  async uninstall({
46
47
  driver
47
48
  }) {
48
- return await super.uninstall({
49
+ return await super._uninstall({
49
50
  ext: driver
50
51
  });
51
52
  }
@@ -54,7 +55,7 @@ class DriverCommand extends _extensionCommand.default {
54
55
  driver,
55
56
  unsafe
56
57
  }) {
57
- return await super.update({
58
+ return await super._update({
58
59
  ext: driver,
59
60
  unsafe
60
61
  });
@@ -64,7 +65,7 @@ class DriverCommand extends _extensionCommand.default {
64
65
  driver,
65
66
  scriptName
66
67
  }) {
67
- return await super.run({
68
+ return await super._run({
68
69
  ext: driver,
69
70
  scriptName
70
71
  });
@@ -88,4 +89,4 @@ class DriverCommand extends _extensionCommand.default {
88
89
  }
89
90
 
90
91
  exports.default = DriverCommand;
91
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZHJpdmVyLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiUkVRX0RSSVZFUl9GSUVMRFMiLCJEcml2ZXJDb21tYW5kIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwianNvbiIsInR5cGUiLCJEUklWRVJfVFlQRSIsImtub3duRXh0ZW5zaW9ucyIsIktOT1dOX0RSSVZFUlMiLCJpbnN0YWxsIiwiZHJpdmVyIiwiaW5zdGFsbFR5cGUiLCJwYWNrYWdlTmFtZSIsImV4dCIsInVuaW5zdGFsbCIsInVwZGF0ZSIsInVuc2FmZSIsInJ1biIsInNjcmlwdE5hbWUiLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsImF1dG9tYXRpb25OYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInBsYXRmb3JtTmFtZXMiLCJ2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyIsImFwcGl1bVBrZ0RhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLENBQUMsWUFBRCxFQUFlLGdCQUFmLEVBQWlDLGVBQWpDLEVBQWtELFdBQWxELENBQTFCOztBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztBQUsxREMsRUFBQUEsV0FBVyxDQUFFO0FBQUNDLElBQUFBLE1BQUQ7QUFBU0MsSUFBQUE7QUFBVCxHQUFGLEVBQWtCO0FBQzNCLFVBQU07QUFBQ0QsTUFBQUEsTUFBRDtBQUFTQyxNQUFBQSxJQUFUO0FBQWVDLE1BQUFBLElBQUksRUFBRUM7QUFBckIsS0FBTjtBQUNBLFNBQUtDLGVBQUwsR0FBdUJDLHdCQUF2QjtBQUNEOztBQUVZLFFBQVBDLE9BQU8sQ0FBRTtBQUFDQyxJQUFBQSxNQUFEO0FBQVNDLElBQUFBLFdBQVQ7QUFBc0JDLElBQUFBO0FBQXRCLEdBQUYsRUFBc0M7QUFDakQsV0FBTyxNQUFNLE1BQU1ILE9BQU4sQ0FBYztBQUFDSSxNQUFBQSxHQUFHLEVBQUVILE1BQU47QUFBY0MsTUFBQUEsV0FBZDtBQUEyQkMsTUFBQUE7QUFBM0IsS0FBZCxDQUFiO0FBQ0Q7O0FBRWMsUUFBVEUsU0FBUyxDQUFFO0FBQUNKLElBQUFBO0FBQUQsR0FBRixFQUFZO0FBQ3pCLFdBQU8sTUFBTSxNQUFNSSxTQUFOLENBQWdCO0FBQUNELE1BQUFBLEdBQUcsRUFBRUg7QUFBTixLQUFoQixDQUFiO0FBQ0Q7O0FBRVcsUUFBTkssTUFBTSxDQUFFO0FBQUNMLElBQUFBLE1BQUQ7QUFBU00sSUFBQUE7QUFBVCxHQUFGLEVBQW9CO0FBQzlCLFdBQU8sTUFBTSxNQUFNRCxNQUFOLENBQWE7QUFBQ0YsTUFBQUEsR0FBRyxFQUFFSCxNQUFOO0FBQWNNLE1BQUFBO0FBQWQsS0FBYixDQUFiO0FBQ0Q7O0FBRVEsUUFBSEMsR0FBRyxDQUFFO0FBQUNQLElBQUFBLE1BQUQ7QUFBU1EsSUFBQUE7QUFBVCxHQUFGLEVBQXdCO0FBQy9CLFdBQU8sTUFBTSxNQUFNRCxHQUFOLENBQVU7QUFBQ0osTUFBQUEsR0FBRyxFQUFFSCxNQUFOO0FBQWNRLE1BQUFBO0FBQWQsS0FBVixDQUFiO0FBQ0Q7O0FBRURDLEVBQUFBLGtCQUFrQixDQUFFO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUE7QUFBVixHQUFGLEVBQXNCO0FBQ3RDLFdBQVEsVUFBU0QsT0FBUSxJQUFHQyxPQUFPLENBQUNDLE9BQVEsMkJBQXJDLENBQWdFQyxLQUFoRSxHQUNDLHFCQUFvQkYsT0FBTyxDQUFDRyxjQUFSLENBQXVCRCxLQUFNLElBRGxELEdBRUMsb0JBQW1CRSxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsT0FBTyxDQUFDTSxhQUF2QixFQUFzQ0osS0FBTSxFQUZ2RTtBQUdEOztBQUVESyxFQUFBQSx1QkFBdUIsQ0FBRUMsYUFBRixFQUFpQjtBQUN0QyxVQUFNQyxhQUFhLEdBQUcvQixpQkFBaUIsQ0FBQ2dDLE1BQWxCLENBQXlCLENBQUNDLEdBQUQsRUFBTUMsS0FBTixLQUM3Q0osYUFBYSxDQUFDSSxLQUFELENBQWIsR0FBdUJELEdBQXZCLEdBQTZCLENBQUMsR0FBR0EsR0FBSixFQUFTQyxLQUFULENBRFQsRUFFbkIsRUFGbUIsQ0FBdEI7O0FBSUEsUUFBSSxDQUFDQyxnQkFBRUMsT0FBRixDQUFVTCxhQUFWLENBQUwsRUFBK0I7QUFDN0IsWUFBTSxJQUFJTSxLQUFKLENBQVcsaUVBQUQsR0FDQyxnQ0FBK0JYLElBQUksQ0FBQ0MsU0FBTCxDQUFlSSxhQUFmLENBQThCLEVBRHhFLENBQU47QUFFRDtBQUVGOztBQTFDeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEV4dGVuc2lvbkNvbW1hbmQgZnJvbSAnLi9leHRlbnNpb24tY29tbWFuZCc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSwgS05PV05fRFJJVkVSUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IFJFUV9EUklWRVJfRklFTERTID0gWydkcml2ZXJOYW1lJywgJ2F1dG9tYXRpb25OYW1lJywgJ3BsYXRmb3JtTmFtZXMnLCAnbWFpbkNsYXNzJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERyaXZlckNvbW1hbmQgZXh0ZW5kcyBFeHRlbnNpb25Db21tYW5kIHtcblxuICAvKipcbiAgICogQHBhcmFtIHtEcml2ZXJDb21tYW5kT3B0aW9uc30gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3IgKHtjb25maWcsIGpzb259KSB7XG4gICAgc3VwZXIoe2NvbmZpZywganNvbiwgdHlwZTogRFJJVkVSX1RZUEV9KTtcbiAgICB0aGlzLmtub3duRXh0ZW5zaW9ucyA9IEtOT1dOX0RSSVZFUlM7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsICh7ZHJpdmVyLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmluc3RhbGwoe2V4dDogZHJpdmVyLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KTtcbiAgfVxuXG4gIGFzeW5jIHVuaW5zdGFsbCAoe2RyaXZlcn0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIudW5pbnN0YWxsKHtleHQ6IGRyaXZlcn0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlICh7ZHJpdmVyLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnVwZGF0ZSh7ZXh0OiBkcml2ZXIsIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuICh7ZHJpdmVyLCBzY3JpcHROYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5ydW4oe2V4dDogZHJpdmVyLCBzY3JpcHROYW1lfSk7XG4gIH1cblxuICBnZXRQb3N0SW5zdGFsbFRleHQgKHtleHROYW1lLCBleHREYXRhfSkge1xuICAgIHJldHVybiBgRHJpdmVyICR7ZXh0TmFtZX1AJHtleHREYXRhLnZlcnNpb259IHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWRcXG5gLmdyZWVuICtcbiAgICAgICAgICAgYC0gYXV0b21hdGlvbk5hbWU6ICR7ZXh0RGF0YS5hdXRvbWF0aW9uTmFtZS5ncmVlbn1cXG5gICtcbiAgICAgICAgICAgYC0gcGxhdGZvcm1OYW1lczogJHtKU09OLnN0cmluZ2lmeShleHREYXRhLnBsYXRmb3JtTmFtZXMpLmdyZWVufWA7XG4gIH1cblxuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyAoYXBwaXVtUGtnRGF0YSkge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfRFJJVkVSX0ZJRUxEUy5yZWR1Y2UoKGFjYywgZmllbGQpID0+IChcbiAgICAgIGFwcGl1bVBrZ0RhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdXG4gICAgKSwgW10pO1xuXG4gICAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ0ZpZWxkcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFsbGVkIGRyaXZlciBkaWQgbm90IGV4cG9zZSBjb3JyZWN0IGZpZWxkcyBmb3IgY29tcGFiaWxpdHkgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYHdpdGggQXBwaXVtLiBNaXNzaW5nIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShtaXNzaW5nRmllbGRzKX1gKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cbi8qKlxuICogQHR5cGVkZWYgRHJpdmVyQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZycpLkRyaXZlckNvbmZpZ30gY29uZmlnXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb25cbiAqL1xuIl19
92
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZHJpdmVyLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiUkVRX0RSSVZFUl9GSUVMRFMiLCJEcml2ZXJDb21tYW5kIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwianNvbiIsImtub3duRXh0ZW5zaW9ucyIsIktOT1dOX0RSSVZFUlMiLCJpbnN0YWxsIiwiZHJpdmVyIiwiaW5zdGFsbFR5cGUiLCJwYWNrYWdlTmFtZSIsIl9pbnN0YWxsIiwiZXh0IiwidW5pbnN0YWxsIiwiX3VuaW5zdGFsbCIsInVwZGF0ZSIsInVuc2FmZSIsIl91cGRhdGUiLCJydW4iLCJzY3JpcHROYW1lIiwiX3J1biIsImdldFBvc3RJbnN0YWxsVGV4dCIsImV4dE5hbWUiLCJleHREYXRhIiwidmVyc2lvbiIsImdyZWVuIiwiYXV0b21hdGlvbk5hbWUiLCJKU09OIiwic3RyaW5naWZ5IiwicGxhdGZvcm1OYW1lcyIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwiYXBwaXVtUGtnRGF0YSIsIm1pc3NpbmdGaWVsZHMiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsIl8iLCJpc0VtcHR5IiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsZ0JBQWYsRUFBaUMsZUFBakMsRUFBa0QsV0FBbEQsQ0FBMUI7O0FBSWUsTUFBTUMsYUFBTixTQUE0QkMseUJBQTVCLENBQTZDO0FBSzFEQyxFQUFBQSxXQUFXLENBQUU7QUFBQ0MsSUFBQUEsTUFBRDtBQUFTQyxJQUFBQTtBQUFULEdBQUYsRUFBa0I7QUFDM0IsVUFBTTtBQUFDRCxNQUFBQSxNQUFEO0FBQVNDLE1BQUFBO0FBQVQsS0FBTjtBQUNBLFNBQUtDLGVBQUwsR0FBdUJDLHdCQUF2QjtBQUNEOztBQUVZLFFBQVBDLE9BQU8sQ0FBRTtBQUFDQyxJQUFBQSxNQUFEO0FBQVNDLElBQUFBLFdBQVQ7QUFBc0JDLElBQUFBO0FBQXRCLEdBQUYsRUFBc0M7QUFDakQsV0FBTyxNQUFNLE1BQU1DLFFBQU4sQ0FBZTtBQUFDQyxNQUFBQSxHQUFHLEVBQUVKLE1BQU47QUFBY0MsTUFBQUEsV0FBZDtBQUEyQkMsTUFBQUE7QUFBM0IsS0FBZixDQUFiO0FBQ0Q7O0FBRWMsUUFBVEcsU0FBUyxDQUFFO0FBQUNMLElBQUFBO0FBQUQsR0FBRixFQUFZO0FBQ3pCLFdBQU8sTUFBTSxNQUFNTSxVQUFOLENBQWlCO0FBQUNGLE1BQUFBLEdBQUcsRUFBRUo7QUFBTixLQUFqQixDQUFiO0FBQ0Q7O0FBRVcsUUFBTk8sTUFBTSxDQUFFO0FBQUNQLElBQUFBLE1BQUQ7QUFBU1EsSUFBQUE7QUFBVCxHQUFGLEVBQW9CO0FBQzlCLFdBQU8sTUFBTSxNQUFNQyxPQUFOLENBQWM7QUFBQ0wsTUFBQUEsR0FBRyxFQUFFSixNQUFOO0FBQWNRLE1BQUFBO0FBQWQsS0FBZCxDQUFiO0FBQ0Q7O0FBRVEsUUFBSEUsR0FBRyxDQUFFO0FBQUNWLElBQUFBLE1BQUQ7QUFBU1csSUFBQUE7QUFBVCxHQUFGLEVBQXdCO0FBQy9CLFdBQU8sTUFBTSxNQUFNQyxJQUFOLENBQVc7QUFBQ1IsTUFBQUEsR0FBRyxFQUFFSixNQUFOO0FBQWNXLE1BQUFBO0FBQWQsS0FBWCxDQUFiO0FBQ0Q7O0FBRURFLEVBQUFBLGtCQUFrQixDQUFFO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUE7QUFBVixHQUFGLEVBQXNCO0FBQ3RDLFdBQVEsVUFBU0QsT0FBUSxJQUFHQyxPQUFPLENBQUNDLE9BQVEsMkJBQXJDLENBQWdFQyxLQUFoRSxHQUNDLHFCQUFvQkYsT0FBTyxDQUFDRyxjQUFSLENBQXVCRCxLQUFNLElBRGxELEdBRUMsb0JBQW1CRSxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsT0FBTyxDQUFDTSxhQUF2QixFQUFzQ0osS0FBTSxFQUZ2RTtBQUdEOztBQUVESyxFQUFBQSx1QkFBdUIsQ0FBRUMsYUFBRixFQUFpQjtBQUN0QyxVQUFNQyxhQUFhLEdBQUdqQyxpQkFBaUIsQ0FBQ2tDLE1BQWxCLENBQXlCLENBQUNDLEdBQUQsRUFBTUMsS0FBTixLQUM3Q0osYUFBYSxDQUFDSSxLQUFELENBQWIsR0FBdUJELEdBQXZCLEdBQTZCLENBQUMsR0FBR0EsR0FBSixFQUFTQyxLQUFULENBRFQsRUFFbkIsRUFGbUIsQ0FBdEI7O0FBSUEsUUFBSSxDQUFDQyxnQkFBRUMsT0FBRixDQUFVTCxhQUFWLENBQUwsRUFBK0I7QUFDN0IsWUFBTSxJQUFJTSxLQUFKLENBQVcsaUVBQUQsR0FDQyxnQ0FBK0JYLElBQUksQ0FBQ0MsU0FBTCxDQUFlSSxhQUFmLENBQThCLEVBRHhFLENBQU47QUFFRDtBQUVGOztBQTFDeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEV4dGVuc2lvbkNvbW1hbmQgZnJvbSAnLi9leHRlbnNpb24tY29tbWFuZCc7XG5pbXBvcnQgeyBLTk9XTl9EUklWRVJTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCAnQGNvbG9ycy9jb2xvcnMnO1xuXG5jb25zdCBSRVFfRFJJVkVSX0ZJRUxEUyA9IFsnZHJpdmVyTmFtZScsICdhdXRvbWF0aW9uTmFtZScsICdwbGF0Zm9ybU5hbWVzJywgJ21haW5DbGFzcyddO1xuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxpbXBvcnQoJy4uL2V4dGVuc2lvbi9tYW5pZmVzdCcpLkRyaXZlclR5cGU+fVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZXJDb21tYW5kIGV4dGVuZHMgRXh0ZW5zaW9uQ29tbWFuZCB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RHJpdmVyQ29tbWFuZE9wdGlvbnN9IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yICh7Y29uZmlnLCBqc29ufSkge1xuICAgIHN1cGVyKHtjb25maWcsIGpzb259KTtcbiAgICB0aGlzLmtub3duRXh0ZW5zaW9ucyA9IEtOT1dOX0RSSVZFUlM7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsICh7ZHJpdmVyLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtleHQ6IGRyaXZlciwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSk7XG4gIH1cblxuICBhc3luYyB1bmluc3RhbGwgKHtkcml2ZXJ9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2V4dDogZHJpdmVyfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUgKHtkcml2ZXIsIHVuc2FmZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3VwZGF0ZSh7ZXh0OiBkcml2ZXIsIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuICh7ZHJpdmVyLCBzY3JpcHROYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fcnVuKHtleHQ6IGRyaXZlciwgc2NyaXB0TmFtZX0pO1xuICB9XG5cbiAgZ2V0UG9zdEluc3RhbGxUZXh0ICh7ZXh0TmFtZSwgZXh0RGF0YX0pIHtcbiAgICByZXR1cm4gYERyaXZlciAke2V4dE5hbWV9QCR7ZXh0RGF0YS52ZXJzaW9ufSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkXFxuYC5ncmVlbiArXG4gICAgICAgICAgIGAtIGF1dG9tYXRpb25OYW1lOiAke2V4dERhdGEuYXV0b21hdGlvbk5hbWUuZ3JlZW59XFxuYCArXG4gICAgICAgICAgIGAtIHBsYXRmb3JtTmFtZXM6ICR7SlNPTi5zdHJpbmdpZnkoZXh0RGF0YS5wbGF0Zm9ybU5hbWVzKS5ncmVlbn1gO1xuICB9XG5cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMgKGFwcGl1bVBrZ0RhdGEpIHtcbiAgICBjb25zdCBtaXNzaW5nRmllbGRzID0gUkVRX0RSSVZFUl9GSUVMRFMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiAoXG4gICAgICBhcHBpdW1Qa2dEYXRhW2ZpZWxkXSA/IGFjYyA6IFsuLi5hY2MsIGZpZWxkXVxuICAgICksIFtdKTtcblxuICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdGaWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbGxlZCBkcml2ZXIgZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YCk7XG4gICAgfVxuXG4gIH1cblxufVxuXG4vKipcbiAqIEB0eXBlZGVmIERyaXZlckNvbW1hbmRPcHRpb25zXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Db25maWc8aW1wb3J0KCcuLi9leHRlbnNpb24vbWFuaWZlc3QnKS5Ecml2ZXJUeXBlPn0gY29uZmlnXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb25cbiAqL1xuIl19
@@ -0,0 +1,345 @@
1
+ export default ExtensionCommand;
2
+ /**
3
+ * Options for the {@linkcode ExtensionCommand } constructor
4
+ */
5
+ export type ExtensionCommandOptions<ExtType extends import("../../types").ExtensionType> = {
6
+ /**
7
+ * - the `DriverConfig` or `PluginConfig` instance used for this command
8
+ */
9
+ config: ExtensionConfig<ExtType>;
10
+ /**
11
+ * - whether the output of this command should be JSON or text
12
+ */
13
+ json: boolean;
14
+ };
15
+ /**
16
+ * Extra stuff about extensions; used indirectly by {@linkcode ExtensionCommand.list }.
17
+ */
18
+ export type ExtensionMetadata = {
19
+ /**
20
+ * - If `true`, the extension is installed
21
+ */
22
+ installed: boolean;
23
+ /**
24
+ * - If the extension is installed, the version it can be updated to
25
+ */
26
+ updateVersion: string | null;
27
+ /**
28
+ * - Same as above, but a major version bump
29
+ */
30
+ unsafeUpdateVersion: string | null;
31
+ /**
32
+ * - If the extension is installed and the latest
33
+ */
34
+ upToDate: boolean;
35
+ };
36
+ export type ExtensionType = import('../../types').ExtensionType;
37
+ export type DriverType = import('../../types').DriverType;
38
+ export type PluginType = import('../../types').PluginType;
39
+ export type ExtRecord<ExtType extends import("../../types").ExtensionType> = import('../../types/appium-manifest').ExtRecord<ExtType>;
40
+ export type ExtensionConfig<ExtType extends import("../../types").ExtensionType> = import('../extension/extension-config').ExtensionConfig<ExtType>;
41
+ export type ExtMetadata<ExtType extends import("../../types").ExtensionType> = import('../../types/external-manifest').ExtMetadata<ExtType>;
42
+ export type ExtManifest<ExtType extends import("../../types").ExtensionType> = import('../../types/appium-manifest').ExtManifest<ExtType>;
43
+ export type ExtPackageJson<ExtType extends import("../../types").ExtensionType> = import('../../types/external-manifest').ExtPackageJson<ExtType>;
44
+ /**
45
+ * Possible return value for {@linkcode ExtensionCommand.list }
46
+ */
47
+ export type UninstalledExtensionListData = {
48
+ pkgName: string;
49
+ installed: false;
50
+ };
51
+ /**
52
+ * Possible return value for {@linkcode ExtensionCommand.list }
53
+ */
54
+ export type InstalledExtensionListData = import('../../types/appium-manifest').InternalMetadata & ExtensionMetadata;
55
+ /**
56
+ * Return value of {@linkcode ExtensionCommand.list }.
57
+ */
58
+ export type ExtensionListData = Record<string, InstalledExtensionListData | UninstalledExtensionListData>;
59
+ /**
60
+ * Options for {@linkcode ExtensionCommand._run }.
61
+ */
62
+ export type RunOptions = {
63
+ /**
64
+ * - name of the extension to run a script from
65
+ */
66
+ ext: string;
67
+ /**
68
+ * - name of the script to run
69
+ */
70
+ scriptName: string;
71
+ };
72
+ /**
73
+ * Return value of {@linkcode ExtensionCommand._run }
74
+ */
75
+ export type RunOutput = {
76
+ /**
77
+ * - error message if script ran unsuccessfully, otherwise undefined
78
+ */
79
+ error?: string | undefined;
80
+ /**
81
+ * - script output
82
+ */
83
+ output: string[];
84
+ };
85
+ /**
86
+ * Options for {@linkcode ExtensionCommand._update }.
87
+ */
88
+ export type ExtensionUpdateOpts = {
89
+ /**
90
+ * - the name of the extension to update
91
+ */
92
+ ext: string;
93
+ /**
94
+ * - if true, will perform unsafe updates past major revision boundaries
95
+ */
96
+ unsafe: boolean;
97
+ };
98
+ /**
99
+ * Return value of {@linkcode ExtensionCommand._update }.
100
+ */
101
+ export type ExtensionUpdateResult = {
102
+ /**
103
+ * - map of ext names to error objects
104
+ */
105
+ errors: Record<string, Error>;
106
+ /**
107
+ * - map of ext names to {@linkcode UpdateReport }s
108
+ */
109
+ updates: Record<string, UpdateReport>;
110
+ };
111
+ /**
112
+ * Part of result of {@linkcode ExtensionCommand._update }.
113
+ */
114
+ export type UpdateReport = {
115
+ /**
116
+ * - version the extension was updated from
117
+ */
118
+ from: string;
119
+ /**
120
+ * - version the extension was updated to
121
+ */
122
+ to: string;
123
+ };
124
+ /**
125
+ * Options for {@linkcode ExtensionCommand._uninstall }.
126
+ */
127
+ export type UninstallOpts = {
128
+ /**
129
+ * - the name or spec of an extension to uninstall
130
+ */
131
+ ext: string;
132
+ };
133
+ /**
134
+ * Used by {@linkcode ExtensionCommand.getPostInstallText }
135
+ */
136
+ export type ExtensionArgs = {
137
+ /**
138
+ * - the name of an extension
139
+ */
140
+ extName: string;
141
+ /**
142
+ * - the data for an installed extension
143
+ */
144
+ extData: object;
145
+ };
146
+ /**
147
+ * Options for {@linkcode ExtensionCommand.installViaNpm }
148
+ */
149
+ export type InstallViaNpmArgs = {
150
+ /**
151
+ * - the name or spec of an extension to install
152
+ */
153
+ ext: string;
154
+ /**
155
+ * - the NPM package name of the extension
156
+ */
157
+ pkgName: string;
158
+ /**
159
+ * - the specific version of the NPM package
160
+ */
161
+ pkgVer?: string | undefined;
162
+ };
163
+ /**
164
+ * Object returned by {@linkcode ExtensionCommand.checkForExtensionUpdate }
165
+ */
166
+ export type PossibleUpdates = {
167
+ /**
168
+ * - current version
169
+ */
170
+ current: string;
171
+ /**
172
+ * - version we can safely update to if it exists, or null
173
+ */
174
+ safeUpdate: string | null;
175
+ /**
176
+ * - version we can unsafely update to if it exists, or null
177
+ */
178
+ unsafeUpdate: string | null;
179
+ };
180
+ /**
181
+ * Options for {@linkcode ExtensionCommand._install }
182
+ */
183
+ export type InstallArgs = {
184
+ /**
185
+ * - the name or spec of an extension to install
186
+ */
187
+ ext: string;
188
+ /**
189
+ * - how to install this extension. One of the INSTALL_TYPES
190
+ */
191
+ installType: import('../../types/appium-manifest').InstallType;
192
+ /**
193
+ * - for git/github installs, the extension node package name
194
+ */
195
+ packageName?: string | undefined;
196
+ };
197
+ /**
198
+ * Returned by {@linkcode ExtensionCommand.getExtensionFields }
199
+ */
200
+ export type ExtensionFields<ExtType extends import("../../types").ExtensionType> = ExtMetadata<ExtType> & {
201
+ pkgName: string;
202
+ version: string;
203
+ } & import('../../types/external-manifest').CommonMetadata;
204
+ export type KnownExtensions<ExtType extends import("../../types").ExtensionType> = ExtType extends DriverType ? typeof import('../constants').KNOWN_DRIVERS : ExtType extends PluginType ? typeof import('../constants').KNOWN_PLUGINS : never;
205
+ /**
206
+ * @template {ExtensionType} ExtType
207
+ */
208
+ export class ExtensionCommand<ExtType extends import("../../types").ExtensionType> {
209
+ /**
210
+ * Build an ExtensionCommand
211
+ * @param {ExtensionCommandOptions<ExtType>} opts
212
+ */
213
+ constructor({ config, json }: ExtensionCommandOptions<ExtType>);
214
+ /**
215
+ * This is the `DriverConfig` or `PluginConfig`, depending on `ExtType`.
216
+ * @type {ExtensionConfig<ExtType>}
217
+ */
218
+ config: ExtensionConfig<ExtType>;
219
+ /**
220
+ * {@linkcode Record} of official plugins or drivers.
221
+ * @type {KnownExtensions<ExtType>}
222
+ */
223
+ knownExtensions: KnownExtensions<ExtType>;
224
+ /**
225
+ * If `true`, command output has been requested as JSON.
226
+ * @type {boolean}
227
+ */
228
+ isJsonOutput: boolean;
229
+ /**
230
+ * `driver` or `plugin`, depending on the `ExtensionConfig`.
231
+ */
232
+ get type(): ExtType;
233
+ /**
234
+ * Take a CLI parse and run an extension command based on its type
235
+ *
236
+ * @param {object} args - a key/value object with CLI flags and values
237
+ * @return {Promise<object>} the result of the specific command which is executed
238
+ */
239
+ execute(args: object): Promise<object>;
240
+ /**
241
+ * @typedef ListOptions
242
+ * @property {boolean} showInstalled - whether should show only installed extensions
243
+ * @property {boolean} showUpdates - whether should show available updates
244
+ */
245
+ /**
246
+ * List extensions
247
+ *
248
+ * @param {ListOptions} opts
249
+ * @return {Promise<ExtensionListData>} map of extension names to extension data
250
+ */
251
+ list({ showInstalled, showUpdates }: {
252
+ /**
253
+ * - whether should show only installed extensions
254
+ */
255
+ showInstalled: boolean;
256
+ /**
257
+ * - whether should show available updates
258
+ */
259
+ showUpdates: boolean;
260
+ }): Promise<ExtensionListData>;
261
+ /**
262
+ * Install an extension
263
+ *
264
+ * @param {InstallArgs} args
265
+ * @return {Promise<ExtRecord<ExtType>>} map of all installed extension names to extension data
266
+ */
267
+ _install({ ext, installType, packageName }: InstallArgs): Promise<ExtRecord<ExtType>>;
268
+ /**
269
+ * Install an extension via NPM
270
+ *
271
+ * @param {InstallViaNpmArgs} args
272
+ */
273
+ installViaNpm({ ext, pkgName, pkgVer }: InstallViaNpmArgs): Promise<ExtensionFields<ExtType>>;
274
+ /**
275
+ * Get the text which should be displayed to the user after an extension has been installed. This
276
+ * is designed to be overridden by drivers/plugins with their own particular text.
277
+ *
278
+ * @param {ExtensionArgs} args
279
+ * @returns {string}
280
+ */
281
+ getPostInstallText(args: ExtensionArgs): string;
282
+ /**
283
+ * Take an NPM module's package.json and extract Appium driver information from a special
284
+ * 'appium' field in the JSON data. We need this information to e.g. determine which class to
285
+ * load as the main driver class, or to be able to detect incompatibilities between driver and
286
+ * appium versions.
287
+ *
288
+ * @param {ExtPackageJson<ExtType>} pkgJsonData - the package.json data for a driver module, as if it had been
289
+ * straightforwardly 'require'd
290
+ * @returns {ExtensionFields<ExtType>}
291
+ */
292
+ getExtensionFields(pkgJsonData: ExtPackageJson<ExtType>): ExtensionFields<ExtType>;
293
+ /**
294
+ * For any package.json fields which a particular type of extension requires, validate the
295
+ * presence and form of those fields on the package.json data, throwing an error if anything is
296
+ * amiss.
297
+ *
298
+ * @param {ExtMetadata<ExtType>} appiumPkgData - the data in the "appium" field of package.json for an extension
299
+ */
300
+ validateExtensionFields(appiumPkgData: ExtMetadata<ExtType>): void;
301
+ /**
302
+ * Uninstall an extension
303
+ *
304
+ * @param {UninstallOpts} opts
305
+ * @return {Promise<ExtRecord<ExtType>>} map of all installed extension names to extension data
306
+ */
307
+ _uninstall({ ext }: UninstallOpts): Promise<ExtRecord<ExtType>>;
308
+ /**
309
+ * Attempt to update one or more drivers using NPM
310
+ *
311
+ * @param {ExtensionUpdateOpts} updateSpec
312
+ * @return {Promise<ExtensionUpdateResult>}
313
+ */
314
+ _update({ ext, unsafe }: ExtensionUpdateOpts): Promise<ExtensionUpdateResult>;
315
+ /**
316
+ * Given an extension name, figure out what its highest possible version upgrade is, and also the
317
+ * highest possible safe upgrade.
318
+ *
319
+ * @param {string} ext - name of extension
320
+ * @return {Promise<PossibleUpdates>}
321
+ */
322
+ checkForExtensionUpdate(ext: string): Promise<PossibleUpdates>;
323
+ /**
324
+ * Actually update an extension installed by NPM, using the NPM cli. And update the installation
325
+ * manifest.
326
+ *
327
+ * @param {string} ext - name of extension to update
328
+ * @param {string} version - version string identifier to update extension to
329
+ * @returns {Promise<void>}
330
+ */
331
+ updateExtension(ext: string, version: string): Promise<void>;
332
+ /**
333
+ * Runs a script cached inside the "scripts" field under "appium"
334
+ * inside of the driver/plugins "package.json" file. Will throw
335
+ * an error if the driver/plugin does not contain a "scripts" field
336
+ * underneath the "appium" field in its package.json, if the
337
+ * "scripts" field is not a plain object, or if the scriptName is
338
+ * not found within "scripts" object.
339
+ *
340
+ * @param {RunOptions} opts
341
+ * @return {Promise<RunOutput>}
342
+ */
343
+ _run({ ext, scriptName }: RunOptions): Promise<RunOutput>;
344
+ }
345
+ //# sourceMappingURL=extension-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/extension-command.js"],"names":[],"mappings":"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"}