appium 2.0.0-beta.9 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +149 -58
- package/build/lib/appium.d.ts +229 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +677 -449
- package/build/lib/appium.js.map +1 -0
- package/build/lib/cli/args.d.ts +17 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +263 -300
- package/build/lib/cli/args.js.map +1 -0
- package/build/lib/cli/driver-command.d.ts +102 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +131 -81
- package/build/lib/cli/driver-command.js.map +1 -0
- package/build/lib/cli/extension-command.d.ts +402 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +799 -383
- package/build/lib/cli/extension-command.js.map +1 -0
- package/build/lib/cli/extension.d.ts +23 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +70 -68
- package/build/lib/cli/extension.js.map +1 -0
- package/build/lib/cli/parser.d.ts +84 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +252 -148
- package/build/lib/cli/parser.js.map +1 -0
- package/build/lib/cli/plugin-command.d.ts +99 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +125 -81
- package/build/lib/cli/plugin-command.js.map +1 -0
- package/build/lib/cli/utils.d.ts +29 -0
- package/build/lib/cli/utils.d.ts.map +1 -0
- package/build/lib/cli/utils.js +72 -51
- package/build/lib/cli/utils.js.map +1 -0
- package/build/lib/config-file.d.ts +100 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +207 -0
- package/build/lib/config-file.js.map +1 -0
- package/build/lib/config.d.ts +49 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +262 -223
- package/build/lib/config.js.map +1 -0
- package/build/lib/constants.d.ts +56 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +73 -0
- package/build/lib/constants.js.map +1 -0
- package/build/lib/extension/driver-config.d.ts +82 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +210 -0
- package/build/lib/extension/driver-config.js.map +1 -0
- package/build/lib/extension/extension-config.d.ts +270 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +601 -0
- package/build/lib/extension/extension-config.js.map +1 -0
- package/build/lib/extension/index.d.ts +48 -0
- package/build/lib/extension/index.d.ts.map +1 -0
- package/build/lib/extension/index.js +105 -0
- package/build/lib/extension/index.js.map +1 -0
- package/build/lib/extension/manifest-migrations.d.ts +27 -0
- package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
- package/build/lib/extension/manifest-migrations.js +134 -0
- package/build/lib/extension/manifest-migrations.js.map +1 -0
- package/build/lib/extension/manifest.d.ts +145 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +528 -0
- package/build/lib/extension/manifest.js.map +1 -0
- package/build/lib/extension/package-changed.d.ts +11 -0
- package/build/lib/extension/package-changed.d.ts.map +1 -0
- package/build/lib/extension/package-changed.js +62 -0
- package/build/lib/extension/package-changed.js.map +1 -0
- package/build/lib/extension/plugin-config.d.ts +56 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +102 -0
- package/build/lib/extension/plugin-config.js.map +1 -0
- package/build/lib/grid-register.d.ts +10 -0
- package/build/lib/grid-register.d.ts.map +1 -0
- package/build/lib/grid-register.js +122 -144
- package/build/lib/grid-register.js.map +1 -0
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -17
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +189 -184
- package/build/lib/logsink.js.map +1 -0
- package/build/lib/main.d.ts +62 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +406 -234
- package/build/lib/main.js.map +1 -0
- package/build/lib/schema/arg-spec.d.ts +143 -0
- package/build/lib/schema/arg-spec.d.ts.map +1 -0
- package/build/lib/schema/arg-spec.js +164 -0
- package/build/lib/schema/arg-spec.js.map +1 -0
- package/build/lib/schema/cli-args.d.ts +19 -0
- package/build/lib/schema/cli-args.d.ts.map +1 -0
- package/build/lib/schema/cli-args.js +220 -0
- package/build/lib/schema/cli-args.js.map +1 -0
- package/build/lib/schema/cli-transformers.d.ts +5 -0
- package/build/lib/schema/cli-transformers.d.ts.map +1 -0
- package/build/lib/schema/cli-transformers.js +124 -0
- package/build/lib/schema/cli-transformers.js.map +1 -0
- package/build/lib/schema/index.d.ts +3 -0
- package/build/lib/schema/index.d.ts.map +1 -0
- package/build/lib/schema/index.js +19 -0
- package/build/lib/schema/index.js.map +1 -0
- package/build/lib/schema/keywords.d.ts +24 -0
- package/build/lib/schema/keywords.d.ts.map +1 -0
- package/build/lib/schema/keywords.js +128 -0
- package/build/lib/schema/keywords.js.map +1 -0
- package/build/lib/schema/schema.d.ts +260 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +640 -0
- package/build/lib/schema/schema.js.map +1 -0
- package/build/lib/utils.d.ts +276 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +372 -192
- package/build/lib/utils.js.map +1 -0
- package/build/types/cli.d.ts +134 -0
- package/build/types/cli.d.ts.map +1 -0
- package/build/types/cli.js +3 -0
- package/build/types/cli.js.map +1 -0
- package/build/types/index.d.ts +15 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +19 -0
- package/build/types/index.js.map +1 -0
- package/build/types/manifest/base.d.ts +135 -0
- package/build/types/manifest/base.d.ts.map +1 -0
- package/build/types/manifest/base.js +3 -0
- package/build/types/manifest/base.js.map +1 -0
- package/build/types/manifest/index.d.ts +21 -0
- package/build/types/manifest/index.d.ts.map +1 -0
- package/build/types/manifest/index.js +42 -0
- package/build/types/manifest/index.js.map +1 -0
- package/build/types/manifest/v3.d.ts +139 -0
- package/build/types/manifest/v3.d.ts.map +1 -0
- package/build/types/manifest/v3.js +3 -0
- package/build/types/manifest/v3.js.map +1 -0
- package/build/types/manifest/v4.d.ts +139 -0
- package/build/types/manifest/v4.d.ts.map +1 -0
- package/build/types/manifest/v4.js +3 -0
- package/build/types/manifest/v4.js.map +1 -0
- package/driver.d.ts +1 -0
- package/driver.js +14 -0
- package/index.js +11 -0
- package/lib/appium.js +545 -188
- package/lib/cli/args.js +275 -407
- package/lib/cli/driver-command.js +132 -24
- package/lib/cli/extension-command.js +751 -272
- package/lib/cli/extension.js +38 -19
- package/lib/cli/parser.js +267 -95
- package/lib/cli/plugin-command.js +122 -22
- package/lib/cli/utils.js +24 -10
- package/lib/config-file.js +220 -0
- package/lib/config.js +243 -132
- package/lib/constants.js +79 -0
- package/lib/extension/driver-config.js +247 -0
- package/lib/extension/extension-config.js +709 -0
- package/lib/extension/index.js +116 -0
- package/lib/extension/manifest-migrations.js +136 -0
- package/lib/extension/manifest.js +580 -0
- package/lib/extension/package-changed.js +64 -0
- package/lib/extension/plugin-config.js +112 -0
- package/lib/grid-register.js +49 -35
- package/lib/logger.js +1 -2
- package/lib/logsink.js +59 -36
- package/lib/main.js +392 -104
- package/lib/schema/arg-spec.js +229 -0
- package/lib/schema/cli-args.js +241 -0
- package/lib/schema/cli-transformers.js +119 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +136 -0
- package/lib/schema/schema.js +725 -0
- package/lib/utils.js +310 -89
- package/package.json +84 -84
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +243 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/tsconfig.json +25 -0
- package/types/cli.ts +193 -0
- package/types/index.ts +20 -0
- package/types/manifest/README.md +30 -0
- package/types/manifest/base.ts +158 -0
- package/types/manifest/index.ts +28 -0
- package/types/manifest/v3.ts +161 -0
- package/types/manifest/v4.ts +161 -0
- package/CHANGELOG.md +0 -3669
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/argparse-actions.js +0 -104
- package/build/lib/cli/npm.js +0 -207
- package/build/lib/cli/parser-helpers.js +0 -93
- package/build/lib/driver-config.js +0 -77
- package/build/lib/drivers.js +0 -99
- package/build/lib/extension-config.js +0 -253
- package/build/lib/plugin-config.js +0 -59
- package/build/lib/plugins.js +0 -16
- package/build/postinstall.js +0 -90
- package/lib/cli/argparse-actions.js +0 -77
- package/lib/cli/npm.js +0 -183
- package/lib/cli/parser-helpers.js +0 -91
- package/lib/driver-config.js +0 -46
- package/lib/drivers.js +0 -84
- package/lib/extension-config.js +0 -209
- package/lib/plugin-config.js +0 -34
- package/lib/plugins.js +0 -11
- package/postinstall.js +0 -71
package/build/lib/config.js
CHANGED
|
@@ -1,256 +1,295 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
exports.checkValidPort = checkValidPort;
|
|
17
|
-
exports.updateBuildInfo = updateBuildInfo;
|
|
18
|
-
exports.getDeprecatedArgs = getDeprecatedArgs;
|
|
19
|
-
exports.APPIUM_VER = void 0;
|
|
20
|
-
|
|
21
|
-
require("source-map-support/register");
|
|
22
|
-
|
|
23
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
24
|
-
|
|
25
|
-
var _path = _interopRequireDefault(require("path"));
|
|
26
|
-
|
|
27
|
-
var _appiumSupport = require("appium-support");
|
|
28
|
-
|
|
29
|
-
var _axios = _interopRequireDefault(require("axios"));
|
|
30
|
-
|
|
31
|
-
var _teen_process = require("teen_process");
|
|
32
|
-
|
|
33
|
-
var _utils = require("./utils");
|
|
34
|
-
|
|
35
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
36
|
-
|
|
37
|
-
var _semver = _interopRequireDefault(require("semver"));
|
|
38
|
-
|
|
39
|
-
var _argparseActions = require("./cli/argparse-actions");
|
|
40
|
-
|
|
41
|
-
const npmPackage = require(_path.default.resolve(_utils.rootDir, 'package.json'));
|
|
42
|
-
|
|
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);
|
|
43
16
|
const APPIUM_VER = npmPackage.version;
|
|
44
17
|
exports.APPIUM_VER = APPIUM_VER;
|
|
45
|
-
const
|
|
18
|
+
const ENGINES = /** @type {Record<string,string>} */ (npmPackage.engines);
|
|
19
|
+
const MIN_NODE_VERSION = ENGINES.node;
|
|
20
|
+
const MIN_NPM_VERSION = ENGINES.npm;
|
|
46
21
|
const GIT_META_ROOT = '.git';
|
|
47
|
-
const GIT_BINARY = `git${
|
|
22
|
+
const GIT_BINARY = `git${support_1.system.isWindows() ? '.exe' : ''}`;
|
|
48
23
|
const GITHUB_API = 'https://api.github.com/repos/appium/appium';
|
|
24
|
+
/**
|
|
25
|
+
* @type {import('appium/types').BuildInfo}
|
|
26
|
+
*/
|
|
49
27
|
const BUILD_INFO = {
|
|
50
|
-
|
|
28
|
+
version: APPIUM_VER,
|
|
51
29
|
};
|
|
52
|
-
|
|
53
30
|
function getNodeVersion() {
|
|
54
|
-
|
|
31
|
+
return /** @type {import('semver').SemVer} */ (semver_1.default.coerce(process.version));
|
|
55
32
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Returns version of `npm`
|
|
35
|
+
* @returns {Promise<string>}
|
|
36
|
+
*/
|
|
37
|
+
async function getNpmVersion() {
|
|
38
|
+
const { stdout } = await (0, teen_process_1.exec)(support_1.system.isWindows() ? 'npm.cmd' : 'npm', ['--version']);
|
|
39
|
+
return stdout.trim();
|
|
59
40
|
}
|
|
60
|
-
|
|
41
|
+
/**
|
|
42
|
+
* @param {boolean} [useGithubApiFallback]
|
|
43
|
+
*/
|
|
61
44
|
async function updateBuildInfo(useGithubApiFallback = false) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (!_lodash.default.isEmpty(built)) {
|
|
72
|
-
BUILD_INFO.built = built;
|
|
73
|
-
}
|
|
45
|
+
const sha = await getGitRev(useGithubApiFallback);
|
|
46
|
+
if (!sha) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
BUILD_INFO['git-sha'] = sha;
|
|
50
|
+
const buildTimestamp = await getGitTimestamp(sha, useGithubApiFallback);
|
|
51
|
+
if (buildTimestamp) {
|
|
52
|
+
BUILD_INFO.built = buildTimestamp;
|
|
53
|
+
}
|
|
74
54
|
}
|
|
75
|
-
|
|
55
|
+
exports.updateBuildInfo = updateBuildInfo;
|
|
56
|
+
/**
|
|
57
|
+
* Finds the Git metadata dir (see `GIT_META_ROOT`)
|
|
58
|
+
*
|
|
59
|
+
* This is needed because Appium cannot assume `package.json` and `.git` are in the same
|
|
60
|
+
* directory. Monorepos, see?
|
|
61
|
+
* @returns {Promise<string|undefined>} Path to dir or `undefined` if not found
|
|
62
|
+
*/
|
|
63
|
+
async function findGitRoot() {
|
|
64
|
+
return await (0, find_up_1.default)(GIT_META_ROOT, { cwd: rootDir, type: 'directory' });
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @param {boolean} [useGithubApiFallback]
|
|
68
|
+
* @returns {Promise<string?>}
|
|
69
|
+
*/
|
|
76
70
|
async function getGitRev(useGithubApiFallback = false) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return stdout.trim();
|
|
85
|
-
} catch (ign) {}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (!useGithubApiFallback) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
const resBodyObj = (await _axios.default.get(`${GITHUB_API}/tags`, {
|
|
94
|
-
headers: {
|
|
95
|
-
'User-Agent': `Appium ${APPIUM_VER}`
|
|
96
|
-
}
|
|
97
|
-
})).data;
|
|
98
|
-
|
|
99
|
-
if (_lodash.default.isArray(resBodyObj)) {
|
|
100
|
-
for (const {
|
|
101
|
-
name,
|
|
102
|
-
commit
|
|
103
|
-
} of resBodyObj) {
|
|
104
|
-
if (name === `v${APPIUM_VER}` && commit && commit.sha) {
|
|
105
|
-
return commit.sha;
|
|
71
|
+
const gitRoot = await findGitRoot();
|
|
72
|
+
if (gitRoot) {
|
|
73
|
+
try {
|
|
74
|
+
const { stdout } = await (0, teen_process_1.exec)(GIT_BINARY, ['rev-parse', 'HEAD'], {
|
|
75
|
+
cwd: gitRoot,
|
|
76
|
+
});
|
|
77
|
+
return stdout.trim();
|
|
106
78
|
}
|
|
107
|
-
|
|
79
|
+
catch (ign) { }
|
|
80
|
+
}
|
|
81
|
+
if (!useGithubApiFallback) {
|
|
82
|
+
return null;
|
|
108
83
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
84
|
+
// If the package folder is not a valid git repository
|
|
85
|
+
// then fetch the corresponding tag info from GitHub
|
|
86
|
+
try {
|
|
87
|
+
return (await axios_1.default.get(`${GITHUB_API}/git/refs/tags/appium@${APPIUM_VER}`, {
|
|
88
|
+
headers: {
|
|
89
|
+
'User-Agent': `Appium ${APPIUM_VER}`,
|
|
90
|
+
},
|
|
91
|
+
})).data?.object?.sha;
|
|
92
|
+
}
|
|
93
|
+
catch (ign) { }
|
|
94
|
+
return null;
|
|
112
95
|
}
|
|
113
|
-
|
|
96
|
+
exports.getGitRev = getGitRev;
|
|
97
|
+
/**
|
|
98
|
+
* @param {string} commitSha
|
|
99
|
+
* @param {boolean} [useGithubApiFallback]
|
|
100
|
+
* @returns {Promise<string?>}
|
|
101
|
+
*/
|
|
114
102
|
async function getGitTimestamp(commitSha, useGithubApiFallback = false) {
|
|
115
|
-
|
|
103
|
+
const gitRoot = await findGitRoot();
|
|
104
|
+
if (gitRoot) {
|
|
105
|
+
try {
|
|
106
|
+
const { stdout } = await (0, teen_process_1.exec)(GIT_BINARY, ['show', '-s', '--format=%ci', commitSha], {
|
|
107
|
+
cwd: gitRoot,
|
|
108
|
+
});
|
|
109
|
+
return stdout.trim();
|
|
110
|
+
}
|
|
111
|
+
catch (ign) { }
|
|
112
|
+
}
|
|
113
|
+
if (!useGithubApiFallback) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
116
|
try {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return stdout.trim();
|
|
123
|
-
} catch (ign) {}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (!useGithubApiFallback) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
try {
|
|
131
|
-
const resBodyObj = (await _axios.default.get(`${GITHUB_API}/commits/${commitSha}`, {
|
|
132
|
-
headers: {
|
|
133
|
-
'User-Agent': `Appium ${APPIUM_VER}`
|
|
134
|
-
}
|
|
135
|
-
})).data;
|
|
136
|
-
|
|
137
|
-
if (resBodyObj && resBodyObj.commit) {
|
|
138
|
-
if (resBodyObj.commit.committer && resBodyObj.commit.committer.date) {
|
|
139
|
-
return resBodyObj.commit.committer.date;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
if (resBodyObj.commit.author && resBodyObj.commit.author.date) {
|
|
143
|
-
return resBodyObj.commit.author.date;
|
|
144
|
-
}
|
|
117
|
+
return (await axios_1.default.get(`${GITHUB_API}/git/tags/${commitSha}`, {
|
|
118
|
+
headers: {
|
|
119
|
+
'User-Agent': `Appium ${APPIUM_VER}`,
|
|
120
|
+
},
|
|
121
|
+
})).data?.tagger?.date;
|
|
145
122
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return null;
|
|
123
|
+
catch (ign) { }
|
|
124
|
+
return null;
|
|
149
125
|
}
|
|
150
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Mutable object containing Appium build information. By default it
|
|
128
|
+
* only contains the Appium version, but is updated with the build timestamp
|
|
129
|
+
* and git commit hash asynchronously as soon as `updateBuildInfo` is called
|
|
130
|
+
* and succeeds.
|
|
131
|
+
* @returns {import('appium/types').BuildInfo}
|
|
132
|
+
*/
|
|
151
133
|
function getBuildInfo() {
|
|
152
|
-
|
|
134
|
+
return BUILD_INFO;
|
|
153
135
|
}
|
|
154
|
-
|
|
136
|
+
exports.getBuildInfo = getBuildInfo;
|
|
155
137
|
function checkNodeOk() {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
_logger.default.errorAndThrow(`Node version must be ${MIN_NODE_VERSION}. Currently ${version.version}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
function warnNodeDeprecations() {}
|
|
164
|
-
|
|
165
|
-
async function showConfig() {
|
|
166
|
-
await updateBuildInfo(true);
|
|
167
|
-
console.log(JSON.stringify(getBuildInfo()));
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
function getNonDefaultArgs(parser, args) {
|
|
171
|
-
return parser.rawArgs.reduce((acc, [, {
|
|
172
|
-
dest,
|
|
173
|
-
default: defaultValue
|
|
174
|
-
}]) => {
|
|
175
|
-
if (args[dest] && args[dest] !== defaultValue) {
|
|
176
|
-
acc[dest] = args[dest];
|
|
138
|
+
const version = getNodeVersion();
|
|
139
|
+
if (!semver_1.default.satisfies(version, MIN_NODE_VERSION)) {
|
|
140
|
+
throw new Error(`Node version must be at least ${MIN_NODE_VERSION}; current is ${version.version}`);
|
|
177
141
|
}
|
|
178
|
-
|
|
179
|
-
return acc;
|
|
180
|
-
}, {});
|
|
181
142
|
}
|
|
182
|
-
|
|
183
|
-
function
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
action
|
|
188
|
-
}]) => {
|
|
189
|
-
if (!args[dest] || args[dest] === defaultValue) {
|
|
190
|
-
return acc;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (action !== null && action !== void 0 && action.deprecated_for) {
|
|
194
|
-
acc[name] = action.deprecated_for;
|
|
195
|
-
} else if (isSubClass(action, _argparseActions.StoreDeprecatedDefaultCapabilityAction)) {
|
|
196
|
-
acc[name] = _argparseActions.DEFAULT_CAPS_ARG;
|
|
143
|
+
exports.checkNodeOk = checkNodeOk;
|
|
144
|
+
async function checkNpmOk() {
|
|
145
|
+
const npmVersion = await getNpmVersion();
|
|
146
|
+
if (!semver_1.default.satisfies(npmVersion, MIN_NPM_VERSION)) {
|
|
147
|
+
throw new Error(`npm version must be at least ${MIN_NPM_VERSION}; current is ${npmVersion}. Run "npm install -g npm" to upgrade.`);
|
|
197
148
|
}
|
|
198
|
-
|
|
199
|
-
return acc;
|
|
200
|
-
}, {});
|
|
201
149
|
}
|
|
202
|
-
|
|
203
|
-
function
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
150
|
+
exports.checkNpmOk = checkNpmOk;
|
|
151
|
+
function warnNodeDeprecations() {
|
|
152
|
+
/**
|
|
153
|
+
* Uncomment this section to get node version deprecation warnings
|
|
154
|
+
* Also add test cases to config-specs.js to cover the cases added
|
|
155
|
+
**/
|
|
156
|
+
// const version = getNodeVersion();
|
|
157
|
+
// if (version.major < 8) {
|
|
158
|
+
// logger.warn(`Appium support for versions of node < ${version.major} has been ` +
|
|
159
|
+
// 'deprecated and will be removed in a future version. Please ' +
|
|
160
|
+
// 'upgrade!');
|
|
161
|
+
// }
|
|
209
162
|
}
|
|
210
|
-
|
|
211
|
-
function
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
163
|
+
exports.warnNodeDeprecations = warnNodeDeprecations;
|
|
164
|
+
async function showBuildInfo() {
|
|
165
|
+
await updateBuildInfo(true);
|
|
166
|
+
console.log(JSON.stringify(getBuildInfo())); // eslint-disable-line no-console
|
|
167
|
+
}
|
|
168
|
+
exports.showBuildInfo = showBuildInfo;
|
|
169
|
+
/**
|
|
170
|
+
* Returns k/v pairs of server arguments which are _not_ the defaults.
|
|
171
|
+
* @param {Args} parsedArgs
|
|
172
|
+
* @returns {Args}
|
|
173
|
+
*/
|
|
174
|
+
function getNonDefaultServerArgs(parsedArgs) {
|
|
175
|
+
/**
|
|
176
|
+
* Flattens parsed args into a single level object for comparison with
|
|
177
|
+
* flattened defaults across server args and extension args.
|
|
178
|
+
* @param {Args} args
|
|
179
|
+
* @returns {Record<string, { value: any, argSpec: ArgSpec }>}
|
|
180
|
+
*/
|
|
181
|
+
const flatten = (args) => {
|
|
182
|
+
const argSpecs = (0, schema_1.getAllArgSpecs)();
|
|
183
|
+
const flattened = lodash_1.default.reduce([...argSpecs.values()], (acc, argSpec) => {
|
|
184
|
+
if (lodash_1.default.has(args, argSpec.dest)) {
|
|
185
|
+
acc[argSpec.dest] = { value: lodash_1.default.get(args, argSpec.dest), argSpec };
|
|
186
|
+
}
|
|
187
|
+
return acc;
|
|
188
|
+
},
|
|
189
|
+
/** @type {Record<string, { value: any, argSpec: ArgSpec }>} */ ({}));
|
|
190
|
+
return flattened;
|
|
191
|
+
};
|
|
192
|
+
const args = flatten(parsedArgs);
|
|
193
|
+
// hopefully these function names are descriptive enough
|
|
194
|
+
const typesDiffer = /** @param {string} dest */ (dest) => typeof args[dest].value !== typeof defaultsFromSchema[dest];
|
|
195
|
+
const defaultValueIsArray = /** @param {string} dest */ (dest) => lodash_1.default.isArray(defaultsFromSchema[dest]);
|
|
196
|
+
const argsValueIsArray = /** @param {string} dest */ (dest) => lodash_1.default.isArray(args[dest].value);
|
|
197
|
+
const arraysDiffer = /** @param {string} dest */ (dest) => lodash_1.default.gt(lodash_1.default.size(lodash_1.default.difference(args[dest].value, defaultsFromSchema[dest])), 0);
|
|
198
|
+
const valuesDiffer = /** @param {string} dest */ (dest) => args[dest].value !== defaultsFromSchema[dest];
|
|
199
|
+
const defaultIsDefined = /** @param {string} dest */ (dest) => !lodash_1.default.isUndefined(defaultsFromSchema[dest]);
|
|
200
|
+
// note that `_.overEvery` is like an "AND", and `_.overSome` is like an "OR"
|
|
201
|
+
const argValueNotArrayOrArraysDiffer = lodash_1.default.overSome([lodash_1.default.negate(argsValueIsArray), arraysDiffer]);
|
|
202
|
+
const defaultValueNotArrayAndValuesDiffer = lodash_1.default.overEvery([
|
|
203
|
+
lodash_1.default.negate(defaultValueIsArray),
|
|
204
|
+
valuesDiffer,
|
|
205
|
+
]);
|
|
206
|
+
/**
|
|
207
|
+
* This used to be a hideous conditional, but it's broken up into a hideous function instead.
|
|
208
|
+
* hopefully this makes things a little more understandable.
|
|
209
|
+
* - checks if the default value is defined
|
|
210
|
+
* - if so, and the default is not an array:
|
|
211
|
+
* - ensures the types are the same
|
|
212
|
+
* - ensures the values are equal
|
|
213
|
+
* - if so, and the default is an array:
|
|
214
|
+
* - ensures the args value is an array
|
|
215
|
+
* - ensures the args values do not differ from the default values
|
|
216
|
+
* @type {(dest: string) => boolean}
|
|
217
|
+
*/
|
|
218
|
+
const isNotDefault = lodash_1.default.overEvery([
|
|
219
|
+
defaultIsDefined,
|
|
220
|
+
lodash_1.default.overSome([
|
|
221
|
+
typesDiffer,
|
|
222
|
+
lodash_1.default.overEvery([defaultValueIsArray, argValueNotArrayOrArraysDiffer]),
|
|
223
|
+
defaultValueNotArrayAndValuesDiffer,
|
|
224
|
+
]),
|
|
225
|
+
]);
|
|
226
|
+
const defaultsFromSchema = (0, schema_1.getDefaultsForSchema)(true);
|
|
227
|
+
return lodash_1.default.reduce(lodash_1.default.pickBy(args, (__, key) => isNotDefault(key)),
|
|
228
|
+
// explodes the flattened object back into nested one
|
|
229
|
+
(acc, { value, argSpec }) => lodash_1.default.set(acc, argSpec.dest, value),
|
|
230
|
+
/** @type {Args} */ ({}));
|
|
231
|
+
}
|
|
232
|
+
exports.getNonDefaultServerArgs = getNonDefaultServerArgs;
|
|
233
|
+
/**
|
|
234
|
+
* Compacts an object for {@link showConfig}:
|
|
235
|
+
* 1. Removes `subcommand` key/value
|
|
236
|
+
* 2. Removes `undefined` values
|
|
237
|
+
* 3. Removes empty objects (but not `false` values)
|
|
238
|
+
* Does not operate recursively.
|
|
239
|
+
*/
|
|
240
|
+
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)));
|
|
241
|
+
/**
|
|
242
|
+
* Shows a breakdown of the current config after CLI params, config file loaded & defaults applied.
|
|
243
|
+
*
|
|
244
|
+
* The actual shape of `preConfigParsedArgs` and `defaults` does not matter for the purposes of this function,
|
|
245
|
+
* but it's intended to be called with values of type {@link ParsedArgs} and `DefaultValues<true>`, respectively.
|
|
246
|
+
*
|
|
247
|
+
* @param {Partial<ParsedArgs>} nonDefaultPreConfigParsedArgs - Parsed CLI args (or param to `init()`) before config & defaults applied
|
|
248
|
+
* @param {import('./config-file').ReadConfigFileResult} configResult - Result of attempting to load a config file. _Must_ be normalized
|
|
249
|
+
* @param {Partial<ParsedArgs>} defaults - Configuration defaults from schemas
|
|
250
|
+
* @param {ParsedArgs} parsedArgs - Entire parsed args object
|
|
251
|
+
*/
|
|
252
|
+
function showConfig(nonDefaultPreConfigParsedArgs, configResult, defaults, parsedArgs) {
|
|
253
|
+
console.log('Appium Configuration\n');
|
|
254
|
+
console.log('from defaults:\n');
|
|
255
|
+
console.dir(compactConfig(defaults));
|
|
256
|
+
if (configResult.config) {
|
|
257
|
+
console.log(`\nfrom config file at ${configResult.filepath}:\n`);
|
|
258
|
+
console.dir(compactConfig(configResult.config));
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
console.log(`\n(no configuration file loaded)`);
|
|
221
262
|
}
|
|
222
|
-
|
|
223
|
-
if (
|
|
224
|
-
|
|
263
|
+
const compactedNonDefaultPreConfigArgs = compactConfig(nonDefaultPreConfigParsedArgs);
|
|
264
|
+
if (lodash_1.default.isEmpty(compactedNonDefaultPreConfigArgs)) {
|
|
265
|
+
console.log(`\n(no CLI parameters provided)`);
|
|
225
266
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
port: checkValidPort,
|
|
230
|
-
callbackPort: checkValidPort,
|
|
231
|
-
bootstrapPort: checkValidPort,
|
|
232
|
-
chromedriverPort: checkValidPort,
|
|
233
|
-
robotPort: checkValidPort,
|
|
234
|
-
backendRetries: r => r >= 0
|
|
235
|
-
};
|
|
236
|
-
const nonDefaultArgs = getNonDefaultArgs(parser, args);
|
|
237
|
-
|
|
238
|
-
for (let [arg, validator] of _lodash.default.toPairs(validations)) {
|
|
239
|
-
if (_lodash.default.has(nonDefaultArgs, arg)) {
|
|
240
|
-
if (!validator(args[arg], arg)) {
|
|
241
|
-
throw new Error(`Invalid argument for param ${arg}: ${args[arg]}`);
|
|
242
|
-
}
|
|
267
|
+
else {
|
|
268
|
+
console.log('\nvia CLI or function call:\n');
|
|
269
|
+
console.dir(compactedNonDefaultPreConfigArgs);
|
|
243
270
|
}
|
|
244
|
-
|
|
271
|
+
console.log('\nfinal configuration:\n');
|
|
272
|
+
console.dir(compactConfig(parsedArgs));
|
|
245
273
|
}
|
|
246
|
-
|
|
274
|
+
exports.showConfig = showConfig;
|
|
275
|
+
/**
|
|
276
|
+
* @param {string} tmpDir
|
|
277
|
+
*/
|
|
247
278
|
async function validateTmpDir(tmpDir) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsInJlcXVpcmUiLCJwYXRoIiwicmVzb2x2ZSIsInJvb3REaXIiLCJBUFBJVU1fVkVSIiwidmVyc2lvbiIsIk1JTl9OT0RFX1ZFUlNJT04iLCJlbmdpbmVzIiwibm9kZSIsIkdJVF9NRVRBX1JPT1QiLCJHSVRfQklOQVJZIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiR0lUSFVCX0FQSSIsIkJVSUxEX0lORk8iLCJnZXROb2RlVmVyc2lvbiIsInNlbXZlciIsImNvZXJjZSIsInByb2Nlc3MiLCJpc1N1YkNsYXNzIiwiY2FuZGlkYXRlQ2xhc3MiLCJzdXBlckNsYXNzIiwiXyIsImlzRnVuY3Rpb24iLCJwcm90b3R5cGUiLCJ1cGRhdGVCdWlsZEluZm8iLCJ1c2VHaXRodWJBcGlGYWxsYmFjayIsInNoYSIsImdldEdpdFJldiIsImJ1aWx0IiwiZ2V0R2l0VGltZXN0YW1wIiwiaXNFbXB0eSIsImZzIiwiZXhpc3RzIiwic3Rkb3V0IiwiY3dkIiwidHJpbSIsImlnbiIsInJlc0JvZHlPYmoiLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwiaXNBcnJheSIsIm5hbWUiLCJjb21taXQiLCJjb21taXRTaGEiLCJjb21taXR0ZXIiLCJkYXRlIiwiYXV0aG9yIiwiZ2V0QnVpbGRJbmZvIiwiY2hlY2tOb2RlT2siLCJzYXRpc2ZpZXMiLCJsb2dnZXIiLCJlcnJvckFuZFRocm93Iiwid2Fybk5vZGVEZXByZWNhdGlvbnMiLCJzaG93Q29uZmlnIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXROb25EZWZhdWx0QXJncyIsInBhcnNlciIsImFyZ3MiLCJyYXdBcmdzIiwicmVkdWNlIiwiYWNjIiwiZGVzdCIsImRlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJnZXREZXByZWNhdGVkQXJncyIsImFjdGlvbiIsImRlcHJlY2F0ZWRfZm9yIiwiU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24iLCJERUZBVUxUX0NBUFNfQVJHIiwiY2hlY2tWYWxpZFBvcnQiLCJwb3J0IiwicG9ydE5hbWUiLCJlcnJvciIsInZhbGlkYXRlU2VydmVyQXJncyIsImV4Y2x1c2l2ZXMiLCJleFNldCIsIm51bUZvdW5kSW5BcmdzIiwib3B0IiwiaGFzIiwiRXJyb3IiLCJ2YWxpZGF0aW9ucyIsImNhbGxiYWNrUG9ydCIsImJvb3RzdHJhcFBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0Iiwicm9ib3RQb3J0IiwiYmFja2VuZFJldHJpZXMiLCJyIiwibm9uRGVmYXVsdEFyZ3MiLCJhcmciLCJ2YWxpZGF0b3IiLCJ0b1BhaXJzIiwidmFsaWRhdGVUbXBEaXIiLCJ0bXBEaXIiLCJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUNDLGNBQUtDLE9BQUwsQ0FBYUMsY0FBYixFQUFzQixjQUF0QixDQUFELENBQTFCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0wsVUFBVSxDQUFDTSxPQUE5Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR1AsVUFBVSxDQUFDUSxPQUFYLENBQW1CQyxJQUE1QztBQUVBLE1BQU1DLGFBQWEsR0FBRyxNQUF0QjtBQUNBLE1BQU1DLFVBQVUsR0FBSSxNQUFLQyxzQkFBT0MsU0FBUCxLQUFxQixNQUFyQixHQUE4QixFQUFHLEVBQTFEO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLDRDQUFuQjtBQUVBLE1BQU1DLFVBQVUsR0FBRztBQUNqQlQsRUFBQUEsT0FBTyxFQUFFRDtBQURRLENBQW5COztBQUlBLFNBQVNXLGNBQVQsR0FBMkI7QUFDekIsU0FBT0MsZ0JBQU9DLE1BQVAsQ0FBY0MsT0FBTyxDQUFDYixPQUF0QixDQUFQO0FBQ0Q7O0FBRUQsU0FBU2MsVUFBVCxDQUFxQkMsY0FBckIsRUFBcUNDLFVBQXJDLEVBQWlEO0FB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b20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IG1rZGlycCwgZnMsIHN5c3RlbSB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHJvb3REaXIgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHtcbiAgU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sIERFRkFVTFRfQ0FQU19BUkcsXG59IGZyb20gJy4vY2xpL2FyZ3BhcnNlLWFjdGlvbnMnO1xuXG5cbmNvbnN0IG5wbVBhY2thZ2UgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShyb290RGlyLCAncGFja2FnZS5qc29uJykpO1xuY29uc3QgQVBQSVVNX1ZFUiA9IG5wbVBhY2thZ2UudmVyc2lvbjtcbmNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSBucG1QYWNrYWdlLmVuZ2luZXMubm9kZTtcblxuY29uc3QgR0lUX01FVEFfUk9PVCA9ICcuZ2l0JztcbmNvbnN0IEdJVF9CSU5BUlkgPSBgZ2l0JHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgR0lUSFVCX0FQSSA9ICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FwcGl1bS9hcHBpdW0nO1xuXG5jb25zdCBCVUlMRF9JTkZPID0ge1xuICB2ZXJzaW9uOiBBUFBJVU1fVkVSLFxufTtcblxuZnVuY3Rpb24gZ2V0Tm9kZVZlcnNpb24gKCkge1xuICByZXR1cm4gc2VtdmVyLmNvZXJjZShwcm9jZXNzLnZlcnNpb24pO1xufVxuXG5mdW5jdGlvbiBpc1N1YkNsYXNzIChjYW5kaWRhdGVDbGFzcywgc3VwZXJDbGFzcykge1xuICByZXR1cm4gXy5pc0Z1bmN0aW9uKHN1cGVyQ2xhc3MpICYmIF8uaXNGdW5jdGlvbihjYW5kaWRhdGVDbGFzcylcbiAgICAmJiAoY2FuZGlkYXRlQ2xhc3MucHJvdG90eXBlIGluc3RhbmNlb2Ygc3VwZXJDbGFzcyB8fCBjYW5kaWRhdGVDbGFzcyA9PT0gc3VwZXJDbGFzcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyAodXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBzaGEgPSBhd2FpdCBnZXRHaXRSZXYodXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIXNoYSkge1xuICAgIHJldHVybjtcbiAgfVxuICBCVUlMRF9JTkZPWydnaXQtc2hhJ10gPSBzaGE7XG4gIGNvbnN0IGJ1aWx0ID0gYXdhaXQgZ2V0R2l0VGltZXN0YW1wKHNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIV8uaXNFbXB0eShidWlsdCkpIHtcbiAgICBCVUlMRF9JTkZPLmJ1aWx0ID0gYnVpbHQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0UmV2ICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMocGF0aC5yZXNvbHZlKHJvb3REaXIsIEdJVF9NRVRBX1JPT1QpKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogcm9vdERpclxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L3RhZ3NgLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChfLmlzQXJyYXkocmVzQm9keU9iaikpIHtcbiAgICAgIGZvciAoY29uc3Qge25hbWUsIGNvbW1pdH0gb2YgcmVzQm9keU9iaikge1xuICAgICAgICBpZiAobmFtZSA9PT0gYHYke0FQUElVTV9WRVJ9YCAmJiBjb21taXQgJiYgY29tbWl0LnNoYSkge1xuICAgICAgICAgIHJldHVybiBjb21taXQuc2hhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRUaW1lc3RhbXAgKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKHBhdGgucmVzb2x2ZShyb290RGlyLCBHSVRfTUVUQV9ST09UKSkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogcm9vdERpclxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2NvbW1pdHMvJHtjb21taXRTaGF9YCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWBcbiAgICAgIH1cbiAgICB9KSkuZGF0YTtcbiAgICBpZiAocmVzQm9keU9iaiAmJiByZXNCb2R5T2JqLmNvbW1pdCkge1xuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlciAmJiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGU7XG4gICAgICB9XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuYXV0aG9yICYmIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybiBNdXRhYmxlIG9iamVjdCBjb250YWluaW5nIEFwcGl1bSBidWlsZCBpbmZvcm1hdGlvbi4gQnkgZGVmYXVsdCBpdFxuICogb25seSBjb250YWlucyB0aGUgQXBwaXVtIHZlcnNpb24sIGJ1dCBpcyB1cGRhdGVkIHdpdGggdGhlIGJ1aWxkIHRpbWVzdGFtcFxuICogYW5kIGdpdCBjb21taXQgaGFzaCBhc3luY2hyb25vdXNseSBhcyBzb29uIGFzIGB1cGRhdGVCdWlsZEluZm9gIGlzIGNhbGxlZFxuICogYW5kIHN1Y2NlZWRzLlxuICovXG5mdW5jdGlvbiBnZXRCdWlsZEluZm8gKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2sgKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucyAoKSB7XG4gIC8qKlxuICAgKiBVbmNvbW1lbnQgdGhpcyBzZWN0aW9uIHRvIGdldCBub2RlIHZlcnNpb24gZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICogQWxzbyBhZGQgdGVzdCBjYXNlcyB0byBjb25maWctc3BlY3MuanMgdG8gY292ZXIgdGhlIGNhc2VzIGFkZGVkXG4gICAqKi9cblxuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93Q29uZmlnICgpIHtcbiAgYXdhaXQgdXBkYXRlQnVpbGRJbmZvKHRydWUpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShnZXRCdWlsZEluZm8oKSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbn1cblxuZnVuY3Rpb24gZ2V0Tm9uRGVmYXVsdEFyZ3MgKHBhcnNlciwgYXJncykge1xuICByZXR1cm4gcGFyc2VyLnJhd0FyZ3MucmVkdWNlKChhY2MsIFssIHtkZXN0LCBkZWZhdWx0OiBkZWZhdWx0VmFsdWV9XSkgPT4ge1xuICAgIGlmIChhcmdzW2Rlc3RdICYmIGFyZ3NbZGVzdF0gIT09IGRlZmF1bHRWYWx1ZSkge1xuICAgICAgYWNjW2Rlc3RdID0gYXJnc1tkZXN0XTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXREZXByZWNhdGVkQXJncyAocGFyc2VyLCBhcmdzKSB7XG4gIC8vIGdvIHRocm91Z2ggdGhlIHNlcnZlciBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBmaWd1cmVcbiAgLy8gb3V0IHdoaWNoIG9mIHRoZSBvbmVzIHVzZWQgYXJlIGRlcHJlY2F0ZWRcbiAgcmV0dXJuIHBhcnNlci5yYXdBcmdzLnJlZHVjZSgoYWNjLCBbW25hbWVdLCB7ZGVzdCwgZGVmYXVsdDogZGVmYXVsdFZhbHVlLCBhY3Rpb259XSkgPT4ge1xuICAgIGlmICghYXJnc1tkZXN0XSB8fCBhcmdzW2Rlc3RdID09PSBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbj8uZGVwcmVjYXRlZF9mb3IpIHtcbiAgICAgIGFjY1tuYW1lXSA9IGFjdGlvbi5kZXByZWNhdGVkX2ZvcjtcbiAgICB9IGVsc2UgaWYgKGlzU3ViQ2xhc3MoYWN0aW9uLCBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbikpIHtcbiAgICAgIGFjY1tuYW1lXSA9IERFRkFVTFRfQ0FQU19BUkc7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuZnVuY3Rpb24gY2hlY2tWYWxpZFBvcnQgKHBvcnQsIHBvcnROYW1lKSB7XG4gIGlmIChwb3J0ID4gMCAmJiBwb3J0IDwgNjU1MzYpIHJldHVybiB0cnVlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG4gIGxvZ2dlci5lcnJvcihgUG9ydCAnJHtwb3J0TmFtZX0nIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIGxlc3MgdGhhbiA2NTUzNi4gQ3VycmVudGx5ICR7cG9ydH1gKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVNlcnZlckFyZ3MgKHBhcnNlciwgYXJncykge1xuICAvLyBhcmd1bWVudHMgdGhhdCBjYW5ub3QgYm90aCBiZSBzZXRcbiAgbGV0IGV4Y2x1c2l2ZXMgPSBbXG4gICAgWydub1Jlc2V0JywgJ2Z1bGxSZXNldCddLFxuICAgIFsnaXBhJywgJ3NhZmFyaSddLFxuICAgIFsnYXBwJywgJ3NhZmFyaSddLFxuICAgIFsnZm9yY2VJcGhvbmUnLCAnZm9yY2VJcGFkJ10sXG4gICAgWydkZXZpY2VOYW1lJywgJ2RlZmF1bHREZXZpY2UnXVxuICBdO1xuXG4gIGZvciAobGV0IGV4U2V0IG9mIGV4Y2x1c2l2ZXMpIHtcbiAgICBsZXQgbnVtRm91bmRJbkFyZ3MgPSAwO1xuICAgIGZvciAobGV0IG9wdCBvZiBleFNldCkge1xuICAgICAgaWYgKF8uaGFzKGFyZ3MsIG9wdCkgJiYgYXJnc1tvcHRdKSB7XG4gICAgICAgIG51bUZvdW5kSW5BcmdzKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudW1Gb3VuZEluQXJncyA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IGNhbid0IHBhc3MgaW4gbW9yZSB0aGFuIG9uZSBhcmd1bWVudCBmcm9tIHRoZSBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgc2V0ICR7SlNPTi5zdHJpbmdpZnkoZXhTZXQpfSwgc2luY2UgdGhleSBhcmUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYG11dHVhbGx5IGV4Y2x1c2l2ZWApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRpb25zID0ge1xuICAgIHBvcnQ6IGNoZWNrVmFsaWRQb3J0LFxuICAgIGNhbGxiYWNrUG9ydDogY2hlY2tWYWxpZFBvcnQsXG4gICAgYm9vdHN0cmFwUG9ydDogY2hlY2tWYWxpZFBvcnQsXG4gICAgY2hyb21lZHJpdmVyUG9ydDogY2hlY2tWYWxpZFBvcnQsXG4gICAgcm9ib3RQb3J0OiBjaGVja1ZhbGlkUG9ydCxcbiAgICBiYWNrZW5kUmV0cmllczogKHIpID0+IHIgPj0gMCxcbiAgfTtcblxuICBjb25zdCBub25EZWZhdWx0QXJncyA9IGdldE5vbkRlZmF1bHRBcmdzKHBhcnNlciwgYXJncyk7XG5cbiAgZm9yIChsZXQgW2FyZywgdmFsaWRhdG9yXSBvZiBfLnRvUGFpcnModmFsaWRhdGlvbnMpKSB7XG4gICAgaWYgKF8uaGFzKG5vbkRlZmF1bHRBcmdzLCBhcmcpKSB7XG4gICAgICBpZiAoIXZhbGlkYXRvcihhcmdzW2FyZ10sIGFyZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFyZ3VtZW50IGZvciBwYXJhbSAke2FyZ306ICR7YXJnc1thcmddfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRtcERpciAodG1wRGlyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgbWtkaXJwKHRtcERpcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBnZXRCdWlsZEluZm8sIHZhbGlkYXRlU2VydmVyQXJncywgY2hlY2tOb2RlT2ssIHNob3dDb25maWcsXG4gIHdhcm5Ob2RlRGVwcmVjYXRpb25zLCB2YWxpZGF0ZVRtcERpciwgZ2V0Tm9uRGVmYXVsdEFyZ3MsXG4gIGdldEdpdFJldiwgY2hlY2tWYWxpZFBvcnQsIEFQUElVTV9WRVIsIHVwZGF0ZUJ1aWxkSW5mbyxcbiAgZ2V0RGVwcmVjYXRlZEFyZ3MsXG59O1xuIl0sImZpbGUiOiJsaWIvY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
279
|
+
try {
|
|
280
|
+
await support_1.fs.mkdirp(tmpDir);
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
throw new Error(`We could not ensure that the temp dir you specified ` +
|
|
284
|
+
`(${tmpDir}) exists. Please make sure it's writeable.`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.validateTmpDir = validateTmpDir;
|
|
288
|
+
const rootDir = support_1.fs.findRoot(__dirname);
|
|
289
|
+
exports.rootDir = rootDir;
|
|
290
|
+
/**
|
|
291
|
+
* @typedef {import('appium/types').ParsedArgs} ParsedArgs
|
|
292
|
+
* @typedef {import('appium/types').Args} Args
|
|
293
|
+
* @typedef {import('./schema/arg-spec').ArgSpec} ArgSpec
|
|
294
|
+
*/
|
|
295
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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: 4;
|
|
49
|
+
/**
|
|
50
|
+
* The default number of stack frames to show in a "long" stack trace, when enabled via `--long-stacktrace`
|
|
51
|
+
* @remarks This value may be increased in the future.
|
|
52
|
+
* @privateRemarks A value like `Infinity` may provide to have deleterious effects on
|
|
53
|
+
* memory usage, perf, and/or log output, and higher limits may be difficult to scan.
|
|
54
|
+
*/
|
|
55
|
+
export const LONG_STACKTRACE_LIMIT: 100;
|
|
56
|
+
//# 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;AAEpC;;;;;GAKG;AACH,wCAAyC"}
|