appium 2.0.0-beta.5 → 2.0.0-beta.52

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 (199) hide show
  1. package/README.md +156 -63
  2. package/build/lib/appium.d.ts +226 -0
  3. package/build/lib/appium.d.ts.map +1 -0
  4. package/build/lib/appium.js +694 -439
  5. package/build/lib/appium.js.map +1 -0
  6. package/build/lib/cli/args.d.ts +17 -0
  7. package/build/lib/cli/args.d.ts.map +1 -0
  8. package/build/lib/cli/args.js +253 -319
  9. package/build/lib/cli/args.js.map +1 -0
  10. package/build/lib/cli/driver-command.d.ts +102 -0
  11. package/build/lib/cli/driver-command.d.ts.map +1 -0
  12. package/build/lib/cli/driver-command.js +126 -81
  13. package/build/lib/cli/driver-command.js.map +1 -0
  14. package/build/lib/cli/extension-command.d.ts +385 -0
  15. package/build/lib/cli/extension-command.d.ts.map +1 -0
  16. package/build/lib/cli/extension-command.js +731 -383
  17. package/build/lib/cli/extension-command.js.map +1 -0
  18. package/build/lib/cli/extension.d.ts +23 -0
  19. package/build/lib/cli/extension.d.ts.map +1 -0
  20. package/build/lib/cli/extension.js +71 -54
  21. package/build/lib/cli/extension.js.map +1 -0
  22. package/build/lib/cli/parser.d.ts +84 -0
  23. package/build/lib/cli/parser.d.ts.map +1 -0
  24. package/build/lib/cli/parser.js +240 -128
  25. package/build/lib/cli/parser.js.map +1 -0
  26. package/build/lib/cli/plugin-command.d.ts +99 -0
  27. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  28. package/build/lib/cli/plugin-command.js +120 -81
  29. package/build/lib/cli/plugin-command.js.map +1 -0
  30. package/build/lib/cli/utils.d.ts +29 -0
  31. package/build/lib/cli/utils.d.ts.map +1 -0
  32. package/build/lib/cli/utils.js +72 -51
  33. package/build/lib/cli/utils.js.map +1 -0
  34. package/build/lib/config-file.d.ts +100 -0
  35. package/build/lib/config-file.d.ts.map +1 -0
  36. package/build/lib/config-file.js +207 -0
  37. package/build/lib/config-file.js.map +1 -0
  38. package/build/lib/config.d.ts +49 -0
  39. package/build/lib/config.d.ts.map +1 -0
  40. package/build/lib/config.js +265 -201
  41. package/build/lib/config.js.map +1 -0
  42. package/build/lib/constants.d.ts +49 -0
  43. package/build/lib/constants.d.ts.map +1 -0
  44. package/build/lib/constants.js +66 -0
  45. package/build/lib/constants.js.map +1 -0
  46. package/build/lib/extension/driver-config.d.ts +82 -0
  47. package/build/lib/extension/driver-config.d.ts.map +1 -0
  48. package/build/lib/extension/driver-config.js +212 -0
  49. package/build/lib/extension/driver-config.js.map +1 -0
  50. package/build/lib/extension/extension-config.d.ts +249 -0
  51. package/build/lib/extension/extension-config.d.ts.map +1 -0
  52. package/build/lib/extension/extension-config.js +581 -0
  53. package/build/lib/extension/extension-config.js.map +1 -0
  54. package/build/lib/extension/index.d.ts +48 -0
  55. package/build/lib/extension/index.d.ts.map +1 -0
  56. package/build/lib/extension/index.js +105 -0
  57. package/build/lib/extension/index.js.map +1 -0
  58. package/build/lib/extension/manifest-migrations.d.ts +27 -0
  59. package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
  60. package/build/lib/extension/manifest-migrations.js +118 -0
  61. package/build/lib/extension/manifest-migrations.js.map +1 -0
  62. package/build/lib/extension/manifest.d.ts +145 -0
  63. package/build/lib/extension/manifest.d.ts.map +1 -0
  64. package/build/lib/extension/manifest.js +521 -0
  65. package/build/lib/extension/manifest.js.map +1 -0
  66. package/build/lib/extension/package-changed.d.ts +11 -0
  67. package/build/lib/extension/package-changed.d.ts.map +1 -0
  68. package/build/lib/extension/package-changed.js +62 -0
  69. package/build/lib/extension/package-changed.js.map +1 -0
  70. package/build/lib/extension/plugin-config.d.ts +56 -0
  71. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  72. package/build/lib/extension/plugin-config.js +102 -0
  73. package/build/lib/extension/plugin-config.js.map +1 -0
  74. package/build/lib/grid-register.d.ts +10 -0
  75. package/build/lib/grid-register.d.ts.map +1 -0
  76. package/build/lib/grid-register.js +122 -144
  77. package/build/lib/grid-register.js.map +1 -0
  78. package/build/lib/logger.d.ts +3 -0
  79. package/build/lib/logger.d.ts.map +1 -0
  80. package/build/lib/logger.js +5 -17
  81. package/build/lib/logger.js.map +1 -0
  82. package/build/lib/logsink.d.ts +4 -0
  83. package/build/lib/logsink.d.ts.map +1 -0
  84. package/build/lib/logsink.js +190 -187
  85. package/build/lib/logsink.js.map +1 -0
  86. package/build/lib/main.d.ts +62 -0
  87. package/build/lib/main.d.ts.map +1 -0
  88. package/build/lib/main.js +348 -228
  89. package/build/lib/main.js.map +1 -0
  90. package/build/lib/schema/arg-spec.d.ts +143 -0
  91. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  92. package/build/lib/schema/arg-spec.js +164 -0
  93. package/build/lib/schema/arg-spec.js.map +1 -0
  94. package/build/lib/schema/cli-args.d.ts +19 -0
  95. package/build/lib/schema/cli-args.d.ts.map +1 -0
  96. package/build/lib/schema/cli-args.js +217 -0
  97. package/build/lib/schema/cli-args.js.map +1 -0
  98. package/build/lib/schema/cli-transformers.d.ts +5 -0
  99. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  100. package/build/lib/schema/cli-transformers.js +124 -0
  101. package/build/lib/schema/cli-transformers.js.map +1 -0
  102. package/build/lib/schema/index.d.ts +3 -0
  103. package/build/lib/schema/index.d.ts.map +1 -0
  104. package/build/lib/schema/index.js +19 -0
  105. package/build/lib/schema/index.js.map +1 -0
  106. package/build/lib/schema/keywords.d.ts +24 -0
  107. package/build/lib/schema/keywords.d.ts.map +1 -0
  108. package/build/lib/schema/keywords.js +128 -0
  109. package/build/lib/schema/keywords.js.map +1 -0
  110. package/build/lib/schema/schema.d.ts +259 -0
  111. package/build/lib/schema/schema.d.ts.map +1 -0
  112. package/build/lib/schema/schema.js +615 -0
  113. package/build/lib/schema/schema.js.map +1 -0
  114. package/build/lib/utils.d.ts +121 -0
  115. package/build/lib/utils.d.ts.map +1 -0
  116. package/build/lib/utils.js +351 -273
  117. package/build/lib/utils.js.map +1 -0
  118. package/build/tsconfig.tsbuildinfo +1 -0
  119. package/build/types/cli.d.ts +134 -0
  120. package/build/types/cli.d.ts.map +1 -0
  121. package/build/types/cli.js +3 -0
  122. package/build/types/cli.js.map +1 -0
  123. package/build/types/index.d.ts +15 -0
  124. package/build/types/index.d.ts.map +1 -0
  125. package/build/types/index.js +19 -0
  126. package/build/types/index.js.map +1 -0
  127. package/build/types/manifest/base.d.ts +135 -0
  128. package/build/types/manifest/base.d.ts.map +1 -0
  129. package/build/types/manifest/base.js +3 -0
  130. package/build/types/manifest/base.js.map +1 -0
  131. package/build/types/manifest/index.d.ts +19 -0
  132. package/build/types/manifest/index.d.ts.map +1 -0
  133. package/build/types/manifest/index.js +40 -0
  134. package/build/types/manifest/index.js.map +1 -0
  135. package/build/types/manifest/v3.d.ts +139 -0
  136. package/build/types/manifest/v3.d.ts.map +1 -0
  137. package/build/types/manifest/v3.js +3 -0
  138. package/build/types/manifest/v3.js.map +1 -0
  139. package/driver.d.ts +1 -0
  140. package/driver.js +14 -0
  141. package/index.js +11 -0
  142. package/lib/appium.js +535 -186
  143. package/lib/cli/args.js +267 -422
  144. package/lib/cli/driver-command.js +126 -23
  145. package/lib/cli/extension-command.js +679 -271
  146. package/lib/cli/extension.js +48 -17
  147. package/lib/cli/parser.js +263 -83
  148. package/lib/cli/plugin-command.js +115 -20
  149. package/lib/cli/utils.js +24 -10
  150. package/lib/config-file.js +220 -0
  151. package/lib/config.js +244 -110
  152. package/lib/constants.js +71 -0
  153. package/lib/extension/driver-config.js +250 -0
  154. package/lib/extension/extension-config.js +682 -0
  155. package/lib/extension/index.js +116 -0
  156. package/lib/extension/manifest-migrations.js +120 -0
  157. package/lib/extension/manifest.js +573 -0
  158. package/lib/extension/package-changed.js +64 -0
  159. package/lib/extension/plugin-config.js +112 -0
  160. package/lib/grid-register.js +49 -35
  161. package/lib/logger.js +1 -2
  162. package/lib/logsink.js +64 -38
  163. package/lib/main.js +321 -101
  164. package/lib/schema/arg-spec.js +229 -0
  165. package/lib/schema/cli-args.js +238 -0
  166. package/lib/schema/cli-transformers.js +119 -0
  167. package/lib/schema/index.js +2 -0
  168. package/lib/schema/keywords.js +136 -0
  169. package/lib/schema/schema.js +722 -0
  170. package/lib/utils.js +291 -167
  171. package/package.json +83 -84
  172. package/plugin.d.ts +1 -0
  173. package/plugin.js +13 -0
  174. package/scripts/autoinstall-extensions.js +237 -0
  175. package/support.d.ts +1 -0
  176. package/support.js +13 -0
  177. package/tsconfig.json +25 -0
  178. package/types/cli.ts +189 -0
  179. package/types/index.ts +20 -0
  180. package/types/manifest/README.md +30 -0
  181. package/types/manifest/base.ts +158 -0
  182. package/types/manifest/index.ts +27 -0
  183. package/types/manifest/v3.ts +161 -0
  184. package/CHANGELOG.md +0 -3515
  185. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  186. package/build/lib/cli/npm.js +0 -208
  187. package/build/lib/cli/parser-helpers.js +0 -82
  188. package/build/lib/driver-config.js +0 -77
  189. package/build/lib/drivers.js +0 -96
  190. package/build/lib/extension-config.js +0 -253
  191. package/build/lib/plugin-config.js +0 -59
  192. package/build/lib/plugins.js +0 -14
  193. package/lib/cli/npm.js +0 -184
  194. package/lib/cli/parser-helpers.js +0 -79
  195. package/lib/driver-config.js +0 -46
  196. package/lib/drivers.js +0 -81
  197. package/lib/extension-config.js +0 -209
  198. package/lib/plugin-config.js +0 -34
  199. package/lib/plugins.js +0 -10
