appium 2.0.0-beta.8 → 2.0.0-rc.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/LICENSE +1 -1
- package/README.md +149 -58
- package/build/lib/appium.d.ts +229 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +678 -441
- package/build/lib/appium.js.map +1 -0
- package/build/lib/cli/args.d.ts +17 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +263 -300
- package/build/lib/cli/args.js.map +1 -0
- package/build/lib/cli/driver-command.d.ts +102 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +131 -81
- package/build/lib/cli/driver-command.js.map +1 -0
- package/build/lib/cli/extension-command.d.ts +402 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +799 -383
- package/build/lib/cli/extension-command.js.map +1 -0
- package/build/lib/cli/extension.d.ts +23 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +71 -60
- package/build/lib/cli/extension.js.map +1 -0
- package/build/lib/cli/parser.d.ts +84 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +252 -148
- package/build/lib/cli/parser.js.map +1 -0
- package/build/lib/cli/plugin-command.d.ts +99 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +125 -81
- package/build/lib/cli/plugin-command.js.map +1 -0
- package/build/lib/cli/utils.d.ts +29 -0
- package/build/lib/cli/utils.d.ts.map +1 -0
- package/build/lib/cli/utils.js +72 -51
- package/build/lib/cli/utils.js.map +1 -0
- package/build/lib/config-file.d.ts +100 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +207 -0
- package/build/lib/config-file.js.map +1 -0
- package/build/lib/config.d.ts +49 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +262 -223
- package/build/lib/config.js.map +1 -0
- package/build/lib/constants.d.ts +56 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +73 -0
- package/build/lib/constants.js.map +1 -0
- package/build/lib/extension/driver-config.d.ts +82 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +210 -0
- package/build/lib/extension/driver-config.js.map +1 -0
- package/build/lib/extension/extension-config.d.ts +270 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +601 -0
- package/build/lib/extension/extension-config.js.map +1 -0
- package/build/lib/extension/index.d.ts +48 -0
- package/build/lib/extension/index.d.ts.map +1 -0
- package/build/lib/extension/index.js +105 -0
- package/build/lib/extension/index.js.map +1 -0
- package/build/lib/extension/manifest-migrations.d.ts +27 -0
- package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
- package/build/lib/extension/manifest-migrations.js +134 -0
- package/build/lib/extension/manifest-migrations.js.map +1 -0
- package/build/lib/extension/manifest.d.ts +145 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +528 -0
- package/build/lib/extension/manifest.js.map +1 -0
- package/build/lib/extension/package-changed.d.ts +11 -0
- package/build/lib/extension/package-changed.d.ts.map +1 -0
- package/build/lib/extension/package-changed.js +62 -0
- package/build/lib/extension/package-changed.js.map +1 -0
- package/build/lib/extension/plugin-config.d.ts +56 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +102 -0
- package/build/lib/extension/plugin-config.js.map +1 -0
- package/build/lib/grid-register.d.ts +10 -0
- package/build/lib/grid-register.d.ts.map +1 -0
- package/build/lib/grid-register.js +122 -144
- package/build/lib/grid-register.js.map +1 -0
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +5 -17
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +189 -184
- package/build/lib/logsink.js.map +1 -0
- package/build/lib/main.d.ts +62 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +406 -234
- package/build/lib/main.js.map +1 -0
- package/build/lib/schema/arg-spec.d.ts +143 -0
- package/build/lib/schema/arg-spec.d.ts.map +1 -0
- package/build/lib/schema/arg-spec.js +164 -0
- package/build/lib/schema/arg-spec.js.map +1 -0
- package/build/lib/schema/cli-args.d.ts +19 -0
- package/build/lib/schema/cli-args.d.ts.map +1 -0
- package/build/lib/schema/cli-args.js +220 -0
- package/build/lib/schema/cli-args.js.map +1 -0
- package/build/lib/schema/cli-transformers.d.ts +5 -0
- package/build/lib/schema/cli-transformers.d.ts.map +1 -0
- package/build/lib/schema/cli-transformers.js +124 -0
- package/build/lib/schema/cli-transformers.js.map +1 -0
- package/build/lib/schema/index.d.ts +3 -0
- package/build/lib/schema/index.d.ts.map +1 -0
- package/build/lib/schema/index.js +19 -0
- package/build/lib/schema/index.js.map +1 -0
- package/build/lib/schema/keywords.d.ts +24 -0
- package/build/lib/schema/keywords.d.ts.map +1 -0
- package/build/lib/schema/keywords.js +128 -0
- package/build/lib/schema/keywords.js.map +1 -0
- package/build/lib/schema/schema.d.ts +260 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +640 -0
- package/build/lib/schema/schema.js.map +1 -0
- package/build/lib/utils.d.ts +276 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +373 -271
- package/build/lib/utils.js.map +1 -0
- package/build/types/cli.d.ts +134 -0
- package/build/types/cli.d.ts.map +1 -0
- package/build/types/cli.js +3 -0
- package/build/types/cli.js.map +1 -0
- package/build/types/index.d.ts +15 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +19 -0
- package/build/types/index.js.map +1 -0
- package/build/types/manifest/base.d.ts +135 -0
- package/build/types/manifest/base.d.ts.map +1 -0
- package/build/types/manifest/base.js +3 -0
- package/build/types/manifest/base.js.map +1 -0
- package/build/types/manifest/index.d.ts +21 -0
- package/build/types/manifest/index.d.ts.map +1 -0
- package/build/types/manifest/index.js +42 -0
- package/build/types/manifest/index.js.map +1 -0
- package/build/types/manifest/v3.d.ts +139 -0
- package/build/types/manifest/v3.d.ts.map +1 -0
- package/build/types/manifest/v3.js +3 -0
- package/build/types/manifest/v3.js.map +1 -0
- package/build/types/manifest/v4.d.ts +139 -0
- package/build/types/manifest/v4.d.ts.map +1 -0
- package/build/types/manifest/v4.js +3 -0
- package/build/types/manifest/v4.js.map +1 -0
- package/driver.d.ts +1 -0
- package/driver.js +14 -0
- package/index.js +11 -0
- package/lib/appium.js +555 -185
- package/lib/cli/args.js +275 -407
- package/lib/cli/driver-command.js +132 -24
- package/lib/cli/extension-command.js +751 -272
- package/lib/cli/extension.js +47 -20
- package/lib/cli/parser.js +267 -95
- package/lib/cli/plugin-command.js +122 -22
- package/lib/cli/utils.js +24 -10
- package/lib/config-file.js +220 -0
- package/lib/config.js +243 -132
- package/lib/constants.js +79 -0
- package/lib/extension/driver-config.js +247 -0
- package/lib/extension/extension-config.js +709 -0
- package/lib/extension/index.js +116 -0
- package/lib/extension/manifest-migrations.js +136 -0
- package/lib/extension/manifest.js +580 -0
- package/lib/extension/package-changed.js +64 -0
- package/lib/extension/plugin-config.js +112 -0
- package/lib/grid-register.js +49 -35
- package/lib/logger.js +1 -2
- package/lib/logsink.js +59 -36
- package/lib/main.js +392 -104
- package/lib/schema/arg-spec.js +229 -0
- package/lib/schema/cli-args.js +241 -0
- package/lib/schema/cli-transformers.js +119 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +136 -0
- package/lib/schema/schema.js +725 -0
- package/lib/utils.js +315 -167
- package/package.json +84 -82
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +243 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/tsconfig.json +25 -0
- package/types/cli.ts +193 -0
- package/types/index.ts +20 -0
- package/types/manifest/README.md +30 -0
- package/types/manifest/base.ts +158 -0
- package/types/manifest/index.ts +28 -0
- package/types/manifest/v3.ts +161 -0
- package/types/manifest/v4.ts +161 -0
- package/CHANGELOG.md +0 -3669
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/argparse-actions.js +0 -104
- package/build/lib/cli/npm.js +0 -207
- package/build/lib/cli/parser-helpers.js +0 -93
- package/build/lib/driver-config.js +0 -77
- package/build/lib/drivers.js +0 -99
- package/build/lib/extension-config.js +0 -253
- package/build/lib/plugin-config.js +0 -59
- package/build/lib/plugins.js +0 -14
- package/lib/cli/argparse-actions.js +0 -77
- package/lib/cli/npm.js +0 -183
- package/lib/cli/parser-helpers.js +0 -91
- package/lib/driver-config.js +0 -46
- package/lib/drivers.js +0 -84
- package/lib/extension-config.js +0 -209
- package/lib/plugin-config.js +0 -34
- package/lib/plugins.js +0 -10
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/* eslint no-console:0 */
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Small tool, launching and monitoring ios-web-kit-proxy, and relaunching
|
|
7
|
-
* on predefined errors.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* ./bin/ios-webkit-debug-proxy-launcher.js [args]
|
|
11
|
-
* args: ios-webkit-debug-proxy args (they will be passed over)
|
|
12
|
-
*
|
|
13
|
-
* Example:
|
|
14
|
-
* ./bin/ios-webkit-debug-proxy-launcher.js -c <UDID>:27753 -d
|
|
15
|
-
*
|
|
16
|
-
* Note:
|
|
17
|
-
* For iOS8.1 try this first:
|
|
18
|
-
* brew install --HEAD ideviceinstaller
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
'use strict';
|
|
22
|
-
|
|
23
|
-
const spawn = require('child_process').spawn;
|
|
24
|
-
const _ = require('lodash');
|
|
25
|
-
|
|
26
|
-
const args = process.argv.slice(2);
|
|
27
|
-
|
|
28
|
-
const RESTART_ON_MESSAGES = [
|
|
29
|
-
'Invalid message _rpc_applicationUpdated',
|
|
30
|
-
'Invalid message _rpc_applicationSentListing'];
|
|
31
|
-
|
|
32
|
-
const PROXY_CMD = 'ios_webkit_debug_proxy';
|
|
33
|
-
let proxy;
|
|
34
|
-
|
|
35
|
-
const handleKillProcess = function (exitCode) {
|
|
36
|
-
console.log('\nKilling proxy process!');
|
|
37
|
-
proxy.kill('SIGTERM');
|
|
38
|
-
process.exit((exitCode || 0));
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const startProxy = function () {
|
|
42
|
-
console.log(`RUNNING: ${PROXY_CMD} ${args.join(' ')}`);
|
|
43
|
-
|
|
44
|
-
proxy = spawn(PROXY_CMD, args);
|
|
45
|
-
|
|
46
|
-
proxy.stdout.on('data', function onStdout (data) {
|
|
47
|
-
console.log(`stdout: ${data}`);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
proxy.stderr.on('data', function onStderr (data) {
|
|
51
|
-
console.log(`stderr: ${data}`);
|
|
52
|
-
const restartMessage = _(RESTART_ON_MESSAGES).find(function findMessage (message) {
|
|
53
|
-
return ('' + data).indexOf(message) >= 0;
|
|
54
|
-
});
|
|
55
|
-
if (restartMessage) {
|
|
56
|
-
console.log(`Detected error message: ${restartMessage}`);
|
|
57
|
-
console.log('Killing proxy!');
|
|
58
|
-
proxy.kill('SIGTERM');
|
|
59
|
-
process.nextTick(startProxy);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
proxy.on('close', function onClose (code) {
|
|
64
|
-
console.log(`Child process exited with code ${code}`);
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
process.on('SIGINT', handleKillProcess);
|
|
69
|
-
process.on('SIGTERM', handleKillProcess);
|
|
70
|
-
|
|
71
|
-
startProxy();
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DEFAULT_CAPS_ARG = exports.StoreDeprecatedDefaultCapabilityTrueAction = exports.StoreDeprecatedDefaultCapabilityAction = exports.StoreDeprecatedTrueAction = exports.StoreDeprecatedAction = void 0;
|
|
7
|
-
|
|
8
|
-
require("source-map-support/register");
|
|
9
|
-
|
|
10
|
-
var _argparse = require("argparse");
|
|
11
|
-
|
|
12
|
-
const DEFAULT_CAPS_ARG = '--default-capabilities';
|
|
13
|
-
exports.DEFAULT_CAPS_ARG = DEFAULT_CAPS_ARG;
|
|
14
|
-
|
|
15
|
-
class StoreDeprecatedAction extends _argparse.Action {
|
|
16
|
-
constructor(options = {}) {
|
|
17
|
-
const opts = Object.assign({}, options);
|
|
18
|
-
let helpPrefix = '[DEPRECATED]';
|
|
19
|
-
|
|
20
|
-
if (opts.deprecated_for) {
|
|
21
|
-
helpPrefix = `[DEPRECATED, use ${opts.deprecated_for} instead]`;
|
|
22
|
-
delete opts.deprecated_for;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (opts.help) {
|
|
26
|
-
opts.help = `${helpPrefix} - ${opts.help}`;
|
|
27
|
-
} else {
|
|
28
|
-
opts.help = helpPrefix;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
super(opts);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
call(parser, namespace, values) {
|
|
35
|
-
namespace[this.dest] = values;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
exports.StoreDeprecatedAction = StoreDeprecatedAction;
|
|
41
|
-
|
|
42
|
-
class StoreDeprecatedTrueAction extends StoreDeprecatedAction {
|
|
43
|
-
constructor(options = {}) {
|
|
44
|
-
super(Object.assign({}, options, {
|
|
45
|
-
const: true,
|
|
46
|
-
nargs: 0
|
|
47
|
-
}));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
call(parser, namespace) {
|
|
51
|
-
namespace[this.dest] = this.const;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
exports.StoreDeprecatedTrueAction = StoreDeprecatedTrueAction;
|
|
57
|
-
|
|
58
|
-
class StoreDeprecatedDefaultCapabilityAction extends StoreDeprecatedAction {
|
|
59
|
-
constructor(options = {}) {
|
|
60
|
-
super(Object.assign({}, options, {
|
|
61
|
-
deprecated_for: DEFAULT_CAPS_ARG
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
_writeDefaultCap(namespace, value) {
|
|
66
|
-
namespace[this.dest] = value;
|
|
67
|
-
|
|
68
|
-
if (value === this.default) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (!namespace.defaultCapabilities) {
|
|
73
|
-
namespace.defaultCapabilities = {};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
namespace.defaultCapabilities[this.dest] = value;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
call(parser, namespace, values) {
|
|
80
|
-
this._writeDefaultCap(namespace, values);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
exports.StoreDeprecatedDefaultCapabilityAction = StoreDeprecatedDefaultCapabilityAction;
|
|
86
|
-
|
|
87
|
-
class StoreDeprecatedDefaultCapabilityTrueAction extends StoreDeprecatedDefaultCapabilityAction {
|
|
88
|
-
constructor(options = {}) {
|
|
89
|
-
super(Object.assign({}, options, {
|
|
90
|
-
const: true,
|
|
91
|
-
nargs: 0
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
call(parser, namespace) {
|
|
96
|
-
this._writeDefaultCap(namespace, this.const);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
exports.StoreDeprecatedDefaultCapabilityTrueAction = StoreDeprecatedDefaultCapabilityTrueAction;require('source-map-support').install();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvYXJncGFyc2UtYWN0aW9ucy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0NBUFNfQVJHIiwiU3RvcmVEZXByZWNhdGVkQWN0aW9uIiwiQWN0aW9uIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImhlbHBQcmVmaXgiLCJkZXByZWNhdGVkX2ZvciIsImhlbHAiLCJjYWxsIiwicGFyc2VyIiwibmFtZXNwYWNlIiwidmFsdWVzIiwiZGVzdCIsIlN0b3JlRGVwcmVjYXRlZFRydWVBY3Rpb24iLCJjb25zdCIsIm5hcmdzIiwiU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24iLCJfd3JpdGVEZWZhdWx0Q2FwIiwidmFsdWUiLCJkZWZhdWx0IiwiZGVmYXVsdENhcGFiaWxpdGllcyIsIlN0b3JlRGVwcmVjYXRlZERlZmF1bHRDYXBhYmlsaXR5VHJ1ZUFjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUcsd0JBQXpCOzs7QUFHQSxNQUFNQyxxQkFBTixTQUFvQ0MsZ0JBQXBDLENBQTJDO0FBQ3pDQyxFQUFBQSxXQUFXLENBQUVDLE9BQU8sR0FBRyxFQUFaLEVBQWdCO0FBQ3pCLFVBQU1DLElBQUksR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkgsT0FBbEIsQ0FBYjtBQUNBLFFBQUlJLFVBQVUsR0FBRyxjQUFqQjs7QUFDQSxRQUFJSCxJQUFJLENBQUNJLGNBQVQsRUFBeUI7QUFDdkJELE1BQUFBLFVBQVUsR0FBSSxvQkFBbUJILElBQUksQ0FBQ0ksY0FBZSxXQUFyRDtBQUNBLGFBQU9KLElBQUksQ0FBQ0ksY0FBWjtBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssSUFBVCxFQUFlO0FBQ2JMLE1BQUFBLElBQUksQ0FBQ0ssSUFBTCxHQUFhLEdBQUVGLFVBQVcsTUFBS0gsSUFBSSxDQUFDSyxJQUFLLEVBQXpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0xMLE1BQUFBLElBQUksQ0FBQ0ssSUFBTCxHQUFZRixVQUFaO0FBQ0Q7O0FBQ0QsVUFBTUgsSUFBTjtBQUNEOztBQUVETSxFQUFBQSxJQUFJLENBQUVDLE1BQUYsRUFBVUMsU0FBVixFQUFxQkMsTUFBckIsRUFBNkI7QUFDL0JELElBQUFBLFNBQVMsQ0FBQyxLQUFLRSxJQUFOLENBQVQsR0FBdUJELE1BQXZCO0FBQ0Q7O0FBbEJ3Qzs7OztBQXNCM0MsTUFBTUUseUJBQU4sU0FBd0NmLHFCQUF4QyxDQUE4RDtBQUM1REUsRUFBQUEsV0FBVyxDQUFFQyxPQUFPLEdBQUcsRUFBWixFQUFnQjtBQUN6QixVQUFNRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixFQUEyQjtBQUFDYSxNQUFBQSxLQUFLLEVBQUUsSUFBUjtBQUFjQyxNQUFBQSxLQUFLLEVBQUU7QUFBckIsS0FBM0IsQ0FBTjtBQUNEOztBQUVEUCxFQUFBQSxJQUFJLENBQUVDLE1BQUYsRUFBVUMsU0FBVixFQUFxQjtBQUN2QkEsSUFBQUEsU0FBUyxDQUFDLEtBQUtFLElBQU4sQ0FBVCxHQUF1QixLQUFLRSxLQUE1QjtBQUNEOztBQVAyRDs7OztBQVc5RCxNQUFNRSxzQ0FBTixTQUFxRGxCLHFCQUFyRCxDQUEyRTtBQUN6RUUsRUFBQUEsV0FBVyxDQUFFQyxPQUFPLEdBQUcsRUFBWixFQUFnQjtBQUN6QixVQUFNRSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxPQUFsQixFQUEyQjtBQUFDSyxNQUFBQSxjQUFjLEVBQUVUO0FBQWpCLEtBQTNCLENBQU47QUFDRDs7QUFFRG9CLEVBQUFBLGdCQUFnQixDQUFFUCxTQUFGLEVBQWFRLEtBQWIsRUFBb0I7QUFDbENSLElBQUFBLFNBQVMsQ0FBQyxLQUFLRSxJQUFOLENBQVQsR0FBdUJNLEtBQXZCOztBQUNBLFFBQUlBLEtBQUssS0FBSyxLQUFLQyxPQUFuQixFQUE0QjtBQUMxQjtBQUNEOztBQUVELFFBQUksQ0FBQ1QsU0FBUyxDQUFDVSxtQkFBZixFQUFvQztBQUNsQ1YsTUFBQUEsU0FBUyxDQUFDVSxtQkFBVixHQUFnQyxFQUFoQztBQUNEOztBQUNEVixJQUFBQSxTQUFTLENBQUNVLG1CQUFWLENBQThCLEtBQUtSLElBQW5DLElBQTJDTSxLQUEzQztBQUNEOztBQUVEVixFQUFBQSxJQUFJLENBQUVDLE1BQUYsRUFBVUMsU0FBVixFQUFxQkMsTUFBckIsRUFBNkI7QUFDL0IsU0FBS00sZ0JBQUwsQ0FBc0JQLFNBQXRCLEVBQWlDQyxNQUFqQztBQUNEOztBQW5Cd0U7Ozs7QUF1QjNFLE1BQU1VLDBDQUFOLFNBQXlETCxzQ0FBekQsQ0FBZ0c7QUFDOUZoQixFQUFBQSxXQUFXLENBQUVDLE9BQU8sR0FBRyxFQUFaLEVBQWdCO0FBQ3pCLFVBQU1FLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JILE9BQWxCLEVBQTJCO0FBQUNhLE1BQUFBLEtBQUssRUFBRSxJQUFSO0FBQWNDLE1BQUFBLEtBQUssRUFBRTtBQUFyQixLQUEzQixDQUFOO0FBQ0Q7O0FBRURQLEVBQUFBLElBQUksQ0FBRUMsTUFBRixFQUFVQyxTQUFWLEVBQXFCO0FBQ3ZCLFNBQUtPLGdCQUFMLENBQXNCUCxTQUF0QixFQUFpQyxLQUFLSSxLQUF0QztBQUNEOztBQVA2RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ2FyZ3BhcnNlJztcblxuXG5jb25zdCBERUZBVUxUX0NBUFNfQVJHID0gJy0tZGVmYXVsdC1jYXBhYmlsaXRpZXMnO1xuXG5cbmNsYXNzIFN0b3JlRGVwcmVjYXRlZEFjdGlvbiBleHRlbmRzIEFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yIChvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gICAgbGV0IGhlbHBQcmVmaXggPSAnW0RFUFJFQ0FURURdJztcbiAgICBpZiAob3B0cy5kZXByZWNhdGVkX2Zvcikge1xuICAgICAgaGVscFByZWZpeCA9IGBbREVQUkVDQVRFRCwgdXNlICR7b3B0cy5kZXByZWNhdGVkX2Zvcn0gaW5zdGVhZF1gO1xuICAgICAgZGVsZXRlIG9wdHMuZGVwcmVjYXRlZF9mb3I7XG4gICAgfVxuICAgIGlmIChvcHRzLmhlbHApIHtcbiAgICAgIG9wdHMuaGVscCA9IGAke2hlbHBQcmVmaXh9IC0gJHtvcHRzLmhlbHB9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0cy5oZWxwID0gaGVscFByZWZpeDtcbiAgICB9XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICBjYWxsIChwYXJzZXIsIG5hbWVzcGFjZSwgdmFsdWVzKSB7XG4gICAgbmFtZXNwYWNlW3RoaXMuZGVzdF0gPSB2YWx1ZXM7XG4gIH1cbn1cblxuXG5jbGFzcyBTdG9yZURlcHJlY2F0ZWRUcnVlQWN0aW9uIGV4dGVuZHMgU3RvcmVEZXByZWNhdGVkQWN0aW9uIHtcbiAgY29uc3RydWN0b3IgKG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIHtjb25zdDogdHJ1ZSwgbmFyZ3M6IDB9KSk7XG4gIH1cblxuICBjYWxsIChwYXJzZXIsIG5hbWVzcGFjZSkge1xuICAgIG5hbWVzcGFjZVt0aGlzLmRlc3RdID0gdGhpcy5jb25zdDtcbiAgfVxufVxuXG5cbmNsYXNzIFN0b3JlRGVwcmVjYXRlZERlZmF1bHRDYXBhYmlsaXR5QWN0aW9uIGV4dGVuZHMgU3RvcmVEZXByZWNhdGVkQWN0aW9uIHtcbiAgY29uc3RydWN0b3IgKG9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIHtkZXByZWNhdGVkX2ZvcjogREVGQVVMVF9DQVBTX0FSR30pKTtcbiAgfVxuXG4gIF93cml0ZURlZmF1bHRDYXAgKG5hbWVzcGFjZSwgdmFsdWUpIHtcbiAgICBuYW1lc3BhY2VbdGhpcy5kZXN0XSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5kZWZhdWx0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFuYW1lc3BhY2UuZGVmYXVsdENhcGFiaWxpdGllcykge1xuICAgICAgbmFtZXNwYWNlLmRlZmF1bHRDYXBhYmlsaXRpZXMgPSB7fTtcbiAgICB9XG4gICAgbmFtZXNwYWNlLmRlZmF1bHRDYXBhYmlsaXRpZXNbdGhpcy5kZXN0XSA9IHZhbHVlO1xuICB9XG5cbiAgY2FsbCAocGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcykge1xuICAgIHRoaXMuX3dyaXRlRGVmYXVsdENhcChuYW1lc3BhY2UsIHZhbHVlcyk7XG4gIH1cbn1cblxuXG5jbGFzcyBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eVRydWVBY3Rpb24gZXh0ZW5kcyBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0cnVjdG9yIChvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7Y29uc3Q6IHRydWUsIG5hcmdzOiAwfSkpO1xuICB9XG5cbiAgY2FsbCAocGFyc2VyLCBuYW1lc3BhY2UpIHtcbiAgICB0aGlzLl93cml0ZURlZmF1bHRDYXAobmFtZXNwYWNlLCB0aGlzLmNvbnN0KTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBTdG9yZURlcHJlY2F0ZWRBY3Rpb24sIFN0b3JlRGVwcmVjYXRlZFRydWVBY3Rpb24sXG4gIFN0b3JlRGVwcmVjYXRlZERlZmF1bHRDYXBhYmlsaXR5QWN0aW9uLCBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eVRydWVBY3Rpb24sXG4gIERFRkFVTFRfQ0FQU19BUkcsXG59O1xuIl0sImZpbGUiOiJsaWIvY2xpL2FyZ3BhcnNlLWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
package/build/lib/cli/npm.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
require("source-map-support/register");
|
|
11
|
-
|
|
12
|
-
var _path = _interopRequireDefault(require("path"));
|
|
13
|
-
|
|
14
|
-
var _semver = _interopRequireDefault(require("semver"));
|
|
15
|
-
|
|
16
|
-
var _teen_process = require("teen_process");
|
|
17
|
-
|
|
18
|
-
var _appiumSupport = require("appium-support");
|
|
19
|
-
|
|
20
|
-
const INSTALL_LOCKFILE = '.appium.install.lock';
|
|
21
|
-
const LINK_LOCKFILE = '.appium.link.lock';
|
|
22
|
-
|
|
23
|
-
class NPM {
|
|
24
|
-
constructor(appiumHome) {
|
|
25
|
-
this.appiumHome = appiumHome;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async exec(cmd, args, opts, execOpts = {}) {
|
|
29
|
-
let {
|
|
30
|
-
cwd,
|
|
31
|
-
json,
|
|
32
|
-
lockFile
|
|
33
|
-
} = opts;
|
|
34
|
-
|
|
35
|
-
if (!cwd) {
|
|
36
|
-
cwd = this.appiumHome;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
await (0, _appiumSupport.mkdirp)(cwd);
|
|
40
|
-
|
|
41
|
-
const dummyPkgJson = _path.default.resolve(cwd, 'package.json');
|
|
42
|
-
|
|
43
|
-
if (!(await _appiumSupport.fs.exists(dummyPkgJson))) {
|
|
44
|
-
await _appiumSupport.fs.writeFile(dummyPkgJson, '{}');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
execOpts = { ...execOpts,
|
|
48
|
-
cwd
|
|
49
|
-
};
|
|
50
|
-
args.unshift(cmd);
|
|
51
|
-
|
|
52
|
-
if (json) {
|
|
53
|
-
args.push('-json');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const npmCmd = _appiumSupport.system.isWindows() ? 'npm.cmd' : 'npm';
|
|
57
|
-
|
|
58
|
-
let runner = async () => await (0, _teen_process.exec)(npmCmd, args, execOpts);
|
|
59
|
-
|
|
60
|
-
if (lockFile) {
|
|
61
|
-
const acquireLock = _appiumSupport.util.getLockFileGuard(_path.default.resolve(cwd, lockFile));
|
|
62
|
-
|
|
63
|
-
const _runner = runner;
|
|
64
|
-
|
|
65
|
-
runner = async () => await acquireLock(_runner);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const {
|
|
69
|
-
stdout,
|
|
70
|
-
stderr,
|
|
71
|
-
code
|
|
72
|
-
} = await runner();
|
|
73
|
-
const ret = {
|
|
74
|
-
stdout,
|
|
75
|
-
stderr,
|
|
76
|
-
code,
|
|
77
|
-
json: null
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
if (json) {
|
|
81
|
-
try {
|
|
82
|
-
ret.json = JSON.parse(stdout);
|
|
83
|
-
} catch (ign) {}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return ret;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
async getLatestVersion(pkg) {
|
|
90
|
-
return (await this.exec('view', [pkg, 'dist-tags'], {
|
|
91
|
-
json: true
|
|
92
|
-
})).json.latest;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async getLatestSafeUpgradeVersion(pkg, curVersion) {
|
|
96
|
-
const allVersions = (await this.exec('view', [pkg, 'versions'], {
|
|
97
|
-
json: true
|
|
98
|
-
})).json;
|
|
99
|
-
return this.getLatestSafeUpgradeFromVersions(curVersion, allVersions);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
getLatestSafeUpgradeFromVersions(curVersion, allVersions) {
|
|
103
|
-
let safeUpgradeVer = null;
|
|
104
|
-
|
|
105
|
-
const curSemver = _semver.default.parse(curVersion);
|
|
106
|
-
|
|
107
|
-
if (curSemver === null) {
|
|
108
|
-
throw new Error(`Could not parse current version '${curVersion}'`);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
for (const testVer of allVersions) {
|
|
112
|
-
const testSemver = _semver.default.parse(testVer);
|
|
113
|
-
|
|
114
|
-
if (testSemver === null) {
|
|
115
|
-
throw new Error(`Could not parse version to test against: '${testVer}'`);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (testSemver.prerelease.length > 0) {
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (curSemver.compare(testSemver) === 1) {
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (testSemver.major > curSemver.major) {
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (safeUpgradeVer === null || testSemver.compare(safeUpgradeVer) === 1) {
|
|
131
|
-
safeUpgradeVer = testSemver;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (safeUpgradeVer) {
|
|
136
|
-
safeUpgradeVer = safeUpgradeVer.format();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return safeUpgradeVer;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
async installPackage({
|
|
143
|
-
pkgDir,
|
|
144
|
-
pkgName,
|
|
145
|
-
pkgVer
|
|
146
|
-
}) {
|
|
147
|
-
const res = await this.exec('install', ['--no-save', '--no-package-lock', pkgVer ? `${pkgName}@${pkgVer}` : pkgName], {
|
|
148
|
-
cwd: pkgDir,
|
|
149
|
-
json: true,
|
|
150
|
-
lockFile: INSTALL_LOCKFILE
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
if (res.json) {
|
|
154
|
-
if (res.json.error) {
|
|
155
|
-
throw new Error(res.json.error);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const pkgJson = _path.default.resolve(pkgDir, 'node_modules', pkgName, 'package.json');
|
|
160
|
-
|
|
161
|
-
try {
|
|
162
|
-
return require(pkgJson);
|
|
163
|
-
} catch {
|
|
164
|
-
throw new Error('The package was not downloaded correctly; its package.json ' + 'did not exist or was unreadable. We looked for it at ' + pkgJson);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
async linkPackage(pkgPath) {
|
|
169
|
-
let pkgName;
|
|
170
|
-
|
|
171
|
-
try {
|
|
172
|
-
pkgName = require(_path.default.resolve(pkgPath, 'package.json')).name;
|
|
173
|
-
} catch {
|
|
174
|
-
throw new Error('Could not find package.json inside the package path ' + `provided: ${pkgPath}`);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const pkgHome = _path.default.resolve(this.appiumHome, pkgName);
|
|
178
|
-
|
|
179
|
-
const res = await this.exec('link', [pkgPath], {
|
|
180
|
-
cwd: pkgHome,
|
|
181
|
-
lockFile: LINK_LOCKFILE
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
if (res.json && res.json.error) {
|
|
185
|
-
throw new Error(res.json.error);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
try {
|
|
189
|
-
return require(_path.default.resolve(pkgHome, 'node_modules', pkgName, 'package.json'));
|
|
190
|
-
} catch {
|
|
191
|
-
throw new Error('The package was not linked correctly; its package.json ' + 'did not exist or was unreadable');
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async uninstallPackage(pkgDir, pkg) {
|
|
196
|
-
await this.exec('uninstall', [pkg], {
|
|
197
|
-
cwd: pkgDir,
|
|
198
|
-
lockFile: INSTALL_LOCKFILE
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
exports.default = NPM;require('source-map-support').install();
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvbnBtLmpzIl0sIm5hbWVzIjpbIklOU1RBTExfTE9DS0ZJTEUiLCJMSU5LX0xPQ0tGSUxFIiwiTlBNIiwiY29uc3RydWN0b3IiLCJhcHBpdW1Ib21lIiwiZXhlYyIsImNtZCIsImFyZ3MiLCJvcHRzIiwiZXhlY09wdHMiLCJjd2QiLCJqc29uIiwibG9ja0ZpbGUiLCJkdW1teVBrZ0pzb24iLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwiZXhpc3RzIiwid3JpdGVGaWxlIiwidW5zaGlmdCIsInB1c2giLCJucG1DbWQiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJydW5uZXIiLCJhY3F1aXJlTG9jayIsInV0aWwiLCJnZXRMb2NrRmlsZUd1YXJkIiwiX3J1bm5lciIsInN0ZG91dCIsInN0ZGVyciIsImNvZGUiLCJyZXQiLCJKU09OIiwicGFyc2UiLCJpZ24iLCJnZXRMYXRlc3RWZXJzaW9uIiwicGtnIiwibGF0ZXN0IiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIiwiY3VyVmVyc2lvbiIsImFsbFZlcnNpb25zIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMiLCJzYWZlVXBncmFkZVZlciIsImN1clNlbXZlciIsInNlbXZlciIsIkVycm9yIiwidGVzdFZlciIsInRlc3RTZW12ZXIiLCJwcmVyZWxlYXNlIiwibGVuZ3RoIiwiY29tcGFyZSIsIm1ham9yIiwiZm9ybWF0IiwiaW5zdGFsbFBhY2thZ2UiLCJwa2dEaXIiLCJwa2dOYW1lIiwicGtnVmVyIiwicmVzIiwiZXJyb3IiLCJwa2dKc29uIiwicmVxdWlyZSIsImxpbmtQYWNrYWdlIiwicGtnUGF0aCIsIm5hbWUiLCJwa2dIb21lIiwidW5pbnN0YWxsUGFja2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRyxzQkFBekI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsbUJBQXRCOztBQUVlLE1BQU1DLEdB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QUFPLEdBQUduRCxjQUFLQyxPQUFMLENBQWEsS0FBS1gsVUFBbEIsRUFBOEJvRCxPQUE5QixDQUFoQjs7QUFDQSxVQUFNRSxHQUFHLEdBQUcsTUFBTSxLQUFLckQsSUFBTCxDQUFVLE1BQVYsRUFBa0IsQ0FBQzBELE9BQUQsQ0FBbEIsRUFBNkI7QUFBQ3JELE1BQUFBLEdBQUcsRUFBRXVELE9BQU47QUFBZXJELE1BQUFBLFFBQVEsRUFBRVg7QUFBekIsS0FBN0IsQ0FBbEI7O0FBQ0EsUUFBSXlELEdBQUcsQ0FBQy9DLElBQUosSUFBWStDLEdBQUcsQ0FBQy9DLElBQUosQ0FBU2dELEtBQXpCLEVBQWdDO0FBQzlCLFlBQU0sSUFBSWIsS0FBSixDQUFVWSxHQUFHLENBQUMvQyxJQUFKLENBQVNnRCxLQUFuQixDQUFOO0FBQ0Q7O0FBR0QsUUFBSTtBQUNGLGFBQU9FLE9BQU8sQ0FBQy9DLGNBQUtDLE9BQUwsQ0FBYWtELE9BQWIsRUFBc0IsY0FBdEIsRUFBc0NULE9BQXRDLEVBQStDLGNBQS9DLENBQUQsQ0FBZDtBQUNELEtBRkQsQ0FFRSxNQUFNO0FBQ04sWUFBTSxJQUFJVixLQUFKLENBQVUsNERBQ0EsaUNBRFYsQ0FBTjtBQUVEO0FBQ0Y7O0FBRUQsUUFBTW9CLGdCQUFOLENBQXdCWCxNQUF4QixFQUFnQ2xCLEdBQWhDLEVBQXFDO0FBQ25DLFVBQU0sS0FBS2hDLElBQUwsQ0FBVSxXQUFWLEVBQXVCLENBQUNnQyxHQUFELENBQXZCLEVBQThCO0FBQ2xDM0IsTUFBQUEsR0FBRyxFQUFFNkMsTUFENkI7QUFFbEMzQyxNQUFBQSxRQUFRLEVBQUVaO0FBRndCLEtBQTlCLENBQU47QUFJRDs7QUE3S3NCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzLCBta2RpcnAsIHV0aWwsIHN5c3RlbSB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcblxuY29uc3QgSU5TVEFMTF9MT0NLRklMRSA9ICcuYXBwaXVtLmluc3RhbGwubG9jayc7XG5jb25zdCBMSU5LX0xPQ0tGSUxFID0gJy5hcHBpdW0ubGluay5sb2NrJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTlBNIHtcblxuICBjb25zdHJ1Y3RvciAoYXBwaXVtSG9tZSkge1xuICAgIHRoaXMuYXBwaXVtSG9tZSA9IGFwcGl1bUhvbWU7XG4gIH1cblxuICBhc3luYyBleGVjIChjbWQsIGFyZ3MsIG9wdHMsIGV4ZWNPcHRzID0ge30pIHtcbiAgICBsZXQgeyBjd2QsIGpzb24sIGxvY2tGaWxlIH0gPSBvcHRzO1xuICAgIGlmICghY3dkKSB7XG4gICAgICBjd2QgPSB0aGlzLmFwcGl1bUhvbWU7XG4gICAgfVxuICAgIC8vIGVuc3VyZSB0aGUgZGlyZWN0b3J5IHdlIHdhbnQgdG8gaW5zdGFsbCBpbnNpZGUgb2YgZXhpc3RzXG4gICAgYXdhaXQgbWtkaXJwKGN3ZCk7XG5cbiAgICAvLyBub3Qgb25seSB0aGlzLCB0aGlzIGRpcmVjdG9yeSBuZWVkcyBhICdwYWNrYWdlLmpzb24nIGluc2lkZSBvZiBpdCwgb3RoZXJ3aXNlLCBpZiBhbnlcbiAgICAvLyBkaXJlY3RvcnkgaW4gdGhlIGZpbGVzeXN0ZW0gdHJlZSBBQk9WRSBjd2QgaGFwcGVucyB0byBoYXZlIGEgcGFja2FnZS5qc29uIG9yIGEgbm9kZV9tb2R1bGVzXG4gICAgLy8gZGlyIGluIGl0LCBOUE0gd2lsbCBpbnN0YWxsIHRoZSBtb2R1bGUgdXAgdGhlcmUgaW5zdGVhZCAoc2lsbHkgTlBNKVxuICAgIGNvbnN0IGR1bW15UGtnSnNvbiA9IHBhdGgucmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKTtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhkdW1teVBrZ0pzb24pKSB7XG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoZHVtbXlQa2dKc29uLCAne30nKTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgY3VycmVudCBvcGVyYXRpb24gaW4gY3dkXG4gICAgZXhlY09wdHMgPSB7Li4uZXhlY09wdHMsIGN3ZH07XG5cbiAgICBhcmdzLnVuc2hpZnQoY21kKTtcbiAgICBpZiAoanNvbikge1xuICAgICAgYXJncy5wdXNoKCctanNvbicpO1xuICAgIH1cbiAgICBjb25zdCBucG1DbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnbnBtLmNtZCcgOiAnbnBtJztcbiAgICBsZXQgcnVubmVyID0gYXN5bmMgKCkgPT4gYXdhaXQgZXhlYyhucG1DbWQsIGFyZ3MsIGV4ZWNPcHRzKTtcbiAgICBpZiAobG9ja0ZpbGUpIHtcbiAgICAgIGNvbnN0IGFjcXVpcmVMb2NrID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKHBhdGgucmVzb2x2ZShjd2QsIGxvY2tGaWxlKSk7XG4gICAgICBjb25zdCBfcnVubmVyID0gcnVubmVyO1xuICAgICAgcnVubmVyID0gYXN5bmMgKCkgPT4gYXdhaXQgYWNxdWlyZUxvY2soX3J1bm5lcik7XG4gICAgfVxuICAgIGNvbnN0IHtzdGRvdXQsIHN0ZGVyciwgY29kZX0gPSBhd2FpdCBydW5uZXIoKTtcbiAgICBjb25zdCByZXQgPSB7c3Rkb3V0LCBzdGRlcnIsIGNvZGUsIGpzb246IG51bGx9O1xuXG4gICAgaWYgKGpzb24pIHtcbiAgICAgIC8vIGlmIHBvc3NpYmxlLCBwYXJzZSBOUE0ncyBqc29uIG91dHB1dC4gRHVyaW5nIE5QTSBpbnN0YWxsIDNyZC1wYXJ0eVxuICAgICAgLy8gcGFja2FnZXMgY2FuIHdyaXRlIHRvIHN0ZG91dCwgc28gc29tZXRpbWVzIHRoZSBqc29uIG91dHB1dCBjYW4ndCBiZVxuICAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSBwYXJzZWFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldC5qc29uID0gSlNPTi5wYXJzZShzdGRvdXQpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBhc3luYyBnZXRMYXRlc3RWZXJzaW9uIChwa2cpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICdkaXN0LXRhZ3MnXSwge1xuICAgICAganNvbjogdHJ1ZVxuICAgIH0pKS5qc29uLmxhdGVzdDtcbiAgfVxuXG4gIGFzeW5jIGdldExhdGVzdFNhZmVVcGdyYWRlVmVyc2lvbiAocGtnLCBjdXJWZXJzaW9uKSB7XG4gICAgY29uc3QgYWxsVmVyc2lvbnMgPSAoYXdhaXQgdGhpcy5leGVjKCd2aWV3JywgW3BrZywgJ3ZlcnNpb25zJ10sIHtcbiAgICAgIGpzb246IHRydWVcbiAgICB9KSkuanNvbjtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXRlc3RTYWZlVXBncmFkZUZyb21WZXJzaW9ucyhjdXJWZXJzaW9uLCBhbGxWZXJzaW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBjdXJyZW50IHZlcnNpb24gYW5kIGEgbGlzdCBvZiBhbGwgdmVyc2lvbnMgZm9yIGEgcGFja2FnZSwgcmV0dXJuIHRoZSB2ZXJzaW9uIHdoaWNoIGlzXG4gICAqIHRoZSBoaWdoZXN0IHNhZmVseS11cGdyYWRhYmxlIHZlcnNpb24gKG1lYW5pbmcgbm90IGNyb3NzaW5nIGFueSBtYWpvciByZXZpc2lvbiBib3VuZGFyaWVzLCBhbmRcbiAgICogbm90IGluY2x1ZGluZyBhbnkgYWxwaGEvYmV0YS9yYyB2ZXJzaW9ucylcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1clZlcnNpb24gLSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIGEgcGFja2FnZVxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGFsbFZlcnNpb25zIC0gYSBsaXN0IG9mIHZlcnNpb24gc3RyaW5nc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd8bnVsbH0gLSB0aGUgaGlnaGVzdCBzYWZlbHktdXBncmFkYWJsZSB2ZXJzaW9uLCBvciBudWxsIGlmIHRoZXJlIGlzbid0IG9uZVxuICAgKi9cbiAgZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMgKGN1clZlcnNpb24sIGFsbFZlcnNpb25zKSB7XG4gICAgbGV0IHNhZmVVcGdyYWRlVmVyID0gbnVsbDtcbiAgICBjb25zdCBjdXJTZW12ZXIgPSBzZW12ZXIucGFyc2UoY3VyVmVyc2lvbik7XG4gICAgaWYgKGN1clNlbXZlciA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgY3VycmVudCB2ZXJzaW9uICcke2N1clZlcnNpb259J2ApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHRlc3RWZXIgb2YgYWxsVmVyc2lvbnMpIHtcbiAgICAgIGNvbnN0IHRlc3RTZW12ZXIgPSBzZW12ZXIucGFyc2UodGVzdFZlcik7XG4gICAgICBpZiAodGVzdFNlbXZlciA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSB2ZXJzaW9uIHRvIHRlc3QgYWdhaW5zdDogJyR7dGVzdFZlcn0nYCk7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgdGVzdCB2ZXJzaW9uIGlzIGEgcHJlcmVsZWFzZSwgaWdub3JlIGl0XG4gICAgICBpZiAodGVzdFNlbXZlci5wcmVyZWxlYXNlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGxhdGVyIHRoYW4gdGhlIHRlc3QgdmVyc2lvbiwgc2tpcCB0aGlzIHRlc3QgdmVyc2lvblxuICAgICAgaWYgKGN1clNlbXZlci5jb21wYXJlKHRlc3RTZW12ZXIpID09PSAxKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIHRlc3QgdmVyc2lvbiBpcyBuZXdlciwgYnV0IGNyb3NzZXMgYSBtYWpvciByZXZpc2lvbiBib3VuZGFyeSwgYWxzbyBza2lwIGl0XG4gICAgICBpZiAodGVzdFNlbXZlci5tYWpvciA+IGN1clNlbXZlci5tYWpvcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIG90aGVyd2lzZSB0aGlzIHZlcnNpb24gaXMgc2FmZSB0byB1cGdyYWRlIHRvLiBCdXQgdGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgb25lcyBvZiB0aGlzXG4gICAgICAvLyBraW5kLCBzbyBrZWVwIGl0ZXJhdGluZyBhbmQga2VlcGluZyB0aGUgaGlnaGVzdFxuICAgICAgaWYgKHNhZmVVcGdyYWRlVmVyID09PSBudWxsIHx8IHRlc3RTZW12ZXIuY29tcGFyZShzYWZlVXBncmFkZVZlcikgPT09IDEpIHtcbiAgICAgICAgc2FmZVVwZ3JhZGVWZXIgPSB0ZXN0U2VtdmVyO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2FmZVVwZ3JhZGVWZXIpIHtcbiAgICAgIHNhZmVVcGdyYWRlVmVyID0gc2FmZVVwZ3JhZGVWZXIuZm9ybWF0KCk7XG4gICAgfVxuICAgIHJldHVybiBzYWZlVXBncmFkZVZlcjtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxQYWNrYWdlICh7cGtnRGlyLCBwa2dOYW1lLCBwa2dWZXJ9KSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5leGVjKCdpbnN0YWxsJywgW1xuICAgICAgJy0tbm8tc2F2ZScsXG4gICAgICAnLS1uby1wYWNrYWdlLWxvY2snLFxuICAgICAgcGtnVmVyID8gYCR7cGtnTmFtZX1AJHtwa2dWZXJ9YCA6IHBrZ05hbWVcbiAgICBdLCB7XG4gICAgICBjd2Q6IHBrZ0RpcixcbiAgICAgIGpzb246IHRydWUsXG4gICAgICBsb2NrRmlsZTogSU5TVEFMTF9MT0NLRklMRVxuICAgIH0pO1xuXG4gICAgaWYgKHJlcy5qc29uKSB7XG4gICAgICAvLyB3ZSBwYXJzZWQgYSB2YWxpZCBqc29uIHJlc3BvbnNlLCBzbyBpZiB3ZSBnb3QgYW4gZXJyb3IgaGVyZSwgcmV0dXJuIHRoYXRcbiAgICAgIC8vIG1lc3NhZ2Ugc3RyYWlnaHRhd2F5XG4gICAgICBpZiAocmVzLmpzb24uZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5qc29uLmVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOb3cgcmVhZCBwYWNrYWdlIGRhdGEgZnJvbSB0aGUgaW5zdGFsbGVkIHBhY2thZ2UgdG8gcmV0dXJuLCBhbmQgbWFrZSBzdXJlXG4gICAgLy8gZXZlcnl0aGluZyBnb3QgaW5zdGFsbGVkIG9rLiBSZW1lbWJlciwgcGtnTmFtZSBtaWdodCBlbmQgdXAgd2l0aCBhIC8gaW4gaXQgZHVlIHRvIGFuIG5wbVxuICAgIC8vIG9yZywgc28gaWYgc28sIHRoYXQgd2lsbCBnZXQgY29ycmVjdGx5IGV4cGxvZGVkIGludG8gbXVsdGlwbGUgZGlyZWN0b3JpZXMsIGJ5IHBhdGgucmVzb2x2ZSBoZXJlXG4gICAgLy8gKGV2ZW4gb24gV2luZG93cyEpXG4gICAgY29uc3QgcGtnSnNvbiA9IHBhdGgucmVzb2x2ZShwa2dEaXIsICdub2RlX21vZHVsZXMnLCBwa2dOYW1lLCAncGFja2FnZS5qc29uJyk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZXF1aXJlKHBrZ0pzb24pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgcGFja2FnZSB3YXMgbm90IGRvd25sb2FkZWQgY29ycmVjdGx5OyBpdHMgcGFja2FnZS5qc29uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdkaWQgbm90IGV4aXN0IG9yIHdhcyB1bnJlYWRhYmxlLiBXZSBsb29rZWQgZm9yIGl0IGF0ICcgK1xuICAgICAgICAgICAgICAgICAgICAgIHBrZ0pzb24pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxpbmtQYWNrYWdlIChwa2dQYXRoKSB7XG4gICAgLy8gZnJvbSB0aGUgcGF0aCBhbG9uZSB3ZSBkb24ndCBrbm93IHRoZSBucG0gcGFja2FnZSBuYW1lLCBzbyB3ZSBuZWVkIHRvXG4gICAgLy8gbG9vayBpbiBwYWNrYWdlLmpzb25cbiAgICBsZXQgcGtnTmFtZTtcbiAgICB0cnkge1xuICAgICAgcGtnTmFtZSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKHBrZ1BhdGgsICdwYWNrYWdlLmpzb24nKSkubmFtZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgcGFja2FnZS5qc29uIGluc2lkZSB0aGUgcGFja2FnZSBwYXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgIGBwcm92aWRlZDogJHtwa2dQYXRofWApO1xuICAgIH1cblxuICAgIGNvbnN0IHBrZ0hvbWUgPSBwYXRoLnJlc29sdmUodGhpcy5hcHBpdW1Ib21lLCBwa2dOYW1lKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmV4ZWMoJ2xpbmsnLCBbcGtnUGF0aF0sIHtjd2Q6IHBrZ0hvbWUsIGxvY2tGaWxlOiBMSU5LX0xPQ0tGSUxFfSk7XG4gICAgaWYgKHJlcy5qc29uICYmIHJlcy5qc29uLmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLmpzb24uZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIG5vdyBlbnN1cmUgaXQgd2FzIGxpbmtlZCB0byB0aGUgY29ycmVjdCBwbGFjZVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVxdWlyZShwYXRoLnJlc29sdmUocGtnSG9tZSwgJ25vZGVfbW9kdWxlcycsIHBrZ05hbWUsICdwYWNrYWdlLmpzb24nKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwYWNrYWdlIHdhcyBub3QgbGlua2VkIGNvcnJlY3RseTsgaXRzIHBhY2thZ2UuanNvbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAnZGlkIG5vdCBleGlzdCBvciB3YXMgdW5yZWFkYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVuaW5zdGFsbFBhY2thZ2UgKHBrZ0RpciwgcGtnKSB7XG4gICAgYXdhaXQgdGhpcy5leGVjKCd1bmluc3RhbGwnLCBbcGtnXSwge1xuICAgICAgY3dkOiBwa2dEaXIsXG4gICAgICBsb2NrRmlsZTogSU5TVEFMTF9MT0NLRklMRVxuICAgIH0pO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9jbGkvbnBtLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.parseSecurityFeatures = parseSecurityFeatures;
|
|
9
|
-
exports.parseDefaultCaps = parseDefaultCaps;
|
|
10
|
-
exports.parseInstallTypes = parseInstallTypes;
|
|
11
|
-
exports.parsePluginNames = parsePluginNames;
|
|
12
|
-
|
|
13
|
-
require("source-map-support/register");
|
|
14
|
-
|
|
15
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
16
|
-
|
|
17
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
18
|
-
|
|
19
|
-
var _extensionConfig = require("../extension-config");
|
|
20
|
-
|
|
21
|
-
function parseSecurityFeatures(features) {
|
|
22
|
-
const splitter = (splitOn, str) => `${str}`.split(splitOn).map(s => s.trim()).filter(Boolean);
|
|
23
|
-
|
|
24
|
-
let parsedFeatures;
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
parsedFeatures = splitter(',', features);
|
|
28
|
-
} catch (err) {
|
|
29
|
-
throw new TypeError('Could not parse value of --allow/deny-insecure. Should be ' + 'a list of strings separated by commas, or a path to a file ' + 'listing one feature name per line.');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (parsedFeatures.length === 1 && _fs.default.existsSync(parsedFeatures[0])) {
|
|
33
|
-
try {
|
|
34
|
-
const fileFeatures = _fs.default.readFileSync(parsedFeatures[0], 'utf8');
|
|
35
|
-
|
|
36
|
-
parsedFeatures = splitter('\n', fileFeatures);
|
|
37
|
-
} catch (err) {
|
|
38
|
-
throw new TypeError(`Attempted to read --allow/deny-insecure feature names ` + `from file ${parsedFeatures[0]} but got error: ${err.message}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return parsedFeatures;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function parsePluginNames(names) {
|
|
46
|
-
if (!_lodash.default.isString(names)) {
|
|
47
|
-
throw new TypeError('To parse plugin names, names must be a CSV string');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
try {
|
|
51
|
-
return names.split(',').map(s => s.trim()).filter(Boolean);
|
|
52
|
-
} catch (err) {
|
|
53
|
-
throw new TypeError('Could not parse value of --plugins. Should be a list of plugin names ' + 'separated by commas. Plugin names are those found when running `appium ' + 'plugin list`');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function parseDefaultCaps(capsOrPath) {
|
|
58
|
-
let caps = capsOrPath;
|
|
59
|
-
let loadedFromFile = false;
|
|
60
|
-
|
|
61
|
-
try {
|
|
62
|
-
if (_lodash.default.isString(capsOrPath) && _fs.default.statSync(capsOrPath).isFile()) {
|
|
63
|
-
caps = _fs.default.readFileSync(capsOrPath, 'utf8');
|
|
64
|
-
loadedFromFile = true;
|
|
65
|
-
}
|
|
66
|
-
} catch (err) {}
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
const result = JSON.parse(caps);
|
|
70
|
-
|
|
71
|
-
if (!_lodash.default.isPlainObject(result)) {
|
|
72
|
-
throw new Error(`'${_lodash.default.truncate(result, {
|
|
73
|
-
length: 100
|
|
74
|
-
})}' is not an object`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return result;
|
|
78
|
-
} catch (e) {
|
|
79
|
-
const msg = loadedFromFile ? `Default capabilities in '${capsOrPath}' must be a valid JSON` : `Default capabilities must be a valid JSON`;
|
|
80
|
-
throw new TypeError(`${msg}. Original error: ${e.message}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function parseInstallTypes(source) {
|
|
85
|
-
if (!_lodash.default.includes(_extensionConfig.INSTALL_TYPES, source)) {
|
|
86
|
-
throw `Argument to --source was '${source}', which is not a valid ` + `driver source type. It must be one of ${JSON.stringify(_extensionConfig.INSTALL_TYPES)}`;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return source;
|
|
90
|
-
}require('source-map-support').install();
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLWhlbHBlcnMuanMiXSwibmFtZXMiOlsicGFyc2VTZWN1cml0eUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJzcGxpdHRlciIsInNwbGl0T24iLCJzdHIiLCJzcGxpdCIsIm1hcCIsInMiLCJ0cmltIiwiZmlsdGVyIiwiQm9vbGVhbiIsInBhcnNlZEZlYXR1cmVzIiwiZXJyIiwiVHlwZUVycm9yIiwibGVuZ3RoIiwiZnMiLCJleGlzdHNTeW5jIiwiZmlsZUZlYXR1cmVzIiwicmVhZEZpbGVTeW5jIiwibWVzc2FnZSIsInBhcnNlUGx1Z2luTmFtZXMiLCJuYW1lcyIsIl8iLCJpc1N0cmluZyIsInBhcnNlRGVmYXVsdENhcHMiLCJjYXBzT3JQYXRoIiwiY2FwcyIsImxvYWRlZEZyb21GaWxlIiwic3RhdFN5bmMiLCJpc0ZpbGUiLCJyZXN1bHQiLCJKU09OIiwicGFyc2UiLCJpc1BsYWluT2JqZWN0IiwiRXJyb3IiLCJ0cnVuY2F0ZSIsImUiLCJtc2ciLCJwYXJzZUluc3RhbGxUeXBlcyIsInNvdXJjZSIsImluY2x1ZGVzIiwiSU5TVEFMTF9UWVBFUyIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxxQkFBVCxDQUFnQ0MsUUFBaEMsRUFBMEM7QUFDeEMsUUFBTUMsUUFBUSxHQUFHLENBQUNDLE9BQUQsRUFBVUMsR0FBVixLQUFtQixHQUFFQSxHQUFJLEVBQVAsQ0FBU0MsS0FBVCxDQUFlRixPQUFmLEVBQ2hDRyxHQURnQyxDQUMzQkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsRUFEcUIsRUFFaENDLE1BRmdDLENBRXpCQyxPQUZ5QixDQUFuQzs7QUFHQSxNQUFJQyxjQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsR0FBRCxFQUFNRCxRQUFOLENBQXpCO0FBQ0QsR0FGRCxDQUVFLE9BQU9XLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsU0FBSixDQUFjLCtEQUNsQiw2REFEa0IsR0FFbEIsb0NBRkksQ0FBTjtBQUdEOztBQUVELE1BQUlGLGNBQWMsQ0FBQ0csTUFBZixLQUEwQixDQUExQixJQUErQkMsWUFBR0MsVUFBSCxDQUFjTCxjQUFjLENBQUMsQ0FBRCxDQUE1QixDQUFuQyxFQUFxRTtBQUVuRSxRQUFJO0FBQ0YsWUFBTU0sWUFBWSxHQUFHRixZQUFHRyxZQUFILENBQWdCUCxjQUFjLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxNQUFuQyxDQUFyQjs7QUFDQUEsTUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsSUFBRCxFQUFPZSxZQUFQLENBQXpCO0FBQ0QsS0FIRCxDQUdFLE9BQU9MLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsU0FBSixDQUFlLHdEQUFELEdBQ2pCLGFBQVlGLGNBQWMsQ0FBQyxDQUFELENBQUksbUJBQWtCQyxHQUFHLENBQUNPLE9BQVEsRUFEekQsQ0FBTjtBQUVEO0FBQ0Y7O0FBRUQsU0FBT1IsY0FBUDtBQUNEOztBQUVELFNBQVNTLGdCQUFULENBQTJCQyxLQUEzQixFQUFrQztBQUNoQyxNQUFJLENBQUNDLGdCQUFFQyxRQUFGLENBQVdGLEtBQVgsQ0FBTCxFQUF3QjtBQUN0QixVQUFNLElBQUlSLFNBQUosQ0FBYyxtREFBZCxDQUFOO0FBQ0Q7O0FBRUQsTUFBSTtBQUNGLFdBQU9RLEtBQUssQ0FBQ2hCLEtBQU4sQ0FBWSxHQUFaLEVBQWlCQyxHQUFqQixDQUFzQkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsRUFBNUIsRUFBc0NDLE1BQXRDLENBQTZDQyxPQUE3QyxDQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9FLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsU0FBSixDQUFjLDBFQUNKLHlFQURJLEdBRUosY0FGVixDQUFOO0FBR0Q7QUFDRjs7QUFFRCxTQUFTVyxnQkFBVCxDQUEyQkMsVUFBM0IsRUFBdUM7QUFDckMsTUFBSUMsSUFBSSxHQUFHRCxVQUFYO0FBQ0EsTUFBSUUsY0FBYyxHQUFHLEtBQXJCOztBQUNBLE1BQUk7QUFNRixRQUFJTCxnQkFBRUMsUUFBRixDQUFXRSxVQUFYLEtBQTBCVixZQUFHYSxRQUFILENBQVlILFVBQVosRUFBd0JJLE1BQXhCLEVBQTlCLEVBQWdFO0FBQzlESCxNQUFBQSxJQUFJLEdBQUdYLFlBQUdHLFlBQUgsQ0FBZ0JPLFVBQWhCLEVBQTRCLE1BQTVCLENBQVA7QUFDQUUsTUFBQUEsY0FBYyxHQUFHLElBQWpCO0FBQ0Q7QUFDRixHQVZELENBVUUsT0FBT2YsR0FBUCxFQUFZLENBRWI7O0FBQ0QsTUFBSTtBQUNGLFVBQU1rQixNQUFNLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXTixJQUFYLENBQWY7O0FBQ0EsUUFBSSxDQUFDSixnQkFBRVcsYUFBRixDQUFnQkgsTUFBaEIsQ0FBTCxFQUE4QjtBQUM1QixZQUFNLElBQUlJLEtBQUosQ0FBVyxJQUFHWixnQkFBRWEsUUFBRixDQUFXTCxNQUFYLEVBQW1CO0FBQUNoQixRQUFBQSxNQUFNLEVBQUU7QUFBVCxPQUFuQixDQUFrQyxvQkFBaEQsQ0FBTjtBQUNEOztBQUNELFdBQU9nQixNQUFQO0FBQ0QsR0FORCxDQU1FLE9BQU9NLENBQVAsRUFBVTtBQUNWLFVBQU1DLEdBQUcsR0FBR1YsY0FBYyxHQUNyQiw0QkFBMkJGLFVBQVcsd0JBRGpCLEdBRXJCLDJDQUZMO0FBR0EsVUFBTSxJQUFJWixTQUFKLENBQWUsR0FBRXdCLEdBQUkscUJBQW9CRCxDQUFDLENBQUNqQixPQUFRLEVBQW5ELENBQU47QUFDRDtBQUNGOztBQUVELFNBQVNtQixpQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0M7QUFDbEMsTUFBSSxDQUFDakIsZ0JBQUVrQixRQUFGLENBQVdDLDhCQUFYLEVBQTBCRixNQUExQixDQUFMLEVBQXdDO0FBQ3RDLFVBQU8sNkJBQTRCQSxNQUFPLDBCQUFwQyxHQUNDLHlDQUF3Q1IsSUFBSSxDQUFDVyxTQUFMLENBQWVELDhCQUFmLENBQThCLEVBRDdFO0FBRUQ7O0FBRUQsU0FBT0YsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVTIH0gZnJvbSAnLi4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5cbi8vIHNlcnZlckFyZ3Mgd2lsbCBiZSBhZGRlZCB0byB0aGUgYHNlcnZlcmAgKGRlZmF1bHQpIHN1YmNvbW1hbmRcbmZ1bmN0aW9uIHBhcnNlU2VjdXJpdHlGZWF0dXJlcyAoZmVhdHVyZXMpIHtcbiAgY29uc3Qgc3BsaXR0ZXIgPSAoc3BsaXRPbiwgc3RyKSA9PiBgJHtzdHJ9YC5zcGxpdChzcGxpdE9uKVxuICAgIC5tYXAoKHMpID0+IHMudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGxldCBwYXJzZWRGZWF0dXJlcztcbiAgdHJ5IHtcbiAgICBwYXJzZWRGZWF0dXJlcyA9IHNwbGl0dGVyKCcsJywgZmVhdHVyZXMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1hbGxvdy9kZW55LWluc2VjdXJlLiBTaG91bGQgYmUgJyArXG4gICAgICAnYSBsaXN0IG9mIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5IGNvbW1hcywgb3IgYSBwYXRoIHRvIGEgZmlsZSAnICtcbiAgICAgICdsaXN0aW5nIG9uZSBmZWF0dXJlIG5hbWUgcGVyIGxpbmUuJyk7XG4gIH1cblxuICBpZiAocGFyc2VkRmVhdHVyZXMubGVuZ3RoID09PSAxICYmIGZzLmV4aXN0c1N5bmMocGFyc2VkRmVhdHVyZXNbMF0pKSB7XG4gICAgLy8gd2UgbWlnaHQgaGF2ZSBhIGZpbGUgd2hpY2ggaXMgYSBsaXN0IG9mIGZlYXR1cmVzXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVGZWF0dXJlcyA9IGZzLnJlYWRGaWxlU3luYyhwYXJzZWRGZWF0dXJlc1swXSwgJ3V0ZjgnKTtcbiAgICAgIHBhcnNlZEZlYXR1cmVzID0gc3BsaXR0ZXIoJ1xcbicsIGZpbGVGZWF0dXJlcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBBdHRlbXB0ZWQgdG8gcmVhZCAtLWFsbG93L2RlbnktaW5zZWN1cmUgZmVhdHVyZSBuYW1lcyBgICtcbiAgICAgICAgYGZyb20gZmlsZSAke3BhcnNlZEZlYXR1cmVzWzBdfSBidXQgZ290IGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRGZWF0dXJlcztcbn1cblxuZnVuY3Rpb24gcGFyc2VQbHVnaW5OYW1lcyAobmFtZXMpIHtcbiAgaWYgKCFfLmlzU3RyaW5nKG5hbWVzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RvIHBhcnNlIHBsdWdpbiBuYW1lcywgbmFtZXMgbXVzdCBiZSBhIENTViBzdHJpbmcnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5hbWVzLnNwbGl0KCcsJykubWFwKChzKSA9PiBzLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1wbHVnaW5zLiBTaG91bGQgYmUgYSBsaXN0IG9mIHBsdWdpbiBuYW1lcyAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlZCBieSBjb21tYXMuIFBsdWdpbiBuYW1lcyBhcmUgdGhvc2UgZm91bmQgd2hlbiBydW5uaW5nIGBhcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICdwbHVnaW4gbGlzdGAnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURlZmF1bHRDYXBzIChjYXBzT3JQYXRoKSB7XG4gIGxldCBjYXBzID0gY2Fwc09yUGF0aDtcbiAgbGV0IGxvYWRlZEZyb21GaWxlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgLy8gdXNlIHN5bmNocm9ub3VzIGZpbGUgYWNjZXNzLCBhcyBgYXJncGFyc2VgIHByb3ZpZGVzIG5vIHdheSBvZiBlaXRoZXJcbiAgICAvLyBhd2FpdGluZyBvciB1c2luZyBjYWxsYmFja3MuIFRoaXMgc3RlcCBoYXBwZW5zIGluIHN0YXJ0dXAsIGluIHdoYXQgaXNcbiAgICAvLyBlZmZlY3RpdmVseSBjb21tYW5kLWxpbmUgY29kZSwgc28gbm90aGluZyBpcyBibG9ja2VkIGluIHRlcm1zIG9mXG4gICAgLy8gc2Vzc2lvbnMsIHNvIGhvbGRpbmcgdXAgdGhlIGV2ZW50IGxvb3AgZG9lcyBub3QgaW5jdXIgdGhlIHVzdWFsXG4gICAgLy8gZHJhd2JhY2tzLlxuICAgIGlmIChfLmlzU3RyaW5nKGNhcHNPclBhdGgpICYmIGZzLnN0YXRTeW5jKGNhcHNPclBhdGgpLmlzRmlsZSgpKSB7XG4gICAgICBjYXBzID0gZnMucmVhZEZpbGVTeW5jKGNhcHNPclBhdGgsICd1dGY4Jyk7XG4gICAgICBsb2FkZWRGcm9tRmlsZSA9IHRydWU7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBub3QgYSBmaWxlLCBvciBub3QgcmVhZGFibGVcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UoY2Fwcyk7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtfLnRydW5jYXRlKHJlc3VsdCwge2xlbmd0aDogMTAwfSl9JyBpcyBub3QgYW4gb2JqZWN0YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zdCBtc2cgPSBsb2FkZWRGcm9tRmlsZVxuICAgICAgPyBgRGVmYXVsdCBjYXBhYmlsaXRpZXMgaW4gJyR7Y2Fwc09yUGF0aH0nIG11c3QgYmUgYSB2YWxpZCBKU09OYFxuICAgICAgOiBgRGVmYXVsdCBjYXBhYmlsaXRpZXMgbXVzdCBiZSBhIHZhbGlkIEpTT05gO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bXNnfS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5zdGFsbFR5cGVzIChzb3VyY2UpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKElOU1RBTExfVFlQRVMsIHNvdXJjZSkpIHtcbiAgICB0aHJvdyBgQXJndW1lbnQgdG8gLS1zb3VyY2Ugd2FzICcke3NvdXJjZX0nLCB3aGljaCBpcyBub3QgYSB2YWxpZCBgICtcbiAgICAgICAgICBgZHJpdmVyIHNvdXJjZSB0eXBlLiBJdCBtdXN0IGJlIG9uZSBvZiAke0pTT04uc3RyaW5naWZ5KElOU1RBTExfVFlQRVMpfWA7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gIHBhcnNlRGVmYXVsdENhcHMsXG4gIHBhcnNlSW5zdGFsbFR5cGVzLFxuICBwYXJzZVBsdWdpbk5hbWVzLFxufTtcbiJdLCJmaWxlIjoibGliL2NsaS9wYXJzZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
-
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.default = void 0;
|
|
11
|
-
|
|
12
|
-
require("source-map-support/register");
|
|
13
|
-
|
|
14
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
|
-
|
|
16
|
-
var _extensionConfig = _interopRequireWildcard(require("./extension-config"));
|
|
17
|
-
|
|
18
|
-
class DriverConfig extends _extensionConfig.default {
|
|
19
|
-
constructor(appiumHome, logFn = null) {
|
|
20
|
-
super(appiumHome, _extensionConfig.DRIVER_TYPE, logFn);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getConfigProblems(driver) {
|
|
24
|
-
const problems = [];
|
|
25
|
-
const automationNames = [];
|
|
26
|
-
const {
|
|
27
|
-
platformNames,
|
|
28
|
-
automationName
|
|
29
|
-
} = driver;
|
|
30
|
-
|
|
31
|
-
if (!_lodash.default.isArray(platformNames)) {
|
|
32
|
-
problems.push({
|
|
33
|
-
err: 'Missing or incorrect supported platformName list.',
|
|
34
|
-
val: platformNames
|
|
35
|
-
});
|
|
36
|
-
} else {
|
|
37
|
-
for (const pName of platformNames) {
|
|
38
|
-
if (!_lodash.default.isString(pName)) {
|
|
39
|
-
problems.push({
|
|
40
|
-
err: 'Incorrectly formatted platformName.',
|
|
41
|
-
val: pName
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (!_lodash.default.isString(automationName)) {
|
|
48
|
-
problems.push({
|
|
49
|
-
err: 'Missing or incorrect automationName',
|
|
50
|
-
val: automationName
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (_lodash.default.includes(automationNames, automationName)) {
|
|
55
|
-
problems.push({
|
|
56
|
-
err: 'Multiple drivers claim support for the same automationName',
|
|
57
|
-
val: automationName
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
automationNames.push(automationName);
|
|
62
|
-
return problems;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
extensionDesc(driverName, {
|
|
66
|
-
version,
|
|
67
|
-
automationName
|
|
68
|
-
}) {
|
|
69
|
-
return `${driverName}@${version} (automationName '${automationName}')`;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
exports.default = DriverConfig;require('source-map-support').install();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXItY29uZmlnLmpzIl0sIm5hbWVzIjpbIkRyaXZlckNvbmZpZyIsIkV4dGVuc2lvbkNvbmZpZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImxvZ0ZuIiwiRFJJVkVSX1RZUEUiLCJnZXRDb25maWdQcm9ibGVtcyIsImRyaXZlciIsInByb2JsZW1zIiwiYXV0b21hdGlvbk5hbWVzIiwicGxhdGZvcm1OYW1lcyIsImF1dG9tYXRpb25OYW1lIiwiXyIsImlzQXJyYXkiLCJwdXNoIiwiZXJyIiwidmFsIiwicE5hbWUiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRWUsTUFBTUEsWUFBTixTQUEyQkMsd0JBQTNCLENBQTJDO0FBQ3hEQyxFQUFBQSxXQUFXLENBQUVDLFVBQUYsRUFBY0MsS0FBSyxHQUFHLElBQXRCLEVBQTRCO0FBQ3JDLFVBQU1ELFVBQU4sRUFBa0JFLDRCQUFsQixFQUErQkQsS0FBL0I7QUFDRDs7QUFFREUsRUFBQUEsaUJBQWlCLENBQUVDLE1BQUYsRUFBVTtBQUN6QixVQUFNQyxRQUFRLEdBQUcsRUFBakI7QUFDQSxVQUFNQyxlQUFlLEdBQUcsRUFBeEI7QUFDQSxVQUFNO0FBQUNDLE1BQUFBLGFBQUQ7QUFBZ0JDLE1BQUFBO0FBQWhCLFFBQWtDSixNQUF4Qzs7QUFFQSxRQUFJLENBQUNLLGdCQUFFQyxPQUFGLENBQVVILGFBQVYsQ0FBTCxFQUErQjtBQUM3QkYsTUFBQUEsUUFBUSxDQUFDTSxJQUFULENBQWM7QUFDWkMsUUFBQUEsR0FBRyxFQUFFLG1EQURPO0FBRVpDLFFBQUFBLEdBQUcsRUFBRU47QUFGTyxPQUFkO0FBSUQsS0FMRCxNQUtPO0FBQ0wsV0FBSyxNQUFNTyxLQUFYLElBQW9CUCxhQUFwQixFQUFtQztBQUNqQyxZQUFJLENBQUNFLGdCQUFFTSxRQUFGLENBQVdELEtBQVgsQ0FBTCxFQUF3QjtBQUN0QlQsVUFBQUEsUUFBUSxDQUFDTSxJQUFULENBQWM7QUFBQ0MsWUFBQUEsR0FBRyxFQUFFLHFDQUFOO0FBQTZDQyxZQUFBQSxHQUFHLEVBQUVDO0FBQWxELFdBQWQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsUUFBSSxDQUFDTCxnQkFBRU0sUUFBRixDQUFXUCxjQUFYLENBQUwsRUFBaUM7QUFDL0JILE1BQUFBLFFBQVEsQ0FBQ00sSUFBVCxDQUFjO0FBQUNDLFFBQUFBLEdBQUcsRUFBRSxxQ0FBTjtBQUE2Q0MsUUFBQUEsR0FBRyxFQUFFTDtBQUFsRCxPQUFkO0FBQ0Q7O0FBRUQsUUFBSUMsZ0JBQUVPLFFBQUYsQ0FBV1YsZUFBWCxFQUE0QkUsY0FBNUIsQ0FBSixFQUFpRDtBQUMvQ0gsTUFBQUEsUUFBUSxDQUFDTSxJQUFULENBQWM7QUFDWkMsUUFBQUEsR0FBRyxFQUFFLDREQURPO0FBRVpDLFFBQUFBLEdBQUcsRUFBRUw7QUFGTyxPQUFkO0FBSUQ7O0FBQ0RGLElBQUFBLGVBQWUsQ0FBQ0ssSUFBaEIsQ0FBcUJILGNBQXJCO0FBRUEsV0FBT0gsUUFBUDtBQUNEOztBQUVEWSxFQUFBQSxhQUFhLENBQUVDLFVBQUYsRUFBYztBQUFDQyxJQUFBQSxPQUFEO0FBQVVYLElBQUFBO0FBQVYsR0FBZCxFQUF5QztBQUNwRCxXQUFRLEdBQUVVLFVBQVcsSUFBR0MsT0FBUSxxQkFBb0JYLGNBQWUsSUFBbkU7QUFDRDs7QUF4Q3VEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db25maWcsIHsgRFJJVkVSX1RZUEUgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcml2ZXJDb25maWcgZXh0ZW5kcyBFeHRlbnNpb25Db25maWcge1xuICBjb25zdHJ1Y3RvciAoYXBwaXVtSG9tZSwgbG9nRm4gPSBudWxsKSB7XG4gICAgc3VwZXIoYXBwaXVtSG9tZSwgRFJJVkVSX1RZUEUsIGxvZ0ZuKTtcbiAgfVxuXG4gIGdldENvbmZpZ1Byb2JsZW1zIChkcml2ZXIpIHtcbiAgICBjb25zdCBwcm9ibGVtcyA9IFtdO1xuICAgIGNvbnN0IGF1dG9tYXRpb25OYW1lcyA9IFtdO1xuICAgIGNvbnN0IHtwbGF0Zm9ybU5hbWVzLCBhdXRvbWF0aW9uTmFtZX0gPSBkcml2ZXI7XG5cbiAgICBpZiAoIV8uaXNBcnJheShwbGF0Zm9ybU5hbWVzKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHN1cHBvcnRlZCBwbGF0Zm9ybU5hbWUgbGlzdC4nLFxuICAgICAgICB2YWw6IHBsYXRmb3JtTmFtZXNcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IHBOYW1lIG9mIHBsYXRmb3JtTmFtZXMpIHtcbiAgICAgICAgaWYgKCFfLmlzU3RyaW5nKHBOYW1lKSkge1xuICAgICAgICAgIHByb2JsZW1zLnB1c2goe2VycjogJ0luY29ycmVjdGx5IGZvcm1hdHRlZCBwbGF0Zm9ybU5hbWUuJywgdmFsOiBwTmFtZX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFfLmlzU3RyaW5nKGF1dG9tYXRpb25OYW1lKSkge1xuICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgYXV0b21hdGlvbk5hbWUnLCB2YWw6IGF1dG9tYXRpb25OYW1lfSk7XG4gICAgfVxuXG4gICAgaWYgKF8uaW5jbHVkZXMoYXV0b21hdGlvbk5hbWVzLCBhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICBlcnI6ICdNdWx0aXBsZSBkcml2ZXJzIGNsYWltIHN1cHBvcnQgZm9yIHRoZSBzYW1lIGF1dG9tYXRpb25OYW1lJyxcbiAgICAgICAgdmFsOiBhdXRvbWF0aW9uTmFtZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGF1dG9tYXRpb25OYW1lcy5wdXNoKGF1dG9tYXRpb25OYW1lKTtcblxuICAgIHJldHVybiBwcm9ibGVtcztcbiAgfVxuXG4gIGV4dGVuc2lvbkRlc2MgKGRyaXZlck5hbWUsIHt2ZXJzaW9uLCBhdXRvbWF0aW9uTmFtZX0pIHtcbiAgICByZXR1cm4gYCR7ZHJpdmVyTmFtZX1AJHt2ZXJzaW9ufSAoYXV0b21hdGlvbk5hbWUgJyR7YXV0b21hdGlvbk5hbWV9JylgO1xuICB9XG59XG5cbiJdLCJmaWxlIjoibGliL2RyaXZlci1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|