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.
Files changed (250) hide show
  1. package/build/lib/appium.d.ts +147 -205
  2. package/build/lib/appium.d.ts.map +1 -1
  3. package/build/lib/appium.js +169 -282
  4. package/build/lib/appium.js.map +1 -1
  5. package/build/lib/bidi-commands.d.ts.map +1 -1
  6. package/build/lib/bidi-commands.js +11 -11
  7. package/build/lib/bidi-commands.js.map +1 -1
  8. package/build/lib/bootstrap/appium-initializer.d.ts +21 -0
  9. package/build/lib/bootstrap/appium-initializer.d.ts.map +1 -0
  10. package/build/lib/bootstrap/appium-initializer.js +146 -0
  11. package/build/lib/bootstrap/appium-initializer.js.map +1 -0
  12. package/build/lib/bootstrap/appium-main-runner.d.ts +22 -0
  13. package/build/lib/bootstrap/appium-main-runner.d.ts.map +1 -0
  14. package/build/lib/bootstrap/appium-main-runner.js +109 -0
  15. package/build/lib/bootstrap/appium-main-runner.js.map +1 -0
  16. package/build/lib/bootstrap/config-file.d.ts +37 -0
  17. package/build/lib/bootstrap/config-file.d.ts.map +1 -0
  18. package/build/lib/{config-file.js → bootstrap/config-file.js} +62 -138
  19. package/build/lib/bootstrap/config-file.js.map +1 -0
  20. package/build/lib/bootstrap/grid-v3-register.d.ts +20 -0
  21. package/build/lib/bootstrap/grid-v3-register.d.ts.map +1 -0
  22. package/build/lib/bootstrap/grid-v3-register.js +185 -0
  23. package/build/lib/bootstrap/grid-v3-register.js.map +1 -0
  24. package/build/lib/bootstrap/init-types.d.ts +16 -0
  25. package/build/lib/bootstrap/init-types.d.ts.map +1 -0
  26. package/build/lib/bootstrap/init-types.js +3 -0
  27. package/build/lib/bootstrap/init-types.js.map +1 -0
  28. package/build/lib/bootstrap/main-helpers.d.ts +55 -0
  29. package/build/lib/bootstrap/main-helpers.d.ts.map +1 -0
  30. package/build/lib/bootstrap/main-helpers.js +187 -0
  31. package/build/lib/bootstrap/main-helpers.js.map +1 -0
  32. package/build/lib/bootstrap/node-helpers.d.ts +32 -0
  33. package/build/lib/bootstrap/node-helpers.d.ts.map +1 -0
  34. package/build/lib/bootstrap/node-helpers.js +201 -0
  35. package/build/lib/bootstrap/node-helpers.js.map +1 -0
  36. package/build/lib/bootstrap/startup-config.d.ts +22 -0
  37. package/build/lib/bootstrap/startup-config.d.ts.map +1 -0
  38. package/build/lib/bootstrap/startup-config.js +111 -0
  39. package/build/lib/bootstrap/startup-config.js.map +1 -0
  40. package/build/lib/cli/args.d.ts +16 -12
  41. package/build/lib/cli/args.d.ts.map +1 -1
  42. package/build/lib/cli/args.js +20 -40
  43. package/build/lib/cli/args.js.map +1 -1
  44. package/build/lib/cli/driver-command.d.ts +51 -93
  45. package/build/lib/cli/driver-command.d.ts.map +1 -1
  46. package/build/lib/cli/driver-command.js +11 -66
  47. package/build/lib/cli/driver-command.js.map +1 -1
  48. package/build/lib/cli/extension-command.d.ts +173 -377
  49. package/build/lib/cli/extension-command.d.ts.map +1 -1
  50. package/build/lib/cli/extension-command.js +387 -656
  51. package/build/lib/cli/extension-command.js.map +1 -1
  52. package/build/lib/cli/extension.d.ts +10 -15
  53. package/build/lib/cli/extension.d.ts.map +1 -1
  54. package/build/lib/cli/extension.js +15 -33
  55. package/build/lib/cli/extension.js.map +1 -1
  56. package/build/lib/cli/parser.d.ts +37 -66
  57. package/build/lib/cli/parser.d.ts.map +1 -1
  58. package/build/lib/cli/parser.js +69 -104
  59. package/build/lib/cli/parser.js.map +1 -1
  60. package/build/lib/cli/plugin-command.d.ts +50 -90
  61. package/build/lib/cli/plugin-command.d.ts.map +1 -1
  62. package/build/lib/cli/plugin-command.js +11 -63
  63. package/build/lib/cli/plugin-command.js.map +1 -1
  64. package/build/lib/cli/setup-command.d.ts +21 -26
  65. package/build/lib/cli/setup-command.d.ts.map +1 -1
  66. package/build/lib/cli/setup-command.js +19 -61
  67. package/build/lib/cli/setup-command.js.map +1 -1
  68. package/build/lib/cli/utils.d.ts +33 -35
  69. package/build/lib/cli/utils.d.ts.map +1 -1
  70. package/build/lib/cli/utils.js +48 -50
  71. package/build/lib/cli/utils.js.map +1 -1
  72. package/build/lib/constants.d.ts +23 -23
  73. package/build/lib/constants.d.ts.map +1 -1
  74. package/build/lib/constants.js +10 -15
  75. package/build/lib/constants.js.map +1 -1
  76. package/build/lib/doctor/doctor.d.ts +40 -57
  77. package/build/lib/doctor/doctor.d.ts.map +1 -1
  78. package/build/lib/doctor/doctor.js +31 -62
  79. package/build/lib/doctor/doctor.js.map +1 -1
  80. package/build/lib/extension/driver-config.d.ts +18 -77
  81. package/build/lib/extension/driver-config.d.ts.map +1 -1
  82. package/build/lib/extension/driver-config.js +37 -125
  83. package/build/lib/extension/driver-config.js.map +1 -1
  84. package/build/lib/extension/extension-config.d.ts +103 -210
  85. package/build/lib/extension/extension-config.d.ts.map +1 -1
  86. package/build/lib/extension/extension-config.js +180 -342
  87. package/build/lib/extension/extension-config.js.map +1 -1
  88. package/build/lib/extension/index.d.ts +12 -29
  89. package/build/lib/extension/index.d.ts.map +1 -1
  90. package/build/lib/extension/index.js +33 -75
  91. package/build/lib/extension/index.js.map +1 -1
  92. package/build/lib/extension/manifest-migrations.d.ts +3 -20
  93. package/build/lib/extension/manifest-migrations.d.ts.map +1 -1
  94. package/build/lib/extension/manifest-migrations.js +20 -101
  95. package/build/lib/extension/manifest-migrations.js.map +1 -1
  96. package/build/lib/extension/manifest.d.ts +61 -107
  97. package/build/lib/extension/manifest.d.ts.map +1 -1
  98. package/build/lib/extension/manifest.js +181 -356
  99. package/build/lib/extension/manifest.js.map +1 -1
  100. package/build/lib/extension/package-changed.d.ts +1 -3
  101. package/build/lib/extension/package-changed.d.ts.map +1 -1
  102. package/build/lib/extension/package-changed.js +8 -15
  103. package/build/lib/extension/package-changed.js.map +1 -1
  104. package/build/lib/extension/plugin-config.d.ts +10 -52
  105. package/build/lib/extension/plugin-config.d.ts.map +1 -1
  106. package/build/lib/extension/plugin-config.js +11 -63
  107. package/build/lib/extension/plugin-config.js.map +1 -1
  108. package/build/lib/helpers/build.d.ts +22 -0
  109. package/build/lib/helpers/build.d.ts.map +1 -0
  110. package/build/lib/helpers/build.js +109 -0
  111. package/build/lib/helpers/build.js.map +1 -0
  112. package/build/lib/helpers/capability.d.ts +38 -0
  113. package/build/lib/helpers/capability.d.ts.map +1 -0
  114. package/build/lib/helpers/capability.js +128 -0
  115. package/build/lib/helpers/capability.js.map +1 -0
  116. package/build/lib/helpers/network.d.ts +14 -0
  117. package/build/lib/helpers/network.d.ts.map +1 -0
  118. package/build/lib/helpers/network.js +35 -0
  119. package/build/lib/helpers/network.js.map +1 -0
  120. package/build/lib/insecure-features.js +6 -6
  121. package/build/lib/insecure-features.js.map +1 -1
  122. package/build/lib/inspector-commands.d.ts +6 -0
  123. package/build/lib/inspector-commands.d.ts.map +1 -1
  124. package/build/lib/inspector-commands.js +6 -0
  125. package/build/lib/inspector-commands.js.map +1 -1
  126. package/build/lib/logger.d.ts +2 -3
  127. package/build/lib/logger.d.ts.map +1 -1
  128. package/build/lib/logger.js +2 -3
  129. package/build/lib/logger.js.map +1 -1
  130. package/build/lib/logsink.d.ts +13 -22
  131. package/build/lib/logsink.d.ts.map +1 -1
  132. package/build/lib/logsink.js +48 -103
  133. package/build/lib/logsink.js.map +1 -1
  134. package/build/lib/main.d.ts +15 -58
  135. package/build/lib/main.d.ts.map +1 -1
  136. package/build/lib/main.js +25 -425
  137. package/build/lib/main.js.map +1 -1
  138. package/build/lib/schema/arg-spec.d.ts +32 -107
  139. package/build/lib/schema/arg-spec.d.ts.map +1 -1
  140. package/build/lib/schema/arg-spec.js +11 -107
  141. package/build/lib/schema/arg-spec.js.map +1 -1
  142. package/build/lib/schema/cli-args-guards.d.ts +34 -0
  143. package/build/lib/schema/cli-args-guards.d.ts.map +1 -0
  144. package/build/lib/schema/cli-args-guards.js +49 -0
  145. package/build/lib/schema/cli-args-guards.js.map +1 -0
  146. package/build/lib/schema/cli-args.d.ts +3 -15
  147. package/build/lib/schema/cli-args.d.ts.map +1 -1
  148. package/build/lib/schema/cli-args.js +17 -107
  149. package/build/lib/schema/cli-args.js.map +1 -1
  150. package/build/lib/schema/cli-transformers.d.ts +15 -12
  151. package/build/lib/schema/cli-transformers.d.ts.map +1 -1
  152. package/build/lib/schema/cli-transformers.js +15 -45
  153. package/build/lib/schema/cli-transformers.js.map +1 -1
  154. package/build/lib/schema/format-errors.d.ts +28 -0
  155. package/build/lib/schema/format-errors.d.ts.map +1 -0
  156. package/build/lib/schema/format-errors.js +29 -0
  157. package/build/lib/schema/format-errors.js.map +1 -0
  158. package/build/lib/schema/index.d.ts +4 -2
  159. package/build/lib/schema/index.d.ts.map +1 -1
  160. package/build/lib/schema/index.js +2 -0
  161. package/build/lib/schema/index.js.map +1 -1
  162. package/build/lib/schema/keywords.d.ts +12 -20
  163. package/build/lib/schema/keywords.d.ts.map +1 -1
  164. package/build/lib/schema/keywords.js +6 -51
  165. package/build/lib/schema/keywords.js.map +1 -1
  166. package/build/lib/schema/schema.d.ts +106 -231
  167. package/build/lib/schema/schema.d.ts.map +1 -1
  168. package/build/lib/schema/schema.js +88 -358
  169. package/build/lib/schema/schema.js.map +1 -1
  170. package/build/lib/utils.d.ts +7 -267
  171. package/build/lib/utils.d.ts.map +1 -1
  172. package/build/lib/utils.js +10 -409
  173. package/build/lib/utils.js.map +1 -1
  174. package/lib/{appium.js → appium.ts} +297 -341
  175. package/lib/bidi-commands.ts +10 -14
  176. package/lib/bootstrap/appium-initializer.ts +212 -0
  177. package/lib/bootstrap/appium-main-runner.ts +172 -0
  178. package/lib/bootstrap/config-file.ts +178 -0
  179. package/lib/bootstrap/grid-v3-register.ts +250 -0
  180. package/lib/bootstrap/init-types.ts +31 -0
  181. package/lib/bootstrap/main-helpers.ts +223 -0
  182. package/lib/bootstrap/node-helpers.ts +180 -0
  183. package/lib/bootstrap/startup-config.ts +143 -0
  184. package/lib/cli/{args.js → args.ts} +45 -56
  185. package/lib/cli/driver-command.ts +122 -0
  186. package/lib/cli/{extension-command.js → extension-command.ts} +827 -906
  187. package/lib/cli/extension.ts +65 -0
  188. package/lib/cli/{parser.js → parser.ts} +93 -116
  189. package/lib/cli/plugin-command.ts +117 -0
  190. package/lib/cli/{setup-command.js → setup-command.ts} +59 -74
  191. package/lib/cli/utils.ts +97 -0
  192. package/lib/{constants.js → constants.ts} +30 -41
  193. package/lib/doctor/{doctor.js → doctor.ts} +82 -92
  194. package/lib/extension/driver-config.ts +165 -0
  195. package/lib/extension/{extension-config.js → extension-config.ts} +291 -405
  196. package/lib/extension/index.ts +143 -0
  197. package/lib/extension/manifest-migrations.ts +57 -0
  198. package/lib/extension/manifest.ts +369 -0
  199. package/lib/extension/{package-changed.js → package-changed.ts} +9 -18
  200. package/lib/extension/plugin-config.ts +62 -0
  201. package/lib/helpers/build.ts +111 -0
  202. package/lib/helpers/capability.ts +171 -0
  203. package/lib/helpers/network.ts +30 -0
  204. package/lib/insecure-features.ts +1 -1
  205. package/lib/inspector-commands.ts +6 -1
  206. package/lib/{logger.js → logger.ts} +1 -2
  207. package/lib/{logsink.js → logsink.ts} +91 -137
  208. package/lib/main.ts +60 -0
  209. package/lib/schema/arg-spec.ts +131 -0
  210. package/lib/schema/cli-args-guards.ts +67 -0
  211. package/lib/schema/cli-args.ts +171 -0
  212. package/lib/schema/cli-transformers.ts +83 -0
  213. package/lib/schema/format-errors.ts +43 -0
  214. package/lib/schema/index.ts +4 -0
  215. package/lib/schema/keywords.ts +96 -0
  216. package/lib/schema/schema.ts +448 -0
  217. package/lib/utils.ts +73 -0
  218. package/package.json +17 -18
  219. package/scripts/autoinstall-extensions.js +3 -0
  220. package/build/lib/config-file.d.ts +0 -100
  221. package/build/lib/config-file.d.ts.map +0 -1
  222. package/build/lib/config-file.js.map +0 -1
  223. package/build/lib/config.d.ts +0 -70
  224. package/build/lib/config.d.ts.map +0 -1
  225. package/build/lib/config.js +0 -390
  226. package/build/lib/config.js.map +0 -1
  227. package/build/lib/grid-register.d.ts +0 -10
  228. package/build/lib/grid-register.d.ts.map +0 -1
  229. package/build/lib/grid-register.js +0 -134
  230. package/build/lib/grid-register.js.map +0 -1
  231. package/lib/cli/driver-command.js +0 -174
  232. package/lib/cli/extension.js +0 -74
  233. package/lib/cli/plugin-command.js +0 -164
  234. package/lib/cli/utils.js +0 -91
  235. package/lib/config-file.js +0 -228
  236. package/lib/config.js +0 -389
  237. package/lib/extension/driver-config.js +0 -245
  238. package/lib/extension/index.js +0 -169
  239. package/lib/extension/manifest-migrations.js +0 -136
  240. package/lib/extension/manifest.js +0 -550
  241. package/lib/extension/plugin-config.js +0 -112
  242. package/lib/grid-register.js +0 -146
  243. package/lib/main.js +0 -545
  244. package/lib/schema/arg-spec.js +0 -229
  245. package/lib/schema/cli-args.js +0 -254
  246. package/lib/schema/cli-transformers.js +0 -113
  247. package/lib/schema/index.js +0 -2
  248. package/lib/schema/keywords.js +0 -136
  249. package/lib/schema/schema.js +0 -725
  250. package/lib/utils.js +0 -512
