appium 3.2.2 → 3.3.1
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/build/lib/appium.d.ts +147 -205
- package/build/lib/appium.d.ts.map +1 -1
- package/build/lib/appium.js +169 -282
- package/build/lib/appium.js.map +1 -1
- package/build/lib/bidi-commands.d.ts.map +1 -1
- package/build/lib/bidi-commands.js +11 -11
- package/build/lib/bidi-commands.js.map +1 -1
- package/build/lib/bootstrap/appium-initializer.d.ts +21 -0
- package/build/lib/bootstrap/appium-initializer.d.ts.map +1 -0
- package/build/lib/bootstrap/appium-initializer.js +146 -0
- package/build/lib/bootstrap/appium-initializer.js.map +1 -0
- package/build/lib/bootstrap/appium-main-runner.d.ts +22 -0
- package/build/lib/bootstrap/appium-main-runner.d.ts.map +1 -0
- package/build/lib/bootstrap/appium-main-runner.js +109 -0
- package/build/lib/bootstrap/appium-main-runner.js.map +1 -0
- package/build/lib/bootstrap/config-file.d.ts +37 -0
- package/build/lib/bootstrap/config-file.d.ts.map +1 -0
- package/build/lib/{config-file.js → bootstrap/config-file.js} +62 -138
- package/build/lib/bootstrap/config-file.js.map +1 -0
- package/build/lib/bootstrap/grid-v3-register.d.ts +20 -0
- package/build/lib/bootstrap/grid-v3-register.d.ts.map +1 -0
- package/build/lib/bootstrap/grid-v3-register.js +185 -0
- package/build/lib/bootstrap/grid-v3-register.js.map +1 -0
- package/build/lib/bootstrap/init-types.d.ts +16 -0
- package/build/lib/bootstrap/init-types.d.ts.map +1 -0
- package/build/lib/bootstrap/init-types.js +3 -0
- package/build/lib/bootstrap/init-types.js.map +1 -0
- package/build/lib/bootstrap/main-helpers.d.ts +55 -0
- package/build/lib/bootstrap/main-helpers.d.ts.map +1 -0
- package/build/lib/bootstrap/main-helpers.js +187 -0
- package/build/lib/bootstrap/main-helpers.js.map +1 -0
- package/build/lib/bootstrap/node-helpers.d.ts +32 -0
- package/build/lib/bootstrap/node-helpers.d.ts.map +1 -0
- package/build/lib/bootstrap/node-helpers.js +201 -0
- package/build/lib/bootstrap/node-helpers.js.map +1 -0
- package/build/lib/bootstrap/startup-config.d.ts +22 -0
- package/build/lib/bootstrap/startup-config.d.ts.map +1 -0
- package/build/lib/bootstrap/startup-config.js +111 -0
- package/build/lib/bootstrap/startup-config.js.map +1 -0
- package/build/lib/cli/args.d.ts +16 -12
- package/build/lib/cli/args.d.ts.map +1 -1
- package/build/lib/cli/args.js +20 -40
- package/build/lib/cli/args.js.map +1 -1
- package/build/lib/cli/driver-command.d.ts +51 -93
- package/build/lib/cli/driver-command.d.ts.map +1 -1
- package/build/lib/cli/driver-command.js +11 -66
- package/build/lib/cli/driver-command.js.map +1 -1
- package/build/lib/cli/extension-command.d.ts +173 -377
- package/build/lib/cli/extension-command.d.ts.map +1 -1
- package/build/lib/cli/extension-command.js +387 -656
- package/build/lib/cli/extension-command.js.map +1 -1
- package/build/lib/cli/extension.d.ts +10 -15
- package/build/lib/cli/extension.d.ts.map +1 -1
- package/build/lib/cli/extension.js +15 -33
- package/build/lib/cli/extension.js.map +1 -1
- package/build/lib/cli/parser.d.ts +37 -66
- package/build/lib/cli/parser.d.ts.map +1 -1
- package/build/lib/cli/parser.js +69 -104
- package/build/lib/cli/parser.js.map +1 -1
- package/build/lib/cli/plugin-command.d.ts +50 -90
- package/build/lib/cli/plugin-command.d.ts.map +1 -1
- package/build/lib/cli/plugin-command.js +11 -63
- package/build/lib/cli/plugin-command.js.map +1 -1
- package/build/lib/cli/setup-command.d.ts +21 -26
- package/build/lib/cli/setup-command.d.ts.map +1 -1
- package/build/lib/cli/setup-command.js +19 -61
- package/build/lib/cli/setup-command.js.map +1 -1
- package/build/lib/cli/utils.d.ts +33 -35
- package/build/lib/cli/utils.d.ts.map +1 -1
- package/build/lib/cli/utils.js +48 -50
- package/build/lib/cli/utils.js.map +1 -1
- package/build/lib/constants.d.ts +23 -23
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +10 -15
- package/build/lib/constants.js.map +1 -1
- package/build/lib/doctor/doctor.d.ts +40 -57
- package/build/lib/doctor/doctor.d.ts.map +1 -1
- package/build/lib/doctor/doctor.js +31 -62
- package/build/lib/doctor/doctor.js.map +1 -1
- package/build/lib/extension/driver-config.d.ts +18 -77
- package/build/lib/extension/driver-config.d.ts.map +1 -1
- package/build/lib/extension/driver-config.js +37 -125
- package/build/lib/extension/driver-config.js.map +1 -1
- package/build/lib/extension/extension-config.d.ts +103 -210
- package/build/lib/extension/extension-config.d.ts.map +1 -1
- package/build/lib/extension/extension-config.js +180 -342
- package/build/lib/extension/extension-config.js.map +1 -1
- package/build/lib/extension/index.d.ts +12 -29
- package/build/lib/extension/index.d.ts.map +1 -1
- package/build/lib/extension/index.js +33 -75
- package/build/lib/extension/index.js.map +1 -1
- package/build/lib/extension/manifest-migrations.d.ts +3 -20
- package/build/lib/extension/manifest-migrations.d.ts.map +1 -1
- package/build/lib/extension/manifest-migrations.js +20 -101
- package/build/lib/extension/manifest-migrations.js.map +1 -1
- package/build/lib/extension/manifest.d.ts +61 -107
- package/build/lib/extension/manifest.d.ts.map +1 -1
- package/build/lib/extension/manifest.js +181 -356
- package/build/lib/extension/manifest.js.map +1 -1
- package/build/lib/extension/package-changed.d.ts +1 -3
- package/build/lib/extension/package-changed.d.ts.map +1 -1
- package/build/lib/extension/package-changed.js +8 -15
- package/build/lib/extension/package-changed.js.map +1 -1
- package/build/lib/extension/plugin-config.d.ts +10 -52
- package/build/lib/extension/plugin-config.d.ts.map +1 -1
- package/build/lib/extension/plugin-config.js +11 -63
- package/build/lib/extension/plugin-config.js.map +1 -1
- package/build/lib/helpers/build.d.ts +22 -0
- package/build/lib/helpers/build.d.ts.map +1 -0
- package/build/lib/helpers/build.js +109 -0
- package/build/lib/helpers/build.js.map +1 -0
- package/build/lib/helpers/capability.d.ts +38 -0
- package/build/lib/helpers/capability.d.ts.map +1 -0
- package/build/lib/helpers/capability.js +128 -0
- package/build/lib/helpers/capability.js.map +1 -0
- package/build/lib/helpers/network.d.ts +14 -0
- package/build/lib/helpers/network.d.ts.map +1 -0
- package/build/lib/helpers/network.js +35 -0
- package/build/lib/helpers/network.js.map +1 -0
- package/build/lib/insecure-features.js +6 -6
- package/build/lib/insecure-features.js.map +1 -1
- package/build/lib/inspector-commands.d.ts +6 -0
- package/build/lib/inspector-commands.d.ts.map +1 -1
- package/build/lib/inspector-commands.js +6 -0
- package/build/lib/inspector-commands.js.map +1 -1
- package/build/lib/logger.d.ts +2 -3
- package/build/lib/logger.d.ts.map +1 -1
- package/build/lib/logger.js +2 -3
- package/build/lib/logger.js.map +1 -1
- package/build/lib/logsink.d.ts +13 -22
- package/build/lib/logsink.d.ts.map +1 -1
- package/build/lib/logsink.js +48 -103
- package/build/lib/logsink.js.map +1 -1
- package/build/lib/main.d.ts +15 -58
- package/build/lib/main.d.ts.map +1 -1
- package/build/lib/main.js +25 -425
- package/build/lib/main.js.map +1 -1
- package/build/lib/schema/arg-spec.d.ts +32 -107
- package/build/lib/schema/arg-spec.d.ts.map +1 -1
- package/build/lib/schema/arg-spec.js +11 -107
- package/build/lib/schema/arg-spec.js.map +1 -1
- package/build/lib/schema/cli-args-guards.d.ts +34 -0
- package/build/lib/schema/cli-args-guards.d.ts.map +1 -0
- package/build/lib/schema/cli-args-guards.js +49 -0
- package/build/lib/schema/cli-args-guards.js.map +1 -0
- package/build/lib/schema/cli-args.d.ts +3 -15
- package/build/lib/schema/cli-args.d.ts.map +1 -1
- package/build/lib/schema/cli-args.js +17 -107
- package/build/lib/schema/cli-args.js.map +1 -1
- package/build/lib/schema/cli-transformers.d.ts +15 -12
- package/build/lib/schema/cli-transformers.d.ts.map +1 -1
- package/build/lib/schema/cli-transformers.js +15 -45
- package/build/lib/schema/cli-transformers.js.map +1 -1
- package/build/lib/schema/format-errors.d.ts +28 -0
- package/build/lib/schema/format-errors.d.ts.map +1 -0
- package/build/lib/schema/format-errors.js +29 -0
- package/build/lib/schema/format-errors.js.map +1 -0
- package/build/lib/schema/index.d.ts +4 -2
- package/build/lib/schema/index.d.ts.map +1 -1
- package/build/lib/schema/index.js +2 -0
- package/build/lib/schema/index.js.map +1 -1
- package/build/lib/schema/keywords.d.ts +12 -20
- package/build/lib/schema/keywords.d.ts.map +1 -1
- package/build/lib/schema/keywords.js +6 -51
- package/build/lib/schema/keywords.js.map +1 -1
- package/build/lib/schema/schema.d.ts +106 -231
- package/build/lib/schema/schema.d.ts.map +1 -1
- package/build/lib/schema/schema.js +88 -358
- package/build/lib/schema/schema.js.map +1 -1
- package/build/lib/utils.d.ts +7 -267
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +10 -409
- package/build/lib/utils.js.map +1 -1
- package/lib/{appium.js → appium.ts} +297 -341
- package/lib/bidi-commands.ts +10 -14
- package/lib/bootstrap/appium-initializer.ts +212 -0
- package/lib/bootstrap/appium-main-runner.ts +172 -0
- package/lib/bootstrap/config-file.ts +178 -0
- package/lib/bootstrap/grid-v3-register.ts +250 -0
- package/lib/bootstrap/init-types.ts +31 -0
- package/lib/bootstrap/main-helpers.ts +223 -0
- package/lib/bootstrap/node-helpers.ts +180 -0
- package/lib/bootstrap/startup-config.ts +143 -0
- package/lib/cli/{args.js → args.ts} +45 -56
- package/lib/cli/driver-command.ts +122 -0
- package/lib/cli/{extension-command.js → extension-command.ts} +827 -906
- package/lib/cli/extension.ts +65 -0
- package/lib/cli/{parser.js → parser.ts} +93 -116
- package/lib/cli/plugin-command.ts +117 -0
- package/lib/cli/{setup-command.js → setup-command.ts} +59 -74
- package/lib/cli/utils.ts +97 -0
- package/lib/{constants.js → constants.ts} +30 -41
- package/lib/doctor/{doctor.js → doctor.ts} +82 -92
- package/lib/extension/driver-config.ts +165 -0
- package/lib/extension/{extension-config.js → extension-config.ts} +291 -405
- package/lib/extension/index.ts +143 -0
- package/lib/extension/manifest-migrations.ts +57 -0
- package/lib/extension/manifest.ts +369 -0
- package/lib/extension/{package-changed.js → package-changed.ts} +9 -18
- package/lib/extension/plugin-config.ts +62 -0
- package/lib/helpers/build.ts +111 -0
- package/lib/helpers/capability.ts +171 -0
- package/lib/helpers/network.ts +30 -0
- package/lib/insecure-features.ts +1 -1
- package/lib/inspector-commands.ts +6 -1
- package/lib/{logger.js → logger.ts} +1 -2
- package/lib/{logsink.js → logsink.ts} +91 -137
- package/lib/main.ts +60 -0
- package/lib/schema/arg-spec.ts +131 -0
- package/lib/schema/cli-args-guards.ts +67 -0
- package/lib/schema/cli-args.ts +171 -0
- package/lib/schema/cli-transformers.ts +83 -0
- package/lib/schema/format-errors.ts +43 -0
- package/lib/schema/index.ts +4 -0
- package/lib/schema/keywords.ts +96 -0
- package/lib/schema/schema.ts +448 -0
- package/lib/utils.ts +73 -0
- package/package.json +17 -18
- package/scripts/autoinstall-extensions.js +3 -0
- package/build/lib/config-file.d.ts +0 -100
- package/build/lib/config-file.d.ts.map +0 -1
- package/build/lib/config-file.js.map +0 -1
- package/build/lib/config.d.ts +0 -70
- package/build/lib/config.d.ts.map +0 -1
- package/build/lib/config.js +0 -390
- package/build/lib/config.js.map +0 -1
- package/build/lib/grid-register.d.ts +0 -10
- package/build/lib/grid-register.d.ts.map +0 -1
- package/build/lib/grid-register.js +0 -134
- package/build/lib/grid-register.js.map +0 -1
- package/lib/cli/driver-command.js +0 -174
- package/lib/cli/extension.js +0 -74
- package/lib/cli/plugin-command.js +0 -164
- package/lib/cli/utils.js +0 -91
- package/lib/config-file.js +0 -228
- package/lib/config.js +0 -389
- package/lib/extension/driver-config.js +0 -245
- package/lib/extension/index.js +0 -169
- package/lib/extension/manifest-migrations.js +0 -136
- package/lib/extension/manifest.js +0 -550
- package/lib/extension/plugin-config.js +0 -112
- package/lib/grid-register.js +0 -146
- package/lib/main.js +0 -545
- package/lib/schema/arg-spec.js +0 -229
- package/lib/schema/cli-args.js +0 -254
- package/lib/schema/cli-transformers.js +0 -113
- package/lib/schema/index.js +0 -2
- package/lib/schema/keywords.js +0 -136
- package/lib/schema/schema.js +0 -725
- package/lib/utils.js +0 -512
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
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.inspect = void 0;
|
|
7
|
+
exports.showBuildInfo = showBuildInfo;
|
|
8
|
+
exports.determineAppiumHomeSource = determineAppiumHomeSource;
|
|
9
|
+
exports.logServerAddress = logServerAddress;
|
|
10
|
+
exports.preflightChecks = preflightChecks;
|
|
11
|
+
exports.logStartupInfo = logStartupInfo;
|
|
12
|
+
exports.getServerUpdaters = getServerUpdaters;
|
|
13
|
+
exports.getExtraMethodMap = getExtraMethodMap;
|
|
14
|
+
exports.buildServerOpts = buildServerOpts;
|
|
15
|
+
exports.createAppiumServer = createAppiumServer;
|
|
16
|
+
const node_util_1 = require("node:util");
|
|
17
|
+
const logger_1 = require("../logger");
|
|
18
|
+
const base_driver_1 = require("@appium/base-driver");
|
|
19
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
20
|
+
const ws_1 = require("ws");
|
|
21
|
+
const build_1 = require("../helpers/build");
|
|
22
|
+
const node_helpers_1 = require("./node-helpers");
|
|
23
|
+
const startup_config_1 = require("./startup-config");
|
|
24
|
+
const schema_1 = require("../schema/schema");
|
|
25
|
+
const network_1 = require("../helpers/network");
|
|
26
|
+
const constants_1 = require("../constants");
|
|
27
|
+
const isStdoutTTY = process.stdout.isTTY;
|
|
28
|
+
/**
|
|
29
|
+
* Logs a value to the console using the info logger (with util.inspect formatting).
|
|
30
|
+
*/
|
|
31
|
+
exports.inspect = lodash_1.default.flow(lodash_1.default.partialRight(node_util_1.inspect, {
|
|
32
|
+
colors: true,
|
|
33
|
+
depth: null,
|
|
34
|
+
compact: !isStdoutTTY,
|
|
35
|
+
}), (...args) => {
|
|
36
|
+
logger_1.log.info(...args);
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Prints the current build info JSON to stdout.
|
|
40
|
+
*
|
|
41
|
+
* This updates build metadata first (using GitHub fallback) and then logs the
|
|
42
|
+
* resulting {@link BuildInfo} object.
|
|
43
|
+
*/
|
|
44
|
+
async function showBuildInfo() {
|
|
45
|
+
await (0, build_1.updateBuildInfo)(true);
|
|
46
|
+
// eslint-disable-next-line no-console -- CLI output for --build-info
|
|
47
|
+
console.log(JSON.stringify((0, build_1.getBuildInfo)()));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Human-readable label for where Appium resolved `APPIUM_HOME` from (CLI, env, or autodetect).
|
|
51
|
+
*/
|
|
52
|
+
function determineAppiumHomeSource(appiumHomeFromArgs) {
|
|
53
|
+
if (!lodash_1.default.isNil(appiumHomeFromArgs)) {
|
|
54
|
+
return 'appiumHome config value';
|
|
55
|
+
}
|
|
56
|
+
if (process.env.APPIUM_HOME) {
|
|
57
|
+
return 'APPIUM_HOME environment variable';
|
|
58
|
+
}
|
|
59
|
+
return 'autodetected Appium home path';
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Logs the REST listener URL; if the bind address is a broadcast address, lists concrete interface URLs.
|
|
63
|
+
*/
|
|
64
|
+
function logServerAddress(url) {
|
|
65
|
+
const urlObj = new URL(url);
|
|
66
|
+
logger_1.log.info(`Appium REST http interface listener started on ${url}`);
|
|
67
|
+
if (!(0, network_1.isBroadcastIp)(urlObj.hostname)) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const interfaces = (0, network_1.fetchInterfaces)(urlObj.hostname === network_1.V4_BROADCAST_IP ? 4 : 6);
|
|
71
|
+
const toLabel = (iface) => {
|
|
72
|
+
const href = urlObj.href.replace(urlObj.hostname, iface.address);
|
|
73
|
+
return iface.internal ? `${href} (only accessible from the same host)` : href;
|
|
74
|
+
};
|
|
75
|
+
logger_1.log.info(`You can provide the following ${interfaces.length === 1 ? 'URL' : 'URLs'} ` +
|
|
76
|
+
`in your client code to connect to this server:\n` +
|
|
77
|
+
interfaces.map((iface) => `\t${toLabel(iface)}`).join('\n'));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validates Node version, optional long stack traces, schema, tmp dir, and `--build-info` early exit.
|
|
81
|
+
*
|
|
82
|
+
* @param args - Parsed server CLI args
|
|
83
|
+
* @param throwInsteadOfExit - When true, rethrows failures instead of calling `process.exit(1)`
|
|
84
|
+
*/
|
|
85
|
+
async function preflightChecks(args, throwInsteadOfExit = false) {
|
|
86
|
+
try {
|
|
87
|
+
(0, node_helpers_1.checkNodeOk)();
|
|
88
|
+
if (args.longStacktrace) {
|
|
89
|
+
Error.stackTraceLimit = constants_1.LONG_STACKTRACE_LIMIT;
|
|
90
|
+
}
|
|
91
|
+
if (args.showBuildInfo) {
|
|
92
|
+
await showBuildInfo();
|
|
93
|
+
process.exit(0);
|
|
94
|
+
}
|
|
95
|
+
(0, schema_1.validate)(args);
|
|
96
|
+
if (args.tmpDir) {
|
|
97
|
+
await (0, node_helpers_1.requireDir)(args.tmpDir, !args.noPermsCheck, 'tmpDir argument value');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
102
|
+
logger_1.log.error(message.red);
|
|
103
|
+
if (throwInsteadOfExit) {
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Prints welcome line (version + optional git rev), non-default server args, and default capabilities.
|
|
111
|
+
*/
|
|
112
|
+
async function logStartupInfo(args) {
|
|
113
|
+
let welcome = `Welcome to Appium v${build_1.APPIUM_VER}`;
|
|
114
|
+
const appiumRev = await (0, build_1.getGitRev)();
|
|
115
|
+
if (appiumRev) {
|
|
116
|
+
welcome += ` (REV ${appiumRev})`;
|
|
117
|
+
}
|
|
118
|
+
logger_1.log.info(welcome);
|
|
119
|
+
const showArgs = (0, startup_config_1.getNonDefaultServerArgs)(args);
|
|
120
|
+
if (lodash_1.default.size(showArgs)) {
|
|
121
|
+
logNonDefaultArgsWarning(showArgs);
|
|
122
|
+
}
|
|
123
|
+
if (!lodash_1.default.isEmpty(args.defaultCapabilities)) {
|
|
124
|
+
logDefaultCapabilitiesWarning(args.defaultCapabilities);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Collects `updateServer` hooks from active driver and plugin classes for HTTP server customization.
|
|
129
|
+
*/
|
|
130
|
+
function getServerUpdaters(driverClasses, pluginClasses) {
|
|
131
|
+
return lodash_1.default.compact(lodash_1.default.map([...driverClasses.keys(), ...pluginClasses.keys()], 'updateServer'));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Merges `newMethodMap` contributions from all active drivers and plugins into one method map.
|
|
135
|
+
*/
|
|
136
|
+
function getExtraMethodMap(driverClasses, pluginClasses) {
|
|
137
|
+
return [...driverClasses.keys(), ...pluginClasses.keys()].reduce((map, klass) => ({
|
|
138
|
+
...map,
|
|
139
|
+
...(klass.newMethodMap ?? {}),
|
|
140
|
+
}), {});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Builds {@link ServerOpts} and normalized base path for the Appium HTTP server from CLI args and extensions.
|
|
144
|
+
*/
|
|
145
|
+
function buildServerOpts(appiumDriver, parsedArgs, driverClasses, pluginClasses) {
|
|
146
|
+
const routeConfiguringFunction = (0, base_driver_1.routeConfiguringFunction)(appiumDriver);
|
|
147
|
+
const serverOpts = {
|
|
148
|
+
routeConfiguringFunction,
|
|
149
|
+
port: parsedArgs.port,
|
|
150
|
+
hostname: parsedArgs.address,
|
|
151
|
+
allowCors: parsedArgs.allowCors,
|
|
152
|
+
basePath: parsedArgs.basePath,
|
|
153
|
+
serverUpdaters: getServerUpdaters(driverClasses, pluginClasses),
|
|
154
|
+
extraMethodMap: getExtraMethodMap(driverClasses, pluginClasses),
|
|
155
|
+
cliArgs: parsedArgs,
|
|
156
|
+
};
|
|
157
|
+
const normalizedBasePath = (0, base_driver_1.normalizeBasePath)(parsedArgs.basePath);
|
|
158
|
+
for (const timeoutArgName of ['keepAliveTimeout', 'requestTimeout']) {
|
|
159
|
+
if (lodash_1.default.isInteger(parsedArgs[timeoutArgName])) {
|
|
160
|
+
serverOpts[timeoutArgName] = parsedArgs[timeoutArgName] * 1000;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return { serverOpts, normalizedBasePath };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Creates the Appium HTTP server and attaches WebSocket handlers for BiDi under the normalized base path.
|
|
167
|
+
*/
|
|
168
|
+
async function createAppiumServer(serverOpts, appiumDriver, normalizedBasePath) {
|
|
169
|
+
const bidiServer = new ws_1.WebSocketServer({ noServer: true });
|
|
170
|
+
bidiServer.on('connection', appiumDriver.onBidiConnection.bind(appiumDriver));
|
|
171
|
+
bidiServer.on('error', appiumDriver.onBidiServerError.bind(appiumDriver));
|
|
172
|
+
const server = await (0, base_driver_1.server)(serverOpts);
|
|
173
|
+
const bidiBasePath = `${normalizedBasePath}${constants_1.BIDI_BASE_PATH}`;
|
|
174
|
+
await server.addWebSocketHandler(bidiBasePath, bidiServer);
|
|
175
|
+
await server.addWebSocketHandler(`${bidiBasePath}/:sessionId`, bidiServer);
|
|
176
|
+
return server;
|
|
177
|
+
}
|
|
178
|
+
function logNonDefaultArgsWarning(args) {
|
|
179
|
+
logger_1.log.info('Non-default server args:');
|
|
180
|
+
(0, exports.inspect)(args);
|
|
181
|
+
}
|
|
182
|
+
function logDefaultCapabilitiesWarning(caps) {
|
|
183
|
+
logger_1.log.info('Default capabilities, which will be added to each request ' +
|
|
184
|
+
'unless overridden by desired capabilities:');
|
|
185
|
+
(0, exports.inspect)(caps);
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=main-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-helpers.js","sourceRoot":"","sources":["../../../lib/bootstrap/main-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
interface DebugInfoInput {
|
|
2
|
+
driverConfig: {
|
|
3
|
+
installedExtensions: unknown;
|
|
4
|
+
};
|
|
5
|
+
pluginConfig: {
|
|
6
|
+
installedExtensions: unknown;
|
|
7
|
+
};
|
|
8
|
+
appiumHome: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @throws {Error} If Node version is outside of the supported range
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkNodeOk(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Adjusts NODE_PATH so CJS drivers/plugins can load peer deps. Does not work with ESM.
|
|
16
|
+
*/
|
|
17
|
+
export declare function adjustNodePath(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Prints JSON debug info (OS, Node/npm, Appium build, installed drivers/plugins) to stdout.
|
|
20
|
+
* Input combines extension config snapshots with the resolved Appium home path.
|
|
21
|
+
*/
|
|
22
|
+
export declare function showDebugInfo({ driverConfig, pluginConfig, appiumHome }: DebugInfoInput): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Ensures a directory exists and (optionally) is writeable.
|
|
25
|
+
*
|
|
26
|
+
* If the directory does not exist, this attempts to create it recursively.
|
|
27
|
+
*
|
|
28
|
+
* @throws {Error}
|
|
29
|
+
*/
|
|
30
|
+
export declare function requireDir(root: string, requireWriteable?: boolean, displayName?: string): Promise<void>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=node-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../lib/bootstrap/node-helpers.ts"],"names":[],"mappings":"AAiBA,UAAU,cAAc;IACtB,YAAY,EAAE;QAAC,mBAAmB,EAAE,OAAO,CAAA;KAAC,CAAC;IAC7C,YAAY,EAAE;QAAC,mBAAmB,EAAE,OAAO,CAAA;KAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CA0CrC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,EAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC3G;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,gBAAgB,UAAO,EACvB,WAAW,SAAgB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.checkNodeOk = checkNodeOk;
|
|
40
|
+
exports.adjustNodePath = adjustNodePath;
|
|
41
|
+
exports.showDebugInfo = showDebugInfo;
|
|
42
|
+
exports.requireDir = requireDir;
|
|
43
|
+
/* eslint-disable no-console */
|
|
44
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
45
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
46
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
47
|
+
const semver = __importStar(require("semver"));
|
|
48
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
49
|
+
const support_1 = require("@appium/support");
|
|
50
|
+
const logger_1 = require("../logger");
|
|
51
|
+
const utils_1 = require("../utils");
|
|
52
|
+
const build_1 = require("../helpers/build");
|
|
53
|
+
const MIN_NODE_VERSION = utils_1.npmPackage.engines.node;
|
|
54
|
+
/**
|
|
55
|
+
* @throws {Error} If Node version is outside of the supported range
|
|
56
|
+
*/
|
|
57
|
+
function checkNodeOk() {
|
|
58
|
+
const version = getNodeVersion();
|
|
59
|
+
if (!semver.satisfies(version, MIN_NODE_VERSION)) {
|
|
60
|
+
throw new Error(`Node version must be at least ${MIN_NODE_VERSION}; current is ${version.version}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Adjusts NODE_PATH so CJS drivers/plugins can load peer deps. Does not work with ESM.
|
|
65
|
+
*/
|
|
66
|
+
function adjustNodePath() {
|
|
67
|
+
let appiumModuleSearchRoot;
|
|
68
|
+
try {
|
|
69
|
+
appiumModuleSearchRoot = node_path_1.default.dirname((0, utils_1.getAppiumModuleRoot)());
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
logger_1.log.warn(error.message);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const refreshRequirePaths = () => {
|
|
76
|
+
try {
|
|
77
|
+
// Private API; see https://gist.github.com/branneman/8048520#7-the-hack
|
|
78
|
+
require('node:module').Module._initPaths();
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
if (!process.env.NODE_PATH) {
|
|
86
|
+
process.env.NODE_PATH = appiumModuleSearchRoot;
|
|
87
|
+
if (refreshRequirePaths()) {
|
|
88
|
+
process.env.APPIUM_OMIT_PEER_DEPS = '1';
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
delete process.env.NODE_PATH;
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const nodePathParts = process.env.NODE_PATH.split(node_path_1.default.delimiter);
|
|
96
|
+
if (nodePathParts.includes(appiumModuleSearchRoot)) {
|
|
97
|
+
process.env.APPIUM_OMIT_PEER_DEPS = '1';
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
nodePathParts.push(appiumModuleSearchRoot);
|
|
101
|
+
process.env.NODE_PATH = nodePathParts.join(node_path_1.default.delimiter);
|
|
102
|
+
if (refreshRequirePaths()) {
|
|
103
|
+
process.env.APPIUM_OMIT_PEER_DEPS = '1';
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
process.env.NODE_PATH = lodash_1.default.without(nodePathParts, appiumModuleSearchRoot).join(node_path_1.default.delimiter);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Prints JSON debug info (OS, Node/npm, Appium build, installed drivers/plugins) to stdout.
|
|
111
|
+
* Input combines extension config snapshots with the resolved Appium home path.
|
|
112
|
+
*/
|
|
113
|
+
async function showDebugInfo({ driverConfig, pluginConfig, appiumHome }) {
|
|
114
|
+
const getNpmVersion = async () => {
|
|
115
|
+
const { stdout } = await support_1.npm.exec('--version', [], { cwd: process.cwd() });
|
|
116
|
+
return lodash_1.default.trim(stdout);
|
|
117
|
+
};
|
|
118
|
+
const findNpmLocation = async () => await support_1.fs.which(support_1.system.isWindows() ? 'npm.cmd' : 'npm');
|
|
119
|
+
const [npmVersion, npmLocation] = await bluebird_1.default.all([
|
|
120
|
+
...[getNpmVersion, findNpmLocation].map((f) => getSafeResult(f, 'unknown')),
|
|
121
|
+
(0, build_1.updateBuildInfo)(),
|
|
122
|
+
]);
|
|
123
|
+
const debugInfo = {
|
|
124
|
+
os: {
|
|
125
|
+
platform: node_os_1.default.platform(),
|
|
126
|
+
release: node_os_1.default.release(),
|
|
127
|
+
arch: node_os_1.default.arch(),
|
|
128
|
+
homedir: node_os_1.default.homedir(),
|
|
129
|
+
username: node_os_1.default.userInfo().username,
|
|
130
|
+
},
|
|
131
|
+
node: {
|
|
132
|
+
version: process.version,
|
|
133
|
+
arch: process.arch,
|
|
134
|
+
cwd: process.cwd(),
|
|
135
|
+
argv: process.argv,
|
|
136
|
+
env: process.env,
|
|
137
|
+
npm: {
|
|
138
|
+
location: npmLocation,
|
|
139
|
+
version: npmVersion,
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
appium: {
|
|
143
|
+
location: build_1.rootDir,
|
|
144
|
+
homedir: appiumHome,
|
|
145
|
+
build: (0, build_1.getBuildInfo)(),
|
|
146
|
+
drivers: driverConfig.installedExtensions,
|
|
147
|
+
plugins: pluginConfig.installedExtensions,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
console.log(JSON.stringify(debugInfo, null, 2));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Ensures a directory exists and (optionally) is writeable.
|
|
154
|
+
*
|
|
155
|
+
* If the directory does not exist, this attempts to create it recursively.
|
|
156
|
+
*
|
|
157
|
+
* @throws {Error}
|
|
158
|
+
*/
|
|
159
|
+
async function requireDir(root, requireWriteable = true, displayName = 'folder path') {
|
|
160
|
+
let stat;
|
|
161
|
+
try {
|
|
162
|
+
stat = await support_1.fs.stat(root);
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
if (e.code === 'ENOENT') {
|
|
166
|
+
try {
|
|
167
|
+
await support_1.fs.mkdir(root, { recursive: true });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
}
|
|
172
|
+
throw new Error(`The ${displayName} '${root}' must exist and be a valid directory`);
|
|
173
|
+
}
|
|
174
|
+
if (stat && !stat.isDirectory()) {
|
|
175
|
+
throw new Error(`The ${displayName} '${root}' must be a valid directory`);
|
|
176
|
+
}
|
|
177
|
+
if (requireWriteable) {
|
|
178
|
+
try {
|
|
179
|
+
await support_1.fs.access(root, support_1.fs.constants.W_OK);
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
throw new Error(`The ${displayName} '${root}' must be writeable for the current user account '${node_os_1.default.userInfo().username}'`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function getNodeVersion() {
|
|
187
|
+
return semver.coerce(process.version);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Calculates the result of the given function and return its value
|
|
191
|
+
* or the default one if there was an exception.
|
|
192
|
+
*/
|
|
193
|
+
async function getSafeResult(f, defaultValue) {
|
|
194
|
+
try {
|
|
195
|
+
return await f();
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return defaultValue;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=node-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-helpers.js","sourceRoot":"","sources":["../../../lib/bootstrap/node-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Args } from 'appium/types';
|
|
2
|
+
import type { ReadConfigFileResult } from './config-file';
|
|
3
|
+
/**
|
|
4
|
+
* Returns key/value pairs of server arguments that differ from schema defaults (flattened comparison).
|
|
5
|
+
*
|
|
6
|
+
* @param parsedArgs - Fully merged server args (CLI + config + defaults)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getNonDefaultServerArgs(parsedArgs: Args): Args;
|
|
9
|
+
/**
|
|
10
|
+
* Prints a breakdown of configuration: defaults, config file, CLI/programmatic overrides, and final merged args.
|
|
11
|
+
*
|
|
12
|
+
* The actual shape of `nonDefaultPreConfigParsedArgs` and `defaults` does not matter for the purposes of this
|
|
13
|
+
* function, but it's intended to be called with values of type {@link ParsedArgs} and
|
|
14
|
+
* `DefaultValues<true>`, respectively.
|
|
15
|
+
*
|
|
16
|
+
* @param nonDefaultPreConfigParsedArgs - CLI-only (or programmatic) args that differ from defaults
|
|
17
|
+
* @param configResult - Result of {@link readConfigFile}
|
|
18
|
+
* @param defaults - Schema default values
|
|
19
|
+
* @param parsedArgs - Final merged configuration
|
|
20
|
+
*/
|
|
21
|
+
export declare function showConfig(nonDefaultPreConfigParsedArgs: Partial<Args>, configResult: ReadConfigFileResult, defaults: Partial<Args>, parsedArgs: Args): void;
|
|
22
|
+
//# sourceMappingURL=startup-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-config.d.ts","sourceRoot":"","sources":["../../../lib/bootstrap/startup-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAOxD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CA0E9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,6BAA6B,EAAE,OAAO,CAAC,IAAI,CAAC,EAC5C,YAAY,EAAE,oBAAoB,EAClC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EACvB,UAAU,EAAE,IAAI,GACf,IAAI,CAmBN"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
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.getNonDefaultServerArgs = getNonDefaultServerArgs;
|
|
7
|
+
exports.showConfig = showConfig;
|
|
8
|
+
/* eslint-disable no-console */
|
|
9
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
10
|
+
const schema_1 = require("../schema/schema");
|
|
11
|
+
/**
|
|
12
|
+
* Returns key/value pairs of server arguments that differ from schema defaults (flattened comparison).
|
|
13
|
+
*
|
|
14
|
+
* @param parsedArgs - Fully merged server args (CLI + config + defaults)
|
|
15
|
+
*/
|
|
16
|
+
function getNonDefaultServerArgs(parsedArgs) {
|
|
17
|
+
/**
|
|
18
|
+
* Flattens parsed args into a single level object for comparison with
|
|
19
|
+
* flattened defaults across server args and extension args.
|
|
20
|
+
*/
|
|
21
|
+
const flatten = (args) => {
|
|
22
|
+
const argSpecs = (0, schema_1.getAllArgSpecs)();
|
|
23
|
+
const flattened = lodash_1.default.reduce([...argSpecs.values()], (acc, argSpec) => {
|
|
24
|
+
if (lodash_1.default.has(args, argSpec.dest)) {
|
|
25
|
+
acc[argSpec.dest] = { value: lodash_1.default.get(args, argSpec.dest), argSpec };
|
|
26
|
+
}
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
return flattened;
|
|
30
|
+
};
|
|
31
|
+
const args = flatten(parsedArgs);
|
|
32
|
+
// hopefully these function names are descriptive enough
|
|
33
|
+
const typesDiffer = (dest) => typeof args[dest].value !== typeof defaultsFromSchema[dest];
|
|
34
|
+
const defaultValueIsArray = (dest) => lodash_1.default.isArray(defaultsFromSchema[dest]);
|
|
35
|
+
const argsValueIsArray = (dest) => lodash_1.default.isArray(args[dest].value);
|
|
36
|
+
const arraysDiffer = (dest) => lodash_1.default.gt(lodash_1.default.size(lodash_1.default.difference(args[dest].value, defaultsFromSchema[dest])), 0);
|
|
37
|
+
const valuesDiffer = (dest) => args[dest].value !== defaultsFromSchema[dest];
|
|
38
|
+
const defaultIsDefined = (dest) => !lodash_1.default.isUndefined(defaultsFromSchema[dest]);
|
|
39
|
+
// note that `_.overEvery` is like an "AND", and `_.overSome` is like an "OR"
|
|
40
|
+
const argValueNotArrayOrArraysDiffer = lodash_1.default.overSome([lodash_1.default.negate(argsValueIsArray), arraysDiffer]);
|
|
41
|
+
const defaultValueNotArrayAndValuesDiffer = lodash_1.default.overEvery([
|
|
42
|
+
lodash_1.default.negate(defaultValueIsArray),
|
|
43
|
+
valuesDiffer,
|
|
44
|
+
]);
|
|
45
|
+
/**
|
|
46
|
+
* This used to be a hideous conditional, but it's broken up into a hideous function instead.
|
|
47
|
+
* hopefully this makes things a little more understandable.
|
|
48
|
+
* - checks if the default value is defined
|
|
49
|
+
* - if so, and the default is not an array:
|
|
50
|
+
* - ensures the types are the same
|
|
51
|
+
* - ensures the values are equal
|
|
52
|
+
* - if so, and the default is an array:
|
|
53
|
+
* - ensures the args value is an array
|
|
54
|
+
* - ensures the args values do not differ from the default values
|
|
55
|
+
*/
|
|
56
|
+
const isNotDefault = lodash_1.default.overEvery([
|
|
57
|
+
defaultIsDefined,
|
|
58
|
+
lodash_1.default.overSome([
|
|
59
|
+
typesDiffer,
|
|
60
|
+
lodash_1.default.overEvery([defaultValueIsArray, argValueNotArrayOrArraysDiffer]),
|
|
61
|
+
defaultValueNotArrayAndValuesDiffer,
|
|
62
|
+
]),
|
|
63
|
+
]);
|
|
64
|
+
const defaultsFromSchema = (0, schema_1.getDefaultsForSchema)(true);
|
|
65
|
+
return lodash_1.default.reduce(lodash_1.default.pickBy(args, (_v, key) => isNotDefault(key)),
|
|
66
|
+
// explodes the flattened object back into nested one
|
|
67
|
+
(acc, { value, argSpec }) => lodash_1.default.set(acc, argSpec.dest, value), {});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Prints a breakdown of configuration: defaults, config file, CLI/programmatic overrides, and final merged args.
|
|
71
|
+
*
|
|
72
|
+
* The actual shape of `nonDefaultPreConfigParsedArgs` and `defaults` does not matter for the purposes of this
|
|
73
|
+
* function, but it's intended to be called with values of type {@link ParsedArgs} and
|
|
74
|
+
* `DefaultValues<true>`, respectively.
|
|
75
|
+
*
|
|
76
|
+
* @param nonDefaultPreConfigParsedArgs - CLI-only (or programmatic) args that differ from defaults
|
|
77
|
+
* @param configResult - Result of {@link readConfigFile}
|
|
78
|
+
* @param defaults - Schema default values
|
|
79
|
+
* @param parsedArgs - Final merged configuration
|
|
80
|
+
*/
|
|
81
|
+
function showConfig(nonDefaultPreConfigParsedArgs, configResult, defaults, parsedArgs) {
|
|
82
|
+
console.log('Appium Configuration\n');
|
|
83
|
+
console.log('from defaults:\n');
|
|
84
|
+
console.dir(compactConfig(defaults));
|
|
85
|
+
if (configResult.config) {
|
|
86
|
+
console.log(`\nfrom config file at ${configResult.filepath}:\n`);
|
|
87
|
+
console.dir(compactConfig(configResult.config));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
console.log(`\n(no configuration file loaded)`);
|
|
91
|
+
}
|
|
92
|
+
const compactedNonDefaultPreConfigArgs = compactConfig(nonDefaultPreConfigParsedArgs);
|
|
93
|
+
if (lodash_1.default.isEmpty(compactedNonDefaultPreConfigArgs)) {
|
|
94
|
+
console.log(`\n(no CLI parameters provided)`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log('\nvia CLI or function call:\n');
|
|
98
|
+
console.dir(compactedNonDefaultPreConfigArgs);
|
|
99
|
+
}
|
|
100
|
+
console.log('\nfinal configuration:\n');
|
|
101
|
+
console.dir(compactConfig(parsedArgs));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Compacts an object for {@link showConfig}:
|
|
105
|
+
* 1. Removes `subcommand` key/value
|
|
106
|
+
* 2. Removes `undefined` values
|
|
107
|
+
* 3. Removes empty objects (but not `false` values)
|
|
108
|
+
* Does not operate recursively.
|
|
109
|
+
*/
|
|
110
|
+
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)));
|
|
111
|
+
//# sourceMappingURL=startup-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../../../lib/bootstrap/startup-config.ts"],"names":[],"mappings":"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"}
|
package/build/lib/cli/args.d.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export type ArgumentDefinitions = Map<[
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import type { ArgumentOptions } from 'argparse';
|
|
3
|
+
import type { ExtensionType } from '@appium/types';
|
|
4
|
+
import type { CliExtensionSubcommand } from 'appium/types';
|
|
5
|
+
export type ArgumentDefinitions = Map<[
|
|
6
|
+
name: string
|
|
7
|
+
] | [name: string, alias: string], ArgumentOptions>;
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Returns CLI argument definitions for extension commands by extension type.
|
|
10
|
+
*
|
|
11
|
+
* The result is memoized because parser setup is static across process lifetime.
|
|
10
12
|
*/
|
|
11
|
-
export
|
|
13
|
+
export declare const getExtensionArgs: (() => Record<ExtensionType, Record<CliExtensionSubcommand, ArgumentDefinitions>>) & _.MemoizedFunction;
|
|
12
14
|
/**
|
|
13
|
-
*
|
|
15
|
+
* Returns CLI argument definitions for the `server` command.
|
|
16
|
+
*
|
|
17
|
+
* This includes schema-derived options and additional CLI-only options which
|
|
18
|
+
* are intentionally disallowed in config files.
|
|
14
19
|
*/
|
|
15
|
-
export
|
|
16
|
-
import _ from 'lodash';
|
|
20
|
+
export declare function getServerArgs(): ArgumentDefinitions;
|
|
17
21
|
//# sourceMappingURL=args.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../lib/cli/args.
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../lib/cli/args.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AAgBzD,MAAM,MAAM,mBAAmB,GAAG,GAAG,CACnC;IAAC,IAAI,EAAE,MAAM;CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAC9C,eAAe,CAChB,CAAC;AAwBF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAA0C,MAAM,CAC3E,aAAa,EACb,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CACpD,sBAgBC,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,mBAAmB,CAEnD"}
|