appium 2.0.0-beta.6 → 2.0.0-beta.60
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 +156 -65
- package/build/lib/appium.d.ts +229 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +678 -439
- 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 -319
- 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 -54
- 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 +240 -128
- 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 +267 -202
- 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 +190 -187
- 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 +339 -229
- 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 +217 -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 +266 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +349 -273
- 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 +558 -186
- package/lib/cli/args.js +277 -422
- package/lib/cli/driver-command.js +132 -24
- package/lib/cli/extension-command.js +751 -272
- package/lib/cli/extension.js +49 -18
- package/lib/cli/parser.js +263 -83
- 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 +246 -111
- 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 +64 -38
- package/lib/main.js +318 -103
- package/lib/schema/arg-spec.js +229 -0
- package/lib/schema/cli-args.js +238 -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 +289 -167
- package/package.json +84 -84
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +243 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/tsconfig.json +25 -0
- package/types/cli.ts +193 -0
- package/types/index.ts +20 -0
- package/types/manifest/README.md +30 -0
- package/types/manifest/base.ts +158 -0
- package/types/manifest/index.ts +28 -0
- package/types/manifest/v3.ts +161 -0
- package/types/manifest/v4.ts +161 -0
- package/CHANGELOG.md +0 -3515
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/npm.js +0 -208
- package/build/lib/cli/parser-helpers.js +0 -82
- package/build/lib/driver-config.js +0 -77
- package/build/lib/drivers.js +0 -96
- 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/npm.js +0 -184
- package/lib/cli/parser-helpers.js +0 -79
- package/lib/driver-config.js +0 -46
- package/lib/drivers.js +0 -81
- 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();
|
package/build/lib/cli/npm.js
DELETED
|
@@ -1,208 +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 _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
|
-
var _path = _interopRequireDefault(require("path"));
|
|
15
|
-
|
|
16
|
-
var _semver = _interopRequireDefault(require("semver"));
|
|
17
|
-
|
|
18
|
-
var _teen_process = require("teen_process");
|
|
19
|
-
|
|
20
|
-
var _appiumSupport = require("appium-support");
|
|
21
|
-
|
|
22
|
-
const INSTALL_LOCKFILE = '.appium.install.lock';
|
|
23
|
-
const LINK_LOCKFILE = '.appium.link.lock';
|
|
24
|
-
|
|
25
|
-
class NPM {
|
|
26
|
-
constructor(appiumHome) {
|
|
27
|
-
this.appiumHome = appiumHome;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async exec(cmd, args, opts, execOpts = {}) {
|
|
31
|
-
let {
|
|
32
|
-
cwd,
|
|
33
|
-
json,
|
|
34
|
-
lockFile
|
|
35
|
-
} = opts;
|
|
36
|
-
|
|
37
|
-
if (!cwd) {
|
|
38
|
-
cwd = this.appiumHome;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
await (0, _appiumSupport.mkdirp)(cwd);
|
|
42
|
-
execOpts = { ...execOpts,
|
|
43
|
-
cwd
|
|
44
|
-
};
|
|
45
|
-
args.unshift(cmd);
|
|
46
|
-
|
|
47
|
-
if (json) {
|
|
48
|
-
args.push('-json');
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const npmCmd = _appiumSupport.system.isWindows() ? 'npm.cmd' : 'npm';
|
|
52
|
-
|
|
53
|
-
let runner = async () => await (0, _teen_process.exec)(npmCmd, args, execOpts);
|
|
54
|
-
|
|
55
|
-
if (lockFile) {
|
|
56
|
-
const acquireLock = _appiumSupport.util.getLockFileGuard(_path.default.resolve(cwd, lockFile));
|
|
57
|
-
|
|
58
|
-
const _runner = runner;
|
|
59
|
-
|
|
60
|
-
runner = async () => await acquireLock(_runner);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const {
|
|
64
|
-
stdout,
|
|
65
|
-
stderr,
|
|
66
|
-
code
|
|
67
|
-
} = await runner();
|
|
68
|
-
const ret = {
|
|
69
|
-
stdout,
|
|
70
|
-
stderr,
|
|
71
|
-
code,
|
|
72
|
-
json: null
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
if (json) {
|
|
76
|
-
try {
|
|
77
|
-
ret.json = JSON.parse(stdout);
|
|
78
|
-
} catch (ign) {}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return ret;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async getLatestVersion(pkg) {
|
|
85
|
-
return (await this.exec('view', [pkg, 'dist-tags'], {
|
|
86
|
-
json: true
|
|
87
|
-
})).json.latest;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async getLatestSafeUpgradeVersion(pkg, curVersion) {
|
|
91
|
-
const allVersions = (await this.exec('view', [pkg, 'versions'], {
|
|
92
|
-
json: true
|
|
93
|
-
})).json;
|
|
94
|
-
return this.getLatestSafeUpgradeFromVersions(curVersion, allVersions);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
getLatestSafeUpgradeFromVersions(curVersion, allVersions) {
|
|
98
|
-
let safeUpgradeVer = null;
|
|
99
|
-
|
|
100
|
-
const curSemver = _semver.default.parse(curVersion);
|
|
101
|
-
|
|
102
|
-
if (curSemver === null) {
|
|
103
|
-
throw new Error(`Could not parse current version '${curVersion}'`);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
for (const testVer of allVersions) {
|
|
107
|
-
const testSemver = _semver.default.parse(testVer);
|
|
108
|
-
|
|
109
|
-
if (testSemver === null) {
|
|
110
|
-
throw new Error(`Could not parse version to test against: '${testVer}'`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (testSemver.prerelease.length > 0) {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
if (curSemver.compare(testSemver) === 1) {
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (testSemver.major > curSemver.major) {
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (safeUpgradeVer === null || testSemver.compare(safeUpgradeVer) === 1) {
|
|
126
|
-
safeUpgradeVer = testSemver;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (safeUpgradeVer) {
|
|
131
|
-
safeUpgradeVer = safeUpgradeVer.format();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return safeUpgradeVer;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
async installPackage({
|
|
138
|
-
pkgDir,
|
|
139
|
-
pkgName,
|
|
140
|
-
pkgVer
|
|
141
|
-
}) {
|
|
142
|
-
const res = await this.exec('install', ['--no-save', '--no-package-lock', pkgVer ? `${pkgName}@${pkgVer}` : pkgName], {
|
|
143
|
-
cwd: pkgDir,
|
|
144
|
-
json: true,
|
|
145
|
-
lockFile: INSTALL_LOCKFILE
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
if (res.json) {
|
|
149
|
-
if (res.json.error) {
|
|
150
|
-
throw new Error(res.json.error);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const names = _lodash.default.uniq([...res.json.added, ...res.json.updated].map(x => x.name));
|
|
154
|
-
|
|
155
|
-
if (names.length === 1) {
|
|
156
|
-
pkgName = names[0];
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const pkgJson = _path.default.resolve(pkgDir, 'node_modules', pkgName, 'package.json');
|
|
161
|
-
|
|
162
|
-
try {
|
|
163
|
-
return require(pkgJson);
|
|
164
|
-
} catch {
|
|
165
|
-
throw new Error('The package was not downloaded correctly; its package.json ' + 'did not exist or was unreadable. We looked for it at ' + pkgJson);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
async linkPackage(pkgPath) {
|
|
170
|
-
let pkgName;
|
|
171
|
-
|
|
172
|
-
try {
|
|
173
|
-
pkgName = require(_path.default.resolve(pkgPath, 'package.json')).name;
|
|
174
|
-
} catch {
|
|
175
|
-
throw new Error('Could not find package.json inside the package path ' + `provided: ${pkgPath}`);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
const pkgHome = _path.default.resolve(this.appiumHome, pkgName);
|
|
179
|
-
|
|
180
|
-
const res = await this.exec('link', [pkgPath], {
|
|
181
|
-
cwd: pkgHome,
|
|
182
|
-
lockFile: LINK_LOCKFILE
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
if (res.json && res.json.error) {
|
|
186
|
-
throw new Error(res.json.error);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
try {
|
|
190
|
-
return require(_path.default.resolve(pkgHome, 'node_modules', pkgName, 'package.json'));
|
|
191
|
-
} catch {
|
|
192
|
-
throw new Error('The package was not linked correctly; its package.json ' + 'did not exist or was unreadable');
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
async uninstallPackage(pkgDir, pkg) {
|
|
197
|
-
await this.exec('uninstall', [pkg], {
|
|
198
|
-
cwd: pkgDir,
|
|
199
|
-
lockFile: INSTALL_LOCKFILE
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
exports.default = NPM;require('source-map-support').install();
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvbnBtLmpzIl0sIm5hbWVzIjpbIklOU1RBTExfTE9DS0ZJTEUiLCJMSU5LX0xPQ0tGSUxFIiwiTlBNIiwiY29uc3RydWN0b3IiLCJhcHBpdW1Ib21lIiwiZXhlYyIsImNtZCIsImFyZ3MiLCJvcHRzIiwiZXhlY09wdHMiLCJjd2QiLCJqc29uIiwibG9ja0ZpbGUiLCJ1bnNoaWZ0IiwicHVzaCIsIm5wbUNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInJ1bm5lciIsImFjcXVpcmVMb2NrIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIl9ydW5uZXIiLCJzdGRvdXQiLCJzdGRlcnIiLCJjb2RlIiwicmV0IiwiSlNPTiIsInBhcnNlIiwiaWduIiwiZ2V0TGF0ZXN0VmVyc2lvbiIsInBrZyIsImxhdGVzdCIsImdldExhdGVzdFNhZmVVcGdyYWRlVmVyc2lvbiIsImN1clZlcnNpb24iLCJhbGxWZXJzaW9ucyIsImdldExhdGVzdFNhZmVVcGdyYWRlRnJvbVZlcnNpb25zIiwic2FmZVVwZ3JhZGVWZXIiLCJjdXJTZW12ZXIiLCJzZW12ZXIiLCJFcnJvciIsInRlc3RWZXIiLCJ0ZXN0U2VtdmVyIiwicHJlcmVsZWFzZSIsImxlbmd0aCIsImNvbXBhcmUiLCJtYWpvciIsImZvcm1hdCIsImluc3RhbGxQYWNrYWdlIiwicGtnRGlyIiwicGtnTmFtZSIsInBrZ1ZlciIsInJlcyIsImVycm9yIiwibmFtZXMiLCJfIiwidW5pcSIsImFkZGVkIiwidXBkYXRlZCIsIm1hcCIsIngiLCJuYW1lIiwicGtnSnNvbiIsInJlcXVpcmUiLCJsaW5rUGFja2FnZSIsInBrZ1BhdGgiLCJwa2dIb21lIiwidW5pbnN0YWxsUGFja2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRyxzQkFBekI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsbUJBQXRCOztB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ICdwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgbWtkaXJwLCB1dGlsLCBzeXN0ZW0gfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IElOU1RBTExfTE9DS0ZJTEUgPSAnLmFwcGl1bS5pbnN0YWxsLmxvY2snO1xuY29uc3QgTElOS19MT0NLRklMRSA9ICcuYXBwaXVtLmxpbmsubG9jayc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5QTSB7XG5cbiAgY29uc3RydWN0b3IgKGFwcGl1bUhvbWUpIHtcbiAgICB0aGlzLmFwcGl1bUhvbWUgPSBhcHBpdW1Ib21lO1xuICB9XG5cbiAgYXN5bmMgZXhlYyAoY21kLCBhcmdzLCBvcHRzLCBleGVjT3B0cyA9IHt9KSB7XG4gICAgbGV0IHsgY3dkLCBqc29uLCBsb2NrRmlsZSB9ID0gb3B0cztcbiAgICBpZiAoIWN3ZCkge1xuICAgICAgY3dkID0gdGhpcy5hcHBpdW1Ib21lO1xuICAgIH1cbiAgICAvLyBlbnN1cmUgdGhlIGRpcmVjdG9yeSB3ZSB3YW50IHRvIGluc3RhbGwgaW5zaWRlIG9mIGV4aXN0c1xuICAgIGF3YWl0IG1rZGlycChjd2QpO1xuXG4gICAgLy8gbWFrZSBzdXJlIHdlIHBlcmZvcm0gdGhlIGN1cnJlbnQgb3BlcmF0aW9uIGluIGN3ZFxuICAgIGV4ZWNPcHRzID0gey4uLmV4ZWNPcHRzLCBjd2R9O1xuXG4gICAgYXJncy51bnNoaWZ0KGNtZCk7XG4gICAgaWYgKGpzb24pIHtcbiAgICAgIGFyZ3MucHVzaCgnLWpzb24nKTtcbiAgICB9XG4gICAgY29uc3QgbnBtQ21kID0gc3lzdGVtLmlzV2luZG93cygpID8gJ25wbS5jbWQnIDogJ25wbSc7XG4gICAgbGV0IHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGV4ZWMobnBtQ21kLCBhcmdzLCBleGVjT3B0cyk7XG4gICAgaWYgKGxvY2tGaWxlKSB7XG4gICAgICBjb25zdCBhY3F1aXJlTG9jayA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChwYXRoLnJlc29sdmUoY3dkLCBsb2NrRmlsZSkpO1xuICAgICAgY29uc3QgX3J1bm5lciA9IHJ1bm5lcjtcbiAgICAgIHJ1bm5lciA9IGFzeW5jICgpID0+IGF3YWl0IGFjcXVpcmVMb2NrKF9ydW5uZXIpO1xuICAgIH1cbiAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnIsIGNvZGV9ID0gYXdhaXQgcnVubmVyKCk7XG4gICAgY29uc3QgcmV0ID0ge3N0ZG91dCwgc3RkZXJyLCBjb2RlLCBqc29uOiBudWxsfTtcblxuICAgIGlmIChqc29uKSB7XG4gICAgICAvLyBpZiBwb3NzaWJsZSwgcGFyc2UgTlBNJ3MganNvbiBvdXRwdXQuIER1cmluZyBOUE0gaW5zdGFsbCAzcmQtcGFydHlcbiAgICAgIC8vIHBhY2thZ2VzIGNhbiB3cml0ZSB0byBzdGRvdXQsIHNvIHNvbWV0aW1lcyB0aGUganNvbiBvdXRwdXQgY2FuJ3QgYmVcbiAgICAgIC8vIGd1YXJhbnRlZWQgdG8gYmUgcGFyc2VhYmxlXG4gICAgICB0cnkge1xuICAgICAgICByZXQuanNvbiA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgYXN5bmMgZ2V0TGF0ZXN0VmVyc2lvbiAocGtnKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4ZWMoJ3ZpZXcnLCBbcGtnLCAnZGlzdC10YWdzJ10sIHtcbiAgICAgIGpzb246IHRydWVcbiAgICB9KSkuanNvbi5sYXRlc3Q7XG4gIH1cblxuICBhc3luYyBnZXRMYXRlc3RTYWZlVXBncmFkZVZlcnNpb24gKHBrZywgY3VyVmVyc2lvbikge1xuICAgIGNvbnN0IGFsbFZlcnNpb25zID0gKGF3YWl0IHRoaXMuZXhlYygndmlldycsIFtwa2csICd2ZXJzaW9ucyddLCB7XG4gICAgICBqc29uOiB0cnVlXG4gICAgfSkpLmpzb247XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVGcm9tVmVyc2lvbnMoY3VyVmVyc2lvbiwgYWxsVmVyc2lvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgY3VycmVudCB2ZXJzaW9uIGFuZCBhIGxpc3Qgb2YgYWxsIHZlcnNpb25zIGZvciBhIHBhY2thZ2UsIHJldHVybiB0aGUgdmVyc2lvbiB3aGljaCBpc1xuICAgKiB0aGUgaGlnaGVzdCBzYWZlbHktdXBncmFkYWJsZSB2ZXJzaW9uIChtZWFuaW5nIG5vdCBjcm9zc2luZyBhbnkgbWFqb3IgcmV2aXNpb24gYm91bmRhcmllcywgYW5kXG4gICAqIG5vdCBpbmNsdWRpbmcgYW55IGFscGhhL2JldGEvcmMgdmVyc2lvbnMpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjdXJWZXJzaW9uIC0gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBhIHBhY2thZ2VcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBhbGxWZXJzaW9ucyAtIGEgbGlzdCBvZiB2ZXJzaW9uIHN0cmluZ3NcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfG51bGx9IC0gdGhlIGhpZ2hlc3Qgc2FmZWx5LXVwZ3JhZGFibGUgdmVyc2lvbiwgb3IgbnVsbCBpZiB0aGVyZSBpc24ndCBvbmVcbiAgICovXG4gIGdldExhdGVzdFNhZmVVcGdyYWRlRnJvbVZlcnNpb25zIChjdXJWZXJzaW9uLCBhbGxWZXJzaW9ucykge1xuICAgIGxldCBzYWZlVXBncmFkZVZlciA9IG51bGw7XG4gICAgY29uc3QgY3VyU2VtdmVyID0gc2VtdmVyLnBhcnNlKGN1clZlcnNpb24pO1xuICAgIGlmIChjdXJTZW12ZXIgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHBhcnNlIGN1cnJlbnQgdmVyc2lvbiAnJHtjdXJWZXJzaW9ufSdgKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB0ZXN0VmVyIG9mIGFsbFZlcnNpb25zKSB7XG4gICAgICBjb25zdCB0ZXN0U2VtdmVyID0gc2VtdmVyLnBhcnNlKHRlc3RWZXIpO1xuICAgICAgaWYgKHRlc3RTZW12ZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgdmVyc2lvbiB0byB0ZXN0IGFnYWluc3Q6ICcke3Rlc3RWZXJ9J2ApO1xuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIHRlc3QgdmVyc2lvbiBpcyBhIHByZXJlbGVhc2UsIGlnbm9yZSBpdFxuICAgICAgaWYgKHRlc3RTZW12ZXIucHJlcmVsZWFzZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyBsYXRlciB0aGFuIHRoZSB0ZXN0IHZlcnNpb24sIHNraXAgdGhpcyB0ZXN0IHZlcnNpb25cbiAgICAgIGlmIChjdXJTZW12ZXIuY29tcGFyZSh0ZXN0U2VtdmVyKSA9PT0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIHRoZSB0ZXN0IHZlcnNpb24gaXMgbmV3ZXIsIGJ1dCBjcm9zc2VzIGEgbWFqb3IgcmV2aXNpb24gYm91bmRhcnksIGFsc28gc2tpcCBpdFxuICAgICAgaWYgKHRlc3RTZW12ZXIubWFqb3IgPiBjdXJTZW12ZXIubWFqb3IpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBvdGhlcndpc2UgdGhpcyB2ZXJzaW9uIGlzIHNhZmUgdG8gdXBncmFkZSB0by4gQnV0IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG9uZXMgb2YgdGhpc1xuICAgICAgLy8ga2luZCwgc28ga2VlcCBpdGVyYXRpbmcgYW5kIGtlZXBpbmcgdGhlIGhpZ2hlc3RcbiAgICAgIGlmIChzYWZlVXBncmFkZVZlciA9PT0gbnVsbCB8fCB0ZXN0U2VtdmVyLmNvbXBhcmUoc2FmZVVwZ3JhZGVWZXIpID09PSAxKSB7XG4gICAgICAgIHNhZmVVcGdyYWRlVmVyID0gdGVzdFNlbXZlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNhZmVVcGdyYWRlVmVyKSB7XG4gICAgICBzYWZlVXBncmFkZVZlciA9IHNhZmVVcGdyYWRlVmVyLmZvcm1hdCgpO1xuICAgIH1cbiAgICByZXR1cm4gc2FmZVVwZ3JhZGVWZXI7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsUGFja2FnZSAoe3BrZ0RpciwgcGtnTmFtZSwgcGtnVmVyfSkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZXhlYygnaW5zdGFsbCcsIFtcbiAgICAgICctLW5vLXNhdmUnLFxuICAgICAgJy0tbm8tcGFja2FnZS1sb2NrJyxcbiAgICAgIHBrZ1ZlciA/IGAke3BrZ05hbWV9QCR7cGtnVmVyfWAgOiBwa2dOYW1lXG4gICAgXSwge1xuICAgICAgY3dkOiBwa2dEaXIsXG4gICAgICBqc29uOiB0cnVlLFxuICAgICAgbG9ja0ZpbGU6IElOU1RBTExfTE9DS0ZJTEVcbiAgICB9KTtcblxuICAgIGlmIChyZXMuanNvbikge1xuICAgICAgLy8gd2UgcGFyc2VkIGEgdmFsaWQganNvbiByZXNwb25zZSwgc28gaWYgd2UgZ290IGFuIGVycm9yIGhlcmUsIHJldHVybiB0aGF0XG4gICAgICAvLyBtZXNzYWdlIHN0cmFpZ2h0YXdheVxuICAgICAgaWYgKHJlcy5qc29uLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuanNvbi5lcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIHdlIHRyaWVkIHRvIGluc3RhbGwgYSBwYWNrYWdlIHZpYSBnaXQvZ2l0aHViLCB3ZSBtaWdodCBub3QgaGF2ZSBiZWVuXG4gICAgICAvLyBjZXJ0YWluIG9mIHRoZSBwYWNrYWdlIG5hbWUsIHNvIGlmIHdlIGNhbiByZXRyaWV2ZSBpdCB1bmFtYmlndW91c2x5IGZyb21cbiAgICAgIC8vIHRoZSBqc29uIHJlcG9ydCBvZiB0aGUgaW5zdGFsbCwgZG8gc29cbiAgICAgIGNvbnN0IG5hbWVzID0gXy51bmlxKFsuLi5yZXMuanNvbi5hZGRlZCwgLi4ucmVzLmpzb24udXBkYXRlZF0ubWFwKCh4KSA9PiB4Lm5hbWUpKTtcbiAgICAgIGlmIChuYW1lcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcGtnTmFtZSA9IG5hbWVzWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5vdyByZWFkIHBhY2thZ2UgZGF0YSBmcm9tIHRoZSBpbnN0YWxsZWQgcGFja2FnZSB0byByZXR1cm4sIGFuZCBtYWtlIHN1cmVcbiAgICAvLyBldmVyeXRoaW5nIGdvdCBpbnN0YWxsZWQgb2suIFJlbWVtYmVyLCBwa2dOYW1lIG1pZ2h0IGVuZCB1cCB3aXRoIGEgLyBpbiBpdCBkdWUgdG8gYW4gbnBtXG4gICAgLy8gb3JnLCBzbyBpZiBzbywgdGhhdCB3aWxsIGdldCBjb3JyZWN0bHkgZXhwbG9kZWQgaW50byBtdWx0aXBsZSBkaXJlY3RvcmllcywgYnkgcGF0aC5yZXNvbHZlIGhlcmVcbiAgICAvLyAoZXZlbiBvbiBXaW5kb3dzISlcbiAgICBjb25zdCBwa2dKc29uID0gcGF0aC5yZXNvbHZlKHBrZ0RpciwgJ25vZGVfbW9kdWxlcycsIHBrZ05hbWUsICdwYWNrYWdlLmpzb24nKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlcXVpcmUocGtnSnNvbik7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwYWNrYWdlIHdhcyBub3QgZG93bmxvYWRlZCBjb3JyZWN0bHk7IGl0cyBwYWNrYWdlLmpzb24gJyArXG4gICAgICAgICAgICAgICAgICAgICAgJ2RpZCBub3QgZXhpc3Qgb3Igd2FzIHVucmVhZGFibGUuIFdlIGxvb2tlZCBmb3IgaXQgYXQgJyArXG4gICAgICAgICAgICAgICAgICAgICAgcGtnSnNvbik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbGlua1BhY2thZ2UgKHBrZ1BhdGgpIHtcbiAgICAvLyBmcm9tIHRoZSBwYXRoIGFsb25lIHdlIGRvbid0IGtub3cgdGhlIG5wbSBwYWNrYWdlIG5hbWUsIHNvIHdlIG5lZWQgdG9cbiAgICAvLyBsb29rIGluIHBhY2thZ2UuanNvblxuICAgIGxldCBwa2dOYW1lO1xuICAgIHRyeSB7XG4gICAgICBwa2dOYW1lID0gcmVxdWlyZShwYXRoLnJlc29sdmUocGtnUGF0aCwgJ3BhY2thZ2UuanNvbicpKS5uYW1lO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBwYWNrYWdlLmpzb24gaW5zaWRlIHRoZSBwYWNrYWdlIHBhdGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgYHByb3ZpZGVkOiAke3BrZ1BhdGh9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGtnSG9tZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmFwcGl1bUhvbWUsIHBrZ05hbWUpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZXhlYygnbGluaycsIFtwa2dQYXRoXSwge2N3ZDogcGtnSG9tZSwgbG9ja0ZpbGU6IExJTktfTE9DS0ZJTEV9KTtcbiAgICBpZiAocmVzLmpzb24gJiYgcmVzLmpzb24uZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuanNvbi5lcnJvcik7XG4gICAgfVxuXG4gICAgLy8gbm93IGVuc3VyZSBpdCB3YXMgbGlua2VkIHRvIHRoZSBjb3JyZWN0IHBsYWNlXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZXF1aXJlKHBhdGgucmVzb2x2ZShwa2dIb21lLCAnbm9kZV9tb2R1bGVzJywgcGtnTmFtZSwgJ3BhY2thZ2UuanNvbicpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHBhY2thZ2Ugd2FzIG5vdCBsaW5rZWQgY29ycmVjdGx5OyBpdHMgcGFja2FnZS5qc29uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICdkaWQgbm90IGV4aXN0IG9yIHdhcyB1bnJlYWRhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsUGFja2FnZSAocGtnRGlyLCBwa2cpIHtcbiAgICBhd2FpdCB0aGlzLmV4ZWMoJ3VuaW5zdGFsbCcsIFtwa2ddLCB7XG4gICAgICBjd2Q6IHBrZ0RpcixcbiAgICAgIGxvY2tGaWxlOiBJTlNUQUxMX0xPQ0tGSUxFXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL2NsaS9ucG0uanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -1,82 +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 Error('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 Error(`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 Error('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 Error('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(caps) {
|
|
58
|
-
try {
|
|
59
|
-
if (_fs.default.statSync(caps).isFile()) {
|
|
60
|
-
caps = _fs.default.readFileSync(caps, 'utf8');
|
|
61
|
-
}
|
|
62
|
-
} catch (err) {}
|
|
63
|
-
|
|
64
|
-
caps = JSON.parse(caps);
|
|
65
|
-
|
|
66
|
-
if (!_lodash.default.isPlainObject(caps)) {
|
|
67
|
-
throw 'Invalid format for default capabilities';
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return caps;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function parseInstallTypes(source) {
|
|
74
|
-
if (!_lodash.default.includes(_extensionConfig.INSTALL_TYPES, source)) {
|
|
75
|
-
throw `Argument to --source was '${source}', which is not a valid ` + `driver source type. It must be one of ${JSON.stringify(_extensionConfig.INSTALL_TYPES)}`;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return source;
|
|
79
|
-
}require('source-map-support').install();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLWhlbHBlcnMuanMiXSwibmFtZXMiOlsicGFyc2VTZWN1cml0eUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJzcGxpdHRlciIsInNwbGl0T24iLCJzdHIiLCJzcGxpdCIsIm1hcCIsInMiLCJ0cmltIiwiZmlsdGVyIiwiQm9vbGVhbiIsInBhcnNlZEZlYXR1cmVzIiwiZXJyIiwiRXJyb3IiLCJsZW5ndGgiLCJmcyIsImV4aXN0c1N5bmMiLCJmaWxlRmVhdHVyZXMiLCJyZWFkRmlsZVN5bmMiLCJtZXNzYWdlIiwicGFyc2VQbHVnaW5OYW1lcyIsIm5hbWVzIiwiXyIsImlzU3RyaW5nIiwicGFyc2VEZWZhdWx0Q2FwcyIsImNhcHMiLCJzdGF0U3luYyIsImlzRmlsZSIsIkpTT04iLCJwYXJzZSIsImlzUGxhaW5PYmplY3QiLCJwYXJzZUluc3RhbGxUeXBlcyIsInNvdXJjZSIsImluY2x1ZGVzIiwiSU5TVEFMTF9UWVBFUyIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxxQkFBVCxDQUFnQ0MsUUFBaEMsRUFBMEM7QUFDeEMsUUFBTUMsUUFBUSxHQUFHLENBQUNDLE9BQUQsRUFBVUMsR0FBVixLQUFtQixHQUFFQSxHQUFJLEVBQVAsQ0FBU0MsS0FBVCxDQUFlRixPQUFmLEVBQXdCRyxHQUF4QixDQUE2QkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNDLElBQUYsRUFBbkMsRUFBNkNDLE1BQTdDLENBQW9EQyxPQUFwRCxDQUFuQzs7QUFDQSxNQUFJQyxjQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsR0FBRCxFQUFNRCxRQUFOLENBQXpCO0FBQ0QsR0FGRCxDQUVFLE9BQU9XLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsS0FBSixDQUFVLCtEQUNBLDZEQURBLEdBRUEsb0NBRlYsQ0FBTjtBQUdEOztBQUVELE1BQUlGLGNBQWMsQ0FBQ0csTUFBZixLQUEwQixDQUExQixJQUErQkMsWUFBR0MsVUFBSCxDQUFjTCxjQUFjLENBQUMsQ0FBRCxDQUE1QixDQUFuQyxFQUFxRTtBQUVuRSxRQUFJO0FBQ0YsWUFBTU0sWUFBWSxHQUFHRixZQUFHRyxZQUFILENBQWdCUCxjQUFjLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxNQUFuQyxDQUFyQjs7QUFDQUEsTUFBQUEsY0FBYyxHQUFHVCxRQUFRLENBQUMsSUFBRCxFQUFPZSxZQUFQLENBQXpCO0FBQ0QsS0FIRCxDQUdFLE9BQU9MLEdBQVAsRUFBWTtBQUNaLFlBQU0sSUFBSUMsS0FBSixDQUFXLHdEQUFELEdBQ0MsYUFBWUYsY0FBYyxDQUFDLENBQUQsQ0FBSSxtQkFBa0JDLEdBQUcsQ0FBQ08sT0FBUSxFQUR2RSxDQUFOO0FBRUQ7QUFDRjs7QUFFRCxTQUFPUixjQUFQO0FBQ0Q7O0FBRUQsU0FBU1MsZ0JBQVQsQ0FBMkJDLEtBQTNCLEVBQWtDO0FBQ2hDLE1BQUksQ0FBQ0MsZ0JBQUVDLFFBQUYsQ0FBV0YsS0FBWCxDQUFMLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSVIsS0FBSixDQUFVLG1EQUFWLENBQU47QUFDRDs7QUFFRCxNQUFJO0FBQ0YsV0FBT1EsS0FBSyxDQUFDaEIsS0FBTixDQUFZLEdBQVosRUFBaUJDLEdBQWpCLENBQXNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsSUFBRixFQUE1QixFQUFzQ0MsTUFBdEMsQ0FBNkNDLE9BQTdDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT0UsR0FBUCxFQUFZO0FBQ1osVUFBTSxJQUFJQyxLQUFKLENBQVUsMEVBQ0EseUVBREEsR0FFQSxjQUZWLENBQU47QUFHRDtBQUNGOztBQUVELFNBQVNXLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQztBQUMvQixNQUFJO0FBTUYsUUFBSVYsWUFBR1csUUFBSCxDQUFZRCxJQUFaLEVBQWtCRSxNQUFsQixFQUFKLEVBQWdDO0FBQzlCRixNQUFBQSxJQUFJLEdBQUdWLFlBQUdHLFlBQUgsQ0FBZ0JPLElBQWhCLEVBQXNCLE1BQXRCLENBQVA7QUFDRDtBQUNGLEdBVEQsQ0FTRSxPQUFPYixHQUFQLEVBQVksQ0FFYjs7QUFDRGEsRUFBQUEsSUFBSSxHQUFHRyxJQUFJLENBQUNDLEtBQUwsQ0FBV0osSUFBWCxDQUFQOztBQUNBLE1BQUksQ0FBQ0gsZ0JBQUVRLGFBQUYsQ0FBZ0JMLElBQWhCLENBQUwsRUFBNEI7QUFDMUIsVUFBTSx5Q0FBTjtBQUNEOztBQUNELFNBQU9BLElBQVA7QUFDRDs7QUFFRCxTQUFTTSxpQkFBVCxDQUE0QkMsTUFBNUIsRUFBb0M7QUFDbEMsTUFBSSxDQUFDVixnQkFBRVcsUUFBRixDQUFXQyw4QkFBWCxFQUEwQkYsTUFBMUIsQ0FBTCxFQUF3QztBQUN0QyxVQUFPLDZCQUE0QkEsTUFBTywwQkFBcEMsR0FDQyx5Q0FBd0NKLElBQUksQ0FBQ08sU0FBTCxDQUFlRCw4QkFBZixDQUE4QixFQUQ3RTtBQUVEOztBQUVELFNBQU9GLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgSU5TVEFMTF9UWVBFUyB9IGZyb20gJy4uL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vLyBzZXJ2ZXJBcmdzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGBzZXJ2ZXJgIChkZWZhdWx0KSBzdWJjb21tYW5kXG5mdW5jdGlvbiBwYXJzZVNlY3VyaXR5RmVhdHVyZXMgKGZlYXR1cmVzKSB7XG4gIGNvbnN0IHNwbGl0dGVyID0gKHNwbGl0T24sIHN0cikgPT4gYCR7c3RyfWAuc3BsaXQoc3BsaXRPbikubWFwKChzKSA9PiBzLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuICBsZXQgcGFyc2VkRmVhdHVyZXM7XG4gIHRyeSB7XG4gICAgcGFyc2VkRmVhdHVyZXMgPSBzcGxpdHRlcignLCcsIGZlYXR1cmVzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1hbGxvdy9kZW55LWluc2VjdXJlLiBTaG91bGQgYmUgJyArXG4gICAgICAgICAgICAgICAgICAgICdhIGxpc3Qgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQgYnkgY29tbWFzLCBvciBhIHBhdGggdG8gYSBmaWxlICcgK1xuICAgICAgICAgICAgICAgICAgICAnbGlzdGluZyBvbmUgZmVhdHVyZSBuYW1lIHBlciBsaW5lLicpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEZlYXR1cmVzLmxlbmd0aCA9PT0gMSAmJiBmcy5leGlzdHNTeW5jKHBhcnNlZEZlYXR1cmVzWzBdKSkge1xuICAgIC8vIHdlIG1pZ2h0IGhhdmUgYSBmaWxlIHdoaWNoIGlzIGEgbGlzdCBvZiBmZWF0dXJlc1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlRmVhdHVyZXMgPSBmcy5yZWFkRmlsZVN5bmMocGFyc2VkRmVhdHVyZXNbMF0sICd1dGY4Jyk7XG4gICAgICBwYXJzZWRGZWF0dXJlcyA9IHNwbGl0dGVyKCdcXG4nLCBmaWxlRmVhdHVyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gcmVhZCAtLWFsbG93L2RlbnktaW5zZWN1cmUgZmVhdHVyZSBuYW1lcyBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgZnJvbSBmaWxlICR7cGFyc2VkRmVhdHVyZXNbMF19IGJ1dCBnb3QgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlZEZlYXR1cmVzO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBsdWdpbk5hbWVzIChuYW1lcykge1xuICBpZiAoIV8uaXNTdHJpbmcobmFtZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUbyBwYXJzZSBwbHVnaW4gbmFtZXMsIG5hbWVzIG11c3QgYmUgYSBDU1Ygc3RyaW5nJyk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuYW1lcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpLmZpbHRlcihCb29sZWFuKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcGFyc2UgdmFsdWUgb2YgLS1wbHVnaW5zLiBTaG91bGQgYmUgYSBsaXN0IG9mIHBsdWdpbiBuYW1lcyAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlZCBieSBjb21tYXMuIFBsdWdpbiBuYW1lcyBhcmUgdGhvc2UgZm91bmQgd2hlbiBydW5uaW5nIGBhcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICdwbHVnaW4gbGlzdGAnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURlZmF1bHRDYXBzIChjYXBzKSB7XG4gIHRyeSB7XG4gICAgLy8gdXNlIHN5bmNocm9ub3VzIGZpbGUgYWNjZXNzLCBhcyBgYXJncGFyc2VgIHByb3ZpZGVzIG5vIHdheSBvZiBlaXRoZXJcbiAgICAvLyBhd2FpdGluZyBvciB1c2luZyBjYWxsYmFja3MuIFRoaXMgc3RlcCBoYXBwZW5zIGluIHN0YXJ0dXAsIGluIHdoYXQgaXNcbiAgICAvLyBlZmZlY3RpdmVseSBjb21tYW5kLWxpbmUgY29kZSwgc28gbm90aGluZyBpcyBibG9ja2VkIGluIHRlcm1zIG9mXG4gICAgLy8gc2Vzc2lvbnMsIHNvIGhvbGRpbmcgdXAgdGhlIGV2ZW50IGxvb3AgZG9lcyBub3QgaW5jdXIgdGhlIHVzdWFsXG4gICAgLy8gZHJhd2JhY2tzLlxuICAgIGlmIChmcy5zdGF0U3luYyhjYXBzKS5pc0ZpbGUoKSkge1xuICAgICAgY2FwcyA9IGZzLnJlYWRGaWxlU3luYyhjYXBzLCAndXRmOCcpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gbm90IGEgZmlsZSwgb3Igbm90IHJlYWRhYmxlXG4gIH1cbiAgY2FwcyA9IEpTT04ucGFyc2UoY2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgdGhyb3cgJ0ludmFsaWQgZm9ybWF0IGZvciBkZWZhdWx0IGNhcGFiaWxpdGllcyc7XG4gIH1cbiAgcmV0dXJuIGNhcHM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5zdGFsbFR5cGVzIChzb3VyY2UpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKElOU1RBTExfVFlQRVMsIHNvdXJjZSkpIHtcbiAgICB0aHJvdyBgQXJndW1lbnQgdG8gLS1zb3VyY2Ugd2FzICcke3NvdXJjZX0nLCB3aGljaCBpcyBub3QgYSB2YWxpZCBgICtcbiAgICAgICAgICBgZHJpdmVyIHNvdXJjZSB0eXBlLiBJdCBtdXN0IGJlIG9uZSBvZiAke0pTT04uc3RyaW5naWZ5KElOU1RBTExfVFlQRVMpfWA7XG4gIH1cblxuICByZXR1cm4gc291cmNlO1xufVxuXG5leHBvcnQge1xuICBwYXJzZVNlY3VyaXR5RmVhdHVyZXMsXG4gIHBhcnNlRGVmYXVsdENhcHMsXG4gIHBhcnNlSW5zdGFsbFR5cGVzLFxuICBwYXJzZVBsdWdpbk5hbWVzLFxufTtcbiJdLCJmaWxlIjoibGliL2NsaS9wYXJzZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -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==
|
package/build/lib/drivers.js
DELETED
|
@@ -1,96 +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.findMatchingDriver = findMatchingDriver;
|
|
9
|
-
exports.KNOWN_DRIVERS = void 0;
|
|
10
|
-
|
|
11
|
-
require("source-map-support/register");
|
|
12
|
-
|
|
13
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
14
|
-
|
|
15
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
16
|
-
|
|
17
|
-
const KNOWN_DRIVERS = {
|
|
18
|
-
uiautomator2: 'appium-uiautomator2-driver',
|
|
19
|
-
xcuitest: 'appium-xcuitest-driver',
|
|
20
|
-
youiengine: 'appium-youiengine-driver',
|
|
21
|
-
windows: 'appium-windows-driver',
|
|
22
|
-
mac: 'appium-mac-driver',
|
|
23
|
-
espresso: 'appium-espresso-driver',
|
|
24
|
-
tizen: 'appium-tizen-driver',
|
|
25
|
-
flutter: 'appium-flutter-driver'
|
|
26
|
-
};
|
|
27
|
-
exports.KNOWN_DRIVERS = KNOWN_DRIVERS;
|
|
28
|
-
|
|
29
|
-
function getDriverBySupport(drivers, matchAutomationName, matchPlatformName) {
|
|
30
|
-
for (const [driverName, driverData] of _lodash.default.toPairs(drivers)) {
|
|
31
|
-
const {
|
|
32
|
-
automationName,
|
|
33
|
-
platformNames
|
|
34
|
-
} = driverData;
|
|
35
|
-
const aNameMatches = automationName.toLowerCase() === matchAutomationName.toLowerCase();
|
|
36
|
-
|
|
37
|
-
const pNameMatches = _lodash.default.includes(platformNames.map(_lodash.default.toLower), matchPlatformName.toLowerCase());
|
|
38
|
-
|
|
39
|
-
if (aNameMatches && pNameMatches) {
|
|
40
|
-
return {
|
|
41
|
-
driverName,
|
|
42
|
-
...driverData
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (aNameMatches) {
|
|
47
|
-
throw new Error(`Driver '${driverName}' supports automationName ` + `'${automationName}', but Appium could not find ` + `support for platformName '${matchPlatformName}'. Supported ` + `platformNames are: ` + JSON.stringify(platformNames));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
throw new Error(`Could not find installed driver to support given caps`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function findMatchingDriver(config, {
|
|
55
|
-
automationName,
|
|
56
|
-
platformName
|
|
57
|
-
}) {
|
|
58
|
-
if (!_lodash.default.isString(platformName)) {
|
|
59
|
-
throw new Error('You must include a platformName capability');
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (!_lodash.default.isString(automationName)) {
|
|
63
|
-
throw new Error('You must include an automationName capability');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
_logger.default.info(`Attempting to find matching driver for automationName ` + `'${automationName}' and platformName '${platformName}'`);
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
const {
|
|
70
|
-
driverName,
|
|
71
|
-
mainClass,
|
|
72
|
-
version
|
|
73
|
-
} = getDriverBySupport(config.installedExtensions, automationName, platformName);
|
|
74
|
-
|
|
75
|
-
_logger.default.info(`The '${driverName}' driver was installed and matched caps.`);
|
|
76
|
-
|
|
77
|
-
_logger.default.info(`Will require it at ${config.getExtensionRequirePath(driverName)}`);
|
|
78
|
-
|
|
79
|
-
const driver = config.require(driverName);
|
|
80
|
-
|
|
81
|
-
if (!driver) {
|
|
82
|
-
throw new Error(`MainClass ${mainClass} did not result in a driver object`);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return {
|
|
86
|
-
driver,
|
|
87
|
-
version
|
|
88
|
-
};
|
|
89
|
-
} catch (err) {
|
|
90
|
-
const msg = `Could not find a driver for automationName ` + `'${automationName}' and platformName ${platformName}'. ` + `Have you installed a driver that supports those ` + `capabilities? Run 'appium driver list --installed' to see. ` + `(Lower-level error: ${err.message})`;
|
|
91
|
-
throw new Error(msg);
|
|
92
|
-
}
|
|
93
|
-
}require('source-map-support').install();
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXJzLmpzIl0sIm5hbWVzIjpbIktOT1dOX0RSSVZFUlMiLCJ1aWF1dG9tYXRvcjIiLCJ4Y3VpdGVzdCIsInlvdWllbmdpbmUiLCJ3aW5kb3dzIiwibWFjIiwiZXNwcmVzc28iLCJ0aXplbiIsImZsdXR0ZXIiLCJnZXREcml2ZXJCeVN1cHBvcnQiLCJkcml2ZXJzIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVyTmFtZSIsImRyaXZlckRhdGEiLCJfIiwidG9QYWlycyIsImF1dG9tYXRpb25OYW1lIiwicGxhdGZvcm1OYW1lcyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwiZmluZE1hdGNoaW5nRHJpdmVyIiwiY29uZmlnIiwicGxhdGZvcm1OYW1lIiwiaXNTdHJpbmciLCJsb2ciLCJpbmZvIiwibWFpbkNsYXNzIiwidmVyc2lvbiIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJnZXRFeHRlbnNpb25SZXF1aXJlUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJlcnIiLCJtc2ciLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFPQSxNQUFNQSxhQUFhLEdBQUc7QUFDcEJDLEVBQUFBLFlBQVksRUFBRSw0QkFETTtBQUVwQkMsRUFBQUEsUUFBUSxFQUFFLHdCQUZVO0FBR3BCQyxFQUFBQSxVQUFVLEVBQUUsMEJBSFE7QUFJcEJDLEVBQUFBLE9BQU8sRUFBRSx1QkFKVztBQUtwQkMsRUFBQUEsR0FBRyxFQUFFLG1CQUxlO0FBTXBCQyxFQUFBQSxRQUFRLEVBQUUsd0JBTlU7QUFPcEJDLEVBQUFBLEtBQUssRUFBRSxxQkFQYTtBQVFwQkMsRUFBQUEsT0FBTyxFQUFFO0FBUlcsQ0FBdEI7OztBQVdBLFNBQVNDLGtCQUFULENBQTZCQyxPQUE3QixFQUFzQ0MsbUJBQXRDLEVBQTJEQyxpQkFBM0QsRUFBOEU7QUFDNUUsT0FBSyxNQUFNLENBQUNDLFVBQUQsRUFBYUMsVUFBYixDQUFYLElBQXVDQyxnQkFBRUMsT0FBRixDQUFVTixPQUFWLENBQXZDLEVBQTJEO0FBQ3pELFVBQU07QUFBQ08sTUFBQUEsY0FBRDtBQUFpQkMsTUFBQUE7QUFBakIsUUFBa0NKLFVBQXhDO0FBQ0EsVUFBTUssWUFBWSxHQUFHRixjQUFjLENBQUNHLFdBQWYsT0FBaUNULG1CQUFtQixDQUFDUyxXQUFwQixFQUF0RDs7QUFDQSxVQUFNQyxZQUFZLEdBQUdOLGdCQUFFTyxRQUFGLENBQVdKLGFBQWEsQ0FBQ0ssR0FBZCxDQUFrQlIsZ0JBQUVTLE9BQXBCLENBQVgsRUFDV1osaUJBQWlCLENBQUNRLFdBQWxCLEVBRFgsQ0FBckI7O0FBR0EsUUFBSUQsWUFBWSxJQUFJRSxZQUFwQixFQUFrQztBQUNoQyxhQUFPO0FBQUNSLFFBQUFBLFVBQUQ7QUFBYSxXQUFHQztBQUFoQixPQUFQO0FBQ0Q7O0FBRUQsUUFBSUssWUFBSixFQUFrQjtBQUNoQixZQUFNLElBQUlNLEtBQUosQ0FBVyxXQUFVWixVQUFXLDRCQUF0QixHQUNDLElBQUdJLGNBQWUsK0JBRG5CLEdBRUMsNkJBQTRCTCxpQkFBa0IsZUFGL0MsR0FHQyxxQkFIRCxHQUlBYyxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsYUFBZixDQUpWLENBQU47QUFLRDtBQUNGOztBQUVELFFBQU0sSUFBSU8sS0FBSixDQUFXLHVEQUFYLENBQU47QUFDRDs7QUFFRCxTQUFTRyxrQkFBVCxDQUE2QkMsTUFBN0IsRUFBcUM7QUFBQ1osRUFBQUEsY0FBRDtBQUFpQmEsRUFBQUE7QUFBakIsQ0FBckMsRUFBcUU7QUFDbkUsTUFBSSxDQUFDZixnQkFBRWdCLFFBQUYsQ0FBV0QsWUFBWCxDQUFMLEVBQStCO0FBQzdCLFVBQU0sSUFBSUwsS0FBSixDQUFVLDRDQUFWLENBQU47QUFDRDs7QUFFRCxNQUFJLENBQUNWLGdCQUFFZ0IsUUFBRixDQUFXZCxjQUFYLENBQUwsRUFBaUM7QUFDL0IsVUFBTSxJQUFJUSxLQUFKLENBQVUsK0NBQVYsQ0FBTjtBQUNEOztBQUVETyxrQkFBSUMsSUFBSixDQUFVLHdEQUFELEdBQ0MsSUFBR2hCLGNBQWUsdUJBQXNCYSxZQUFhLEdBRC9EOztBQUdBLE1BQUk7QUFDRixVQUFNO0FBQ0pqQixNQUFBQSxVQURJO0FBRUpxQixNQUFBQSxTQUZJO0FBR0pDLE1BQUFBO0FBSEksUUFJRjFCLGtCQUFrQixDQUFDb0IsTUFBTSxDQUFDTyxtQkFBUixFQUE2Qm5CLGNBQTdCLEVBQTZDYSxZQUE3QyxDQUp0Qjs7QUFLQUUsb0JBQUlDLElBQUosQ0FBVSxRQUFPcEIsVUFBVywwQ0FBNUI7O0FBQ0FtQixvQkFBSUMsSUFBSixDQUFVLHNCQUFxQkosTUFBTSxDQUFDUSx1QkFBUCxDQUErQnhCLFVBQS9CLENBQTJDLEVBQTFFOztBQUNBLFVBQU15QixNQUFNLEdBQUdULE1BQU0sQ0FBQ1UsT0FBUCxDQUFlMUIsVUFBZixDQUFmOztBQUNBLFFBQUksQ0FBQ3lCLE1BQUwsRUFBYTtBQUNYLFlBQU0sSUFBSWIsS0FBSixDQUFXLGFBQVlTLFNBQVUsb0NBQWpDLENBQU47QUFDRDs7QUFDRCxXQUFPO0FBQUNJLE1BQUFBLE1BQUQ7QUFBU0gsTUFBQUE7QUFBVCxLQUFQO0FBQ0QsR0FiRCxDQWFFLE9BQU9LLEdBQVAsRUFBWTtBQUNaLFVBQU1DLEdBQUcsR0FBSSw2Q0FBRCxHQUNDLElBQUd4QixjQUFlLHNCQUFxQmEsWUFBYSxLQURyRCxHQUVDLGtEQUZELEdBR0MsNkRBSEQsR0FJQyx1QkFBc0JVLEdBQUcsQ0FBQ0UsT0FBUSxHQUovQztBQUtBLFVBQU0sSUFBSWpCLEtBQUosQ0FBVWdCLEdBQVYsQ0FBTjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBkcml2ZXIgbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBkcml2ZXJzLlxuLy8gVGhlIGRyaXZlcnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBkcml2ZXIgaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIGRyaXZlcnMuXG5jb25zdCBLTk9XTl9EUklWRVJTID0ge1xuICB1aWF1dG9tYXRvcjI6ICdhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcicsXG4gIHhjdWl0ZXN0OiAnYXBwaXVtLXhjdWl0ZXN0LWRyaXZlcicsXG4gIHlvdWllbmdpbmU6ICdhcHBpdW0teW91aWVuZ2luZS1kcml2ZXInLFxuICB3aW5kb3dzOiAnYXBwaXVtLXdpbmRvd3MtZHJpdmVyJyxcbiAgbWFjOiAnYXBwaXVtLW1hYy1kcml2ZXInLFxuICBlc3ByZXNzbzogJ2FwcGl1bS1lc3ByZXNzby1kcml2ZXInLFxuICB0aXplbjogJ2FwcGl1bS10aXplbi1kcml2ZXInLFxuICBmbHV0dGVyOiAnYXBwaXVtLWZsdXR0ZXItZHJpdmVyJyxcbn07XG5cbmZ1bmN0aW9uIGdldERyaXZlckJ5U3VwcG9ydCAoZHJpdmVycywgbWF0Y2hBdXRvbWF0aW9uTmFtZSwgbWF0Y2hQbGF0Zm9ybU5hbWUpIHtcbiAgZm9yIChjb25zdCBbZHJpdmVyTmFtZSwgZHJpdmVyRGF0YV0gb2YgXy50b1BhaXJzKGRyaXZlcnMpKSB7XG4gICAgY29uc3Qge2F1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWVzfSA9IGRyaXZlckRhdGE7XG4gICAgY29uc3QgYU5hbWVNYXRjaGVzID0gYXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbWF0Y2hBdXRvbWF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHBOYW1lTWF0Y2hlcyA9IF8uaW5jbHVkZXMocGxhdGZvcm1OYW1lcy5tYXAoXy50b0xvd2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoUGxhdGZvcm1OYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgaWYgKGFOYW1lTWF0Y2hlcyAmJiBwTmFtZU1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB7ZHJpdmVyTmFtZSwgLi4uZHJpdmVyRGF0YX07XG4gICAgfVxuXG4gICAgaWYgKGFOYW1lTWF0Y2hlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEcml2ZXIgJyR7ZHJpdmVyTmFtZX0nIHN1cHBvcnRzIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGAnJHthdXRvbWF0aW9uTmFtZX0nLCBidXQgQXBwaXVtIGNvdWxkIG5vdCBmaW5kIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGBzdXBwb3J0IGZvciBwbGF0Zm9ybU5hbWUgJyR7bWF0Y2hQbGF0Zm9ybU5hbWV9Jy4gU3VwcG9ydGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybU5hbWVzIGFyZTogYCArXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkocGxhdGZvcm1OYW1lcykpO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgaW5zdGFsbGVkIGRyaXZlciB0byBzdXBwb3J0IGdpdmVuIGNhcHNgKTtcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nRHJpdmVyIChjb25maWcsIHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lfSkge1xuICBpZiAoIV8uaXNTdHJpbmcocGxhdGZvcm1OYW1lKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhIHBsYXRmb3JtTmFtZSBjYXBhYmlsaXR5Jyk7XG4gIH1cblxuICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBpbmNsdWRlIGFuIGF1dG9tYXRpb25OYW1lIGNhcGFiaWxpdHknKTtcbiAgfVxuXG4gIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGZpbmQgbWF0Y2hpbmcgZHJpdmVyIGZvciBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScgYW5kIHBsYXRmb3JtTmFtZSAnJHtwbGF0Zm9ybU5hbWV9J2ApO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qge1xuICAgICAgZHJpdmVyTmFtZSxcbiAgICAgIG1haW5DbGFzcyxcbiAgICAgIHZlcnNpb24sXG4gICAgfSA9IGdldERyaXZlckJ5U3VwcG9ydChjb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucywgYXV0b21hdGlvbk5hbWUsIHBsYXRmb3JtTmFtZSk7XG4gICAgbG9nLmluZm8oYFRoZSAnJHtkcml2ZXJOYW1lfScgZHJpdmVyIHdhcyBpbnN0YWxsZWQgYW5kIG1hdGNoZWQgY2Fwcy5gKTtcbiAgICBsb2cuaW5mbyhgV2lsbCByZXF1aXJlIGl0IGF0ICR7Y29uZmlnLmdldEV4dGVuc2lvblJlcXVpcmVQYXRoKGRyaXZlck5hbWUpfWApO1xuICAgIGNvbnN0IGRyaXZlciA9IGNvbmZpZy5yZXF1aXJlKGRyaXZlck5hbWUpO1xuICAgIGlmICghZHJpdmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1haW5DbGFzcyAke21haW5DbGFzc30gZGlkIG5vdCByZXN1bHQgaW4gYSBkcml2ZXIgb2JqZWN0YCk7XG4gICAgfVxuICAgIHJldHVybiB7ZHJpdmVyLCB2ZXJzaW9ufTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbXNnID0gYENvdWxkIG5vdCBmaW5kIGEgZHJpdmVyIGZvciBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICR7cGxhdGZvcm1OYW1lfScuIGAgK1xuICAgICAgICAgICAgICAgIGBIYXZlIHlvdSBpbnN0YWxsZWQgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aG9zZSBgICtcbiAgICAgICAgICAgICAgICBgY2FwYWJpbGl0aWVzPyBSdW4gJ2FwcGl1bSBkcml2ZXIgbGlzdCAtLWluc3RhbGxlZCcgdG8gc2VlLiBgICtcbiAgICAgICAgICAgICAgICBgKExvd2VyLWxldmVsIGVycm9yOiAke2Vyci5tZXNzYWdlfSlgO1xuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGZpbmRNYXRjaGluZ0RyaXZlcixcbiAgS05PV05fRFJJVkVSUyxcbn07XG4iXSwiZmlsZSI6ImxpYi9kcml2ZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|