package/build/lib/main.js CHANGED
@@ -1,447 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
3
  Object.defineProperty(exports, "__esModule", { value: true });
7
4
  exports.resolveAppiumHome = exports.validate = exports.getSchema = exports.finalizeSchema = exports.readConfigFile = void 0;
8
- exports.main = main;
9
5
  exports.init = init;
10
- const ws_1 = require("ws");
11
- const logsink_1 = require("./logsink"); // this import needs to come first since it sets up global npmlog
12
- const logger_1 = __importDefault(require("./logger")); // logger needs to remain second
13
- const base_driver_1 = require("@appium/base-driver");
6
+ exports.main = main;
7
+ require("./logsink"); // must run first: global npmlog / log sink setup (see logsink module)
8
+ require("./logger"); // load Appium logger immediately after logsink (order matters for log wiring)
14
9
  const support_1 = require("@appium/support");
15
- const lodash_1 = __importDefault(require("lodash"));
16
- const appium_1 = require("./appium");
17
- const extension_1 = require("./cli/extension");
18
- const setup_command_1 = require("./cli/setup-command");
19
- const parser_1 = require("./cli/parser");
20
- const config_1 = require("./config");
21
- const config_file_1 = require("./config-file");
22
- const extension_2 = require("./extension");
23
- const constants_1 = require("./constants");
24
- const grid_register_1 = __importDefault(require("./grid-register"));
25
- const schema_1 = require("./schema/schema");
26
- const utils_1 = require("./utils");
27
- const node_net_1 = __importDefault(require("node:net"));
28
- const extension_command_1 = require("./cli/extension-command");
29
- const { resolveAppiumHome } = support_1.env;
30
- exports.resolveAppiumHome = resolveAppiumHome;
31
- /*
32
- * By default Node.js shows a warning
33
- * if the actual amount of listeners exceeds the maximum amount,
34
- * which equals to 10 by default. It is known that multiple drivers/plugins
35
- * may assign custom listeners to the server process to handle, for example,
36
- * the graceful shutdown scenario.
37
- */
38
- const MAX_SERVER_PROCESS_LISTENERS = 100;
39
- /**
40
- *
41
- * @param {ParsedArgs} args
42
- * @param {boolean} [throwInsteadOfExit]
43
- */
44
- async function preflightChecks(args, throwInsteadOfExit = false) {
45
- try {
46
- (0, config_1.checkNodeOk)();
47
- if (args.longStacktrace) {
48
- Error.stackTraceLimit = constants_1.LONG_STACKTRACE_LIMIT;
49
- }
50
- if (args.showBuildInfo) {
51
- await (0, config_1.showBuildInfo)();
52
- process.exit(0);
53
- }
54
- (0, schema_1.validate)(args);
55
- if (args.tmpDir) {
56
- await (0, config_1.requireDir)(args.tmpDir, !args.noPermsCheck, 'tmpDir argument value');
57
- }
58
- }
59
- catch (err) {
60
- logger_1.default.error(err.message.red);
61
- if (throwInsteadOfExit) {
62
- throw err;
63
- }
64
- process.exit(1);
65
- }
66
- }
67
- /**
68
- * @param {Args} args
69
- */
70
- function logNonDefaultArgsWarning(args) {
71
- logger_1.default.info('Non-default server args:');
72
- (0, utils_1.inspect)(args);
73
- }
74
- /**
75
- * @param {Args['defaultCapabilities']} caps
76
- */
77
- function logDefaultCapabilitiesWarning(caps) {
78
- logger_1.default.info('Default capabilities, which will be added to each request ' +
79
- 'unless overridden by desired capabilities:');
80
- (0, utils_1.inspect)(caps);
81
- }
82
- /**
83
- * @param {ParsedArgs} args
84
- */
85
- async function logStartupInfo(args) {
86
- let welcome = `Welcome to Appium v${config_1.APPIUM_VER}`;
87
- let appiumRev = await (0, config_1.getGitRev)();
88
- if (appiumRev) {
89
- welcome += ` (REV ${appiumRev})`;
90
- }
91
- logger_1.default.info(welcome);
92
- let showArgs = (0, config_1.getNonDefaultServerArgs)(args);
93
- if (lodash_1.default.size(showArgs)) {
94
- logNonDefaultArgsWarning(showArgs);
95
- }
96
- if (!lodash_1.default.isEmpty(args.defaultCapabilities)) {
97
- logDefaultCapabilitiesWarning(args.defaultCapabilities);
98
- }
99
- // TODO: bring back loglevel reporting below once logger is flushed out
100
- // logger.info('Console LogLevel: ' + logger.transports.console.level);
101
- // if (logger.transports.file) {
102
- // logger.info('File LogLevel: ' + logger.transports.file.level);
103
- // }
104
- }
105
- /**
106
- * Gets a list of `updateServer` functions from all extensions
107
- * @param {DriverNameMap} driverClasses
108
- * @param {PluginNameMap} pluginClasses
109
- * @returns {import('@appium/types').UpdateServerCallback[]}
110
- */
111
- function getServerUpdaters(driverClasses, pluginClasses) {
112
- return lodash_1.default.compact(lodash_1.default.map([...driverClasses.keys(), ...pluginClasses.keys()], 'updateServer'));
113
- }
114
- /**
115
- * Makes a big `MethodMap` from all the little `MethodMap`s in the extensions
116
- * @param {DriverNameMap} driverClasses
117
- * @param {PluginNameMap} pluginClasses
118
- * @returns {import('@appium/types').MethodMap<import('@appium/types').Driver>}
119
- */
120
- function getExtraMethodMap(driverClasses, pluginClasses) {
121
- return [...driverClasses.keys(), ...pluginClasses.keys()].reduce((map, klass) => ({
122
- ...map,
123
- ...(klass.newMethodMap ?? {}),
124
- }), {});
125
- }
126
- /**
127
- * @param {string?} [appiumHomeFromArgs] - Appium home value retrieved from progrmmatic server args
128
- * @returns {string}
129
- */
130
- function determineAppiumHomeSource(appiumHomeFromArgs) {
131
- if (!lodash_1.default.isNil(appiumHomeFromArgs)) {
132
- return 'appiumHome config value';
133
- }
134
- else if (process.env.APPIUM_HOME) {
135
- return 'APPIUM_HOME environment variable';
136
- }
137
- return 'autodetected Appium home path';
138
- }
10
+ const appium_initializer_1 = require("./bootstrap/appium-initializer");
11
+ const appium_main_runner_1 = require("./bootstrap/appium-main-runner");
12
+ const initializer = new appium_initializer_1.AppiumInitializer();
13
+ const mainRunner = new appium_main_runner_1.AppiumMainRunner();
139
14
  /**
140
15
  * Initializes Appium, but does not start the server.
141
16
  *
142
17
  * Use this to get at the configuration schema.
143
18
  *
144
19
  * If `args` contains a non-empty `subcommand` which is not `server`, this function will return an empty object.
145
- *
146
- * @template {CliCommand} [Cmd=ServerCommand]
147
- * @template {CliExtensionSubcommand|void} [SubCmd=void]
148
- * @param {Args<Cmd, SubCmd>} [args] - Partial args (programmatic usage only)
149
- * @returns {Promise<InitResult<Cmd>>}
150
- * @example
151
- * import {init, getSchema} from 'appium';
152
- * const options = {}; // config object
153
- * await init(options);
154
- * const schema = getSchema(); // entire config schema including plugins and drivers
155
20
  */