@@ -1,230 +1,294 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.getBuildInfo = getBuildInfo;
9
- exports.validateServerArgs = validateServerArgs;
10
- exports.checkNodeOk = checkNodeOk;
11
- exports.showConfig = showConfig;
12
- exports.warnNodeDeprecations = warnNodeDeprecations;
13
- exports.validateTmpDir = validateTmpDir;
14
- exports.getNonDefaultArgs = getNonDefaultArgs;
15
- exports.getGitRev = getGitRev;
16
- exports.checkValidPort = checkValidPort;
17
- exports.updateBuildInfo = updateBuildInfo;
18
- exports.APPIUM_VER = void 0;
19
-
20
- require("source-map-support/register");
21
-
22
- var _lodash = _interopRequireDefault(require("lodash"));
23
-
24
- var _path = _interopRequireDefault(require("path"));
25
-
26
- var _appiumSupport = require("appium-support");
27
-
28
- var _axios = _interopRequireDefault(require("axios"));
29
-
30
- var _teen_process = require("teen_process");
31
-
32
- var _utils = require("./utils");
33
-
34
- var _logger = _interopRequireDefault(require("./logger"));
35
-
36
- var _semver = _interopRequireDefault(require("semver"));
37
-
38
- const npmPackage = require(_path.default.resolve(_utils.rootDir, 'package.json'));
39
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rootDir = exports.showConfig = exports.updateBuildInfo = exports.APPIUM_VER = exports.getGitRev = exports.getNonDefaultServerArgs = exports.validateTmpDir = exports.warnNodeDeprecations = exports.showBuildInfo = exports.checkNodeOk = exports.getBuildInfo = exports.checkNpmOk = void 0;
7
+ /* eslint-disable no-console */
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const support_1 = require("@appium/support");
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const teen_process_1 = require("teen_process");
12
+ const semver_1 = __importDefault(require("semver"));
13
+ const find_up_1 = __importDefault(require("find-up"));
14
+ const schema_1 = require("./schema/schema");
15
+ const npmPackage = support_1.fs.readPackageJsonFrom(__dirname);
40
16
  const APPIUM_VER = npmPackage.version;
41
17
  exports.APPIUM_VER = APPIUM_VER;
42
18
  const MIN_NODE_VERSION = npmPackage.engines.node;
19
+ const MIN_NPM_VERSION = npmPackage.engines.npm;
43
20
  const GIT_META_ROOT = '.git';
44
- const GIT_BINARY = `git${_appiumSupport.system.isWindows() ? '.exe' : ''}`;
21
+ const GIT_BINARY = `git${support_1.system.isWindows() ? '.exe' : ''}`;
45
22
  const GITHUB_API = 'https://api.github.com/repos/appium/appium';
23
+ /**
24
+ * @type {import('appium/types').BuildInfo}
25
+ */
46
26
  const BUILD_INFO = {
47
- version: APPIUM_VER
27
+ version: APPIUM_VER,
48
28
  };
49
-
50
29
  function getNodeVersion() {
51
- return _semver.default.coerce(process.version);
30
+ return /** @type {import('semver').SemVer} */ (semver_1.default.coerce(process.version));
52
31
  }
