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.
Files changed (208) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +149 -58
  3. package/build/lib/appium.d.ts +229 -0
  4. package/build/lib/appium.d.ts.map +1 -0
  5. package/build/lib/appium.js +677 -449
  6. package/build/lib/appium.js.map +1 -0
  7. package/build/lib/cli/args.d.ts +17 -0
  8. package/build/lib/cli/args.d.ts.map +1 -0
  9. package/build/lib/cli/args.js +263 -300
  10. package/build/lib/cli/args.js.map +1 -0
  11. package/build/lib/cli/driver-command.d.ts +102 -0
  12. package/build/lib/cli/driver-command.d.ts.map +1 -0
  13. package/build/lib/cli/driver-command.js +131 -81
  14. package/build/lib/cli/driver-command.js.map +1 -0
  15. package/build/lib/cli/extension-command.d.ts +402 -0
  16. package/build/lib/cli/extension-command.d.ts.map +1 -0
  17. package/build/lib/cli/extension-command.js +799 -383
  18. package/build/lib/cli/extension-command.js.map +1 -0
  19. package/build/lib/cli/extension.d.ts +23 -0
  20. package/build/lib/cli/extension.d.ts.map +1 -0
  21. package/build/lib/cli/extension.js +70 -68
  22. package/build/lib/cli/extension.js.map +1 -0
  23. package/build/lib/cli/parser.d.ts +84 -0
  24. package/build/lib/cli/parser.d.ts.map +1 -0
  25. package/build/lib/cli/parser.js +252 -148
  26. package/build/lib/cli/parser.js.map +1 -0
  27. package/build/lib/cli/plugin-command.d.ts +99 -0
  28. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  29. package/build/lib/cli/plugin-command.js +125 -81
  30. package/build/lib/cli/plugin-command.js.map +1 -0
  31. package/build/lib/cli/utils.d.ts +29 -0
  32. package/build/lib/cli/utils.d.ts.map +1 -0
  33. package/build/lib/cli/utils.js +72 -51
  34. package/build/lib/cli/utils.js.map +1 -0
  35. package/build/lib/config-file.d.ts +100 -0
  36. package/build/lib/config-file.d.ts.map +1 -0
  37. package/build/lib/config-file.js +207 -0
  38. package/build/lib/config-file.js.map +1 -0
  39. package/build/lib/config.d.ts +49 -0
  40. package/build/lib/config.d.ts.map +1 -0
  41. package/build/lib/config.js +262 -223
  42. package/build/lib/config.js.map +1 -0
  43. package/build/lib/constants.d.ts +56 -0
  44. package/build/lib/constants.d.ts.map +1 -0
  45. package/build/lib/constants.js +73 -0
  46. package/build/lib/constants.js.map +1 -0
  47. package/build/lib/extension/driver-config.d.ts +82 -0
  48. package/build/lib/extension/driver-config.d.ts.map +1 -0
  49. package/build/lib/extension/driver-config.js +210 -0
  50. package/build/lib/extension/driver-config.js.map +1 -0
  51. package/build/lib/extension/extension-config.d.ts +270 -0
  52. package/build/lib/extension/extension-config.d.ts.map +1 -0
  53. package/build/lib/extension/extension-config.js +601 -0
  54. package/build/lib/extension/extension-config.js.map +1 -0
  55. package/build/lib/extension/index.d.ts +48 -0
  56. package/build/lib/extension/index.d.ts.map +1 -0
  57. package/build/lib/extension/index.js +105 -0
  58. package/build/lib/extension/index.js.map +1 -0
  59. package/build/lib/extension/manifest-migrations.d.ts +27 -0
  60. package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
  61. package/build/lib/extension/manifest-migrations.js +134 -0
  62. package/build/lib/extension/manifest-migrations.js.map +1 -0
  63. package/build/lib/extension/manifest.d.ts +145 -0
  64. package/build/lib/extension/manifest.d.ts.map +1 -0
  65. package/build/lib/extension/manifest.js +528 -0
  66. package/build/lib/extension/manifest.js.map +1 -0
  67. package/build/lib/extension/package-changed.d.ts +11 -0
  68. package/build/lib/extension/package-changed.d.ts.map +1 -0
  69. package/build/lib/extension/package-changed.js +62 -0
  70. package/build/lib/extension/package-changed.js.map +1 -0
  71. package/build/lib/extension/plugin-config.d.ts +56 -0
  72. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  73. package/build/lib/extension/plugin-config.js +102 -0
  74. package/build/lib/extension/plugin-config.js.map +1 -0
  75. package/build/lib/grid-register.d.ts +10 -0
  76. package/build/lib/grid-register.d.ts.map +1 -0
  77. package/build/lib/grid-register.js +122 -144
  78. package/build/lib/grid-register.js.map +1 -0
  79. package/build/lib/logger.d.ts +3 -0
  80. package/build/lib/logger.d.ts.map +1 -0
  81. package/build/lib/logger.js +5 -17
  82. package/build/lib/logger.js.map +1 -0
  83. package/build/lib/logsink.d.ts +4 -0
  84. package/build/lib/logsink.d.ts.map +1 -0
  85. package/build/lib/logsink.js +189 -184
  86. package/build/lib/logsink.js.map +1 -0
  87. package/build/lib/main.d.ts +62 -0
  88. package/build/lib/main.d.ts.map +1 -0
  89. package/build/lib/main.js +406 -234
  90. package/build/lib/main.js.map +1 -0
  91. package/build/lib/schema/arg-spec.d.ts +143 -0
  92. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  93. package/build/lib/schema/arg-spec.js +164 -0
  94. package/build/lib/schema/arg-spec.js.map +1 -0
  95. package/build/lib/schema/cli-args.d.ts +19 -0
  96. package/build/lib/schema/cli-args.d.ts.map +1 -0
  97. package/build/lib/schema/cli-args.js +220 -0
  98. package/build/lib/schema/cli-args.js.map +1 -0
  99. package/build/lib/schema/cli-transformers.d.ts +5 -0
  100. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  101. package/build/lib/schema/cli-transformers.js +124 -0
  102. package/build/lib/schema/cli-transformers.js.map +1 -0
  103. package/build/lib/schema/index.d.ts +3 -0
  104. package/build/lib/schema/index.d.ts.map +1 -0
  105. package/build/lib/schema/index.js +19 -0
  106. package/build/lib/schema/index.js.map +1 -0
  107. package/build/lib/schema/keywords.d.ts +24 -0
  108. package/build/lib/schema/keywords.d.ts.map +1 -0
  109. package/build/lib/schema/keywords.js +128 -0
  110. package/build/lib/schema/keywords.js.map +1 -0
  111. package/build/lib/schema/schema.d.ts +260 -0
  112. package/build/lib/schema/schema.d.ts.map +1 -0
  113. package/build/lib/schema/schema.js +640 -0
  114. package/build/lib/schema/schema.js.map +1 -0
  115. package/build/lib/utils.d.ts +276 -0
  116. package/build/lib/utils.d.ts.map +1 -0
  117. package/build/lib/utils.js +372 -192
  118. package/build/lib/utils.js.map +1 -0
  119. package/build/types/cli.d.ts +134 -0
  120. package/build/types/cli.d.ts.map +1 -0
  121. package/build/types/cli.js +3 -0
  122. package/build/types/cli.js.map +1 -0
  123. package/build/types/index.d.ts +15 -0
  124. package/build/types/index.d.ts.map +1 -0
  125. package/build/types/index.js +19 -0
  126. package/build/types/index.js.map +1 -0
  127. package/build/types/manifest/base.d.ts +135 -0
  128. package/build/types/manifest/base.d.ts.map +1 -0
  129. package/build/types/manifest/base.js +3 -0
  130. package/build/types/manifest/base.js.map +1 -0
  131. package/build/types/manifest/index.d.ts +21 -0
  132. package/build/types/manifest/index.d.ts.map +1 -0
  133. package/build/types/manifest/index.js +42 -0
  134. package/build/types/manifest/index.js.map +1 -0
  135. package/build/types/manifest/v3.d.ts +139 -0
  136. package/build/types/manifest/v3.d.ts.map +1 -0
  137. package/build/types/manifest/v3.js +3 -0
  138. package/build/types/manifest/v3.js.map +1 -0
  139. package/build/types/manifest/v4.d.ts +139 -0
  140. package/build/types/manifest/v4.d.ts.map +1 -0
  141. package/build/types/manifest/v4.js +3 -0
  142. package/build/types/manifest/v4.js.map +1 -0
  143. package/driver.d.ts +1 -0
  144. package/driver.js +14 -0
  145. package/index.js +11 -0
  146. package/lib/appium.js +545 -188
  147. package/lib/cli/args.js +275 -407
  148. package/lib/cli/driver-command.js +132 -24
  149. package/lib/cli/extension-command.js +751 -272
  150. package/lib/cli/extension.js +38 -19
  151. package/lib/cli/parser.js +267 -95
  152. package/lib/cli/plugin-command.js +122 -22
  153. package/lib/cli/utils.js +24 -10
  154. package/lib/config-file.js +220 -0
  155. package/lib/config.js +243 -132
  156. package/lib/constants.js +79 -0
  157. package/lib/extension/driver-config.js +247 -0
  158. package/lib/extension/extension-config.js +709 -0
  159. package/lib/extension/index.js +116 -0
  160. package/lib/extension/manifest-migrations.js +136 -0
  161. package/lib/extension/manifest.js +580 -0
  162. package/lib/extension/package-changed.js +64 -0
  163. package/lib/extension/plugin-config.js +112 -0
  164. package/lib/grid-register.js +49 -35
  165. package/lib/logger.js +1 -2
  166. package/lib/logsink.js +59 -36
  167. package/lib/main.js +392 -104
  168. package/lib/schema/arg-spec.js +229 -0
  169. package/lib/schema/cli-args.js +241 -0
  170. package/lib/schema/cli-transformers.js +119 -0
  171. package/lib/schema/index.js +2 -0
  172. package/lib/schema/keywords.js +136 -0
  173. package/lib/schema/schema.js +725 -0
  174. package/lib/utils.js +310 -89
  175. package/package.json +84 -84
  176. package/plugin.d.ts +1 -0
  177. package/plugin.js +13 -0
  178. package/scripts/autoinstall-extensions.js +243 -0
  179. package/support.d.ts +1 -0
  180. package/support.js +13 -0
  181. package/tsconfig.json +25 -0
  182. package/types/cli.ts +193 -0
  183. package/types/index.ts +20 -0
  184. package/types/manifest/README.md +30 -0
  185. package/types/manifest/base.ts +158 -0
  186. package/types/manifest/index.ts +28 -0
  187. package/types/manifest/v3.ts +161 -0
  188. package/types/manifest/v4.ts +161 -0
  189. package/CHANGELOG.md +0 -3669
  190. package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
  191. package/build/lib/cli/argparse-actions.js +0 -104
  192. package/build/lib/cli/npm.js +0 -207
  193. package/build/lib/cli/parser-helpers.js +0 -93
  194. package/build/lib/driver-config.js +0 -77
  195. package/build/lib/drivers.js +0 -99
  196. package/build/lib/extension-config.js +0 -253
  197. package/build/lib/plugin-config.js +0 -59
  198. package/build/lib/plugins.js +0 -16
  199. package/build/postinstall.js +0 -90
  200. package/lib/cli/argparse-actions.js +0 -77
  201. package/lib/cli/npm.js +0 -183
  202. package/lib/cli/parser-helpers.js +0 -91
  203. package/lib/driver-config.js +0 -46
  204. package/lib/drivers.js +0 -84
  205. package/lib/extension-config.js +0 -209
  206. package/lib/plugin-config.js +0 -34
  207. package/lib/plugins.js +0 -11
  208. package/postinstall.js +0 -71