156
21
  async function init(args) {
157
- const appiumHome = args?.appiumHome ?? (await resolveAppiumHome());
158
- const appiumHomeSourceName = determineAppiumHomeSource(args?.appiumHome);
159
- // We verify the writeability later based on requested server arguments
160
- // Here we just need to make sure the path exists and is a folder
161
- await (0, config_1.requireDir)(appiumHome, false, appiumHomeSourceName);
162
- (0, utils_1.adjustNodePath)();
163
- const { driverConfig, pluginConfig } = await (0, extension_2.loadExtensions)(appiumHome);
164
- const parser = (0, parser_1.getParser)();
165
- let throwInsteadOfExit = false;
166
- /** @type {Args<Cmd, SubCmd>} */
167
- let preConfigArgs;
168
- if (args) {
169
- // if we have a containing package instead of running as a CLI process,
170
- // that package might not appreciate us calling 'process.exit' willy-
171
- // nilly, so give it the option to have us throw instead of exit
172
- if (args.throwInsteadOfExit) {
173
- throwInsteadOfExit = true;
174
- // but remove it since it's not a real server arg per se
175
- delete args.throwInsteadOfExit;
176
- }
177
- preConfigArgs = { ...args, subcommand: args.subcommand ?? constants_1.SERVER_SUBCOMMAND };
178
- // Normalize hyphenated keys to dest form so programmatic args match CLI shape
179
- parser_1.ArgParser.normalizeServerArgs(preConfigArgs);
180
- }
181
- else {
182
- // otherwise parse from CLI
183
- preConfigArgs = /** @type {Args<Cmd, SubCmd>} */ (parser.parseArgs());
184
- }
185
- const configResult = await (0, config_file_1.readConfigFile)(preConfigArgs.configFile);
186
- if (!lodash_1.default.isEmpty(configResult.errors)) {
187
- throw new Error(`Errors in config file ${configResult.filepath}:\n ${configResult.reason ?? configResult.errors}`);
188
- }
189
- // merge config and apply defaults.
190
- // the order of precedence is:
191
- // 1. command line args
192
- // 2. config file
193
- // 3. defaults from config file.
194
- if ((0, utils_1.isServerCommandArgs)(preConfigArgs)) {
195
- const defaults = (0, schema_1.getDefaultsForSchema)(false);
196
- /** @type {ParsedArgs} */
197
- const serverArgs = lodash_1.default.defaultsDeep({}, preConfigArgs, configResult.config?.server, defaults);
198
- if (preConfigArgs.showConfig) {
199
- (0, config_1.showConfig)((0, config_1.getNonDefaultServerArgs)(preConfigArgs), configResult, defaults, serverArgs);
200
- return /** @type {InitResult<Cmd>} */ ({});
201
- }
202
- if (preConfigArgs.showDebugInfo) {
203
- await (0, config_1.showDebugInfo)({
204
- driverConfig,
205
- pluginConfig,
206
- appiumHome,
207
- });
208
- return /** @type {InitResult<Cmd>} */ ({});
209
- }
210
- await (0, logsink_1.init)(serverArgs);
211
- if (serverArgs.logFilters) {
212
- const { issues, rules } = await logger_1.default.unwrap().loadSecureValuesPreprocessingRules(serverArgs.logFilters);
213
- const argToLog = lodash_1.default.truncate(JSON.stringify(serverArgs.logFilters), {
214
- length: 150
215
- });
216
- if (!lodash_1.default.isEmpty(issues)) {
217
- throw new Error(`The log filtering rules config ${argToLog} has issues: ` +
218
- JSON.stringify(issues, null, 2));
219
- }
220
- if (lodash_1.default.isEmpty(rules)) {
221
- logger_1.default.warn(`Found no log filtering rules in the ${argToLog} config. ` +
222
- `Is that expected?`);
223
- }
224
- else {
225
- // Filtering aims to "hide" these values from the log,
226
- // so it would be nice to not show them in the log as well.
227
- logger_1.default.info(`Loaded ${support_1.util.pluralize('filtering rule', rules.length, true)}`);
228
- }
229
- }
230
- if (!serverArgs.noPermsCheck) {
231
- await (0, config_1.requireDir)(appiumHome, true, appiumHomeSourceName);
232
- }
233
- const appiumDriver = new appium_1.AppiumDriver(
234
- /** @type {import('@appium/types').DriverOpts<import('./appium').AppiumDriverConstraints>} */ (serverArgs));
235
- // set the config on the umbrella driver so it can match drivers to caps
236
- appiumDriver.driverConfig = driverConfig;
237
- await preflightChecks(serverArgs, throwInsteadOfExit);
238
- return /** @type {InitResult<Cmd>} */ ({
239
- appiumDriver,
240
- parsedArgs: serverArgs,
241
- driverConfig,
242
- pluginConfig,
243
- appiumHome,
244
- });
245
- }
246
- else if ((0, utils_1.isSetupCommandArgs)(preConfigArgs)) {
247
- await (0, setup_command_1.runSetupCommand)(preConfigArgs, driverConfig, pluginConfig);
248
- return /** @type {InitResult<Cmd>} */ ({});
249
- }
250
- else {
251
- await (0, config_1.requireDir)(appiumHome, true, appiumHomeSourceName);
252
- if ((0, utils_1.isExtensionCommandArgs)(preConfigArgs)) {
253
- // if the user has requested the 'driver' CLI, don't run the normal server,
254
- // but instead pass control to the driver CLI
255
- if ((0, utils_1.isDriverCommandArgs)(preConfigArgs)) {
256
- await (0, extension_1.runExtensionCommand)(preConfigArgs, driverConfig);
257
- }
258
- if ((0, utils_1.isPluginCommandArgs)(preConfigArgs)) {
259
- await (0, extension_1.runExtensionCommand)(preConfigArgs, pluginConfig);
260
- }
261
- if ((0, utils_1.isDriverCommandArgs)(preConfigArgs) || (0, utils_1.isPluginCommandArgs)(preConfigArgs)) {
262
- // @ts-ignore The linter suggest using dot
263
- const cmd = preConfigArgs.driverCommand || preConfigArgs.pluginCommand;
264
- if (cmd === 'install') {
265
- await (0, extension_command_1.injectAppiumSymlinks)(driverConfig, pluginConfig, logger_1.default);
266
- }
267
- }
268
- }
269
- return /** @type {InitResult<Cmd>} */ ({});
270
- }
22
+ return initializer.init(args);
271
23
  }
