appium 2.0.0-beta.2 → 2.0.0-beta.23

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 (122) hide show
  1. package/README.md +9 -9
  2. package/build/check-npm-pack-files.js +23 -0
  3. package/build/commands-yml/parse.js +319 -0
  4. package/build/commands-yml/validator.js +130 -0
  5. package/build/index.js +19 -0
  6. package/build/lib/appium-config.schema.json +0 -0
  7. package/build/lib/appium.js +160 -53
  8. package/build/lib/cli/args.js +115 -279
  9. package/build/lib/cli/driver-command.js +11 -1
  10. package/build/lib/cli/extension-command.js +60 -8
  11. package/build/lib/cli/extension.js +30 -7
  12. package/build/lib/cli/npm.js +43 -29
  13. package/build/lib/cli/parser.js +156 -89
  14. package/build/lib/cli/plugin-command.js +11 -1
  15. package/build/lib/cli/utils.js +29 -3
  16. package/build/lib/config-file.js +141 -0
  17. package/build/lib/config.js +53 -65
  18. package/build/lib/driver-config.js +42 -19
  19. package/build/lib/drivers.js +8 -4
  20. package/build/lib/ext-config-io.js +165 -0
  21. package/build/lib/extension-config.js +130 -61
  22. package/build/lib/grid-register.js +22 -24
  23. package/build/lib/logger.js +3 -3
  24. package/build/lib/logsink.js +11 -13
  25. package/build/lib/main.js +197 -77
  26. package/build/lib/plugin-config.js +21 -11
  27. package/build/lib/plugins.js +4 -2
  28. package/build/lib/schema/appium-config-schema.js +253 -0
  29. package/build/lib/schema/arg-spec.js +120 -0
  30. package/build/lib/schema/cli-args.js +188 -0
  31. package/build/lib/schema/cli-transformers.js +76 -0
  32. package/build/lib/schema/index.js +36 -0
  33. package/build/lib/schema/keywords.js +72 -0
  34. package/build/lib/schema/schema.js +357 -0
  35. package/build/lib/utils.js +44 -99
  36. package/build/postinstall.js +90 -0
  37. package/build/test/cli/cli-e2e-specs.js +221 -0
  38. package/build/test/cli/cli-helpers.js +86 -0
  39. package/build/test/cli/cli-specs.js +71 -0
  40. package/build/test/cli/fixtures/test-driver/package.json +27 -0
  41. package/build/test/cli/schema-args-specs.js +48 -0
  42. package/build/test/cli/schema-e2e-specs.js +47 -0
  43. package/build/test/config-e2e-specs.js +112 -0
  44. package/build/test/config-file-e2e-specs.js +209 -0
  45. package/build/test/config-file-specs.js +281 -0
  46. package/build/test/config-specs.js +159 -0
  47. package/build/test/driver-e2e-specs.js +435 -0
  48. package/build/test/driver-specs.js +321 -0
  49. package/build/test/ext-config-io-specs.js +181 -0
  50. package/build/test/extension-config-specs.js +365 -0
  51. package/build/test/fixtures/allow-feat.txt +5 -0
  52. package/build/test/fixtures/caps.json +3 -0
  53. package/build/test/fixtures/config/allow-insecure.txt +3 -0
  54. package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +5 -0
  55. package/build/test/fixtures/config/appium.config.bad.json +32 -0
  56. package/build/test/fixtures/config/appium.config.ext-good.json +9 -0
  57. package/build/test/fixtures/config/appium.config.ext-unknown-props.json +10 -0
  58. package/build/test/fixtures/config/appium.config.good.js +40 -0
  59. package/build/test/fixtures/config/appium.config.good.json +33 -0
  60. package/build/test/fixtures/config/appium.config.good.yaml +30 -0
  61. package/build/test/fixtures/config/appium.config.invalid.json +31 -0
  62. package/build/test/fixtures/config/appium.config.security-array.json +5 -0
  63. package/build/test/fixtures/config/appium.config.security-delimited.json +5 -0
  64. package/build/test/fixtures/config/appium.config.security-path.json +5 -0
  65. package/build/test/fixtures/config/driver-fake.config.json +8 -0
  66. package/build/test/fixtures/config/nodeconfig.json +3 -0
  67. package/build/test/fixtures/config/plugin-fake.config.json +0 -0
  68. package/build/test/fixtures/default-args.js +35 -0
  69. package/build/test/fixtures/deny-feat.txt +5 -0
  70. package/build/test/fixtures/driver.schema.js +20 -0
  71. package/build/test/fixtures/extensions.yaml +27 -0
  72. package/build/test/fixtures/flattened-schema.js +504 -0
  73. package/build/test/fixtures/plugin.schema.js +20 -0
  74. package/build/test/fixtures/schema-with-extensions.js +28 -0
  75. package/build/test/grid-register-specs.js +74 -0
  76. package/build/test/helpers.js +75 -0
  77. package/build/test/logger-specs.js +76 -0
  78. package/build/test/npm-specs.js +20 -0
  79. package/build/test/parser-specs.js +314 -0
  80. package/build/test/plugin-e2e-specs.js +316 -0
  81. package/build/test/schema/arg-spec-specs.js +70 -0
  82. package/build/test/schema/cli-args-specs.js +431 -0
  83. package/build/test/schema/schema-specs.js +389 -0
  84. package/build/test/utils-specs.js +266 -0
  85. package/index.js +11 -0
  86. package/lib/appium-config.schema.json +278 -0
  87. package/lib/appium.js +207 -65
  88. package/lib/cli/args.js +174 -375
  89. package/lib/cli/driver-command.js +4 -0
  90. package/lib/cli/extension-command.js +70 -5
  91. package/lib/cli/extension.js +25 -5
  92. package/lib/cli/npm.js +86 -18
  93. package/lib/cli/parser.js +257 -79
  94. package/lib/cli/plugin-command.js +4 -0
  95. package/lib/cli/utils.js +21 -1
  96. package/lib/config-file.js +227 -0
  97. package/lib/config.js +84 -63
  98. package/lib/driver-config.js +66 -11
  99. package/lib/drivers.js +4 -1
  100. package/lib/ext-config-io.js +287 -0
  101. package/lib/extension-config.js +225 -67
  102. package/lib/grid-register.js +27 -24
  103. package/lib/logger.js +1 -1
  104. package/lib/logsink.js +10 -7
  105. package/lib/main.js +214 -77
  106. package/lib/plugin-config.js +35 -6
  107. package/lib/plugins.js +1 -0
  108. package/lib/schema/appium-config-schema.js +287 -0
  109. package/lib/schema/arg-spec.js +222 -0
  110. package/lib/schema/cli-args.js +285 -0
  111. package/lib/schema/cli-transformers.js +123 -0
  112. package/lib/schema/index.js +2 -0
  113. package/lib/schema/keywords.js +135 -0
  114. package/lib/schema/schema.js +577 -0
  115. package/lib/utils.js +42 -88
  116. package/package.json +55 -84
  117. package/postinstall.js +71 -0
  118. package/types/appium-config.d.ts +197 -0
  119. package/types/types.d.ts +201 -0
  120. package/CHANGELOG.md +0 -3515
  121. package/build/lib/cli/parser-helpers.js +0 -82
  122. package/lib/cli/parser-helpers.js +0 -79
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.parseSecurityFeatures = parseSecurityFeatures;
9
- exports.parseDefaultCaps = parseDefaultCaps;
10
- exports.parseInstallTypes = parseInstallTypes;
11
- exports.parsePluginNames = parsePluginNames;
12
-
13
- require("source-map-support/register");
14
-
15
- var _fs = _interopRequireDefault(require("fs"));
16
-
17
- var _lodash = _interopRequireDefault(require("lodash"));
18
-
19
- var _extensionConfig = require("../extension-config");
20
-
21
- function parseSecurityFeatures(features) {
22
- const splitter = (splitOn, str) => `${str}`.split(splitOn).map(s => s.trim()).filter(Boolean);
23
-
24
- let parsedFeatures;
25
-
26
- try {
27
- parsedFeatures = splitter(',', features);
28
- } catch (err) {
29
- throw new Error('Could not parse value of --allow/deny-insecure. Should be ' + 'a list of strings separated by commas, or a path to a file ' + 'listing one feature name per line.');
30
- }
31
-
32
- if (parsedFeatures.length === 1 && _fs.default.existsSync(parsedFeatures[0])) {
33
- try {
34
- const fileFeatures = _fs.default.readFileSync(parsedFeatures[0], 'utf8');
35
-
36
- parsedFeatures = splitter('\n', fileFeatures);
37
- } catch (err) {
38
- throw new Error(`Attempted to read --allow/deny-insecure feature names ` + `from file ${parsedFeatures[0]} but got error: ${err.message}`);
39
- }
40
- }
41
-
42
- return parsedFeatures;
43
- }
44
-
45
- function parsePluginNames(names) {
46
- if (!_lodash.default.isString(names)) {
47
- throw new Error('To parse plugin names, names must be a CSV string');
48
- }
49
-
50
- try {
51
- return names.split(',').map(s => s.trim()).filter(Boolean);
52
- } catch (err) {
53
- throw new Error('Could not parse value of --plugins. Should be a list of plugin names ' + 'separated by commas. Plugin names are those found when running `appium ' + 'plugin list`');
54
- }
55
- }
56
-
57
- function parseDefaultCaps(caps) {
58
- try {
59
- if (_fs.default.statSync(caps).isFile()) {
60
- caps = _fs.default.readFileSync(caps, 'utf8');
61
- }
62
- } catch (err) {}
63
-
64
- caps = JSON.parse(caps);
65
-
66
- if (!_lodash.default.isPlainObject(caps)) {
67
- throw 'Invalid format for default capabilities';
68
- }
69
-
70
- return caps;
71
- }
72
-
73
- function parseInstallTypes(source) {
74
- if (!_lodash.default.includes(_extensionConfig.INSTALL_TYPES, source)) {
75
- throw `Argument to --source was '${source}', which is not a valid ` + `driver source type. It must be one of ${JSON.stringify(_extensionConfig.INSTALL_TYPES)}`;
76
- }
77
-
78
- return source;
79
- }require('source-map-support').install();
80
-
81
-
82
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLWhlbHBlcnMuanMiXSwibmFtZXMiOlsicGFyc2VTZWN1cml0eUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJzcGxpdHRlciIsInNwbGl0T24iLCJzdHIiLCJzcGxpdCIsIm1hcCIsInMiLCJ0cmltIiwiZmlsdGVyIiwiQm9vbGVhbiIsInBhcnNlZEZlYXR1cmVzIiwiZXJyIiwiRXJyb3IiLCJsZW5ndGgiLCJmcyIsImV4aXN0c1N5bmMiLCJmaWxlRmVhdHVyZXMiLCJyZWFkRmlsZVN5bmMiLCJtZXNzYWdlIiwicGFyc2VQbHVnaW5OYW1lcyIsIm5hbWVzIiwiXyIsImlzU3RyaW5nIiwicGFyc2VEZWZhdWx0Q2FwcyIsImNhcHMiLCJzdGF0U3luYyIsImlzRmlsZSIsIkpTT04iLCJwYXJzZSIsImlzUGxhaW5PYmplY3QiLCJwYXJzZUluc3RhbGxUeXBlcyIsInNvdXJjZSIsImluY2x1ZGVzIiwiSU5TVEFMTF9UWVBFUyIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxxQkFBVCxDQUFnQ0MsUUFBaEMsRUFBMEM7QUFDeEMsUUFBTUMsUUFBUSxHQUFHLENBQUNDLE9BQUQsRUFBVUMsR0FBVixLQUFtQixHQUFFQSxHQUFJLEVBQVAsQ0FBU0MsS0FBVCxDQUFlRixPQUFmLEVBQXdCRyxHQUF4QixDQUE2QkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsRUFBbkMsRUFBNkNDLE1BQTdDLENBQW9EQyxPQUFwRCxDQUFuQzs7QUFDQSxNQUFJQyxjQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsR0FBRCxFQUFNRCxRQUFOLENBQXpCO0FBQ0QsR0FGRCxDQUVFLE9BQU9XLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsS0FBSixDQUFVLCtEQUNBLDZEQURBLEdBRUEsb0NBRlYsQ0FBTjtBQUdEOztBQUVELE1BQUlGLGNBQWMsQ0FBQ0csTUFBZixLQUEwQixDQUExQixJQUErQkMsWUFBR0MsVUFBSCxDQUFjTCxjQUFjLENBQUMsQ0FBRCxDQUE1QixDQUFuQyxFQUFxRTtBQUVuRSxRQUFJO0FBQ0YsWUFBTU0sWUFBWSxHQUFHRixZQUFHRyxZQUFILENBQWdCUCxjQUFjLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxNQUFuQyxDQUFyQjs7QUFDQUEsTUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsSUFBRCxFQUFPZSxZQUFQLENBQXpCO0FBQ0QsS0FIRCxDQUdFLE9BQU9MLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUFXLHdEQUFELEdBQ0MsYUFBWUYsY0FBYyxDQUFDLENBQUQsQ0FBSSxtQkFBa0JDLEdBQUcsQ0FBQ08sT0FBUSxFQUR2RSxDQUFOO0FBRUQ7QUFDRjs7QUFFRCxTQUFPUixjQUFQO0FBQ0Q7O0FBRUQsU0FBU1MsZ0JBQVQsQ0FBMkJDLEtBQTNCLEVBQWtDO0FBQ2hDLE1BQUksQ0FBQ0MsZ0JBQUVDLFFBQUYsQ0FBV0YsS0FBWCxDQUFMLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSVIsS0FBSixDQUFVLG1EQUFWLENBQU47QUFDRDs7QUFFRCxNQUFJO0FBQ0YsV0FBT1EsS0FBSyxDQUFDaEIsS0FBTixDQUFZLEdBQVosRUFBaUJDLEdBQWpCLENBQXNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsSUFBRixFQUE1QixFQUFzQ0MsTUFBdEMsQ0FBNkNDLE9BQTdDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1osVUFBTSxJQUFJQyxLQUFKLENBQVUsMEVBQ0EseUVBREEsR0FFQSxjQUZWLENBQU47QUFHRDtBQUNGOztBQUVELFNBQVNXLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQztBQUMvQixNQUFJO0FBTUYsUUFBSVYsWUFBR1csUUFBSCxDQUFZRCxJQUFaLEVBQWtCRSxNQUFsQixFQUFKLEVBQWdDO0FBQzlCRixNQUFBQSxJQUFJLEdBQUdWLFlBQUdHLFlBQUgsQ0FBZ0JPLElBQWhCLEVBQXNCLE1BQXRCLENBQVA7QUFDRDtBQUNGLEdBVEQsQ0FTRSxPQUFPYixHQUFQLEVBQVksQ0FFYjs7QUFDRGEsRUFBQUEsSUFBSSxHQUFHRyxJQUFJLENBQUNDLEtBQUwsQ0FBV0osSUFBWCxDQUFQOztBQUNBLE1BQUksQ0FBQ0gsZ0JBQUVRLGFBQUYsQ0FBZ0JMLElBQWhCLENBQUwsRUFBNEI7QUFDMUIsVUFBTSx5Q0FBTjtBQUNEOztBQUNELFNBQU9BLElBQVA7QUFDRDs7QUFFRCxTQUFTTSxpQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0M7QUFDbEMsTUFBSSxDQUFDVixnQkFBRVcsUUFBRixDQUFXQyw4QkFBWCxFQUEwQkYsTUFBMUIsQ0FBTCxFQUF3QztBQUN0QyxVQUFPLDZCQUE0QkEsTUFBTywwQkFBcEMsR0FDQyx5Q0FBd0NKLElBQUksQ0FBQ08sU0FBTCxDQUFlRCw4QkFBZixDQUE4QixFQUQ3RTtBQUVEOztBQUVELFNBQU9GLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSU5TVEFMTF9UWVBFUyB9IGZyb20gJy4uL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vLyBzZXJ2ZXJBcmdzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBzZXJ2ZXJgIChkZWZhdWx0KSBzdWJjb21tYW5kXG5mdW5jdGlvbiBwYXJzZVNlY3VyaXR5RmVhdHVyZXMgKGZlYXR1cmVzKSB7XG4gIGNvbnN0IHNwbGl0dGVyID0gKHNwbGl0T24sIHN0cikgPT4gYCR7c3RyfWAuc3BsaXQoc3BsaXRPbikubWFwKChzKSA9PiBzLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuICBsZXQgcGFyc2VkRmVhdHVyZXM7XG4gIHRyeSB7XG4gICAgcGFyc2VkRmVhdHVyZXMgPSBzcGxpdHRlcignLCcsIGZlYXR1cmVzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1hbGxvdy9kZW55LWluc2VjdXJlLiBTaG91bGQgYmUgJyArXG4gICAgICAgICAgICAgICAgICAgICdhIGxpc3Qgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzLCBvciBhIHBhdGggdG8gYSBmaWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAnbGlzdGluZyBvbmUgZmVhdHVyZSBuYW1lIHBlciBsaW5lLicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEZlYXR1cmVzLmxlbmd0aCA9PT0gMSAmJiBmcy5leGlzdHNTeW5jKHBhcnNlZEZlYXR1cmVzWzBdKSkge1xuICAgIC8vIHdlIG1pZ2h0IGhhdmUgYSBmaWxlIHdoaWNoIGlzIGEgbGlzdCBvZiBmZWF0dXJlc1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlRmVhdHVyZXMgPSBmcy5yZWFkRmlsZVN5bmMocGFyc2VkRmVhdHVyZXNbMF0sICd1dGY4Jyk7XG4gICAgICBwYXJzZWRGZWF0dXJlcyA9IHNwbGl0dGVyKCdcXG4nLCBmaWxlRmVhdHVyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gcmVhZCAtLWFsbG93L2RlbnktaW5zZWN1cmUgZmVhdHVyZSBuYW1lcyBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgZnJvbSBmaWxlICR7cGFyc2VkRmVhdHVyZXNbMF19IGJ1dCBnb3QgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZEZlYXR1cmVzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBsdWdpbk5hbWVzIChuYW1lcykge1xuICBpZiAoIV8uaXNTdHJpbmcobmFtZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUbyBwYXJzZSBwbHVnaW4gbmFtZXMsIG5hbWVzIG11c3QgYmUgYSBDU1Ygc3RyaW5nJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuYW1lcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1wbHVnaW5zLiBTaG91bGQgYmUgYSBsaXN0IG9mIHBsdWdpbiBuYW1lcyAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlZCBieSBjb21tYXMuIFBsdWdpbiBuYW1lcyBhcmUgdGhvc2UgZm91bmQgd2hlbiBydW5uaW5nIGBhcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICdwbHVnaW4gbGlzdGAnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURlZmF1bHRDYXBzIChjYXBzKSB7XG4gIHRyeSB7XG4gICAgLy8gdXNlIHN5bmNocm9ub3VzIGZpbGUgYWNjZXNzLCBhcyBgYXJncGFyc2VgIHByb3ZpZGVzIG5vIHdheSBvZiBlaXRoZXJcbiAgICAvLyBhd2FpdGluZyBvciB1c2luZyBjYWxsYmFja3MuIFRoaXMgc3RlcCBoYXBwZW5zIGluIHN0YXJ0dXAsIGluIHdoYXQgaXNcbiAgICAvLyBlZmZlY3RpdmVseSBjb21tYW5kLWxpbmUgY29kZSwgc28gbm90aGluZyBpcyBibG9ja2VkIGluIHRlcm1zIG9mXG4gICAgLy8gc2Vzc2lvbnMsIHNvIGhvbGRpbmcgdXAgdGhlIGV2ZW50IGxvb3AgZG9lcyBub3QgaW5jdXIgdGhlIHVzdWFsXG4gICAgLy8gZHJhd2JhY2tzLlxuICAgIGlmIChmcy5zdGF0U3luYyhjYXBzKS5pc0ZpbGUoKSkge1xuICAgICAgY2FwcyA9IGZzLnJlYWRGaWxlU3luYyhjYXBzLCAndXRmOCcpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gbm90IGEgZmlsZSwgb3Igbm90IHJlYWRhYmxlXG4gIH1cbiAgY2FwcyA9IEpTT04ucGFyc2UoY2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgdGhyb3cgJ0ludmFsaWQgZm9ybWF0IGZvciBkZWZhdWx0IGNhcGFiaWxpdGllcyc7XG4gIH1cbiAgcmV0dXJuIGNhcHM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5zdGFsbFR5cGVzIChzb3VyY2UpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKElOU1RBTExfVFlQRVMsIHNvdXJjZSkpIHtcbiAgICB0aHJvdyBgQXJndW1lbnQgdG8gLS1zb3VyY2Ugd2FzICcke3NvdXJjZX0nLCB3aGljaCBpcyBub3QgYSB2YWxpZCBgICtcbiAgICAgICAgICBgZHJpdmVyIHNvdXJjZSB0eXBlLiBJdCBtdXN0IGJlIG9uZSBvZiAke0pTT04uc3RyaW5naWZ5KElOU1RBTExfVFlQRVMpfWA7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gIHBhcnNlRGVmYXVsdENhcHMsXG4gIHBhcnNlSW5zdGFsbFR5cGVzLFxuICBwYXJzZVBsdWdpbk5hbWVzLFxufTtcbiJdLCJmaWxlIjoibGliL2NsaS9wYXJzZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -1,79 +0,0 @@
1
- import fs from 'fs';
2
- import _ from 'lodash';
3
- import { INSTALL_TYPES } from '../extension-config';
4
-
5
- // serverArgs will be added to the `server` (default) subcommand
6
- function parseSecurityFeatures (features) {
7
- const splitter = (splitOn, str) => `${str}`.split(splitOn).map((s) => s.trim()).filter(Boolean);
8
- let parsedFeatures;
9
- try {
10
- parsedFeatures = splitter(',', features);
11
- } catch (err) {
12
- throw new Error('Could not parse value of --allow/deny-insecure. Should be ' +
13
- 'a list of strings separated by commas, or a path to a file ' +
14
- 'listing one feature name per line.');
15
- }
16
-
17
- if (parsedFeatures.length === 1 && fs.existsSync(parsedFeatures[0])) {
18
- // we might have a file which is a list of features
19
- try {
20
- const fileFeatures = fs.readFileSync(parsedFeatures[0], 'utf8');
21
- parsedFeatures = splitter('\n', fileFeatures);
22
- } catch (err) {
23
- throw new Error(`Attempted to read --allow/deny-insecure feature names ` +
24
- `from file ${parsedFeatures[0]} but got error: ${err.message}`);
25
- }
26
- }
27
-
28
- return parsedFeatures;
29
- }
30
-
31
- function parsePluginNames (names) {
32
- if (!_.isString(names)) {
33
- throw new Error('To parse plugin names, names must be a CSV string');
34
- }
35
-
36
- try {
37
- return names.split(',').map((s) => s.trim()).filter(Boolean);
38
- } catch (err) {
39
- throw new Error('Could not parse value of --plugins. Should be a list of plugin names ' +
40
- 'separated by commas. Plugin names are those found when running `appium ' +
41
- 'plugin list`');
42
- }
43
- }
44
-
45
- function parseDefaultCaps (caps) {
46
- try {
47
- // use synchronous file access, as `argparse` provides no way of either
48
- // awaiting or using callbacks. This step happens in startup, in what is
49
- // effectively command-line code, so nothing is blocked in terms of
50
- // sessions, so holding up the event loop does not incur the usual
51
- // drawbacks.
52
- if (fs.statSync(caps).isFile()) {
53
- caps = fs.readFileSync(caps, 'utf8');
54
- }
55
- } catch (err) {
56
- // not a file, or not readable
57
- }
58
- caps = JSON.parse(caps);
59
- if (!_.isPlainObject(caps)) {
60
- throw 'Invalid format for default capabilities';
61
- }
62
- return caps;
63
- }
64
-
65
- function parseInstallTypes (source) {
66
- if (!_.includes(INSTALL_TYPES, source)) {
67
- throw `Argument to --source was '${source}', which is not a valid ` +
68
- `driver source type. It must be one of ${JSON.stringify(INSTALL_TYPES)}`;
69
- }
70
-
71
- return source;
72
- }
73
-
74
- export {
75
- parseSecurityFeatures,
76
- parseDefaultCaps,
77
- parseInstallTypes,
78
- parsePluginNames,
79
- };