@@ -1,311 +1,274 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.USE_ALL_PLUGINS = exports.extensionArgs = exports.serverArgs = exports.sharedArgs = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _appiumBaseDriver = require("appium-base-driver");
11
-
12
- var _parserHelpers = require("./parser-helpers");
13
-
14
- var _extensionConfig = require("../extension-config");
15
-
16
- var _argparseActions = require("./argparse-actions");
17
-
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.getExtensionArgs = exports.getServerArgs = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const constants_1 = require("../constants");
9
+ const extension_config_1 = require("../extension/extension-config");
10
+ const cli_args_1 = require("../schema/cli-args");
18
11
  const DRIVER_EXAMPLE = 'xcuitest';
19
12
  const PLUGIN_EXAMPLE = 'find_by_image';
20
- const USE_ALL_PLUGINS = 'all';
21
- exports.USE_ALL_PLUGINS = USE_ALL_PLUGINS;
22
- const sharedArgs = [[['-ah', '--home', '--appium-home'], {
23
- required: false,
24
- default: process.env.APPIUM_HOME || _extensionConfig.DEFAULT_APPIUM_HOME,
25
- help: 'The path to the directory where Appium will keep installed drivers, plugins, and any other metadata necessary for its operation',
26
- dest: 'appiumHome'
27
- }], [['--log-filters'], {
28
- dest: 'logFilters',
29
- default: null,
30
- required: false,
31
- action: 'store_true',
32
- help: 'Set the full path to a JSON file containing one or more log filtering rules'
33
- }]];
34
- exports.sharedArgs = sharedArgs;
35
- const serverArgs = [[['--shell'], {
36
- required: false,
37
- default: null,
38
- help: 'Enter REPL mode',
39
- action: 'store_true',
40
- dest: 'shell'
41
- }], [['--plugins'], {
42
- required: false,
43
- default: [],
44
- help: `A comma-separated list of installed plugin names that should be active for this ` + `server. To activate all plugins, you can use the single string "${USE_ALL_PLUGINS}" ` + `as the value (e.g. --plugins=${USE_ALL_PLUGINS})`,
45
- type: _parserHelpers.parsePluginNames,
46
- dest: 'plugins'
47
- }], [['--allow-cors'], {
48
- required: false,
49
- default: false,
50
- action: 'store_true',
51
- help: 'Whether the Appium server should allow web browser connections from any host',
52
- dest: 'allowCors'
53
- }], [['--reboot'], {
54
- default: false,
55
- dest: 'reboot',
56
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
57
- required: false,
58
- help: '(Android-only) reboot emulator after each session and kill it at the end'
59
- }], [['-a', '--address'], {
60
- default: '0.0.0.0',
61
- required: false,
62
- help: 'IP Address to listen on',
63
- dest: 'address'
64
- }], [['-p', '--port'], {
65
- default: 4723,
66
- required: false,
67
- type: 'int',
68
- help: 'port to listen on',
69
- dest: 'port'
70
- }], [['-pa', '--base-path'], {
71
- required: false,
72
- default: _appiumBaseDriver.DEFAULT_BASE_PATH,
73
- dest: 'basePath',
74
- help: 'Base path to use as the prefix for all webdriver routes running ' + `on this server`
75
- }], [['-ka', '--keep-alive-timeout'], {
76
- required: false,
77
- default: null,
78
- dest: 'keepAliveTimeout',
79
- type: 'int',
80
- help: 'Number of seconds the Appium server should apply as both the keep-alive timeout ' + 'and the connection timeout for all requests. Defaults to 600 (10 minutes).'
81
- }], [['-ca', '--callback-address'], {
82
- required: false,
83
- dest: 'callbackAddress',
84
- default: null,
85
- help: 'callback IP Address (default: same as --address)'
86
- }], [['-cp', '--callback-port'], {
87
- required: false,
88
- dest: 'callbackPort',
89
- default: null,
90
- type: 'int',
91
- help: 'callback port (default: same as port)'
92
- }], [['--session-override'], {
93
- default: false,
94
- dest: 'sessionOverride',
95
- action: 'store_true',
96
- required: false,
97
- help: 'Enables session override (clobbering)'
98
- }], [['-g', '--log'], {
99
- default: null,
100
- dest: 'logFile',
101
- required: false,
102
- help: 'Also send log output to this file'
103
- }], [['--log-level'], {
104
- choices: ['info', 'info:debug', 'info:info', 'info:warn', 'info:error', 'warn', 'warn:debug', 'warn:info', 'warn:warn', 'warn:error', 'error', 'error:debug', 'error:info', 'error:warn', 'error:error', 'debug', 'debug:debug', 'debug:info', 'debug:warn', 'debug:error'],
105
- default: 'debug',
106
- dest: 'loglevel',
107
- required: false,
108
- help: 'log level; default (console[:file]): debug[:debug]'
109
- }], [['--log-timestamp'], {
110
- default: false,
111
- required: false,
112
- help: 'Show timestamps in console output',
113
- action: 'store_true',
114
- dest: 'logTimestamp'
115
- }], [['--local-timezone'], {
116
- default: false,
117
- required: false,
118
- help: 'Use local timezone for timestamps',
119
- action: 'store_true',
120
- dest: 'localTimezone'
121
- }], [['--log-no-colors'], {
122
- default: false,
123
- required: false,
124
- help: 'Do not use colors in console output',
125
- action: 'store_true',
126
- dest: 'logNoColors'
127
- }], [['-G', '--webhook'], {
128
- default: null,
129
- required: false,
130
- dest: 'webhook',
131
- help: 'Also send log output to this HTTP listener, for example localhost:9876'
132
- }], [['--nodeconfig'], {
133
- required: false,
134
- default: null,
135
- dest: 'nodeconfig',
136
- help: 'Configuration JSON file to register appium with selenium grid'
137
- }], [['--chromedriver-port'], {
138
- default: null,
139
- dest: 'chromeDriverPort',
140
- required: false,
141
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
142
- type: 'int',
143
- help: 'Port upon which ChromeDriver will run. If not given, Android driver will pick a random available port.'
144
- }], [['--chromedriver-executable'], {
145
- default: null,
146
- dest: 'chromedriverExecutable',
147
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
148
- required: false,
149
- help: 'ChromeDriver executable full path'
150
- }], [['--show-config'], {
151
- default: false,
152
- dest: 'showConfig',
153
- action: 'store_true',
154
- required: false,
155
- help: 'Show info about the appium server configuration and exit'
156
- }], [['--no-perms-check'], {
157
- default: false,
158
- dest: 'noPermsCheck',
159
- action: 'store_true',
160
- required: false,
161
- help: 'Bypass Appium\'s checks to ensure we can read/write necessary files'
162
- }], [['--strict-caps'], {
163
- default: false,
164
- dest: 'enforceStrictCaps',
165
- action: 'store_true',
166
- required: false,
167
- help: 'Cause sessions to fail if desired caps are sent in that Appium ' + 'does not recognize as valid for the selected device'
168
- }], [['--tmp'], {
169
- default: null,
170
- dest: 'tmpDir',
171
- required: false,
172
- help: 'Absolute path to directory Appium can use to manage temporary ' + 'files, like built-in iOS apps it needs to move around. On *nix/Mac ' + 'defaults to /tmp, on Windows defaults to C:\\Windows\\Temp'
173
- }], [['--trace-dir'], {
174
- default: null,
175
- dest: 'traceDir',
176
- required: false,
177
- help: 'Absolute path to directory Appium use to save ios instruments ' + 'traces, defaults to <tmp dir>/appium-instruments'
178
- }], [['--debug-log-spacing'], {
179
- dest: 'debugLogSpacing',
180
- default: false,
181
- action: 'store_true',
182
- required: false,
183
- help: 'Add exaggerated spacing in logs to help with visual inspection'
184
- }], [['--suppress-adb-kill-server'], {
185
- dest: 'suppressKillServer',
186
- default: false,
187
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
188
- required: false,
189
- help: '(Android-only) If set, prevents Appium from killing the adb server instance'
190
- }], [['--long-stacktrace'], {
191
- dest: 'longStacktrace',
192
- default: false,
193
- required: false,
194
- action: 'store_true',
195
- help: 'Add long stack traces to log entries. Recommended for debugging only.'
196
- }], [['--webkit-debug-proxy-port'], {
197
- default: 27753,
198
- dest: 'webkitDebugProxyPort',
199
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
200
- required: false,
201
- type: 'int',
202
- help: '(IOS-only) Local port used for communication with ios-webkit-debug-proxy'
203
- }], [['--webdriveragent-port'], {
204
- default: 8100,
205
- dest: 'wdaLocalPort',
206
- action: _argparseActions.StoreDeprecatedDefaultCapabilityAction,
207
- required: false,
208
- type: 'int',
209
- help: '(IOS-only, XCUITest-only) Local port used for communication with WebDriverAgent'
210
- }], [['-dc', _argparseActions.DEFAULT_CAPS_ARG], {
211
- dest: 'defaultCapabilities',
212
- default: {},
213
- type: _parserHelpers.parseDefaultCaps,
214
- required: false,
215
- help: 'Set the default desired capabilities, which will be set on each ' + 'session unless overridden by received capabilities. For example: ' + '[ \'{"app": "myapp.app", "deviceName": "iPhone Simulator"}\' ' + '| /path/to/caps.json ]'
216
- }], [['--relaxed-security'], {
217
- default: false,
218
- dest: 'relaxedSecurityEnabled',
219
- action: 'store_true',
220
- required: false,
221
- help: 'Disable additional security checks, so it is possible to use some advanced features, provided ' + 'by drivers supporting this option. Only enable it if all the ' + 'clients are in the trusted network and it\'s not the case if a client could potentially ' + 'break out of the session sandbox. Specific features can be overridden by ' + 'using the --deny-insecure flag'
222
- }], [['--allow-insecure'], {
223
- dest: 'allowInsecure',
224
- default: [],
225
- type: _parserHelpers.parseSecurityFeatures,
226
- required: false,
227
- help: 'Set which insecure features are allowed to run in this server\'s sessions. ' + 'Features are defined on a driver level; see documentation for more details. ' + 'This should be either a comma-separated list of feature names, or a path to ' + 'a file where each feature name is on a line. Note that features defined via ' + '--deny-insecure will be disabled, even if also listed here.'
228
- }], [['--deny-insecure'], {
229
- dest: 'denyInsecure',
230
- default: [],
231
- type: _parserHelpers.parseSecurityFeatures,
232
- required: false,
233
- help: 'Set which insecure features are not allowed to run in this server\'s sessions. ' + 'Features are defined on a driver level; see documentation for more details. ' + 'This should be either a comma-separated list of feature names, or a path to ' + 'a file where each feature name is on a line. Features listed here will not be ' + 'enabled even if also listed in --allow-insecure, and even if --relaxed-security ' + 'is turned on. For example: execute_driver_script,adb_shell'
234
- }]];
235
- exports.serverArgs = serverArgs;
236
- const globalExtensionArgs = [[['--json'], {
237
- required: false,
238
- default: false,
239
- action: 'store_true',
240
- help: 'Use JSON for output format',
241
- dest: 'json'
242
- }]];
243
- const extensionArgs = {
244
- [_extensionConfig.DRIVER_TYPE]: {},
245
- [_extensionConfig.PLUGIN_TYPE]: {}
246
- };
247
- exports.extensionArgs = extensionArgs;
248
-
13
+ /**
14
+ * This is necessary because we pass the array into `argparse`. `argparse` is bad and mutates things. We don't want that.
15
+ * Bad `argparse`! Bad!
16
+ */
17
+ const INSTALL_TYPES_ARRAY = [...extension_config_1.INSTALL_TYPES];
18
+ /** @type {Set<ExtensionType>} */
19
+ const EXTENSION_TYPES = new Set([constants_1.DRIVER_TYPE, constants_1.PLUGIN_TYPE]);
20
+ // this set of args works for both drivers and plugins ('extensions')
21
+ /** @type {ArgumentDefinitions} */
22
+ const globalExtensionArgs = new Map([
23
+ [
24
+ ['--json'],
25
+ {
26
+ required: false,
27
+ default: false,
28
+ action: 'store_true',
29
+ help: 'Use JSON for output format',
30
+ dest: 'json',
31
+ },
32
+ ],
33
+ ]);
34
+ /**
35
+ * Builds a Record of extension types to a Record of subcommands to their argument definitions
36
+ */
37
+ const getExtensionArgs = lodash_1.default.memoize(function getExtensionArgs() {
38
+ const extensionArgs = {};
39
+ for (const type of EXTENSION_TYPES) {
40
+ extensionArgs[type] = {
41
+ [constants_1.EXT_SUBCOMMAND_LIST]: makeListArgs(type),
42
+ [constants_1.EXT_SUBCOMMAND_INSTALL]: makeInstallArgs(type),
43
+ [constants_1.EXT_SUBCOMMAND_UNINSTALL]: makeUninstallArgs(type),
44
+ [constants_1.EXT_SUBCOMMAND_UPDATE]: makeUpdateArgs(type),
45
+ [constants_1.EXT_SUBCOMMAND_RUN]: makeRunArgs(type),
46
+ };
47
+ }
48
+ return /** @type {Record<ExtensionType, Record<import('appium/types').CliExtensionSubcommand,ArgumentDefinitions>>} */ (extensionArgs);
49
+ });
50
+ exports.getExtensionArgs = getExtensionArgs;
51
+ /**
52
+ * Makes the opts for the `list` subcommand for each extension type.
53
+ * @param {ExtensionType} type
54
+ * @returns {ArgumentDefinitions}
55
+ */
249
56
  function makeListArgs(type) {
250
- return [...globalExtensionArgs, [['--installed'], {
251
- required: false,
252
- default: false,
253
- action: 'store_true',
254
- help: `List only installed ${type}s`,
255
- dest: 'showInstalled'
256
- }], [['--updates'], {
257
- required: false,
258
- default: false,
259
- action: 'store_true',
260
- help: 'Show information about newer versions',
261
- dest: 'showUpdates'
262
- }]];
57
+ return new Map([
58
+ ...globalExtensionArgs,
59
+ [
60
+ ['--installed'],
61
+ {
62
+ required: false,
63
+ default: false,
64
+ action: 'store_true',
65
+ help: `List only installed ${type}s`,
66
+ dest: 'showInstalled',
67
+ },
68
+ ],
69
+ [
70
+ ['--updates'],
71
+ {
72
+ required: false,
73
+ default: false,
74
+ action: 'store_true',
75
+ help: 'Show information about newer versions',
76
+ dest: 'showUpdates',
77
+ },
78
+ ],
79
+ [
80
+ ['--verbose'],
81
+ {
82
+ required: false,
83
+ default: false,
84
+ action: 'store_true',
85
+ help: 'Show more information about each extension',
86
+ dest: 'verbose',
87
+ },
88
+ ],
89
+ ]);
263
90
  }