272
24
  /**
273
- * Prints the actual server address and the list of URLs that
274
- * could be used to connect to the current server.
275
- * Properly replaces broadcast addresses in client URLs.
276
- *
277
- * @param {string} url The URL the server is listening on
278
- */
279
- function logServerAddress(url) {
280
- const urlObj = new URL(url);
281
- logger_1.default.info(`Appium REST http interface listener started on ${url}`);
282
- if (!(0, utils_1.isBroadcastIp)(urlObj.hostname)) {
283
- return;
284
- }
285
- const interfaces = (0, utils_1.fetchInterfaces)(urlObj.hostname === utils_1.V4_BROADCAST_IP ? 4 : 6);
286
- const toLabel = (/** @type {import('node:os').NetworkInterfaceInfo} */ iface) => {
287
- const href = urlObj.href.replace(urlObj.hostname, iface.address);
288
- return iface.internal ? `${href} (only accessible from the same host)` : href;
289
- };
290
- logger_1.default.info(`You can provide the following ${interfaces.length === 1 ? 'URL' : 'URLs'} ` +
291
- `in your client code to connect to this server:\n` +
292
- interfaces.map((iface) => `\t${toLabel(iface)}`).join('\n'));
293
- }
294
- /**
295
- * Initializes Appium's config. Starts server if appropriate and resolves the
296
- * server instance if so; otherwise resolves w/ `undefined`.
297
- * @template {CliCommand} [Cmd=ServerCommand]
298
- * @template {CliExtensionSubcommand|void} [SubCmd=void]
299
- * @param {Args<Cmd, SubCmd>} [args] - Arguments from CLI or otherwise
300
- * @returns {Promise<Cmd extends ServerCommand ? import('@appium/types').AppiumServer : void>}
25
+ * Initializes Appium's config. Starts server if appropriate and resolves the
26
+ * server instance if so; otherwise resolves with `undefined`.
301
27
  */