53
-
32
+ /**
33
+ * Returns version of `npm`
34
+ * @returns {Promise<string>}
35
+ */
36
+ async function getNpmVersion() {
37
+ const { stdout } = await (0, teen_process_1.exec)(support_1.system.isWindows() ? 'npm.cmd' : 'npm', ['--version']);
38
+ return stdout.trim();
39
+ }
40
+ /**
41
+ * @param {boolean} [useGithubApiFallback]
42
+ */
54
43
  async function updateBuildInfo(useGithubApiFallback = false) {
55
- const sha = await getGitRev(useGithubApiFallback);
56
-
57
- if (!sha) {
58
- return;
59
- }
60
-
61
- BUILD_INFO['git-sha'] = sha;
62
- const built = await getGitTimestamp(sha, useGithubApiFallback);
63
-
64
- if (!_lodash.default.isEmpty(built)) {
65
- BUILD_INFO.built = built;
66
- }
44
+ const sha = await getGitRev(useGithubApiFallback);
45
+ if (!sha) {
46
+ return;
47
+ }
48
+ BUILD_INFO['git-sha'] = sha;
49
+ const buildTimestamp = await getGitTimestamp(sha, useGithubApiFallback);
50
+ if (buildTimestamp) {
51
+ BUILD_INFO.built = buildTimestamp;
52
+ }
53
+ }
54
+ exports.updateBuildInfo = updateBuildInfo;
55
+ /**
56
+ * Finds the Git metadata dir (see `GIT_META_ROOT`)
57
+ *
58
+ * This is needed because Appium cannot assume `package.json` and `.git` are in the same
59
+ * directory. Monorepos, see?
60
+ * @returns {Promise<string|undefined>} Path to dir or `undefined` if not found
61
+ */
62
+ async function findGitRoot() {
63
+ return await (0, find_up_1.default)(GIT_META_ROOT, { cwd: rootDir, type: 'directory' });
67
64
  }