264
-
91
+ /**
92
+ * Makes the opts for the `install` subcommand for each extension type
93
+ * @param {ExtensionType} type
94
+ * @returns {ArgumentDefinitions}
95
+ */
265
96
  function makeInstallArgs(type) {
266
- return [...globalExtensionArgs, [[type], {
267
- type: 'str',
268
- help: `Name of the ${type} to install, for example: ` + type === _extensionConfig.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
269
- }], [['--source'], {
270
- required: false,
271
- default: null,
272
- type: _parserHelpers.parseInstallTypes,
273
- help: `Where to look for the ${type} if it is not one of Appium's verified ` + `${type}s. Possible values: ${JSON.stringify(_extensionConfig.INSTALL_TYPES)}`,
274
- dest: 'installType'
275
- }], [['--package'], {
276
- required: false,
277
- default: null,
278
- type: 'str',
279
- help: `If installing from Git or GitHub, the package name, as defined in the plugin's ` + `package.json file in the "name" field, cannot be determined automatically, and ` + `should be reported here, otherwise the install will probably fail.`,
280
- dest: 'packageName'
281
- }]];
97
+ return new Map([
98
+ ...globalExtensionArgs,
99
+ [
100
+ [type],
101
+ {
102
+ type: 'str',
103
+ help: `Name of the ${type} to install, for example: ` + type === constants_1.DRIVER_TYPE
104
+ ? DRIVER_EXAMPLE
105
+ : PLUGIN_EXAMPLE,
106
+ },
107
+ ],
108
+ [
109
+ ['--source'],
110
+ {
111
+ required: false,
112
+ default: null,
113
+ choices: INSTALL_TYPES_ARRAY,
114
+ help: `Where to look for the ${type} if it is not one of Appium's verified ` +
115
+ `${type}s. Possible values: ${INSTALL_TYPES_ARRAY.join(', ')}`,
116
+ dest: 'installType',
117
+ },
118
+ ],
119
+ [
120
+ ['--package'],
121
+ {
122
+ required: false,
123
+ default: null,
124
+ type: 'str',
125
+ help: `If installing from Git or GitHub, the package name, as defined in the plugin's ` +
126
+ `package.json file in the "name" field, cannot be determined automatically, and ` +
127
+ `should be reported here, otherwise the install will probably fail.`,
128
+ dest: 'packageName',
129
+ },
130
+ ],
131
+ ]);
282
132
  }