302
28
  async function main(args) {
303
29
  const initResult = await init(args);
304
- if (lodash_1.default.isEmpty(initResult)) {
305
- // if this branch is taken, we've run a different subcommand, so there's nothing
306
- // left to do here.
307
- return /** @type {Cmd extends ServerCommand ? import('@appium/types').AppiumServer : void} */ (undefined);
308
- }
309
- const { appiumDriver, pluginConfig, driverConfig, parsedArgs, appiumHome } =
310
- /** @type {InitResult<ServerCommand>} */ (initResult);
311
- const pluginClasses = await (0, extension_2.getActivePlugins)(pluginConfig, parsedArgs.pluginsImportChunkSize, parsedArgs.usePlugins);
312
- // set the active plugins on the umbrella driver so it can use them for commands
313
- appiumDriver.pluginClasses = pluginClasses;
314
- await logStartupInfo(parsedArgs);
315
- // handle the insecure feature configuration since some features may apply globally
316
- appiumDriver.configureGlobalFeatures();
317
- const appiumHomeSourceName = determineAppiumHomeSource(args?.appiumHome);
318
- logger_1.default.debug(`The ${appiumHomeSourceName}: ${appiumHome}`);
319
- let routeConfiguringFunction = (0, base_driver_1.routeConfiguringFunction)(appiumDriver);
320
- const driverClasses = await (0, extension_2.getActiveDrivers)(driverConfig, parsedArgs.driversImportChunkSize, parsedArgs.useDrivers);
321
- const serverUpdaters = getServerUpdaters(driverClasses, pluginClasses);
322
- const extraMethodMap = getExtraMethodMap(driverClasses, pluginClasses);
323
- /** @type {import('@appium/base-driver').ServerOpts} */
324
- const serverOpts = {
325
- routeConfiguringFunction,
326
- port: parsedArgs.port,
327
- hostname: parsedArgs.address,
328
- allowCors: parsedArgs.allowCors,
329
- basePath: parsedArgs.basePath,
330
- serverUpdaters,
331
- extraMethodMap,
332
- cliArgs: parsedArgs,
333
- };
334
- const normalizedBasePath = (0, base_driver_1.normalizeBasePath)(parsedArgs.basePath);
335
- for (const timeoutArgName of ['keepAliveTimeout', 'requestTimeout']) {
336
- if (lodash_1.default.isInteger(parsedArgs[timeoutArgName])) {
337
- serverOpts[timeoutArgName] = parsedArgs[timeoutArgName] * 1000;
338
- }
339
- }
340
- let server;
341
- const bidiServer = new ws_1.WebSocketServer({ noServer: true });
342
- bidiServer.on('connection', appiumDriver.onBidiConnection.bind(appiumDriver));
343
- bidiServer.on('error', appiumDriver.onBidiServerError.bind(appiumDriver));
344
- try {
345
- server = await (0, base_driver_1.server)(serverOpts);
346
- const bidiBasePath = `${normalizedBasePath}${constants_1.BIDI_BASE_PATH}`;
347
- server.addWebSocketHandler(bidiBasePath, bidiServer);
348
- server.addWebSocketHandler(`${bidiBasePath}/:sessionId`, bidiServer);
349
- }
350
- catch (err) {
351
- logger_1.default.error(`Could not configure Appium server. It's possible that a driver or plugin tried ` +
352
- `to update the server and failed. Original error: ${err.message}`);
353
- logger_1.default.debug(err.stack);
354
- return process.exit(1);
355
- }
356
- if (parsedArgs.allowCors) {
357
- logger_1.default.warn('You have enabled CORS requests from any host. Be careful not ' +
358
- 'to visit sites which could maliciously try to start Appium ' +
359
- 'sessions on your machine');
360
- }
361
- appiumDriver.server = server;
362
- try {
363
- // configure as node on grid, if necessary
364
- // falsy values should not cause this to run
365
- if (parsedArgs.nodeconfig) {
366
- await (0, grid_register_1.default)(parsedArgs.nodeconfig, parsedArgs.address, parsedArgs.port, normalizedBasePath);
367
- }
368
- }
369
- catch (err) {
370
- await server.close();
371
- throw err;
372
- }
373
- process.setMaxListeners(MAX_SERVER_PROCESS_LISTENERS);
374
- for (const signal of ['SIGINT', 'SIGTERM']) {
375
- process.once(signal, async function onSignal() {
376
- logger_1.default.info(`Received ${signal} - shutting down`);
377
- try {
378
- await appiumDriver.shutdown(`The process has received ${signal} signal`);
379
- await server.close();
380
- process.exit(0);
381
- }
382
- catch (e) {
383
- logger_1.default.warn(e);
384
- process.exit(1);
385
- }
386
- });
387
- }
388
- const protocol = server.isSecure() ? 'https' : 'http';
389
- const address = node_net_1.default.isIPv6(parsedArgs.address) ? `[${parsedArgs.address}]` : parsedArgs.address;
390
- logServerAddress(`${protocol}://${address}:${parsedArgs.port}${normalizedBasePath}`);
391
- driverConfig.print();
392
- pluginConfig.print([...pluginClasses.values()]);
393
- return /** @type {Cmd extends ServerCommand ? import('@appium/types').AppiumServer : void} */ (server);
30
+ return mainRunner.run(initResult, args);
394
31
  }