68
-
65
+ /**
66
+ * @param {boolean} [useGithubApiFallback]
67
+ * @returns {Promise<string?>}
68
+ */
69
69
  async function getGitRev(useGithubApiFallback = false) {
70
- if (await _appiumSupport.fs.exists(_path.default.resolve(_utils.rootDir, GIT_META_ROOT))) {
71
- try {
72
- const {
73
- stdout
74
- } = await (0, _teen_process.exec)(GIT_BINARY, ['rev-parse', 'HEAD'], {
75
- cwd: _utils.rootDir
76
- });
77
- return stdout.trim();
78
- } catch (ign) {}
79
- }
80
-
81
- if (!useGithubApiFallback) {
82
- return null;
83
- }
84
-
85
- try {
86
- const resBodyObj = (await _axios.default.get(`${GITHUB_API}/tags`, {
87
- headers: {
88
- 'User-Agent': `Appium ${APPIUM_VER}`
89
- }
90
- })).data;
91
-
92
- if (_lodash.default.isArray(resBodyObj)) {
93
- for (const {
94
- name,
95
- commit
96
- } of resBodyObj) {
97
- if (name === `v${APPIUM_VER}` && commit && commit.sha) {
98
- return commit.sha;
70
+ const gitRoot = await findGitRoot();
71
+ if (gitRoot) {
72
+ try {
73
+ const { stdout } = await (0, teen_process_1.exec)(GIT_BINARY, ['rev-parse', 'HEAD'], {
74
+ cwd: gitRoot,
75
+ });
76
+ return stdout.trim();
99
77
  }
100
- }
78
+ catch (ign) { }
101
79
  }
102
- } catch (ign) {}
103
-
104
- return null;
80
+ if (!useGithubApiFallback) {
81
+ return null;
82
+ }
83
+ // If the package folder is not a valid git repository
84
+ // then fetch the corresponding tag info from GitHub
85
+ try {
86
+ return (await axios_1.default.get(`${GITHUB_API}/git/refs/tags/appium@${APPIUM_VER}`, {
87
+ headers: {
88
+ 'User-Agent': `Appium ${APPIUM_VER}`,
89
+ },
90
+ })).data?.object?.sha;
91
+ }
92
+ catch (ign) { }
93
+ return null;
105
94
  }
106
-
95
+ exports.getGitRev = getGitRev;
96
+ /**
97
+ * @param {string} commitSha
98
+ * @param {boolean} [useGithubApiFallback]
99
+ * @returns {Promise<string?>}
100
+ */
107
101
  async function getGitTimestamp(commitSha, useGithubApiFallback = false) {
108
- if (await _appiumSupport.fs.exists(_path.default.resolve(_utils.rootDir, GIT_META_ROOT))) {
102
+ const gitRoot = await findGitRoot();
103
+ if (gitRoot) {
104
+ try {
105
+ const { stdout } = await (0, teen_process_1.exec)(GIT_BINARY, ['show', '-s', '--format=%ci', commitSha], {
106
+ cwd: gitRoot,
107
+ });
108
+ return stdout.trim();
109
+ }
110
+ catch (ign) { }
111
+ }
112
+ if (!useGithubApiFallback) {
113
+ return null;
114
+ }
109
115
  try {
110
- const {
111
- stdout
112
- } = await (0, _teen_process.exec)(GIT_BINARY, ['show', '-s', '--format=%ci', commitSha], {
113
- cwd: _utils.rootDir
114
- });
115
- return stdout.trim();
116
- } catch (ign) {}
117
- }
118
-
119
- if (!useGithubApiFallback) {
116
+ return (await axios_1.default.get(`${GITHUB_API}/git/tags/${commitSha}`, {
117
+ headers: {
118
+ 'User-Agent': `Appium ${APPIUM_VER}`,
119
+ },
120
+ })).data?.tagger?.date;
121
+ }
122
+ catch (ign) { }
120
123
  return null;
121
- }
122
-
123
- try {
124
- const resBodyObj = (await _axios.default.get(`${GITHUB_API}/commits/${commitSha}`, {
125
- headers: {
126
- 'User-Agent': `Appium ${APPIUM_VER}`
127
- }
128
- })).data;
129
-
130
- if (resBodyObj && resBodyObj.commit) {
131
- if (resBodyObj.commit.committer && resBodyObj.commit.committer.date) {
132
- return resBodyObj.commit.committer.date;
133
- }
134
-
135
- if (resBodyObj.commit.author && resBodyObj.commit.author.date) {
136
- return resBodyObj.commit.author.date;
137
- }
138
- }
139
- } catch (ign) {}
140
-
141
- return null;
142
124
  }
143
-
125
+ /**
126
+ * Mutable object containing Appium build information. By default it
127
+ * only contains the Appium version, but is updated with the build timestamp
128
+ * and git commit hash asynchronously as soon as `updateBuildInfo` is called
129
+ * and succeeds.
130
+ * @returns {import('appium/types').BuildInfo}
131
+ */
144
132
  function getBuildInfo() {
145
- return BUILD_INFO;
133
+ return BUILD_INFO;
146
134
  }
147
-
135
+ exports.getBuildInfo = getBuildInfo;
148
136
  function checkNodeOk() {
149
- const version = getNodeVersion();
150
-
151
- if (!_semver.default.satisfies(version, MIN_NODE_VERSION)) {
152
- _logger.default.errorAndThrow(`Node version must be ${MIN_NODE_VERSION}. Currently ${version.version}`);
153
- }
137
+ const version = getNodeVersion();
138
+ if (!semver_1.default.satisfies(version, MIN_NODE_VERSION)) {
139
+ throw new Error(`Node version must be at least ${MIN_NODE_VERSION}; current is ${version.version}`);
140
+ }
154
141
  }
155
-
156
- function warnNodeDeprecations() {}
157
-
158
- async function showConfig() {
159
- await updateBuildInfo(true);
160
- console.log(JSON.stringify(getBuildInfo()));
142
+ exports.checkNodeOk = checkNodeOk;
143
+ async function checkNpmOk() {
144
+ const npmVersion = await getNpmVersion();
145
+ if (!semver_1.default.satisfies(npmVersion, MIN_NPM_VERSION)) {
146
+ throw new Error(`npm version must be at least ${MIN_NPM_VERSION}; current is ${npmVersion}. Run "npm install -g npm" to upgrade.`);
147
+ }
161
148
  }
162
-
163
- function getNonDefaultArgs(parser, args) {
164
- let nonDefaults = {};
165
-
166
- for (let rawArg of parser.rawArgs) {
167
- let arg = rawArg[1].dest;
168
-
169
- if (args[arg] && args[arg] !== rawArg[1].defaultValue) {
170
- nonDefaults[arg] = args[arg];
171
- }
172
- }
173
-
174
- return nonDefaults;
149
+ exports.checkNpmOk = checkNpmOk;
150
+ function warnNodeDeprecations() {
151
+ /**
152
+ * Uncomment this section to get node version deprecation warnings
153
+ * Also add test cases to config-specs.js to cover the cases added
154
+ **/
155
+ // const version = getNodeVersion();
156
+ // if (version.major < 8) {
157
+ // logger.warn(`Appium support for versions of node < ${version.major} has been ` +
158
+ // 'deprecated and will be removed in a future version. Please ' +
159
+ // 'upgrade!');
160
+ // }
161
+ }
162
+ exports.warnNodeDeprecations = warnNodeDeprecations;
163
+ async function showBuildInfo() {
164
+ await updateBuildInfo(true);
165
+ console.log(JSON.stringify(getBuildInfo())); // eslint-disable-line no-console
175
166
  }
176
-
177
- function checkValidPort(port, portName) {
178
- if (port > 0 && port < 65536) return true;
179
-
180
- _logger.default.error(`Port '${portName}' must be greater than 0 and less than 65536. Currently ${port}`);
181
-
182
- return false;
167
+ exports.showBuildInfo = showBuildInfo;
168
+ /**
169
+ * Returns k/v pairs of server arguments which are _not_ the defaults.
170
+ * @param {Args} parsedArgs
171
+ * @returns {Args}
172
+ */
173
+ function getNonDefaultServerArgs(parsedArgs) {
174
+ /**
175
+ * Flattens parsed args into a single level object for comparison with
176
+ * flattened defaults across server args and extension args.
177
+ * @param {Args} args
178
+ * @returns {Record<string, { value: any, argSpec: ArgSpec }>}
179
+ */
180
+ const flatten = (args) => {
181
+ const argSpecs = (0, schema_1.getAllArgSpecs)();
182
+ const flattened = lodash_1.default.reduce([...argSpecs.values()], (acc, argSpec) => {
183
+ if (lodash_1.default.has(args, argSpec.dest)) {
184
+ acc[argSpec.dest] = { value: lodash_1.default.get(args, argSpec.dest), argSpec };
185
+ }
186
+ return acc;
187
+ },
188
+ /** @type {Record<string, { value: any, argSpec: ArgSpec }>} */ ({}));
189
+ return flattened;
190
+ };
191
+ const args = flatten(parsedArgs);
192
+ // hopefully these function names are descriptive enough
193
+ const typesDiffer = /** @param {string} dest */ (dest) => typeof args[dest].value !== typeof defaultsFromSchema[dest];
194
+ const defaultValueIsArray = /** @param {string} dest */ (dest) => lodash_1.default.isArray(defaultsFromSchema[dest]);
195
+ const argsValueIsArray = /** @param {string} dest */ (dest) => lodash_1.default.isArray(args[dest].value);
196
+ const arraysDiffer = /** @param {string} dest */ (dest) => lodash_1.default.gt(lodash_1.default.size(lodash_1.default.difference(args[dest].value, defaultsFromSchema[dest])), 0);
197
+ const valuesDiffer = /** @param {string} dest */ (dest) => args[dest].value !== defaultsFromSchema[dest];
198
+ const defaultIsDefined = /** @param {string} dest */ (dest) => !lodash_1.default.isUndefined(defaultsFromSchema[dest]);
199
+ // note that `_.overEvery` is like an "AND", and `_.overSome` is like an "OR"
200
+ const argValueNotArrayOrArraysDiffer = lodash_1.default.overSome([lodash_1.default.negate(argsValueIsArray), arraysDiffer]);
201
+ const defaultValueNotArrayAndValuesDiffer = lodash_1.default.overEvery([
202
+ lodash_1.default.negate(defaultValueIsArray),
203
+ valuesDiffer,
204
+ ]);
205
+ /**
206
+ * This used to be a hideous conditional, but it's broken up into a hideous function instead.
207
+ * hopefully this makes things a little more understandable.
208
+ * - checks if the default value is defined
209
+ * - if so, and the default is not an array:
210
+ * - ensures the types are the same
211
+ * - ensures the values are equal
212
+ * - if so, and the default is an array:
213
+ * - ensures the args value is an array
214
+ * - ensures the args values do not differ from the default values
215
+ * @type {(dest: string) => boolean}
216
+ */
217
+ const isNotDefault = lodash_1.default.overEvery([
218
+ defaultIsDefined,
219
+ lodash_1.default.overSome([
220
+ typesDiffer,
221
+ lodash_1.default.overEvery([defaultValueIsArray, argValueNotArrayOrArraysDiffer]),
222
+ defaultValueNotArrayAndValuesDiffer,
223
+ ]),
224
+ ]);
225
+ const defaultsFromSchema = (0, schema_1.getDefaultsForSchema)(true);
226
+ return lodash_1.default.reduce(lodash_1.default.pickBy(args, (__, key) => isNotDefault(key)),
227
+ // explodes the flattened object back into nested one
228
+ (acc, { value, argSpec }) => lodash_1.default.set(acc, argSpec.dest, value),
229
+ /** @type {Args} */ ({}));
183
230
  }
184
-
185
- function validateServerArgs(parser, args) {
186
- let exclusives = [['noReset', 'fullReset'], ['ipa', 'safari'], ['app', 'safari'], ['forceIphone', 'forceIpad'], ['deviceName', 'defaultDevice']];
187
-
188
- for (let exSet of exclusives) {
189
- let numFoundInArgs = 0;
190
-
191
- for (let opt of exSet) {
192
- if (_lodash.default.has(args, opt) && args[opt]) {
193
- numFoundInArgs++;
194
- }
195
- }
196
-
197
- if (numFoundInArgs > 1) {
198
- throw new Error(`You can't pass in more than one argument from the ` + `set ${JSON.stringify(exSet)}, since they are ` + `mutually exclusive`);
199
- }
200
- }
201
-
202
- const validations = {
203
- port: checkValidPort,
204
- callbackPort: checkValidPort,
205
- bootstrapPort: checkValidPort,
206
- chromedriverPort: checkValidPort,
207
- robotPort: checkValidPort,
208
- backendRetries: r => r >= 0
209
- };
210
- const nonDefaultArgs = getNonDefaultArgs(parser, args);
211
-
212
- for (let [arg, validator] of _lodash.default.toPairs(validations)) {
213
- if (_lodash.default.has(nonDefaultArgs, arg)) {
214
- if (!validator(args[arg], arg)) {
215
- throw new Error(`Invalid argument for param ${arg}: ${args[arg]}`);
216
- }
217
- }
218
- }
231
+ exports.getNonDefaultServerArgs = getNonDefaultServerArgs;
232
+ /**
233
+ * Compacts an object for {@link showConfig}:
234
+ * 1. Removes `subcommand` key/value
235
+ * 2. Removes `undefined` values
236
+ * 3. Removes empty objects (but not `false` values)
237
+ * Does not operate recursively.
238
+ */
239
+ const compactConfig = lodash_1.default.partial(lodash_1.default.omitBy, lodash_1.default, (value, key) => key === 'subcommand' || lodash_1.default.isUndefined(value) || (lodash_1.default.isObject(value) && lodash_1.default.isEmpty(value)));
240
+ /**
241
+ * Shows a breakdown of the current config after CLI params, config file loaded & defaults applied.
242
+ *
243
+ * The actual shape of `preConfigParsedArgs` and `defaults` does not matter for the purposes of this function,
244
+ * but it's intended to be called with values of type {@link ParsedArgs} and `DefaultValues<true>`, respectively.
245
+ *
246
+ * @param {Partial<ParsedArgs>} nonDefaultPreConfigParsedArgs - Parsed CLI args (or param to `init()`) before config & defaults applied
247
+ * @param {import('./config-file').ReadConfigFileResult} configResult - Result of attempting to load a config file. _Must_ be normalized
248
+ * @param {Partial<ParsedArgs>} defaults - Configuration defaults from schemas
249
+ * @param {ParsedArgs} parsedArgs - Entire parsed args object
250
+ */
251
+ function showConfig(nonDefaultPreConfigParsedArgs, configResult, defaults, parsedArgs) {
252
+ console.log('Appium Configuration\n');
253
+ console.log('from defaults:\n');
254
+ console.dir(compactConfig(defaults));
255
+ if (configResult.config) {
256
+ console.log(`\nfrom config file at ${configResult.filepath}:\n`);
257
+ console.dir(compactConfig(configResult.config));
258
+ }
259
+ else {
260
+ console.log(`\n(no configuration file loaded)`);
261
+ }
262
+ const compactedNonDefaultPreConfigArgs = compactConfig(nonDefaultPreConfigParsedArgs);
263
+ if (lodash_1.default.isEmpty(compactedNonDefaultPreConfigArgs)) {
264
+ console.log(`\n(no CLI parameters provided)`);
265
+ }
266
+ else {
267
+ console.log('\nvia CLI or function call:\n');
268
+ console.dir(compactedNonDefaultPreConfigArgs);
269
+ }
270
+ console.log('\nfinal configuration:\n');
271
+ console.dir(compactConfig(parsedArgs));
219
272
  }
220
-
273
+ exports.showConfig = showConfig;
274
+ /**
275
+ * @param {string} tmpDir
276
+ */
221
277
  async function validateTmpDir(tmpDir) {
222
- try {
223
- await (0, _appiumSupport.mkdirp)(tmpDir);
224
- } catch (e) {
225
- throw new Error(`We could not ensure that the temp dir you specified ` + `(${tmpDir}) exists. Please make sure it's writeable.`);
226
- }
227
- }require('source-map-support').install();
228
-
229
-
230
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsInJlcXVpcmUiLCJwYXRoIiwicmVzb2x2ZSIsInJvb3REaXIiLCJBUFBJVU1fVkVSIiwidmVyc2lvbiIsIk1JTl9OT0RFX1ZFUlNJT04iLCJlbmdpbmVzIiwibm9kZSIsIkdJVF9NRVRBX1JPT1QiLCJHSVRfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiR0lUSFVCX0FQSSIsIkJVSUxEX0lORk8iLCJnZXROb2RlVmVyc2lvbiIsInNlbXZlciIsImNvZXJjZSIsInByb2Nlc3MiLCJ1cGRhdGVCdWlsZEluZm8iLCJ1c2VHaXRodWJBcGlGYWxsYmFjayIsInNoYSIsImdldEdpdFJldiIsImJ1aWx0IiwiZ2V0R2l0VGltZXN0YW1wIiwiXyIsImlzRW1wdHkiLCJmcyIsImV4aXN0cyIsInN0ZG91dCIsImN3ZCIsInRyaW0iLCJpZ24iLCJyZXNCb2R5T2JqIiwiYXhpb3MiLCJnZXQiLCJoZWFkZXJzIiwiZGF0YSIsImlzQXJyYXkiLCJuYW1lIiwiY29tbWl0IiwiY29tbWl0U2hhIiwiY29tbWl0dGVyIiwiZGF0ZSIsImF1dGhvciIsImdldEJ1aWxkSW5mbyIsImNoZWNrTm9kZU9rIiwic2F0aXNmaWVzIiwibG9nZ2VyIiwiZXJyb3JBbmRUaHJvdyIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwic2hvd0NvbmZpZyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0Tm9uRGVmYXVsdEFyZ3MiLCJwYXJzZXIiLCJhcmdzIiwibm9uRGVmYXVsdHMiLCJyYXdBcmciLCJyYXdBcmdzIiwiYXJnIiwiZGVzdCIsImRlZmF1bHRWYWx1ZSIsImNoZWNrVmFsaWRQb3J0IiwicG9ydCIsInBvcnROYW1lIiwiZXJyb3IiLCJ2YWxpZGF0ZVNlcnZlckFyZ3MiLCJleGNsdXNpdmVzIiwiZXhTZXQiLCJudW1Gb3VuZEluQXJncyIsIm9wdCIsImhhcyIsIkVycm9yIiwidmFsaWRhdGlvbnMiLCJjYWxsYmFja1BvcnQiLCJib290c3RyYXBQb3J0IiwiY2hyb21lZHJpdmVyUG9ydCIsInJvYm90UG9ydCIsImJhY2tlbmRSZXRyaWVzIiwiciIsIm5vbkRlZmF1bHRBcmdzIiwidmFsaWRhdG9yIiwidG9QYWlycyIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwiZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUNDLGNBQUtDLE9BQUwsQ0FBYUMsY0FBYixFQUFzQixjQUF0QixDQUFELENBQTFCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0wsVUFBVSxDQUFDTSxPQUE5Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR1AsVUFBVSxDQUFDUSxPQUFYLENBQW1CQyxJQUE1QztBQUVBLE1BQU1DLGFBQWEsR0FBRyxNQUF0QjtBQUNBLE1BQU1DLFVBQVUsR0FBSSxNQUFLQyxzQkFBT0MsU0FBUCxLQUFxQixNQUFyQixHQUE4QixFQUFHLEVBQTFEO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLDRDQUFuQjtBQUVBLE1BQU1DLFVBQVUsR0FBRztBQUNqQlQsRUFBQUEsT0FBTyxFQUFFRDtBQURRLENBQW5COztBQUlBLFNBQVNXLGNBQVQsR0FBMkI7QUFDekIsU0FBT0MsZ0JBQU9DLE1BQVAsQ0FBY0MsT0FBTyxDQUFDYixPQUF0QixDQUFQO0FBQ0Q7O0FBRUQsZUFBZWMsZUFBZixDQUFnQ0Msb0JBQW9CLEdBQUcsS0FBdkQsRUFBOEQ7QUFDNUQsUUFBTUMsR0FBRyxHQUFHLE1BQU1DLFNBQVMsQ0FBQ0Ysb0JBQUQsQ0FBM0I7O0FBQ0EsTUFBSSxDQUFDQyxHQUFMLEVBQVU7QUFDUjtBQUNEOztBQUNEUCxFQUFBQSxVQUFVLENBQUMsU0FBRCxDQUFWLEdBQXdCTyxHQUF4QjtBQUNBLFFBQU1FLEtBQUssR0FBRyxNQUFNQyxlQUFlLENBQUNILEdBQUQsRUFBTUQsb0JB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b0JBRlgsQ0FBTjtBQUdEO0FBQ0Y7O0FBRUQsUUFBTUssV0FBVyxHQUFHO0FBQ2xCVixJQUFBQSxJQUFJLEVBQUVELGNBRFk7QUFFbEJZLElBQUFBLFlBQVksRUFBRVosY0FGSTtBQUdsQmEsSUFBQUEsYUFBYSxFQUFFYixjQUhHO0FBSWxCYyxJQUFBQSxnQkFBZ0IsRUFBRWQsY0FKQTtBQUtsQmUsSUFBQUEsU0FBUyxFQUFFZixjQUxPO0FBTWxCZ0IsSUFBQUEsY0FBYyxFQUFHQyxDQUFELElBQU9BLENBQUMsSUFBSTtBQU5WLEdBQXBCO0FBU0EsUUFBTUMsY0FBYyxHQUFHM0IsaUJBQWlCLENBQUNDLE1BQUQsRUFBU0MsSUFBVCxDQUF4Qzs7QUFFQSxPQUFLLElBQUksQ0FBQ0ksR0FBRCxFQUFNc0IsU0FBTixDQUFULElBQTZCM0QsZ0JBQUU0RCxPQUFGLENBQVVULFdBQVYsQ0FBN0IsRUFBcUQ7QUFDbkQsUUFBSW5ELGdCQUFFaUQsR0FBRixDQUFNUyxjQUFOLEVBQXNCckIsR0FBdEIsQ0FBSixFQUFnQztBQUM5QixVQUFJLENBQUNzQixTQUFTLENBQUMxQixJQUFJLENBQUNJLEdBQUQsQ0FBTCxFQUFZQSxHQUFaLENBQWQsRUFBZ0M7QUFDOUIsY0FBTSxJQUFJYSxLQUFKLENBQVcsOEJBQTZCYixHQUFJLEtBQUlKLElBQUksQ0FBQ0ksR0FBRCxDQUFNLEVBQTFELENBQU47QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxlQUFld0IsY0FBZixDQUErQkMsTUFBL0IsRUFBdUM7QUFDckMsTUFBSTtBQUNGLFVBQU0sMkJBQU9BLE1BQVAsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUliLEtBQUosQ0FBVyxzREFBRCxHQUNDLElBQUdZLE1BQU8sNENBRHJCLENBQU47QUFFRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgbWtkaXJwLCBmcywgc3lzdGVtIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcm9vdERpciB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5cblxuY29uc3QgbnBtUGFja2FnZSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKHJvb3REaXIsICdwYWNrYWdlLmpzb24nKSk7XG5jb25zdCBBUFBJVU1fVkVSID0gbnBtUGFja2FnZS52ZXJzaW9uO1xuY29uc3QgTUlOX05PREVfVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ub2RlO1xuXG5jb25zdCBHSVRfTUVUQV9ST09UID0gJy5naXQnO1xuY29uc3QgR0lUX0JJTkFSWSA9IGBnaXQke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHSVRIVUJfQVBJID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXBwaXVtL2FwcGl1bSc7XG5cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbiAoKSB7XG4gIHJldHVybiBzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyAodXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBzaGEgPSBhd2FpdCBnZXRHaXRSZXYodXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIXNoYSkge1xuICAgIHJldHVybjtcbiAgfVxuICBCVUlMRF9JTkZPWydnaXQtc2hhJ10gPSBzaGE7XG4gIGNvbnN0IGJ1aWx0ID0gYXdhaXQgZ2V0R2l0VGltZXN0YW1wKHNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIV8uaXNFbXB0eShidWlsdCkpIHtcbiAgICBCVUlMRF9JTkZPLmJ1aWx0ID0gYnVpbHQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0UmV2ICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMocGF0aC5yZXNvbHZlKHJvb3REaXIsIEdJVF9NRVRBX1JPT1QpKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogcm9vdERpclxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L3RhZ3NgLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChfLmlzQXJyYXkocmVzQm9keU9iaikpIHtcbiAgICAgIGZvciAoY29uc3Qge25hbWUsIGNvbW1pdH0gb2YgcmVzQm9keU9iaikge1xuICAgICAgICBpZiAobmFtZSA9PT0gYHYke0FQUElVTV9WRVJ9YCAmJiBjb21taXQgJiYgY29tbWl0LnNoYSkge1xuICAgICAgICAgIHJldHVybiBjb21taXQuc2hhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRUaW1lc3RhbXAgKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKHBhdGgucmVzb2x2ZShyb290RGlyLCBHSVRfTUVUQV9ST09UKSkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogcm9vdERpclxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2NvbW1pdHMvJHtjb21taXRTaGF9YCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWBcbiAgICAgIH1cbiAgICB9KSkuZGF0YTtcbiAgICBpZiAocmVzQm9keU9iaiAmJiByZXNCb2R5T2JqLmNvbW1pdCkge1xuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlciAmJiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGU7XG4gICAgICB9XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuYXV0aG9yICYmIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybiBNdXRhYmxlIG9iamVjdCBjb250YWluaW5nIEFwcGl1bSBidWlsZCBpbmZvcm1hdGlvbi4gQnkgZGVmYXVsdCBpdFxuICogb25seSBjb250YWlucyB0aGUgQXBwaXVtIHZlcnNpb24sIGJ1dCBpcyB1cGRhdGVkIHdpdGggdGhlIGJ1aWxkIHRpbWVzdGFtcFxuICogYW5kIGdpdCBjb21taXQgaGFzaCBhc3luY2hyb25vdXNseSBhcyBzb29uIGFzIGB1cGRhdGVCdWlsZEluZm9gIGlzIGNhbGxlZFxuICogYW5kIHN1Y2NlZWRzLlxuICovXG5mdW5jdGlvbiBnZXRCdWlsZEluZm8gKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2sgKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucyAoKSB7XG4gIC8qKlxuICAgKiBVbmNvbW1lbnQgdGhpcyBzZWN0aW9uIHRvIGdldCBub2RlIHZlcnNpb24gZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICogQWxzbyBhZGQgdGVzdCBjYXNlcyB0byBjb25maWctc3BlY3MuanMgdG8gY292ZXIgdGhlIGNhc2VzIGFkZGVkXG4gICAqKi9cblxuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93Q29uZmlnICgpIHtcbiAgYXdhaXQgdXBkYXRlQnVpbGRJbmZvKHRydWUpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShnZXRCdWlsZEluZm8oKSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbn1cblxuZnVuY3Rpb24gZ2V0Tm9uRGVmYXVsdEFyZ3MgKHBhcnNlciwgYXJncykge1xuICBsZXQgbm9uRGVmYXVsdHMgPSB7fTtcbiAgZm9yIChsZXQgcmF3QXJnIG9mIHBhcnNlci5yYXdBcmdzKSB7XG4gICAgbGV0IGFyZyA9IHJhd0FyZ1sxXS5kZXN0O1xuICAgIGlmIChhcmdzW2FyZ10gJiYgYXJnc1thcmddICE9PSByYXdBcmdbMV0uZGVmYXVsdFZhbHVlKSB7XG4gICAgICBub25EZWZhdWx0c1thcmddID0gYXJnc1thcmddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9uRGVmYXVsdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsaWRQb3J0IChwb3J0LCBwb3J0TmFtZSkge1xuICBpZiAocG9ydCA+IDAgJiYgcG9ydCA8IDY1NTM2KSByZXR1cm4gdHJ1ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICBsb2dnZXIuZXJyb3IoYFBvcnQgJyR7cG9ydE5hbWV9JyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gNjU1MzYuIEN1cnJlbnRseSAke3BvcnR9YCk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTZXJ2ZXJBcmdzIChwYXJzZXIsIGFyZ3MpIHtcbiAgLy8gYXJndW1lbnRzIHRoYXQgY2Fubm90IGJvdGggYmUgc2V0XG4gIGxldCBleGNsdXNpdmVzID0gW1xuICAgIFsnbm9SZXNldCcsICdmdWxsUmVzZXQnXSxcbiAgICBbJ2lwYScsICdzYWZhcmknXSxcbiAgICBbJ2FwcCcsICdzYWZhcmknXSxcbiAgICBbJ2ZvcmNlSXBob25lJywgJ2ZvcmNlSXBhZCddLFxuICAgIFsnZGV2aWNlTmFtZScsICdkZWZhdWx0RGV2aWNlJ11cbiAgXTtcblxuICBmb3IgKGxldCBleFNldCBvZiBleGNsdXNpdmVzKSB7XG4gICAgbGV0IG51bUZvdW5kSW5BcmdzID0gMDtcbiAgICBmb3IgKGxldCBvcHQgb2YgZXhTZXQpIHtcbiAgICAgIGlmIChfLmhhcyhhcmdzLCBvcHQpICYmIGFyZ3Nbb3B0XSkge1xuICAgICAgICBudW1Gb3VuZEluQXJncysrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVtRm91bmRJbkFyZ3MgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBjYW4ndCBwYXNzIGluIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgZnJvbSB0aGUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYHNldCAke0pTT04uc3RyaW5naWZ5KGV4U2V0KX0sIHNpbmNlIHRoZXkgYXJlIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGBtdXR1YWxseSBleGNsdXNpdmVgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB2YWxpZGF0aW9ucyA9IHtcbiAgICBwb3J0OiBjaGVja1ZhbGlkUG9ydCxcbiAgICBjYWxsYmFja1BvcnQ6IGNoZWNrVmFsaWRQb3J0LFxuICAgIGJvb3RzdHJhcFBvcnQ6IGNoZWNrVmFsaWRQb3J0LFxuICAgIGNocm9tZWRyaXZlclBvcnQ6IGNoZWNrVmFsaWRQb3J0LFxuICAgIHJvYm90UG9ydDogY2hlY2tWYWxpZFBvcnQsXG4gICAgYmFja2VuZFJldHJpZXM6IChyKSA9PiByID49IDBcbiAgfTtcblxuICBjb25zdCBub25EZWZhdWx0QXJncyA9IGdldE5vbkRlZmF1bHRBcmdzKHBhcnNlciwgYXJncyk7XG5cbiAgZm9yIChsZXQgW2FyZywgdmFsaWRhdG9yXSBvZiBfLnRvUGFpcnModmFsaWRhdGlvbnMpKSB7XG4gICAgaWYgKF8uaGFzKG5vbkRlZmF1bHRBcmdzLCBhcmcpKSB7XG4gICAgICBpZiAoIXZhbGlkYXRvcihhcmdzW2FyZ10sIGFyZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50IGZvciBwYXJhbSAke2FyZ306ICR7YXJnc1thcmddfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRtcERpciAodG1wRGlyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgbWtkaXJwKHRtcERpcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBnZXRCdWlsZEluZm8sIHZhbGlkYXRlU2VydmVyQXJncywgY2hlY2tOb2RlT2ssIHNob3dDb25maWcsXG4gIHdhcm5Ob2RlRGVwcmVjYXRpb25zLCB2YWxpZGF0ZVRtcERpciwgZ2V0Tm9uRGVmYXVsdEFyZ3MsXG4gIGdldEdpdFJldiwgY2hlY2tWYWxpZFBvcnQsIEFQUElVTV9WRVIsIHVwZGF0ZUJ1aWxkSW5mbyxcbn07XG4iXSwiZmlsZSI6ImxpYi9jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
278
+ try {
279
+ await support_1.fs.mkdirp(tmpDir);
280
+ }
281
+ catch (e) {
282
+ throw new Error(`We could not ensure that the temp dir you specified ` +
283
+ `(${tmpDir}) exists. Please make sure it's writeable.`);
284
+ }
285
+ }
286
+ exports.validateTmpDir = validateTmpDir;
287
+ const rootDir = support_1.fs.findRoot(__dirname);
288
+ exports.rootDir = rootDir;
289
+ /**
290
+ * @typedef {import('appium/types').ParsedArgs} ParsedArgs
291
+ * @typedef {import('appium/types').Args} Args
292
+ * @typedef {import('./schema/arg-spec').ArgSpec} ArgSpec
293
+ */
294
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,oDAAuB;AACvB,6CAA2C;AAC3C,kDAA0B;AAC1B,+CAAkC;AAClC,oDAA4B;AAC5B,sDAA6B;AAC7B,4CAAqE;AAErE,MAAM,UAAU,GAAG,YAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAErD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;AAoUpC,gCAAU;AAnUZ,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;AAE/C,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,UAAU,GAAG,MAAM,gBAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5D,MAAM,UAAU,GAAG,4CAA4C,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,SAAS,cAAc;IACrB,OAAO,sCAAsC,CAAC,CAAC,gBAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa;IAC1B,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,gBAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,oBAAoB,GAAG,KAAK;IACzD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE;QACR,OAAO;KACR;IACD,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAC5B,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACxE,IAAI,cAAc,EAAE;QAClB,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC;KACnC;AACH,CAAC;AA4RC,0CAAe;AA1RjB;;;;;;GAMG;AACH,KAAK,UAAU,WAAW;IACxB,OAAO,MAAM,IAAA,iBAAM,EAAC,aAAa,EAAE,EAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CAAC,oBAAoB,GAAG,KAAK;IACnD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,OAAO,EAAE;QACX,IAAI;YACF,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;gBAC7D,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAAC,OAAO,GAAG,EAAE,GAAE;KACjB;IAED,IAAI,CAAC,oBAAoB,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,sDAAsD;IACtD,oDAAoD;IACpD,IAAI;QACF,OAAO,CACL,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,UAAU,yBAAyB,UAAU,EAAE,EAAE;YAClE,OAAO,EAAE;gBACP,YAAY,EAAE,UAAU,UAAU,EAAE;aACrC;SACF,CAAC,CACH,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;KACrB;IAAC,OAAO,GAAG,EAAE,GAAE;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AA8OC,8BAAS;AA5OX;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,KAAK;IACpE,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,OAAO,EAAE;QACX,IAAI;YACF,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE;gBACjF,GAAG,EAAE,OAAO;aACb,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;SACtB;QAAC,OAAO,GAAG,EAAE,GAAE;KACjB;IAED,IAAI,CAAC,oBAAoB,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,OAAO,CACL,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,UAAU,aAAa,SAAS,EAAE,EAAE;YACrD,OAAO,EAAE;gBACP,YAAY,EAAE,UAAU,UAAU,EAAE;aACrC;SACF,CAAC,CACH,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;KACtB;IAAC,OAAO,GAAG,EAAE,GAAE;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY;IACnB,OAAO,UAAU,CAAC;AACpB,CAAC;AA6LC,oCAAY;AA3Ld,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,CAAC,gBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE;QAChD,MAAM,IAAI,KAAK,CACb,iCAAiC,gBAAgB,gBAAgB,OAAO,CAAC,OAAO,EAAE,CACnF,CAAC;KACH;AACH,CAAC;AAqLC,kCAAW;AAnLN,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IACzC,IAAI,CAAC,gBAAM,CAAC,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE;QAClD,MAAM,IAAI,KAAK,CACb,gCAAgC,eAAe,gBAAgB,UAAU,wCAAwC,CAClH,CAAC;KACH;AACH,CAAC;AAPD,gCAOC;AAED,SAAS,oBAAoB;IAC3B;;;QAGI;IACJ,oCAAoC;IACpC,2BAA2B;IAC3B,qFAAqF;IACrF,gFAAgF;IAChF,6BAA6B;IAC7B,IAAI;AACN,CAAC;AAiKC,oDAAoB;AA/JtB,KAAK,UAAU,aAAa;IAC1B,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC;AAChF,CAAC;AA2JC,sCAAa;AAzJf;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,UAAU;IACzC;;;;;OAKG;IACH,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,IAAA,uBAAc,GAAE,CAAC;QAClC,MAAM,SAAS,GAAG,gBAAC,CAAC,MAAM,CACxB,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EACtB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACf,IAAI,gBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAC,KAAK,EAAE,gBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAC,CAAC;aACjE;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,+DAA+D,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEjC,wDAAwD;IACxD,MAAM,WAAW,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CACvD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/D,gBAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAE3F,MAAM,YAAY,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,gBAAC,CAAC,EAAE,CAAC,gBAAC,CAAC,IAAI,CAAC,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5D,CAAC,gBAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3C,6EAA6E;IAE7E,MAAM,8BAA8B,GAAG,gBAAC,CAAC,QAAQ,CAAC,CAAC,gBAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9F,MAAM,mCAAmC,GAAG,gBAAC,CAAC,SAAS,CAAC;QACtD,gBAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC7B,YAAY;KACb,CAAC,CAAC;IAEH;;;;;;;;;;;OAWG;IACH,MAAM,YAAY,GAAG,gBAAC,CAAC,SAAS,CAAC;QAC/B,gBAAgB;QAChB,gBAAC,CAAC,QAAQ,CAAC;YACT,WAAW;YACX,gBAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC;YAClE,mCAAmC;SACpC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,IAAA,6BAAoB,EAAC,IAAI,CAAC,CAAC;IAEtD,OAAO,gBAAC,CAAC,MAAM,CACb,gBAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9C,qDAAqD;IACrD,CAAC,GAAG,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAAE,EAAE,CAAC,gBAAC,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IAC1D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CACzB,CAAC;AACJ,CAAC;AAsEC,0DAAuB;AApEzB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,gBAAC,CAAC,OAAO,CAC7B,gBAAC,CAAC,MAAM,EACR,gBAAC,EACD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACb,GAAG,KAAK,YAAY,IAAI,gBAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC1F,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,6BAA6B,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU;IACnF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrC,IAAI,YAAY,CAAC,MAAM,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,CAAC,QAAQ,KAAK,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;KACjD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;KACjD;IACD,MAAM,gCAAgC,GAAG,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACtF,IAAI,gBAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE;QAC/C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;KAC/C;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;KAC/C;IACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACzC,CAAC;AA4BC,gCAAU;AA1BZ;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,MAAM;IAClC,IAAI;QACF,MAAM,YAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzB;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CACb,sDAAsD;YACpD,IAAI,MAAM,4CAA4C,CACzD,CAAC;KACH;AACH,CAAC;AASC,wCAAc;AAPhB,MAAM,OAAO,GAAG,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAarC,0BAAO;AAGT;;;;GAIG"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The name of the extension type for drivers
3
+ */
4
+ export const DRIVER_TYPE: "driver";
5
+ /**
6
+ * The name of the extension type for plugins
7
+ */
8
+ export const PLUGIN_TYPE: "plugin";
9
+ /**
10
+ * The `server` command of the `appium` CLI
11
+ */
12
+ export const SERVER_SUBCOMMAND: "server";
13
+ /**
14
+ * The value of `--use-plugins` if _all_ plugins should be loaded
15
+ */
16
+ export const USE_ALL_PLUGINS: "all";
17
+ export const KNOWN_PLUGINS: Readonly<{
18
+ readonly images: "@appium/images-plugin";
19
+ readonly 'execute-driver': "@appium/execute-driver-plugin";
20
+ readonly 'relaxed-caps': "@appium/relaxed-caps-plugin";
21
+ readonly 'universal-xml': "@appium/universal-xml-plugin";
22
+ }>;
23
+ export const KNOWN_DRIVERS: Readonly<{
24
+ readonly uiautomator2: "appium-uiautomator2-driver";
25
+ readonly xcuitest: "appium-xcuitest-driver";
26
+ readonly mac2: "appium-mac2-driver";
27
+ readonly espresso: "appium-espresso-driver";
28
+ readonly safari: "appium-safari-driver";
29
+ readonly gecko: "appium-geckodriver";
30
+ readonly chromium: "appium-chromium-driver";
31
+ }>;
32
+ /**
33
+ * Relative path to directory containing any Appium internal files
34
+ */
35
+ export const CACHE_DIR_RELATIVE_PATH: string;
36
+ /**
37
+ * Relative path to hashfile (from `APPIUM_HOME`) of consuming project's `package.json` (if it exists)
38
+ */
39
+ export const PKG_HASHFILE_RELATIVE_PATH: string;
40
+ export const EXT_SUBCOMMAND_LIST: "list";
41
+ export const EXT_SUBCOMMAND_INSTALL: "install";
42
+ export const EXT_SUBCOMMAND_UNINSTALL: "uninstall";
43
+ export const EXT_SUBCOMMAND_UPDATE: "update";
44
+ export const EXT_SUBCOMMAND_RUN: "run";
45
+ /**
46
+ * Current revision of the manifest (`extensions.yaml`) schema
47
+ */
48
+ export const CURRENT_SCHEMA_REV: 3;
49
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.js"],"names":[],"mappings":"AAEA;;GAEG;AACH,mCAAoC;AAEpC;;GAEG;AACH,mCAAoC;AAEpC;;GAEG;AACH,yCAA0C;AAE1C;;GAEG;AACH,oCAAqC;AAMrC;;;;;GAOE;AAMF;;;;;;;;GAUE;AAEF;;GAEG;AACH,6CAAqF;AAErF;;GAEG;AACH,gDAA6F;AAE7F,yCAA0C;AAC1C,+CAAgD;AAChD,mDAAoD;AACpD,6CAA8C;AAC9C,uCAAwC;AAExC;;GAEG;AACH,mCAAoC"}