283
-
133
+ /**
134
+ * Makes the opts for the `uninstall` subcommand for each extension type
135
+ * @param {ExtensionType} type
136
+ * @returns {ArgumentDefinitions}
137
+ */
284
138
  function makeUninstallArgs(type) {
285
- return [...globalExtensionArgs, [[type], {
286
- type: 'str',
287
- help: 'Name of the driver to uninstall, for example: ' + type === _extensionConfig.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
288
- }]];
139
+ return new Map([
140
+ ...globalExtensionArgs,
141
+ [
142
+ [type],
143
+ {
144
+ type: 'str',
145
+ help: 'Name of the driver to uninstall, for example: ' + type === constants_1.DRIVER_TYPE
146
+ ? DRIVER_EXAMPLE
147
+ : PLUGIN_EXAMPLE,
148
+ },
149
+ ],
150
+ ]);
289
151
  }
290
-
152
+ /**
153
+ * Makes the opts for the `update` subcommand for each extension type
154
+ * @param {ExtensionType} type
155
+ * @returns {ArgumentDefinitions}
156
+ */
291
157
  function makeUpdateArgs(type) {
292
- return [...globalExtensionArgs, [[type], {
293
- type: 'str',
294
- help: `Name of the ${type} to update, or the word "installed" to update all installed ` + `${type}s. To see available updates, run "appium ${type} list --installed --updates". ` + 'For example: ' + type === _extensionConfig.DRIVER_TYPE ? DRIVER_EXAMPLE : PLUGIN_EXAMPLE
295
- }], [['--unsafe'], {
296
- required: false,
297
- default: false,
298
- action: 'store_true',
299
- help: `Include updates that might have a new major revision, and potentially include ` + `breaking changes`
300
- }]];
158
+ return new Map([
159
+ ...globalExtensionArgs,
160
+ [
161
+ [type],
162
+ {
163
+ type: 'str',
164
+ help: `Name of the ${type} to update, or the word "installed" to update all installed ` +
165
+ `${type}s. To see available updates, run "appium ${type} list --installed --updates". ` +
166
+ 'For example: ' +
167
+ type ===
168
+ constants_1.DRIVER_TYPE
169
+ ? DRIVER_EXAMPLE
170
+ : PLUGIN_EXAMPLE,
171
+ },
172
+ ],
173
+ [
174
+ ['--unsafe'],
175
+ {
176
+ required: false,
177
+ default: false,
178
+ action: 'store_true',
179
+ help: `Include updates that might have a new major revision, and potentially include ` +
180
+ `breaking changes`,
181
+ },
182
+ ],
183
+ ]);
184
+ }
185
+ /**
186
+ * Makes the opts for the `run` subcommand for each extension type
187
+ * @param {ExtensionType} type
188
+ * @returns {ArgumentDefinitions}
189
+ */
190
+ function makeRunArgs(type) {
191
+ return new Map([
192
+ ...globalExtensionArgs,
193
+ [
194
+ [type],
195
+ {
196
+ type: 'str',
197
+ help: `Name of the ${type} to run a script from, for example: ` + type === constants_1.DRIVER_TYPE
198
+ ? DRIVER_EXAMPLE
199
+ : PLUGIN_EXAMPLE,
200
+ },
201
+ ],
202
+ [
203
+ ['scriptName'],
204
+ {
205
+ default: null,
206
+ type: 'str',
207
+ help: `Name of the script to run from the ${type}. The script name must be a key ` +
208
+ `inside the "appium.scripts" field inside the ${type}'s "package.json" file`,
209
+ },
210
+ ],
211
+ ]);
212
+ }
213
+ /**
214
+ * Derives the options for the `server` command from the schema, and adds the arguments
215
+ * which are disallowed in the config file.
216
+ * @returns {ArgumentDefinitions}
217
+ */
218
+ function getServerArgs() {
219
+ return new Map([...(0, cli_args_1.toParserArgs)(), ...serverArgsDisallowedInConfig]);
301
220
  }