395
- // NOTE: this is here for backwards compat for any scripts referencing `main.js` directly
396
- // (more specifically, `build/lib/main.js`)
397
- // the executable is now `../index.js`, so that module will typically be `require.main`.
32
+ // NOTE: backwards compat for scripts referencing `build/lib/main.js` directly.
33
+ // The executable is `../index.js`, so that module will typically be `require.main`.
398
34
  if (require.main === module) {
399
- main();
400
- }
401
- // everything below here is intended to be a public API.
402
- var config_file_2 = require("./config-file");
403
- Object.defineProperty(exports, "readConfigFile", { enumerable: true, get: function () { return config_file_2.readConfigFile; } });
404
- var schema_2 = require("./schema/schema");
405
- Object.defineProperty(exports, "finalizeSchema", { enumerable: true, get: function () { return schema_2.finalizeSchema; } });
406
- Object.defineProperty(exports, "getSchema", { enumerable: true, get: function () { return schema_2.getSchema; } });
407
- Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return schema_2.validate; } });
408
- /**
409
- * @typedef {import('@appium/types').DriverType} DriverType
410
- * @typedef {import('@appium/types').PluginType} PluginType
411
- * @typedef {import('@appium/types').DriverClass} DriverClass
412
- * @typedef {import('@appium/types').PluginClass} PluginClass
413
- * @typedef {import('appium/types').CliCommand} CliCommand
414
- * @typedef {import('appium/types').CliExtensionSubcommand} CliExtensionSubcommand
415
- * @typedef {import('appium/types').CliExtensionCommand} CliExtensionCommand
416
- * @typedef {import('appium/types').CliCommandServer} ServerCommand
417
- * @typedef {import('appium/types').CliCommandDriver} DriverCommand
418
- * @typedef {import('appium/types').CliCommandPlugin} PluginCommand
419
- * @typedef {import('appium/types').CliCommandSetup} SetupCommand
420
- * @typedef {import('./extension').DriverNameMap} DriverNameMap
421
- * @typedef {import('./extension').PluginNameMap} PluginNameMap
422
- */
423
- /**
424
- * Literally an empty object
425
- * @typedef { {} } ExtCommandInitResult
426
- */
427
- /**
428
- * @typedef ServerInitData
429
- * @property {import('./appium').AppiumDriver} appiumDriver - The Appium driver
430
- * @property {import('appium/types').ParsedArgs} parsedArgs - The parsed arguments
431
- * @property {string} appiumHome - The full path to the Appium home folder
432
- */
433
- /**
434
- * @template {CliCommand} Cmd
435
- * @typedef {Cmd extends ServerCommand ? ServerInitData & import('./extension').ExtensionConfigs : ExtCommandInitResult} InitResult
436
- */
437
- /**
438
- * @template {CliCommand} [Cmd=ServerCommand]
439
- * @template {CliExtensionSubcommand|void} [SubCmd=void]
440
- * @typedef {import('appium/types').Args<Cmd, SubCmd>} Args
441
- */
442
- /**
443
- * @template {CliCommand} [Cmd=ServerCommand]
444
- * @template {CliExtensionSubcommand|void} [SubCmd=void]
445
- * @typedef {import('appium/types').ParsedArgs<Cmd, SubCmd>} ParsedArgs
446
- */
35
+ void main();
36
+ }
37
+ // Re-export helpers from the same package so `import { … } from 'appium'` stays a supported
38
+ // programmatic API (this file is the package `types` entry). The monorepo does not import these
39
+ // from `'appium'`; consumers use local paths or `@appium/support`. Dropping them is semver-major.
40
+ var config_file_1 = require("./bootstrap/config-file");
41
+ Object.defineProperty(exports, "readConfigFile", { enumerable: true, get: function () { return config_file_1.readConfigFile; } });
42
+ var schema_1 = require("./schema/schema");
43
+ Object.defineProperty(exports, "finalizeSchema", { enumerable: true, get: function () { return schema_1.finalizeSchema; } });
44
+ Object.defineProperty(exports, "getSchema", { enumerable: true, get: function () { return schema_1.getSchema; } });
45
+ Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return schema_1.validate; } });
46
+ exports.resolveAppiumHome = support_1.env.resolveAppiumHome;
447
47
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../lib/main.ts"],"names":[],"mappings":";;;;AA2BA,oBAKC;AAMD,oBAMC;AA1CD,qBAAmB,CAAC,sEAAsE;AAC1F,oBAAkB,CAAC,8EAA8E;AACjG,6CAAoC;AASpC,uEAAiE;AACjE,uEAAgE;AAGhE,MAAM,WAAW,GAAG,IAAI,sCAAiB,EAAE,CAAC;AAC5C,MAAM,UAAU,GAAG,IAAI,qCAAgB,EAAE,CAAC;AAE1C;;;;;;GAMG;AACI,KAAK,UAAU,IAAI,CAGxB,IAAwB;IACxB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,IAAI,CAGxB,IAAwB;IACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,+EAA+E;AAC/E,oFAAoF;AACpF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,KAAK,IAAI,EAAE,CAAC;AACd,CAAC;AAED,4FAA4F;AAC5F,gGAAgG;AAChG,kGAAkG;AAClG,uDAAuD;AAA/C,6GAAA,cAAc,OAAA;AACtB,0CAAoE;AAA5D,wGAAA,cAAc,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAC9B,QAAA,iBAAiB,GAAG,aAAG,CAAC,iBAAiB,CAAC"}