302
-
303
- for (const type of [_extensionConfig.DRIVER_TYPE, _extensionConfig.PLUGIN_TYPE]) {
304
- extensionArgs[type].list = makeListArgs(type);
305
- extensionArgs[type].install = makeInstallArgs(type);
306
- extensionArgs[type].uninstall = makeUninstallArgs(type);
307
- extensionArgs[type].update = makeUpdateArgs(type);
308
- }require('source-map-support').install();
309
-
310
-
311
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvYXJncy5qcyJdLCJuYW1lcyI6WyJEUklWRVJfRVhBTVBMRSIsIlBMVUdJTl9FWEFNUExFIiwiVVNFX0FMTF9QTFVHSU5TIiwic2hhcmVkQXJncyIsInJlcXVpcmVkIiwiZGVmYXVsdCIsInByb2Nlc3MiLCJlbnYiLCJBUFBJVU1fSE9NRSIsIkRFRkFVTFRfQVBQSVVNX0hPTUUiLCJoZWxwIiwiZGVzdCIsImFjdGlvbiIsInNlcnZlckFyZ3MiLCJ0eXBlIiwicGFyc2VQbHVnaW5OYW1lcyIsIlN0b3JlRGVwcmVjYXRlZERlZmF1bHRDYXBhYmlsaXR5QWN0aW9uIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJjaG9pY2VzIiwiREVGQVVMVF9DQVBTX0FSRyIsInBhcnNlRGVmYXVsdENhcHMiLCJwYXJzZVNlY3VyaXR5RmVhdHVyZXMiLCJnbG9iYWxFeHRlbnNpb25BcmdzIiwiZXh0ZW5zaW9uQXJncyIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJtYWtlTGlzdEFyZ3MiLCJtYWtlSW5zdGFsbEFyZ3MiLCJwYXJzZUluc3RhbGxUeXBlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJJTlNUQUxMX1RZUEVTIiwibWFrZVVuaW5zdGFsbEFyZ3MiLCJtYWtlVXBkYXRlQXJncyIsImxpc3QiLCJpbnN0YWxsIiwidW5pbnN0YWxsIiwidXBkYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxjQUFjLEdBQUcsVUFBdkI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsZUFBdkI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsS0FBeEI7O0FBR0EsTUFBTUMsVUFBVSxHQUFHLENBQ2pCLENBQUMsQ0FBQyxLQUFELEVBQVEsUUFBUixFQUFrQixlQUFsQixDQUFELEVBQXFDO0FBQ25DQyxFQUFBQSxRQUFRLEVBQUUsS0FEeUI7QUFFbkNDLEVBQUFBLE9BQU8sRUFBRUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFdBQVosSUFB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RWtCQSxJQUZsQixLQUUyQlUsNEJBRjNCLEdBRXlDeEIsY0FGekMsR0FFMERDO0FBSnpELEdBQVQsQ0FGSyxFQVFMLENBQUMsQ0FBQyxVQUFELENBQUQsRUFBZTtBQUNiRyxJQUFBQSxRQUFRLEVBQUUsS0FERztBQUViQyxJQUFBQSxPQUFPLEVBQUUsS0FGSTtBQUdiTyxJQUFBQSxNQUFNLEVBQUUsWUFISztBQUliRixJQUFBQSxJQUFJLEVBQUcsZ0ZBQUQsR0FDQztBQUxNLEdBQWYsQ0FSSyxDQUFQO0FBZ0JEOztBQUVELEtBQUssTUFBTUksSUFBWCxJQUFtQixDQUFDVSw0QkFBRCxFQUFjQyw0QkFBZCxDQUFuQixFQUErQztBQUM3Q0YsRUFBQUEsYUFBYSxDQUFDVCxJQUFELENBQWIsQ0FBb0JvQixJQUFwQixHQUEyQlIsWUFBWSxDQUFDWixJQUFELENBQXZDO0FBQ0FTLEVBQUFBLGFBQWEsQ0FBQ1QsSUFBRCxDQUFiLENBQW9CcUIsT0FBcEIsR0FBOEJSLGVBQWUsQ0FBQ2IsSUFBRCxDQUE3QztBQUNBUyxFQUFBQSxhQUFhLENBQUNULElBQUQsQ0FBYixDQUFvQnNCLFNBQXBCLEdBQWdDSixpQkFBaUIsQ0FBQ2xCLElBQUQsQ0FBakQ7QUFDQVMsRUFBQUEsYUFBYSxDQUFDVCxJQUFELENBQWIsQ0FBb0J1QixNQUFwQixHQUE2QkosY0FBYyxDQUFDbkIsSUFBRCxDQUEzQztBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9CQVNFX1BBVEggfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgcGFyc2VTZWN1cml0eUZlYXR1cmVzLCBwYXJzZURlZmF1bHRDYXBzLCBwYXJzZVBsdWdpbk5hbWVzLCBwYXJzZUluc3RhbGxUeXBlcyB9IGZyb20gJy4vcGFyc2VyLWhlbHBlcnMnO1xuaW1wb3J0IHsgSU5TVEFMTF9UWVBFUywgREVGQVVMVF9BUFBJVU1fSE9NRSwgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFIH0gZnJvbSAnLi4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBERUZBVUxUX0NBUFNfQVJHLCBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbiB9IGZyb20gJy4vYXJncGFyc2UtYWN0aW9ucyc7XG5cbmNvbnN0IERSSVZFUl9FWEFNUExFID0gJ3hjdWl0ZXN0JztcbmNvbnN0IFBMVUdJTl9FWEFNUExFID0gJ2ZpbmRfYnlfaW1hZ2UnO1xuY29uc3QgVVNFX0FMTF9QTFVHSU5TID0gJ2FsbCc7XG5cbi8vIHNoYXJlZEFyZ3Mgd2lsbCBiZSBhZGRlZCB0byBldmVyeSBzdWJjb21tYW5kXG5jb25zdCBzaGFyZWRBcmdzID0gW1xuICBbWyctYWgnLCAnLS1ob21lJywgJy0tYXBwaXVtLWhvbWUnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBwcm9jZXNzLmVudi5BUFBJVU1fSE9NRSB8fCBERUZBVUxUX0FQUElVTV9IT01FLFxuICAgIGhlbHA6ICdUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIEFwcGl1bSB3aWxsIGtlZXAgaW5zdGFsbGVkIGRyaXZlcnMsIHBsdWdpbnMsIGFuZCBhbnkgb3RoZXIgbWV0YWRhdGEgbmVjZXNzYXJ5IGZvciBpdHMgb3BlcmF0aW9uJyxcbiAgICBkZXN0OiAnYXBwaXVtSG9tZScsXG4gIH1dLFxuXG4gIFtbJy0tbG9nLWZpbHRlcnMnXSwge1xuICAgIGRlc3Q6ICdsb2dGaWx0ZXJzJyxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBoZWxwOiAnU2V0IHRoZSBmdWxsIHBhdGggdG8gYSBKU09OIGZpbGUgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsb2cgZmlsdGVyaW5nIHJ1bGVzJyxcbiAgfV0sXG5dO1xuXG5jb25zdCBzZXJ2ZXJBcmdzID0gW1xuICBbWyctLXNoZWxsJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBoZWxwOiAnRW50ZXIgUkVQTCBtb2RlJyxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBkZXN0OiAnc2hlbGwnLFxuICB9XSxcblxuICBbWyctLXBsdWdpbnMnXSwge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0OiBbXSxcbiAgICBoZWxwOiBgQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBpbnN0YWxsZWQgcGx1Z2luIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGFjdGl2ZSBmb3IgdGhpcyBgICtcbiAgICAgICAgICBgc2VydmVyLiBUbyBhY3RpdmF0ZSBhbGwgcGx1Z2lucywgeW91IGNhbiB1c2UgdGhlIHNpbmdsZSBzdHJpbmcgXCIke1VTRV9BTExfUExVR0lOU31cIiBgICtcbiAgICAgICAgICBgYXMgdGhlIHZhbHVlIChlLmcuIC0tcGx1Z2lucz0ke1VTRV9BTExfUExVR0lOU30pYCxcbiAgICB0eXBlOiBwYXJzZVBsdWdpbk5hbWVzLFxuICAgIGRlc3Q6ICdwbHVnaW5zJyxcbiAgfV0sXG5cbiAgW1snLS1hbGxvdy1jb3JzJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgaGVscDogJ1doZXRoZXIgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFsbG93IHdlYiBicm93c2VyIGNvbm5lY3Rpb25zIGZyb20gYW55IGhvc3QnLFxuICAgIGRlc3Q6ICdhbGxvd0NvcnMnLFxuICB9XSxcblxuICBbWyctLXJlYm9vdCddLCB7XG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgZGVzdDogJ3JlYm9vdCcsXG4gICAgYWN0aW9uOiBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJyhBbmRyb2lkLW9ubHkpIHJlYm9vdCBlbXVsYXRvciBhZnRlciBlYWNoIHNlc3Npb24gYW5kIGtpbGwgaXQgYXQgdGhlIGVuZCcsXG4gIH1dLFxuXG4gIFtbJy1hJywgJy0tYWRkcmVzcyddLCB7XG4gICAgZGVmYXVsdDogJzAuMC4wLjAnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnSVAgQWRkcmVzcyB0byBsaXN0ZW4gb24nLFxuICAgIGRlc3Q6ICdhZGRyZXNzJyxcbiAgfV0sXG5cbiAgW1snLXAnLCAnLS1wb3J0J10sIHtcbiAgICBkZWZhdWx0OiA0NzIzLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB0eXBlOiAnaW50JyxcbiAgICBoZWxwOiAncG9ydCB0byBsaXN0ZW4gb24nLFxuICAgIGRlc3Q6ICdwb3J0JyxcbiAgfV0sXG5cbiAgW1snLXBhJywgJy0tYmFzZS1wYXRoJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogREVGQVVMVF9CQVNFX1BBVEgsXG4gICAgZGVzdDogJ2Jhc2VQYXRoJyxcbiAgICBoZWxwOiAnQmFzZSBwYXRoIHRvIHVzZSBhcyB0aGUgcHJlZml4IGZvciBhbGwgd2ViZHJpdmVyIHJvdXRlcyBydW5uaW5nICcgK1xuICAgICAgICAgIGBvbiB0aGlzIHNlcnZlcmBcbiAgfV0sXG5cbiAgW1snLWthJywgJy0ta2VlcC1hbGl2ZS10aW1lb3V0J10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBkZXN0OiAna2VlcEFsaXZlVGltZW91dCcsXG4gICAgdHlwZTogJ2ludCcsXG4gICAgaGVscDogJ051bWJlciBvZiBzZWNvbmRzIHRoZSBBcHBpdW0gc2VydmVyIHNob3VsZCBhcHBseSBhcyBib3RoIHRoZSBrZWVwLWFsaXZlIHRpbWVvdXQgJyArXG4gICAgICAgICAgJ2FuZCB0aGUgY29ubmVjdGlvbiB0aW1lb3V0IGZvciBhbGwgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDYwMCAoMTAgbWludXRlcykuJ1xuICB9XSxcblxuICBbWyctY2EnLCAnLS1jYWxsYmFjay1hZGRyZXNzJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzdDogJ2NhbGxiYWNrQWRkcmVzcycsXG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBoZWxwOiAnY2FsbGJhY2sgSVAgQWRkcmVzcyAoZGVmYXVsdDogc2FtZSBhcyAtLWFkZHJlc3MpJyxcbiAgfV0sXG5cbiAgW1snLWNwJywgJy0tY2FsbGJhY2stcG9ydCddLCB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc3Q6ICdjYWxsYmFja1BvcnQnLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgdHlwZTogJ2ludCcsXG4gICAgaGVscDogJ2NhbGxiYWNrIHBvcnQgKGRlZmF1bHQ6IHNhbWUgYXMgcG9ydCknLFxuICB9XSxcblxuICBbWyctLXNlc3Npb24tb3ZlcnJpZGUnXSwge1xuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGRlc3Q6ICdzZXNzaW9uT3ZlcnJpZGUnLFxuICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnRW5hYmxlcyBzZXNzaW9uIG92ZXJyaWRlIChjbG9iYmVyaW5nKScsXG4gIH1dLFxuXG4gIFtbJy1nJywgJy0tbG9nJ10sIHtcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIGRlc3Q6ICdsb2dGaWxlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgZmlsZScsXG4gIH1dLFxuXG4gIFtbJy0tbG9nLWxldmVsJ10sIHtcbiAgICBjaG9pY2VzOiBbXG4gICAgICAnaW5mbycsICdpbmZvOmRlYnVnJywgJ2luZm86aW5mbycsICdpbmZvOndhcm4nLCAnaW5mbzplcnJvcicsXG4gICAgICAnd2FybicsICd3YXJuOmRlYnVnJywgJ3dhcm46aW5mbycsICd3YXJuOndhcm4nLCAnd2FybjplcnJvcicsXG4gICAgICAnZXJyb3InLCAnZXJyb3I6ZGVidWcnLCAnZXJyb3I6aW5mbycsICdlcnJvcjp3YXJuJywgJ2Vycm9yOmVycm9yJyxcbiAgICAgICdkZWJ1ZycsICdkZWJ1ZzpkZWJ1ZycsICdkZWJ1ZzppbmZvJywgJ2RlYnVnOndhcm4nLCAnZGVidWc6ZXJyb3InLFxuICAgIF0sXG4gICAgZGVmYXVsdDogJ2RlYnVnJyxcbiAgICBkZXN0OiAnbG9nbGV2ZWwnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnbG9nIGxldmVsOyBkZWZhdWx0IChjb25zb2xlWzpmaWxlXSk6IGRlYnVnWzpkZWJ1Z10nLFxuICB9XSxcblxuICBbWyctLWxvZy10aW1lc3RhbXAnXSwge1xuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnU2hvdyB0aW1lc3RhbXBzIGluIGNvbnNvbGUgb3V0cHV0JyxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBkZXN0OiAnbG9nVGltZXN0YW1wJyxcbiAgfV0sXG5cbiAgW1snLS1sb2NhbC10aW1lem9uZSddLCB7XG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdVc2UgbG9jYWwgdGltZXpvbmUgZm9yIHRpbWVzdGFtcHMnLFxuICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgIGRlc3Q6ICdsb2NhbFRpbWV6b25lJyxcbiAgfV0sXG5cbiAgW1snLS1sb2ctbm8tY29sb3JzJ10sIHtcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0RvIG5vdCB1c2UgY29sb3JzIGluIGNvbnNvbGUgb3V0cHV0JyxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICBkZXN0OiAnbG9nTm9Db2xvcnMnLFxuICB9XSxcblxuICBbWyctRycsICctLXdlYmhvb2snXSwge1xuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc3Q6ICd3ZWJob29rJyxcbiAgICBoZWxwOiAnQWxzbyBzZW5kIGxvZyBvdXRwdXQgdG8gdGhpcyBIVFRQIGxpc3RlbmVyLCBmb3IgZXhhbXBsZSBsb2NhbGhvc3Q6OTg3NicsXG4gIH1dLFxuXG4gIFtbJy0tbm9kZWNvbmZpZyddLCB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgZGVzdDogJ25vZGVjb25maWcnLFxuICAgIGhlbHA6ICdDb25maWd1cmF0aW9uIEpTT04gZmlsZSB0byByZWdpc3RlciBhcHBpdW0gd2l0aCBzZWxlbml1bSBncmlkJyxcbiAgfV0sXG5cbiAgW1snLS1jaHJvbWVkcml2ZXItcG9ydCddLCB7XG4gICAgZGVmYXVsdDogbnVsbCxcbiAgICBkZXN0OiAnY2hyb21lRHJpdmVyUG9ydCcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGFjdGlvbjogU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sXG4gICAgdHlwZTogJ2ludCcsXG4gICAgaGVscDogJ1BvcnQgdXBvbiB3aGljaCBDaHJvbWVEcml2ZXIgd2lsbCBydW4uIElmIG5vdCBnaXZlbiwgQW5kcm9pZCBkcml2ZXIgd2lsbCBwaWNrIGEgcmFuZG9tIGF2YWlsYWJsZSBwb3J0LicsXG4gIH1dLFxuXG4gIFtbJy0tY2hyb21lZHJpdmVyLWV4ZWN1dGFibGUnXSwge1xuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgZGVzdDogJ2Nocm9tZWRyaXZlckV4ZWN1dGFibGUnLFxuICAgIGFjdGlvbjogU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdDaHJvbWVEcml2ZXIgZXhlY3V0YWJsZSBmdWxsIHBhdGgnLFxuICB9XSxcblxuICBbWyctLXNob3ctY29uZmlnJ10sIHtcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBkZXN0OiAnc2hvd0NvbmZpZycsXG4gICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdTaG93IGluZm8gYWJvdXQgdGhlIGFwcGl1bSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgZXhpdCcsXG4gIH1dLFxuXG4gIFtbJy0tbm8tcGVybXMtY2hlY2snXSwge1xuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGRlc3Q6ICdub1Blcm1zQ2hlY2snLFxuICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnQnlwYXNzIEFwcGl1bVxcJ3MgY2hlY2tzIHRvIGVuc3VyZSB3ZSBjYW4gcmVhZC93cml0ZSBuZWNlc3NhcnkgZmlsZXMnLFxuICB9XSxcblxuICBbWyctLXN0cmljdC1jYXBzJ10sIHtcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBkZXN0OiAnZW5mb3JjZVN0cmljdENhcHMnLFxuICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnQ2F1c2Ugc2Vzc2lvbnMgdG8gZmFpbCBpZiBkZXNpcmVkIGNhcHMgYXJlIHNlbnQgaW4gdGhhdCBBcHBpdW0gJyArXG4gICAgICAgICAgJ2RvZXMgbm90IHJlY29nbml6ZSBhcyB2YWxpZCBmb3IgdGhlIHNlbGVjdGVkIGRldmljZScsXG4gIH1dLFxuXG4gIFtbJy0tdG1wJ10sIHtcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIGRlc3Q6ICd0bXBEaXInLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnQWJzb2x1dGUgcGF0aCB0byBkaXJlY3RvcnkgQXBwaXVtIGNhbiB1c2UgdG8gbWFuYWdlIHRlbXBvcmFyeSAnICtcbiAgICAgICAgICAnZmlsZXMsIGxpa2UgYnVpbHQtaW4gaU9TIGFwcHMgaXQgbmVlZHMgdG8gbW92ZSBhcm91bmQuIE9uICpuaXgvTWFjICcgK1xuICAgICAgICAgICdkZWZhdWx0cyB0byAvdG1wLCBvbiBXaW5kb3dzIGRlZmF1bHRzIHRvIEM6XFxcXFdpbmRvd3NcXFxcVGVtcCcsXG4gIH1dLFxuXG4gIFtbJy0tdHJhY2UtZGlyJ10sIHtcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIGRlc3Q6ICd0cmFjZURpcicsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gdXNlIHRvIHNhdmUgaW9zIGluc3RydW1lbnRzICcgK1xuICAgICAgICAgICd0cmFjZXMsIGRlZmF1bHRzIHRvIDx0bXAgZGlyPi9hcHBpdW0taW5zdHJ1bWVudHMnLFxuICB9XSxcblxuICBbWyctLWRlYnVnLWxvZy1zcGFjaW5nJ10sIHtcbiAgICBkZXN0OiAnZGVidWdMb2dTcGFjaW5nJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0FkZCBleGFnZ2VyYXRlZCBzcGFjaW5nIGluIGxvZ3MgdG8gaGVscCB3aXRoIHZpc3VhbCBpbnNwZWN0aW9uJyxcbiAgfV0sXG5cbiAgW1snLS1zdXBwcmVzcy1hZGIta2lsbC1zZXJ2ZXInXSwge1xuICAgIGRlc3Q6ICdzdXBwcmVzc0tpbGxTZXJ2ZXInLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGFjdGlvbjogU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICcoQW5kcm9pZC1vbmx5KSBJZiBzZXQsIHByZXZlbnRzIEFwcGl1bSBmcm9tIGtpbGxpbmcgdGhlIGFkYiBzZXJ2ZXIgaW5zdGFuY2UnLFxuICB9XSxcblxuICBbWyctLWxvbmctc3RhY2t0cmFjZSddLCB7XG4gICAgZGVzdDogJ2xvbmdTdGFja3RyYWNlJyxcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgaGVscDogJ0FkZCBsb25nIHN0YWNrIHRyYWNlcyB0byBsb2cgZW50cmllcy4gUmVjb21tZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5LicsXG4gIH1dLFxuXG4gIFtbJy0td2Via2l0LWRlYnVnLXByb3h5LXBvcnQnXSwge1xuICAgIGRlZmF1bHQ6IDI3NzUzLFxuICAgIGRlc3Q6ICd3ZWJraXREZWJ1Z1Byb3h5UG9ydCcsXG4gICAgYWN0aW9uOiBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbixcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdHlwZTogJ2ludCcsXG4gICAgaGVscDogJyhJT1Mtb25seSkgTG9jYWwgcG9ydCB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggaW9zLXdlYmtpdC1kZWJ1Zy1wcm94eSdcbiAgfV0sXG5cbiAgW1snLS13ZWJkcml2ZXJhZ2VudC1wb3J0J10sIHtcbiAgICBkZWZhdWx0OiA4MTAwLFxuICAgIGRlc3Q6ICd3ZGFMb2NhbFBvcnQnLFxuICAgIGFjdGlvbjogU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHR5cGU6ICdpbnQnLFxuICAgIGhlbHA6ICcoSU9TLW9ubHksIFhDVUlUZXN0LW9ubHkpIExvY2FsIHBvcnQgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIFdlYkRyaXZlckFnZW50J1xuICB9XSxcblxuICBbWyctZGMnLCBERUZBVUxUX0NBUFNfQVJHXSwge1xuICAgIGRlc3Q6ICdkZWZhdWx0Q2FwYWJpbGl0aWVzJyxcbiAgICBkZWZhdWx0OiB7fSxcbiAgICB0eXBlOiBwYXJzZURlZmF1bHRDYXBzLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiAnU2V0IHRoZSBkZWZhdWx0IGRlc2lyZWQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIHNldCBvbiBlYWNoICcgK1xuICAgICAgICAgICdzZXNzaW9uIHVubGVzcyBvdmVycmlkZGVuIGJ5IHJlY2VpdmVkIGNhcGFiaWxpdGllcy4gRm9yIGV4YW1wbGU6ICcgK1xuICAgICAgICAgICdbIFxcJ3tcImFwcFwiOiBcIm15YXBwLmFwcFwiLCBcImRldmljZU5hbWVcIjogXCJpUGhvbmUgU2ltdWxhdG9yXCJ9XFwnICcgK1xuICAgICAgICAgICd8IC9wYXRoL3RvL2NhcHMuanNvbiBdJ1xuICB9XSxcblxuICBbWyctLXJlbGF4ZWQtc2VjdXJpdHknXSwge1xuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIGRlc3Q6ICdyZWxheGVkU2VjdXJpdHlFbmFibGVkJyxcbiAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogJ0Rpc2FibGUgYWRkaXRpb25hbCBzZWN1cml0eSBjaGVja3MsIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBzb21lIGFkdmFuY2VkIGZlYXR1cmVzLCBwcm92aWRlZCAnICtcbiAgICAgICAgICAnYnkgZHJpdmVycyBzdXBwb3J0aW5nIHRoaXMgb3B0aW9uLiBPbmx5IGVuYWJsZSBpdCBpZiBhbGwgdGhlICcgK1xuICAgICAgICAgICdjbGllbnRzIGFyZSBpbiB0aGUgdHJ1c3RlZCBuZXR3b3JrIGFuZCBpdFxcJ3Mgbm90IHRoZSBjYXNlIGlmIGEgY2xpZW50IGNvdWxkIHBvdGVudGlhbGx5ICcgK1xuICAgICAgICAgICdicmVhayBvdXQgb2YgdGhlIHNlc3Npb24gc2FuZGJveC4gU3BlY2lmaWMgZmVhdHVyZXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJyArXG4gICAgICAgICAgJ3VzaW5nIHRoZSAtLWRlbnktaW5zZWN1cmUgZmxhZycsXG4gIH1dLFxuXG4gIFtbJy0tYWxsb3ctaW5zZWN1cmUnXSwge1xuICAgIGRlc3Q6ICdhbGxvd0luc2VjdXJlJyxcbiAgICBkZWZhdWx0OiBbXSxcbiAgICB0eXBlOiBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIGFsbG93ZWQgdG8gcnVuIGluIHRoaXMgc2VydmVyXFwncyBzZXNzaW9ucy4gJyArXG4gICAgICAgICAgJ0ZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiAnICtcbiAgICAgICAgICAnVGhpcyBzaG91bGQgYmUgZWl0aGVyIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZSBuYW1lcywgb3IgYSBwYXRoIHRvICcgK1xuICAgICAgICAgICdhIGZpbGUgd2hlcmUgZWFjaCBmZWF0dXJlIG5hbWUgaXMgb24gYSBsaW5lLiBOb3RlIHRoYXQgZmVhdHVyZXMgZGVmaW5lZCB2aWEgJyArXG4gICAgICAgICAgJy0tZGVueS1pbnNlY3VyZSB3aWxsIGJlIGRpc2FibGVkLCBldmVuIGlmIGFsc28gbGlzdGVkIGhlcmUuJyxcbiAgfV0sXG5cbiAgW1snLS1kZW55LWluc2VjdXJlJ10sIHtcbiAgICBkZXN0OiAnZGVueUluc2VjdXJlJyxcbiAgICBkZWZhdWx0OiBbXSxcbiAgICB0eXBlOiBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6ICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIG5vdCBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzIHNlcnZlclxcJ3Mgc2Vzc2lvbnMuICcgK1xuICAgICAgICAgICdGZWF0dXJlcyBhcmUgZGVmaW5lZCBvbiBhIGRyaXZlciBsZXZlbDsgc2VlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4gJyArXG4gICAgICAgICAgJ1RoaXMgc2hvdWxkIGJlIGVpdGhlciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGZlYXR1cmUgbmFtZXMsIG9yIGEgcGF0aCB0byAnICtcbiAgICAgICAgICAnYSBmaWxlIHdoZXJlIGVhY2ggZmVhdHVyZSBuYW1lIGlzIG9uIGEgbGluZS4gRmVhdHVyZXMgbGlzdGVkIGhlcmUgd2lsbCBub3QgYmUgJyArXG4gICAgICAgICAgJ2VuYWJsZWQgZXZlbiBpZiBhbHNvIGxpc3RlZCBpbiAtLWFsbG93LWluc2VjdXJlLCBhbmQgZXZlbiBpZiAtLXJlbGF4ZWQtc2VjdXJpdHkgJyArXG4gICAgICAgICAgJ2lzIHR1cm5lZCBvbi4gRm9yIGV4YW1wbGU6IGV4ZWN1dGVfZHJpdmVyX3NjcmlwdCxhZGJfc2hlbGwnLFxuICB9XSxcbl07XG5cbi8vIHRoaXMgc2V0IG9mIGFyZ3Mgd29ya3MgZm9yIGJvdGggZHJpdmVycyBhbmQgcGx1Z2lucyAoJ2V4dGVuc2lvbnMnKVxuY29uc3QgZ2xvYmFsRXh0ZW5zaW9uQXJncyA9IFtcbiAgW1snLS1qc29uJ10sIHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgaGVscDogJ1VzZSBKU09OIGZvciBvdXRwdXQgZm9ybWF0JyxcbiAgICBkZXN0OiAnanNvbidcbiAgfV1cbl07XG5cbmNvbnN0IGV4dGVuc2lvbkFyZ3MgPSB7W0RSSVZFUl9UWVBFXToge30sIFtQTFVHSU5fVFlQRV06IHt9fTtcblxuZnVuY3Rpb24gbWFrZUxpc3RBcmdzICh0eXBlKSB7XG4gIHJldHVybiBbXG4gICAgLi4uZ2xvYmFsRXh0ZW5zaW9uQXJncyxcbiAgICBbWyctLWluc3RhbGxlZCddLCB7XG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIGFjdGlvbjogJ3N0b3JlX3RydWUnLFxuICAgICAgaGVscDogYExpc3Qgb25seSBpbnN0YWxsZWQgJHt0eXBlfXNgLFxuICAgICAgZGVzdDogJ3Nob3dJbnN0YWxsZWQnXG4gICAgfV0sXG4gICAgW1snLS11cGRhdGVzJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgYWN0aW9uOiAnc3RvcmVfdHJ1ZScsXG4gICAgICBoZWxwOiAnU2hvdyBpbmZvcm1hdGlvbiBhYm91dCBuZXdlciB2ZXJzaW9ucycsXG4gICAgICBkZXN0OiAnc2hvd1VwZGF0ZXMnXG4gICAgfV1cbiAgXTtcbn1cblxuXG5mdW5jdGlvbiBtYWtlSW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYE5hbWUgb2YgdGhlICR7dHlwZX0gdG8gaW5zdGFsbCwgZm9yIGV4YW1wbGU6IGAgK1xuICAgICAgICAgICAgdHlwZSA9PT0gRFJJVkVSX1RZUEUgPyBEUklWRVJfRVhBTVBMRSA6IFBMVUdJTl9FWEFNUExFLFxuICAgIH1dLFxuICAgIFtbJy0tc291cmNlJ10sIHtcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB0eXBlOiBwYXJzZUluc3RhbGxUeXBlcyxcbiAgICAgIGhlbHA6IGBXaGVyZSB0byBsb29rIGZvciB0aGUgJHt0eXBlfSBpZiBpdCBpcyBub3Qgb25lIG9mIEFwcGl1bSdzIHZlcmlmaWVkIGAgK1xuICAgICAgICAgICAgYCR7dHlwZX1zLiBQb3NzaWJsZSB2YWx1ZXM6ICR7SlNPTi5zdHJpbmdpZnkoSU5TVEFMTF9UWVBFUyl9YCxcbiAgICAgIGRlc3Q6ICdpbnN0YWxsVHlwZSdcbiAgICB9XSxcbiAgICBbWyctLXBhY2thZ2UnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogYElmIGluc3RhbGxpbmcgZnJvbSBHaXQgb3IgR2l0SHViLCB0aGUgcGFja2FnZSBuYW1lLCBhcyBkZWZpbmVkIGluIHRoZSBwbHVnaW4ncyBgICtcbiAgICAgICAgICAgIGBwYWNrYWdlLmpzb24gZmlsZSBpbiB0aGUgXCJuYW1lXCIgZmllbGQsIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHksIGFuZCBgICtcbiAgICAgICAgICAgIGBzaG91bGQgYmUgcmVwb3J0ZWQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBpbnN0YWxsIHdpbGwgcHJvYmFibHkgZmFpbC5gLFxuICAgICAgZGVzdDogJ3BhY2thZ2VOYW1lJyxcbiAgICB9XSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gbWFrZVVuaW5zdGFsbEFyZ3MgKHR5cGUpIHtcbiAgcmV0dXJuIFtcbiAgICAuLi5nbG9iYWxFeHRlbnNpb25BcmdzLFxuICAgIFtbdHlwZV0sIHtcbiAgICAgIHR5cGU6ICdzdHInLFxuICAgICAgaGVscDogJ05hbWUgb2YgdGhlIGRyaXZlciB0byB1bmluc3RhbGwsIGZvciBleGFtcGxlOiAnICtcbiAgICAgICAgICAgIHR5cGUgPT09IERSSVZFUl9UWVBFID8gRFJJVkVSX0VYQU1QTEUgOiBQTFVHSU5fRVhBTVBMRVxuICAgIH1dLFxuICBdO1xufVxuXG5mdW5jdGlvbiBtYWtlVXBkYXRlQXJncyAodHlwZSkge1xuICByZXR1cm4gW1xuICAgIC4uLmdsb2JhbEV4dGVuc2lvbkFyZ3MsXG4gICAgW1t0eXBlXSwge1xuICAgICAgdHlwZTogJ3N0cicsXG4gICAgICBoZWxwOiBgTmFtZSBvZiB0aGUgJHt0eXBlfSB0byB1cGRhdGUsIG9yIHRoZSB3b3JkIFwiaW5zdGFsbGVkXCIgdG8gdXBkYXRlIGFsbCBpbnN0YWxsZWQgYCArXG4gICAgICAgICAgICBgJHt0eXBlfXMuIFRvIHNlZSBhdmFpbGFibGUgdXBkYXRlcywgcnVuIFwiYXBwaXVtICR7dHlwZX0gbGlzdCAtLWluc3RhbGxlZCAtLXVwZGF0ZXNcIi4gYCArXG4gICAgICAgICAgICAnRm9yIGV4YW1wbGU6ICcgKyB0eXBlID09PSBEUklWRVJfVFlQRSA/IERSSVZFUl9FWEFNUExFIDogUExVR0lOX0VYQU1QTEUsXG4gICAgfV0sXG4gICAgW1snLS11bnNhZmUnXSwge1xuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICBhY3Rpb246ICdzdG9yZV90cnVlJyxcbiAgICAgIGhlbHA6IGBJbmNsdWRlIHVwZGF0ZXMgdGhhdCBtaWdodCBoYXZlIGEgbmV3IG1ham9yIHJldmlzaW9uLCBhbmQgcG90ZW50aWFsbHkgaW5jbHVkZSBgICtcbiAgICAgICAgICAgIGBicmVha2luZyBjaGFuZ2VzYCxcbiAgICB9XSxcbiAgXTtcbn1cblxuZm9yIChjb25zdCB0eXBlIG9mIFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSB7XG4gIGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCA9IG1ha2VMaXN0QXJncyh0eXBlKTtcbiAgZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsID0gbWFrZUluc3RhbGxBcmdzKHR5cGUpO1xuICBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCA9IG1ha2VVbmluc3RhbGxBcmdzKHR5cGUpO1xuICBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSA9IG1ha2VVcGRhdGVBcmdzKHR5cGUpO1xufVxuXG5leHBvcnQge1xuICBzaGFyZWRBcmdzLFxuICBzZXJ2ZXJBcmdzLFxuICBleHRlbnNpb25BcmdzLFxuICBVU0VfQUxMX1BMVUdJTlMsXG59O1xuIl0sImZpbGUiOiJsaWIvY2xpL2FyZ3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
221
+ exports.getServerArgs = getServerArgs;
222
+ /**
223
+ * These don't make sense in the context of a config file for obvious reasons.
224
+ * @type {ArgumentDefinitions}
225
+ */
226
+ const serverArgsDisallowedInConfig = new Map([
227
+ [
228
+ ['--shell'],
229
+ {
230
+ required: false,
231
+ help: 'Enter REPL mode',
232
+ action: 'store_const',
233
+ const: true,
234
+ dest: 'shell',
235
+ },
236
+ ],
237
+ [
238
+ ['--show-build-info'],
239
+ {
240
+ dest: 'showBuildInfo',
241
+ action: 'store_const',
242
+ const: true,
243
+ required: false,
244
+ help: 'Show info about the Appium build and exit',
245
+ },
246
+ ],
247
+ [
248
+ ['--show-config'],
249
+ {
250
+ dest: 'showConfig',
251
+ action: 'store_const',
252
+ const: true,
253
+ required: false,
254
+ help: 'Show the current Appium configuration and exit',
255
+ },
256
+ ],
257
+ [
258
+ ['--config'],
259
+ {
260
+ dest: 'configFile',
261
+ type: 'str',
262
+ required: false,
263
+ help: 'Explicit path to Appium configuration file',
264
+ },
265
+ ],
266
+ ]);
267
+ /**
268
+ * @typedef {import('@appium/types').ExtensionType} ExtensionType
269
+ */
270
+ /**
271
+ * A tuple of argument aliases and argument options
272
+ * @typedef {Map<[name: string]|[name: string, alias: string],import('argparse').ArgumentOptions>} ArgumentDefinitions
273
+ */
274
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../lib/cli/args.js"],"names":[],"mappings":"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"}