appium 2.0.0-beta.4 → 2.0.0-beta.40
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/README.md +10 -11
- package/build/lib/appium.d.ts +204 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +257 -131
- package/build/lib/cli/args.d.ts +20 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +96 -282
- package/build/lib/cli/driver-command.d.ts +36 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +25 -18
- package/build/lib/cli/extension-command.d.ts +372 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +286 -156
- package/build/lib/cli/extension.d.ts +18 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +30 -17
- package/build/lib/cli/parser.d.ts +80 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +152 -95
- package/build/lib/cli/plugin-command.d.ts +33 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +24 -19
- 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 +27 -3
- 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 +136 -0
- package/build/lib/config.d.ts +41 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +92 -67
- package/build/lib/constants.d.ts +48 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +60 -0
- package/build/lib/extension/driver-config.d.ts +81 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +177 -0
- package/build/lib/extension/extension-config.d.ts +242 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +436 -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 +74 -0
- package/build/lib/extension/manifest.d.ts +174 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +256 -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 +68 -0
- package/build/lib/extension/plugin-config.d.ts +57 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +78 -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 +21 -25
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +4 -6
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +14 -17
- package/build/lib/main.d.ts +55 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +189 -90
- 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 +119 -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 +180 -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 +74 -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 +34 -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 +70 -0
- package/build/lib/schema/schema.d.ts +259 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +452 -0
- package/build/lib/utils.d.ts +66 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +35 -139
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build/types/appium-manifest.d.ts +59 -0
- package/build/types/appium-manifest.d.ts.map +1 -0
- package/build/types/cli.d.ts +112 -0
- package/build/types/cli.d.ts.map +1 -0
- package/build/types/extension-manifest.d.ts +55 -0
- package/build/types/extension-manifest.d.ts.map +1 -0
- package/build/types/index.d.ts +16 -0
- package/build/types/index.d.ts.map +1 -0
- package/driver.d.ts +1 -0
- package/driver.js +14 -0
- package/index.js +11 -0
- package/lib/appium.js +517 -186
- package/lib/cli/args.js +269 -422
- package/lib/cli/driver-command.js +58 -23
- package/lib/cli/extension-command.js +612 -260
- package/lib/cli/extension.js +34 -16
- package/lib/cli/parser.js +241 -83
- package/lib/cli/plugin-command.js +48 -20
- package/lib/cli/utils.js +24 -10
- package/lib/config-file.js +219 -0
- package/lib/config.js +210 -91
- package/lib/constants.js +69 -0
- package/lib/extension/driver-config.js +249 -0
- package/lib/extension/extension-config.js +679 -0
- package/lib/extension/index.js +116 -0
- package/lib/extension/manifest.js +475 -0
- package/lib/extension/package-changed.js +64 -0
- package/lib/extension/plugin-config.js +113 -0
- package/lib/grid-register.js +49 -35
- package/lib/logger.js +1 -2
- package/lib/logsink.js +38 -33
- package/lib/main.js +303 -100
- package/lib/schema/arg-spec.js +229 -0
- package/lib/schema/cli-args.js +238 -0
- package/lib/schema/cli-transformers.js +115 -0
- package/lib/schema/index.js +2 -0
- package/lib/schema/keywords.js +136 -0
- package/lib/schema/schema.js +717 -0
- package/lib/utils.js +121 -140
- package/package.json +75 -85
- package/plugin.d.ts +1 -0
- package/plugin.js +13 -0
- package/scripts/autoinstall-extensions.js +177 -0
- package/support.d.ts +1 -0
- package/support.js +13 -0
- package/types/appium-manifest.ts +73 -0
- package/types/cli.ts +146 -0
- package/types/extension-manifest.ts +64 -0
- package/types/index.ts +21 -0
- package/CHANGELOG.md +0 -3515
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/lib/cli/npm.js +0 -206
- 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 -183
- 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
|
@@ -13,9 +13,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
13
13
|
|
|
14
14
|
var _extensionCommand = _interopRequireDefault(require("./extension-command"));
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _plugins = require("../plugins");
|
|
16
|
+
var _constants = require("../constants");
|
|
19
17
|
|
|
20
18
|
const REQ_PLUGIN_FIELDS = ['pluginName', 'mainClass'];
|
|
21
19
|
|
|
@@ -26,10 +24,9 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
26
24
|
}) {
|
|
27
25
|
super({
|
|
28
26
|
config,
|
|
29
|
-
json
|
|
30
|
-
type: _extensionConfig.PLUGIN_TYPE
|
|
27
|
+
json
|
|
31
28
|
});
|
|
32
|
-
this.knownExtensions =
|
|
29
|
+
this.knownExtensions = _constants.KNOWN_PLUGINS;
|
|
33
30
|
}
|
|
34
31
|
|
|
35
32
|
async install({
|
|
@@ -37,8 +34,8 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
37
34
|
installType,
|
|
38
35
|
packageName
|
|
39
36
|
}) {
|
|
40
|
-
return await super.
|
|
41
|
-
|
|
37
|
+
return await super._install({
|
|
38
|
+
installSpec: plugin,
|
|
42
39
|
installType,
|
|
43
40
|
packageName
|
|
44
41
|
});
|
|
@@ -47,8 +44,8 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
47
44
|
async uninstall({
|
|
48
45
|
plugin
|
|
49
46
|
}) {
|
|
50
|
-
return await super.
|
|
51
|
-
|
|
47
|
+
return await super._uninstall({
|
|
48
|
+
installSpec: plugin
|
|
52
49
|
});
|
|
53
50
|
}
|
|
54
51
|
|
|
@@ -56,12 +53,22 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
56
53
|
plugin,
|
|
57
54
|
unsafe
|
|
58
55
|
}) {
|
|
59
|
-
return await super.
|
|
60
|
-
|
|
56
|
+
return await super._update({
|
|
57
|
+
installSpec: plugin,
|
|
61
58
|
unsafe
|
|
62
59
|
});
|
|
63
60
|
}
|
|
64
61
|
|
|
62
|
+
async run({
|
|
63
|
+
plugin,
|
|
64
|
+
scriptName
|
|
65
|
+
}) {
|
|
66
|
+
return await super._run({
|
|
67
|
+
installSpec: plugin,
|
|
68
|
+
scriptName
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
65
72
|
getPostInstallText({
|
|
66
73
|
extName,
|
|
67
74
|
extData
|
|
@@ -69,17 +76,15 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
69
76
|
return `Plugin ${extName}@${extData.version} successfully installed`.green;
|
|
70
77
|
}
|
|
71
78
|
|
|
72
|
-
validateExtensionFields(
|
|
73
|
-
const missingFields = REQ_PLUGIN_FIELDS.reduce((acc, field) =>
|
|
79
|
+
validateExtensionFields(pluginMetadata, installSpec) {
|
|
80
|
+
const missingFields = REQ_PLUGIN_FIELDS.reduce((acc, field) => pluginMetadata[field] ? acc : [...acc, field], []);
|
|
74
81
|
|
|
75
82
|
if (!_lodash.default.isEmpty(missingFields)) {
|
|
76
|
-
throw new Error(`Installed plugin did not expose correct fields for compability ` + `with Appium. Missing fields: ${JSON.stringify(missingFields)}`);
|
|
83
|
+
throw new Error(`Installed plugin "${installSpec}" did not expose correct fields for compability ` + `with Appium. Missing fields: ${JSON.stringify(missingFields)}`);
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
86
|
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
exports.default = PluginCommand;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiUkVRX1BMVUdJTl9GSUVMRFMiLCJQbHVnaW5Db21tYW5kIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwianNvbiIsInR5cGUiLCJQTFVHSU5fVFlQRSIsImtub3duRXh0ZW5zaW9ucyIsIktOT1dOX1BMVUdJTlMiLCJpbnN0YWxsIiwicGx1Z2luIiwiaW5zdGFsbFR5cGUiLCJwYWNrYWdlTmFtZSIsImV4dCIsInVuaW5zdGFsbCIsInVwZGF0ZSIsInVuc2FmZSIsImdldFBvc3RJbnN0YWxsVGV4dCIsImV4dE5hbWUiLCJleHREYXRhIiwidmVyc2lvbiIsImdyZWVuIiwidmFsaWRhdGVFeHRlbnNpb25GaWVsZHMiLCJhcHBpdW1Qa2dEYXRhIiwibWlzc2luZ0ZpZWxkcyIsInJlZHVjZSIsImFjYyIsImZpZWxkIiwiXyIsImlzRW1wdHkiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixDQUExQjs7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7QUFFMURDLEVBQUFBLFdBQVcsQ0FBRTtBQUFDQyxJQUFBQSxNQUFEO0FBQVNDLElBQUFBO0FBQVQsR0FBRixFQUFrQjtBQUMzQixVQUFNO0FBQUNELE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUEsSUFBVDtBQUFlQyxNQUFBQSxJQUFJLEVBQUVDO0FBQXJCLEtBQU47QUFDQSxTQUFLQyxlQUFMLEdBQXVCQyxzQkFBdkI7QUFDRDs7QUFFRCxRQUFNQyxPQUFOLENBQWU7QUFBQ0MsSUFBQUEsTUFBRDtBQUFTQyxJQUFBQSxXQUFUO0FBQXNCQyxJQUFBQTtBQUF0QixHQUFmLEVBQW1EO0FBQ2pELFdBQU8sTUFBTSxNQUFNSCxPQUFOLENBQWM7QUFBQ0ksTUFBQUEsR0FBRyxFQUFFSCxNQUFOO0FBQWNDLE1BQUFBLFdBQWQ7QUFBMkJDLE1BQUFBO0FBQTNCLEtBQWQsQ0FBYjtBQUNEOztBQUVELFFBQU1FLFNBQU4sQ0FBaUI7QUFBQ0osSUFBQUE7QUFBRCxHQUFqQixFQUEyQjtBQUN6QixXQUFPLE1BQU0sTUFBTUksU0FBTixDQUFnQjtBQUFDRCxNQUFBQSxHQUFHLEVBQUVIO0FBQU4sS0FBaEIsQ0FBYjtBQUNEOztBQUVELFFBQU1LLE1BQU4sQ0FBYztBQUFDTCxJQUFBQSxNQUFEO0FBQVNNLElBQUFBO0FBQVQsR0FBZCxFQUFnQztBQUM5QixXQUFPLE1BQU0sTUFBTUQsTUFBTixDQUFhO0FBQUNGLE1BQUFBLEdBQUcsRUFBRUgsTUFBTjtBQUFjTSxNQUFBQTtBQUFkLEtBQWIsQ0FBYjtBQUNEOztBQUVEQyxFQUFBQSxrQkFBa0IsQ0FBRTtBQUFDQyxJQUFBQSxPQUFEO0FBQVVDLElBQUFBO0FBQVYsR0FBRixFQUFzQjtBQUN0QyxXQUFRLFVBQVNELE9BQVEsSUFBR0MsT0FBTyxDQUFDQyxPQUFRLHlCQUFyQyxDQUE4REMsS0FBckU7QUFDRDs7QUFFREMsRUFBQUEsdUJBQXVCLENBQUVDLGFBQUYsRUFBaUI7QUFDdEMsVUFBTUMsYUFBYSxHQUFHekIsaUJBQWlCLENBQUMwQixNQUFsQixDQUF5QixDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FDN0NKLGFBQWEsQ0FBQ0ksS0FBRCxDQUFiLEdBQXVCRCxHQUF2QixHQUE2QixDQUFDLEdBQUdBLEdBQUosRUFBU0MsS0FBVCxDQURULEVBRW5CLEVBRm1CLENBQXRCOztBQUlBLFFBQUksQ0FBQ0MsZ0JBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO0FBQzdCLFlBQU0sSUFBSU0sS0FBSixDQUFXLGlFQUFELEdBQ0MsZ0NBQStCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVIsYUFBZixDQUE4QixFQUR4RSxDQUFOO0FBRUQ7QUFFRjs7QUFqQ3lEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHsgUExVR0lOX1RZUEUgfSBmcm9tICcuLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IEtOT1dOX1BMVUdJTlMgfSBmcm9tICcuLi9wbHVnaW5zJztcblxuY29uc3QgUkVRX1BMVUdJTl9GSUVMRFMgPSBbJ3BsdWdpbk5hbWUnLCAnbWFpbkNsYXNzJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkNvbW1hbmQgZXh0ZW5kcyBFeHRlbnNpb25Db21tYW5kIHtcblxuICBjb25zdHJ1Y3RvciAoe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29uLCB0eXBlOiBQTFVHSU5fVFlQRX0pO1xuICAgIHRoaXMua25vd25FeHRlbnNpb25zID0gS05PV05fUExVR0lOUztcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGwgKHtwbHVnaW4sIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuaW5zdGFsbCh7ZXh0OiBwbHVnaW4sIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsICh7cGx1Z2lufSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci51bmluc3RhbGwoe2V4dDogcGx1Z2lufSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUgKHtwbHVnaW4sIHVuc2FmZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIudXBkYXRlKHtleHQ6IHBsdWdpbiwgdW5zYWZlfSk7XG4gIH1cblxuICBnZXRQb3N0SW5zdGFsbFRleHQgKHtleHROYW1lLCBleHREYXRhfSkge1xuICAgIHJldHVybiBgUGx1Z2luICR7ZXh0TmFtZX1AJHtleHREYXRhLnZlcnNpb259IHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWRgLmdyZWVuO1xuICB9XG5cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMgKGFwcGl1bVBrZ0RhdGEpIHtcbiAgICBjb25zdCBtaXNzaW5nRmllbGRzID0gUkVRX1BMVUdJTl9GSUVMRFMucmVkdWNlKChhY2MsIGZpZWxkKSA9PiAoXG4gICAgICBhcHBpdW1Qa2dEYXRhW2ZpZWxkXSA/IGFjYyA6IFsuLi5hY2MsIGZpZWxkXVxuICAgICksIFtdKTtcblxuICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdGaWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbGxlZCBwbHVnaW4gZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YCk7XG4gICAgfVxuXG4gIH1cblxufVxuIl0sImZpbGUiOiJsaWIvY2xpL3BsdWdpbi1jb21tYW5kLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
89
|
+
exports.default = PluginCommand;
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicGx1Z2luTWV0YWRhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxQbHVnaW5UeXBlPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbW1hbmQnKS5FeHRlbnNpb25Db21tYW5kT3B0aW9uczxQbHVnaW5UeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCh7cGx1Z2luLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtcbiAgICAgIGluc3RhbGxTcGVjOiBwbHVnaW4sXG4gICAgICBpbnN0YWxsVHlwZSxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2luc3RhbGxTcGVjOiBwbHVnaW59KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2luc3RhbGxTcGVjOiBwbHVnaW4sIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuKHtwbHVnaW4sIHNjcmlwdE5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9ydW4oe2luc3RhbGxTcGVjOiBwbHVnaW4sIHNjcmlwdE5hbWV9KTtcbiAgfVxuXG4gIGdldFBvc3RJbnN0YWxsVGV4dCh7ZXh0TmFtZSwgZXh0RGF0YX0pIHtcbiAgICByZXR1cm4gYFBsdWdpbiAke2V4dE5hbWV9QCR7ZXh0RGF0YS52ZXJzaW9ufSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkYC5ncmVlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgZmllbGRzIGluIGBhcHBpdW1gIGZpZWxkIG9mIGBkcml2ZXJNZXRhZGF0YWBcbiAgICpcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBkcml2ZXIgcmVxdWlyZXMsIHZhbGlkYXRlIHRoZSB0eXBlIG9mXG4gICAqIHRob3NlIGZpZWxkcyBvbiB0aGUgYHBhY2thZ2UuanNvbmAgZGF0YSwgdGhyb3dpbmcgYW4gZXJyb3IgaWYgYW55dGhpbmcgaXNcbiAgICogYW1pc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNZXRhZGF0YTxQbHVnaW5UeXBlPn0gcGx1Z2luTWV0YWRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxTcGVjXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMocGx1Z2luTWV0YWRhdGEsIGluc3RhbGxTcGVjKSB7XG4gICAgY29uc3QgbWlzc2luZ0ZpZWxkcyA9IFJFUV9QTFVHSU5fRklFTERTLnJlZHVjZShcbiAgICAgIChhY2MsIGZpZWxkKSA9PiAocGx1Z2luTWV0YWRhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdKSxcbiAgICAgIFtdXG4gICAgKTtcblxuICAgIGlmICghXy5pc0VtcHR5KG1pc3NpbmdGaWVsZHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnN0YWxsZWQgcGx1Z2luIFwiJHtpbnN0YWxsU3BlY31cIiBkaWQgbm90IGV4cG9zZSBjb3JyZWN0IGZpZWxkcyBmb3IgY29tcGFiaWxpdHkgYCArXG4gICAgICAgICAgYHdpdGggQXBwaXVtLiBNaXNzaW5nIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShtaXNzaW5nRmllbGRzKX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUFDLFlBQUQsRUFBZSxXQUFmLENBQTFCOztBQUtlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztFQUsxREMsV0FBVyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0M7RUFBVCxDQUFELEVBQWlCO0lBQzFCLE1BQU07TUFBQ0QsTUFBRDtNQUFTQztJQUFULENBQU47SUFDQSxLQUFLQyxlQUFMLEdBQXVCQyx3QkFBdkI7RUFDRDs7RUFFWSxNQUFQQyxPQUFPLENBQUM7SUFBQ0MsTUFBRDtJQUFTQyxXQUFUO0lBQXNCQztFQUF0QixDQUFELEVBQXFDO0lBQ2hELE9BQU8sTUFBTSxNQUFNQyxRQUFOLENBQWU7TUFDMUJDLFdBQVcsRUFBRUosTUFEYTtNQUUxQkMsV0FGMEI7TUFHMUJDO0lBSDBCLENBQWYsQ0FBYjtFQUtEOztFQUVjLE1BQVRHLFNBQVMsQ0FBQztJQUFDTDtFQUFELENBQUQsRUFBVztJQUN4QixPQUFPLE1BQU0sTUFBTU0sVUFBTixDQUFpQjtNQUFDRixXQUFXLEVBQUVKO0lBQWQsQ0FBakIsQ0FBYjtFQUNEOztFQUVXLE1BQU5PLE1BQU0sQ0FBQztJQUFDUCxNQUFEO0lBQVNRO0VBQVQsQ0FBRCxFQUFtQjtJQUM3QixPQUFPLE1BQU0sTUFBTUMsT0FBTixDQUFjO01BQUNMLFdBQVcsRUFBRUosTUFBZDtNQUFzQlE7SUFBdEIsQ0FBZCxDQUFiO0VBQ0Q7O0VBRVEsTUFBSEUsR0FBRyxDQUFDO0lBQUNWLE1BQUQ7SUFBU1c7RUFBVCxDQUFELEVBQXVCO0lBQzlCLE9BQU8sTUFBTSxNQUFNQyxJQUFOLENBQVc7TUFBQ1IsV0FBVyxFQUFFSixNQUFkO01BQXNCVztJQUF0QixDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0VBQ0Q7O0VBWURDLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCZixXQUFqQixFQUE4QjtJQUNuRCxNQUFNZ0IsYUFBYSxHQUFHN0IsaUJBQWlCLENBQUM4QixNQUFsQixDQUNwQixDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FBaUJKLGNBQWMsQ0FBQ0ksS0FBRCxDQUFkLEdBQXdCRCxHQUF4QixHQUE4QixDQUFDLEdBQUdBLEdBQUosRUFBU0MsS0FBVCxDQUQzQixFQUVwQixFQUZvQixDQUF0Qjs7SUFLQSxJQUFJLENBQUNDLGVBQUEsQ0FBRUMsT0FBRixDQUFVTCxhQUFWLENBQUwsRUFBK0I7TUFDN0IsTUFBTSxJQUFJTSxLQUFKLENBQ0gscUJBQW9CdEIsV0FBWSxrREFBakMsR0FDRyxnQ0FBK0J1QixJQUFJLENBQUNDLFNBQUwsQ0FBZVIsYUFBZixDQUE4QixFQUY1RCxDQUFOO0lBSUQ7RUFDRjs7QUF4RHlEIn0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/***
|
|
2
|
+
* Log an error to the console and exit the process.
|
|
3
|
+
* @param {boolean} json - whether we should log json or text
|
|
4
|
+
* @param {any} msg - error message, object, Error instance, etc.
|
|
5
|
+
*/
|
|
6
|
+
export function errAndQuit(json: boolean, msg: any): void;
|
|
7
|
+
/**
|
|
8
|
+
* Conditionally log something to the console
|
|
9
|
+
* @param {boolean} json - whether we are in json mode (and should therefore not log)
|
|
10
|
+
* @param {string} msg - string to log
|
|
11
|
+
*/
|
|
12
|
+
export function log(json: boolean, msg: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Start a spinner, execute an async function, and then stop the spinner
|
|
15
|
+
* @param {boolean} json - whether we are in json mode (and should therefore not log)
|
|
16
|
+
* @param {string} msg - string to log
|
|
17
|
+
* @param {function} fn - function to wrap with spinning
|
|
18
|
+
*/
|
|
19
|
+
export function spinWith(json: boolean, msg: string, fn: Function): Promise<any>;
|
|
20
|
+
export const JSON_SPACES: 4;
|
|
21
|
+
export class RingBuffer {
|
|
22
|
+
constructor(size?: number);
|
|
23
|
+
size: number;
|
|
24
|
+
buffer: any[];
|
|
25
|
+
getBuff(): any[];
|
|
26
|
+
dequeue(): void;
|
|
27
|
+
enqueue(item: any): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/cli/utils.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,iCAHW,OAAO,OACP,GAAG,QAYb;AAED;;;;GAIG;AACH,0BAHW,OAAO,OACP,MAAM,QAIhB;AAED;;;;;GAKG;AACH,+BAJW,OAAO,OACP,MAAM,8BAiBhB;AAhDD,4BAAsB;AAkDtB;IACE,2BAGC;IAFC,aAAgB;IAChB,cAAgB;IAElB,iBAEC;IACD,gBAEC;IACD,yBAKC;CACF"}
|
package/build/lib/cli/utils.js
CHANGED
|
@@ -5,10 +5,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.RingBuffer = exports.JSON_SPACES = void 0;
|
|
8
9
|
exports.errAndQuit = errAndQuit;
|
|
9
10
|
exports.log = log;
|
|
10
11
|
exports.spinWith = spinWith;
|
|
11
|
-
exports.JSON_SPACES = void 0;
|
|
12
12
|
|
|
13
13
|
require("source-map-support/register");
|
|
14
14
|
|
|
@@ -53,7 +53,31 @@ async function spinWith(json, msg, fn) {
|
|
|
53
53
|
spinner.fail();
|
|
54
54
|
throw err;
|
|
55
55
|
}
|
|
56
|
-
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
class RingBuffer {
|
|
59
|
+
constructor(size = 50) {
|
|
60
|
+
this.size = size;
|
|
61
|
+
this.buffer = [];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getBuff() {
|
|
65
|
+
return this.buffer;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
dequeue() {
|
|
69
|
+
this.buffer.shift();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
enqueue(item) {
|
|
73
|
+
if (this.buffer.length >= this.size) {
|
|
74
|
+
this.dequeue();
|
|
75
|
+
}
|
|
57
76
|
|
|
77
|
+
this.buffer.push(item);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
}
|
|
58
81
|
|
|
59
|
-
|
|
82
|
+
exports.RingBuffer = RingBuffer;
|
|
83
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJKU09OX1NQQUNFUyIsImVyckFuZFF1aXQiLCJqc29uIiwibXNnIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciIsInJlZCIsInN0ZGVyciIsInByb2Nlc3MiLCJleGl0Iiwic3BpbldpdGgiLCJmbiIsInNwaW5uZXIiLCJvcmEiLCJzdGFydCIsInJlcyIsInN1Y2NlZWQiLCJlcnIiLCJmYWlsIiwiUmluZ0J1ZmZlciIsImNvbnN0cnVjdG9yIiwic2l6ZSIsImJ1ZmZlciIsImdldEJ1ZmYiLCJkZXF1ZXVlIiwic2hpZnQiLCJlbnF1ZXVlIiwiaXRlbSIsImxlbmd0aCIsInB1c2giXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblxuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuXG5jb25zdCBKU09OX1NQQUNFUyA9IDQ7XG5cbi8qKipcbiAqIExvZyBhbiBlcnJvciB0byB0aGUgY29uc29sZSBhbmQgZXhpdCB0aGUgcHJvY2Vzcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0ganNvbiAtIHdoZXRoZXIgd2Ugc2hvdWxkIGxvZyBqc29uIG9yIHRleHRcbiAqIEBwYXJhbSB7YW55fSBtc2cgLSBlcnJvciBtZXNzYWdlLCBvYmplY3QsIEVycm9yIGluc3RhbmNlLCBldGMuXG4gKi9cbmZ1bmN0aW9uIGVyckFuZFF1aXQoanNvbiwgbXNnKSB7XG4gIGlmIChqc29uKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe2Vycm9yOiBgJHttc2d9YH0sIG51bGwsIEpTT05fU1BBQ0VTKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihgJHttc2d9YC5yZWQpO1xuICAgIGlmIChtc2cuc3RkZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke21zZy5zdGRlcnJ9YC5yZWQpO1xuICAgIH1cbiAgfVxuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbi8qKlxuICogQ29uZGl0aW9uYWxseSBsb2cgc29tZXRoaW5nIHRvIHRoZSBjb25zb2xlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHdlIGFyZSBpbiBqc29uIG1vZGUgKGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBsb2cpXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIC0gc3RyaW5nIHRvIGxvZ1xuICovXG5mdW5jdGlvbiBsb2coanNvbiwgbXNnKSB7XG4gICFqc29uICYmIGNvbnNvbGUubG9nKG1zZyk7XG59XG5cbi8qKlxuICogU3RhcnQgYSBzcGlubmVyLCBleGVjdXRlIGFuIGFzeW5jIGZ1bmN0aW9uLCBhbmQgdGhlbiBzdG9wIHRoZSBzcGlubmVyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHdlIGFyZSBpbiBqc29uIG1vZGUgKGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBsb2cpXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIC0gc3RyaW5nIHRvIGxvZ1xuICogQHBhcmFtIHtmdW5jdGlvbn0gZm4gLSBmdW5jdGlvbiB0byB3cmFwIHdpdGggc3Bpbm5pbmdcbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3BpbldpdGgoanNvbiwgbXNnLCBmbikge1xuICBpZiAoanNvbikge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEobXNnKS5zdGFydCgpO1xuICBsZXQgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGF3YWl0IGZuKCk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3Bpbm5lci5mYWlsKCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmNsYXNzIFJpbmdCdWZmZXIge1xuICBjb25zdHJ1Y3RvcihzaXplID0gNTApIHtcbiAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIHRoaXMuYnVmZmVyID0gW107XG4gIH1cbiAgZ2V0QnVmZigpIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbiAgZGVxdWV1ZSgpIHtcbiAgICB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuICB9XG4gIGVucXVldWUoaXRlbSkge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPj0gdGhpcy5zaXplKSB7XG4gICAgICB0aGlzLmRlcXVldWUoKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIucHVzaChpdGVtKTtcbiAgfVxufVxuXG5leHBvcnQge2VyckFuZFF1aXQsIGxvZywgc3BpbldpdGgsIEpTT05fU1BBQ0VTLCBSaW5nQnVmZmVyfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUcsQ0FBcEI7OztBQU9BLFNBQVNDLFVBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxHQUExQixFQUErQjtFQUM3QixJQUFJRCxJQUFKLEVBQVU7SUFDUkUsT0FBTyxDQUFDQyxHQUFSLENBQVlDLElBQUksQ0FBQ0MsU0FBTCxDQUFlO01BQUNDLEtBQUssRUFBRyxHQUFFTCxHQUFJO0lBQWYsQ0FBZixFQUFrQyxJQUFsQyxFQUF3Q0gsV0FBeEMsQ0FBWjtFQUNELENBRkQsTUFFTztJQUNMSSxPQUFPLENBQUNJLEtBQVIsQ0FBZSxHQUFFTCxHQUFJLEVBQVAsQ0FBU00sR0FBdkI7O0lBQ0EsSUFBSU4sR0FBRyxDQUFDTyxNQUFSLEVBQWdCO01BQ2ROLE9BQU8sQ0FBQ0ksS0FBUixDQUFlLEdBQUVMLEdBQUcsQ0FBQ08sTUFBTyxFQUFkLENBQWdCRCxHQUE5QjtJQUNEO0VBQ0Y7O0VBQ0RFLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQWI7QUFDRDs7QUFPRCxTQUFTUCxHQUFULENBQWFILElBQWIsRUFBbUJDLEdBQW5CLEVBQXdCO0VBQ3RCLENBQUNELElBQUQsSUFBU0UsT0FBTyxDQUFDQyxHQUFSLENBQVlGLEdBQVosQ0FBVDtBQUNEOztBQVFELGVBQWVVLFFBQWYsQ0FBd0JYLElBQXhCLEVBQThCQyxHQUE5QixFQUFtQ1csRUFBbkMsRUFBdUM7RUFDckMsSUFBSVosSUFBSixFQUFVO0lBQ1IsT0FBTyxNQUFNWSxFQUFFLEVBQWY7RUFDRDs7RUFDRCxNQUFNQyxPQUFPLEdBQUcsSUFBQUMsWUFBQSxFQUFJYixHQUFKLEVBQVNjLEtBQVQsRUFBaEI7RUFDQSxJQUFJQyxHQUFKOztFQUNBLElBQUk7SUFDRkEsR0FBRyxHQUFHLE1BQU1KLEVBQUUsRUFBZDtJQUNBQyxPQUFPLENBQUNJLE9BQVI7SUFDQSxPQUFPRCxHQUFQO0VBQ0QsQ0FKRCxDQUlFLE9BQU9FLEdBQVAsRUFBWTtJQUNaTCxPQUFPLENBQUNNLElBQVI7SUFDQSxNQUFNRCxHQUFOO0VBQ0Q7QUFDRjs7QUFFRCxNQUFNRSxVQUFOLENBQWlCO0VBQ2ZDLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtJQUNyQixLQUFLQSxJQUFMLEdBQVlBLElBQVo7SUFDQSxLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQUNEQyxPQUFPLEdBQUc7SUFDUixPQUFPLEtBQUtELE1BQVo7RUFDRDs7RUFDREUsT0FBTyxHQUFHO0lBQ1IsS0FBS0YsTUFBTCxDQUFZRyxLQUFaO0VBQ0Q7O0VBQ0RDLE9BQU8sQ0FBQ0MsSUFBRCxFQUFPO0lBQ1osSUFBSSxLQUFLTCxNQUFMLENBQVlNLE1BQVosSUFBc0IsS0FBS1AsSUFBL0IsRUFBcUM7TUFDbkMsS0FBS0csT0FBTDtJQUNEOztJQUNELEtBQUtGLE1BQUwsQ0FBWU8sSUFBWixDQUFpQkYsSUFBakI7RUFDRDs7QUFoQmMifQ==
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Given an array of errors and the result of loading a config file, generate a
|
|
3
|
+
* helpful string for the user.
|
|
4
|
+
*
|
|
5
|
+
* - If `opts` contains a `json` property, this should be the original JSON
|
|
6
|
+
* _string_ of the config file. This is only applicable if the config file
|
|
7
|
+
* was in JSON format. If present, it will associate line numbers with errors.
|
|
8
|
+
* - If `errors` happens to be empty, this will throw.
|
|
9
|
+
* @param {import('ajv').ErrorObject[]} errors - Non-empty array of errors. Required.
|
|
10
|
+
* @param {ReadConfigFileResult['config']|any} [config] -
|
|
11
|
+
* Configuration & metadata
|
|
12
|
+
* @param {FormatConfigErrorsOptions} [opts]
|
|
13
|
+
* @throws {TypeError} If `errors` is empty
|
|
14
|
+
* @returns {string}
|
|
15
|
+
*/
|
|
16
|
+
export function formatErrors(errors?: import('ajv').ErrorObject[], config?: ReadConfigFileResult['config'] | any, opts?: FormatConfigErrorsOptions | undefined): string;
|
|
17
|
+
/**
|
|
18
|
+
* Given an optional path, read a config file. Validates the config file.
|
|
19
|
+
*
|
|
20
|
+
* Call {@link validate} if you already have a config object.
|
|
21
|
+
* @param {string} [filepath] - Path to config file, if we have one
|
|
22
|
+
* @param {ReadConfigFileOptions} [opts] - Options
|
|
23
|
+
* @public
|
|
24
|
+
* @returns {Promise<ReadConfigFileResult>} Contains config and filepath, if found, and any errors
|
|
25
|
+
*/
|
|
26
|
+
export function readConfigFile(filepath?: string | undefined, opts?: ReadConfigFileOptions | undefined): Promise<ReadConfigFileResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Convert schema property names to either a) the value of the `appiumCliDest` property, if any; or b) camel-case
|
|
29
|
+
* @param {AppiumConfig} config - Configuration object
|
|
30
|
+
* @returns {NormalizedAppiumConfig} New object with camel-cased keys (or `dest` keys).
|
|
31
|
+
*/
|
|
32
|
+
export function normalizeConfig(config: AppiumConfig): NormalizedAppiumConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Result of calling {@link readConfigFile }.
|
|
35
|
+
*/
|
|
36
|
+
export type ReadConfigFileResult = {
|
|
37
|
+
/**
|
|
38
|
+
* - Validation errors
|
|
39
|
+
*/
|
|
40
|
+
errors?: import("ajv").ErrorObject<string, Record<string, any>, any>[] | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* - The path to the config file, if found
|
|
43
|
+
*/
|
|
44
|
+
filepath?: string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* - If `true`, the config file exists but is empty
|
|
47
|
+
*/
|
|
48
|
+
isEmpty?: boolean | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* - The parsed configuration
|
|
51
|
+
*/
|
|
52
|
+
config?: import("@appium/types").NormalizedAppiumConfig | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* - Human-readable error messages and suggestions. If the `pretty` option is `true`, this will be a nice string to print.
|
|
55
|
+
*/
|
|
56
|
+
reason?: string | import("@sidvind/better-ajv-errors").IOutputError[] | undefined;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Options for {@link readConfigFile }.
|
|
60
|
+
*/
|
|
61
|
+
export type ReadConfigFileOptions = {
|
|
62
|
+
/**
|
|
63
|
+
* If `false`, do not use color and fancy formatting in the `reason` property of the {@link ReadConfigFileResult }. The value of `reason` is then suitable for machine-reading.
|
|
64
|
+
*/
|
|
65
|
+
pretty?: boolean | undefined;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* This is an `AsyncSearcher` which is inexplicably _not_ exported by the `lilconfig` type definition.
|
|
69
|
+
*/
|
|
70
|
+
export type LilconfigAsyncSearcher = ReturnType<typeof import("lilconfig")["lilconfig"]>;
|
|
71
|
+
/**
|
|
72
|
+
* The contents of an Appium config file. Generated from schema
|
|
73
|
+
*/
|
|
74
|
+
export type AppiumConfig = import('@appium/types').AppiumConfig;
|
|
75
|
+
/**
|
|
76
|
+
* The contents of an Appium config file with camelcased property names (and using `appiumCliDest` value if present). Generated from {@link AppiumConfig }
|
|
77
|
+
*/
|
|
78
|
+
export type NormalizedAppiumConfig = import('@appium/types').NormalizedAppiumConfig;
|
|
79
|
+
/**
|
|
80
|
+
* The string should be a raw JSON string.
|
|
81
|
+
*/
|
|
82
|
+
export type RawJson = string;
|
|
83
|
+
/**
|
|
84
|
+
* Options for {@link formatErrors }.
|
|
85
|
+
*/
|
|
86
|
+
export type FormatConfigErrorsOptions = {
|
|
87
|
+
/**
|
|
88
|
+
* - Raw JSON config (as string)
|
|
89
|
+
*/
|
|
90
|
+
json?: string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* - Whether to format errors as a CLI-friendly string
|
|
93
|
+
*/
|
|
94
|
+
pretty?: boolean | undefined;
|
|
95
|
+
/**
|
|
96
|
+
* - Specific ID of a prop; otherwise entire schema
|
|
97
|
+
*/
|
|
98
|
+
schemaId?: string | undefined;
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=config-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../../lib/config-file.js"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;;;GAcG;AACH,sCAPW,OAAO,KAAK,EAAE,WAAW,EAAE,WAC3B,oBAAoB,CAAC,QAAQ,CAAC,GAAC,GAAG,iDAIhC,MAAM,CAUlB;AAED;;;;;;;;GAQG;AACH,yGAFa,QAAQ,oBAAoB,CAAC,CAwCzC;AAED;;;;GAIG;AACH,wCAHW,YAAY,GACV,sBAAsB,CA+BlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoBY,WAAW,2BAAoB,WAAW,CAAC,CAAC;;;;2BAK5C,OAAO,eAAe,EAAE,YAAY;;;;qCAKpC,OAAO,eAAe,EAAE,sBAAsB;;;;sBAK9C,MAAM"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.formatErrors = formatErrors;
|
|
9
|
+
exports.normalizeConfig = normalizeConfig;
|
|
10
|
+
exports.readConfigFile = readConfigFile;
|
|
11
|
+
|
|
12
|
+
require("source-map-support/register");
|
|
13
|
+
|
|
14
|
+
var _betterAjvErrors = _interopRequireDefault(require("@sidvind/better-ajv-errors"));
|
|
15
|
+
|
|
16
|
+
var _lilconfig = require("lilconfig");
|
|
17
|
+
|
|
18
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
19
|
+
|
|
20
|
+
var _yaml = _interopRequireDefault(require("yaml"));
|
|
21
|
+
|
|
22
|
+
var _schema = require("./schema/schema");
|
|
23
|
+
|
|
24
|
+
function yamlLoader(filepath, content) {
|
|
25
|
+
return _yaml.default.parse(content);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const rawConfig = new Map();
|
|
29
|
+
|
|
30
|
+
function jsonLoader(filepath, content) {
|
|
31
|
+
rawConfig.set(filepath, content);
|
|
32
|
+
return JSON.parse(content);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function loadConfigFile(lc, filepath) {
|
|
36
|
+
try {
|
|
37
|
+
return await lc.load(filepath);
|
|
38
|
+
} catch (err) {
|
|
39
|
+
if (err.code === 'ENOENT') {
|
|
40
|
+
err.message = `Config file not found at user-provided path: ${filepath}`;
|
|
41
|
+
throw err;
|
|
42
|
+
} else if (err instanceof SyntaxError) {
|
|
43
|
+
err.message = `Config file at user-provided path ${filepath} is invalid:\n${err.message}`;
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
throw err;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function searchConfigFile(lc) {
|
|
52
|
+
return await lc.search();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function formatErrors(errors = [], config = {}, opts = {}) {
|
|
56
|
+
if (errors && !errors.length) {
|
|
57
|
+
throw new TypeError('Array of errors must be non-empty');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return (0, _betterAjvErrors.default)((0, _schema.getSchema)(opts.schemaId), config, errors, {
|
|
61
|
+
json: opts.json,
|
|
62
|
+
format: 'cli'
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function readConfigFile(filepath, opts = {}) {
|
|
67
|
+
const lc = (0, _lilconfig.lilconfig)('appium', {
|
|
68
|
+
loaders: {
|
|
69
|
+
'.yaml': yamlLoader,
|
|
70
|
+
'.yml': yamlLoader,
|
|
71
|
+
'.json': jsonLoader,
|
|
72
|
+
noExt: jsonLoader
|
|
73
|
+
},
|
|
74
|
+
packageProp: 'appiumConfig'
|
|
75
|
+
});
|
|
76
|
+
const result = filepath ? await loadConfigFile(lc, filepath) : await searchConfigFile(lc);
|
|
77
|
+
|
|
78
|
+
if (result !== null && result !== void 0 && result.filepath && !(result !== null && result !== void 0 && result.isEmpty)) {
|
|
79
|
+
const {
|
|
80
|
+
pretty = true
|
|
81
|
+
} = opts;
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
let configResult;
|
|
85
|
+
const errors = (0, _schema.validate)(result.config);
|
|
86
|
+
|
|
87
|
+
if (_lodash.default.isEmpty(errors)) {
|
|
88
|
+
configResult = { ...result,
|
|
89
|
+
errors
|
|
90
|
+
};
|
|
91
|
+
} else {
|
|
92
|
+
const reason = formatErrors(errors, result.config, {
|
|
93
|
+
json: rawConfig.get(result.filepath),
|
|
94
|
+
pretty
|
|
95
|
+
});
|
|
96
|
+
configResult = reason ? { ...result,
|
|
97
|
+
errors,
|
|
98
|
+
reason
|
|
99
|
+
} : { ...result,
|
|
100
|
+
errors
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
configResult.config = normalizeConfig(configResult.config);
|
|
105
|
+
return configResult;
|
|
106
|
+
} finally {
|
|
107
|
+
rawConfig.delete(result.filepath);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return result !== null && result !== void 0 ? result : {};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function normalizeConfig(config) {
|
|
115
|
+
const schema = (0, _schema.getSchema)();
|
|
116
|
+
|
|
117
|
+
const normalize = (config, section) => {
|
|
118
|
+
const obj = _lodash.default.isUndefined(section) ? config : _lodash.default.get(config, section, config);
|
|
119
|
+
|
|
120
|
+
const mappedObj = _lodash.default.mapKeys(obj, (__, prop) => {
|
|
121
|
+
var _schema$properties$pr, _schema$properties$pr2;
|
|
122
|
+
|
|
123
|
+
return (_schema$properties$pr = (_schema$properties$pr2 = schema.properties[prop]) === null || _schema$properties$pr2 === void 0 ? void 0 : _schema$properties$pr2.appiumCliDest) !== null && _schema$properties$pr !== void 0 ? _schema$properties$pr : _lodash.default.camelCase(prop);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
return _lodash.default.mapValues(mappedObj, (value, property) => {
|
|
127
|
+
const nextSection = section ? `${section}.${property}` : property;
|
|
128
|
+
return isSchemaTypeObject(value) ? normalize(config, nextSection) : value;
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const isSchemaTypeObject = schema => Boolean(schema.properties);
|
|
133
|
+
|
|
134
|
+
return normalize(config);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsImJldHRlckFqdkVycm9ycyIsImdldFNjaGVtYSIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibGlsY29uZmlnIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwidmFsaWRhdGUiLCJfIiwicmVhc29uIiwiZ2V0Iiwibm9ybWFsaXplQ29uZmlnIiwiZGVsZXRlIiwic2NoZW1hIiwibm9ybWFsaXplIiwic2VjdGlvbiIsIm9iaiIsImlzVW5kZWZpbmVkIiwibWFwcGVkT2JqIiwibWFwS2V5cyIsIl9fIiwicHJvcCIsInByb3BlcnRpZXMiLCJhcHBpdW1DbGlEZXN0IiwiY2FtZWxDYXNlIiwibWFwVmFsdWVzIiwidmFsdWUiLCJwcm9wZXJ0eSIsIm5leHRTZWN0aW9uIiwiaXNTY2hlbWFUeXBlT2JqZWN0IiwiQm9vbGVhbiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWctZmlsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmV0dGVyQWp2RXJyb3JzIGZyb20gJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJztcbmltcG9ydCB7bGlsY29uZmlnfSBmcm9tICdsaWxjb25maWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB5YW1sIGZyb20gJ3lhbWwnO1xuaW1wb3J0IHtnZXRTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG4vKipcbiAqIGxpbGNvbmZpZyBsb2FkZXIgdG8gaGFuZGxlIGAueWFtbGAgZmlsZXNcbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIHlhbWxMb2FkZXIoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgcmV0dXJuIHlhbWwucGFyc2UoY29udGVudCk7XG59XG5cbi8qKlxuICogQSBjYWNoZSBvZiB0aGUgcmF3IGNvbmZpZyBmaWxlIChhIEpTT04gc3RyaW5nKSBhdCBhIGZpbGVwYXRoLlxuICogVGhpcyBpcyB1c2VkIGZvciBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLlxuICogTm90ZSB0aGF0IGNvbmZpZyBmaWxlcyBuZWVkbid0IGJlIEpTT04sIGJ1dCBpdCBoZWxwcyBpZiB0aGV5IGFyZS5cbiAqIEB0eXBlIHtNYXA8c3RyaW5nLFJhd0pzb24+fVxuICovXG5jb25zdCByYXdDb25maWcgPSBuZXcgTWFwKCk7XG5cbi8qKlxuICogQ3VzdG9tIEpTT04gbG9hZGVyIHRoYXQgY2FjaGVzIHRoZSByYXcgY29uZmlnIGZpbGUgKGZvciB1c2Ugd2l0aCBgYmV0dGVyLWFqdi1lcnJvcnNgKS5cbiAqIElmIGl0IHdlcmVuJ3QgZm9yIHRoaXMgY2FjaGUsIHRoaXMgd291bGQgYmUgdW5uZWNlc3NhcnkuXG4gKiBAdHlwZSB7aW1wb3J0KCdsaWxjb25maWcnKS5Mb2FkZXJTeW5jfVxuICovXG5mdW5jdGlvbiBqc29uTG9hZGVyKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJhd0NvbmZpZy5zZXQoZmlsZXBhdGgsIGNvbnRlbnQpO1xuICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIGNvbmZpZyBmaWxlIGZyb20gYW4gZXhwbGljaXQgcGF0aFxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVwYXRoIC0gUGF0aCB0byBjb25maWcgZmlsZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnRmlsZShsYywgZmlsZXBhdGgpIHtcbiAgdHJ5IHtcbiAgICAvLyByZW1vdmluZyBcImF3YWl0XCIgd2lsbCBjYXVzZSBhbnkgcmVqZWN0aW9uIHRvIF9ub3RfIGJlIGNhdWdodCBpbiB0aGlzIGJsb2NrIVxuICAgIHJldHVybiBhd2FpdCBsYy5sb2FkKGZpbGVwYXRoKTtcbiAgfSBjYXRjaCAoLyoqIEB0eXBlIHt1bmtub3dufSAqLyBlcnIpIHtcbiAgICBpZiAoLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChlcnIpLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKFxuICAgICAgICBlcnJcbiAgICAgICkubWVzc2FnZSA9IGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQgdXNlci1wcm92aWRlZCBwYXRoOiAke2ZpbGVwYXRofWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgLy8gZ2VuZXJhbGx5IGludmFsaWQgSlNPTlxuICAgICAgZXJyLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgYXQgdXNlci1wcm92aWRlZCBwYXRoICR7ZmlsZXBhdGh9IGlzIGludmFsaWQ6XFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2hlcyBmb3IgYSBjb25maWcgZmlsZVxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hDb25maWdGaWxlKGxjKSB7XG4gIHJldHVybiBhd2FpdCBsYy5zZWFyY2goKTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSBvZiBlcnJvcnMgYW5kIHRoZSByZXN1bHQgb2YgbG9hZGluZyBhIGNvbmZpZyBmaWxlLCBnZW5lcmF0ZSBhXG4gKiBoZWxwZnVsIHN0cmluZyBmb3IgdGhlIHVzZXIuXG4gKlxuICogLSBJZiBgb3B0c2AgY29udGFpbnMgYSBganNvbmAgcHJvcGVydHksIHRoaXMgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCBKU09OXG4gKiAgIF9zdHJpbmdfIG9mIHRoZSBjb25maWcgZmlsZS4gIFRoaXMgaXMgb25seSBhcHBsaWNhYmxlIGlmIHRoZSBjb25maWcgZmlsZVxuICogICB3YXMgaW4gSlNPTiBmb3JtYXQuIElmIHByZXNlbnQsIGl0IHdpbGwgYXNzb2NpYXRlIGxpbmUgbnVtYmVycyB3aXRoIGVycm9ycy5cbiAqIC0gSWYgYGVycm9yc2AgaGFwcGVucyB0byBiZSBlbXB0eSwgdGhpcyB3aWxsIHRocm93LlxuICogQHBhcmFtIHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IGVycm9ycyAtIE5vbi1lbXB0eSBhcnJheSBvZiBlcnJvcnMuIFJlcXVpcmVkLlxuICogQHBhcmFtIHtSZWFkQ29uZmlnRmlsZVJlc3VsdFsnY29uZmlnJ118YW55fSBbY29uZmlnXSAtXG4gKiBDb25maWd1cmF0aW9uICYgbWV0YWRhdGFcbiAqIEBwYXJhbSB7Rm9ybWF0Q29uZmlnRXJyb3JzT3B0aW9uc30gW29wdHNdXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBlcnJvcnNgIGlzIGVtcHR5XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RXJyb3JzKGVycm9ycyA9IFtdLCBjb25maWcgPSB7fSwgb3B0cyA9IHt9KSB7XG4gIGlmIChlcnJvcnMgJiYgIWVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBvZiBlcnJvcnMgbXVzdCBiZSBub24tZW1wdHknKTtcbiAgfVxuICByZXR1cm4gYmV0dGVyQWp2RXJyb3JzKGdldFNjaGVtYShvcHRzLnNjaGVtYUlkKSwgY29uZmlnLCBlcnJvcnMsIHtcbiAgICBqc29uOiBvcHRzLmpzb24sXG4gICAgZm9ybWF0OiAnY2xpJyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3B0aW9uYWwgcGF0aCwgcmVhZCBhIGNvbmZpZyBmaWxlLiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBmaWxlLlxuICpcbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlfSBpZiB5b3UgYWxyZWFkeSBoYXZlIGEgY29uZmlnIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gUGF0aCB0byBjb25maWcgZmlsZSwgaWYgd2UgaGF2ZSBvbmVcbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gKiBAcHVibGljXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWFkQ29uZmlnRmlsZVJlc3VsdD59IENvbnRhaW5zIGNvbmZpZyBhbmQgZmlsZXBhdGgsIGlmIGZvdW5kLCBhbmQgYW55IGVycm9yc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZ0ZpbGUoZmlsZXBhdGgsIG9wdHMgPSB7fSkge1xuICBjb25zdCBsYyA9IGxpbGNvbmZpZygnYXBwaXVtJywge1xuICAgIGxvYWRlcnM6IHtcbiAgICAgICcueWFtbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLnltbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLmpzb24nOiBqc29uTG9hZGVyLFxuICAgICAgbm9FeHQ6IGpzb25Mb2FkZXIsXG4gICAgfSxcbiAgICBwYWNrYWdlUHJvcDogJ2FwcGl1bUNvbmZpZycsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGZpbGVwYXRoID8gYXdhaXQgbG9hZENvbmZpZ0ZpbGUobGMsIGZpbGVwYXRoKSA6IGF3YWl0IHNlYXJjaENvbmZpZ0ZpbGUobGMpO1xuXG4gIGlmIChyZXN1bHQ/LmZpbGVwYXRoICYmICFyZXN1bHQ/LmlzRW1wdHkpIHtcbiAgICBjb25zdCB7cHJldHR5ID0gdHJ1ZX0gPSBvcHRzO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29uZmlnUmVzdWx0O1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUocmVzdWx0LmNvbmZpZyk7XG4gICAgICBpZiAoXy5pc0VtcHR5KGVycm9ycykpIHtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGZvcm1hdEVycm9ycyhlcnJvcnMsIHJlc3VsdC5jb25maWcsIHtcbiAgICAgICAgICBqc29uOiByYXdDb25maWcuZ2V0KHJlc3VsdC5maWxlcGF0aCksXG4gICAgICAgICAgcHJldHR5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gcmVhc29uID8gey4uLnJlc3VsdCwgZXJyb3JzLCByZWFzb259IDogey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH1cblxuICAgICAgLy8gbm9ybWFsaXplICh0byBjYW1lbCBjYXNlKSBhbGwgdG9wLWxldmVsIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBjb25maWcgZmlsZVxuICAgICAgY29uZmlnUmVzdWx0LmNvbmZpZyA9IG5vcm1hbGl6ZUNvbmZpZygvKiogQHR5cGUge0FwcGl1bUNvbmZpZ30gKi8gKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcblxuICAgICAgcmV0dXJuIGNvbmZpZ1Jlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gY2xlYW4gdXAgdGhlIHJhdyBjb25maWcgZmlsZSBjYWNoZSwgd2hpY2ggaXMgb25seSBrZXB0IHRvIGJldHRlciByZXBvcnQgZXJyb3JzLlxuICAgICAgcmF3Q29uZmlnLmRlbGV0ZShyZXN1bHQuZmlsZXBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IHt9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgc2NoZW1hIHByb3BlcnR5IG5hbWVzIHRvIGVpdGhlciBhKSB0aGUgdmFsdWUgb2YgdGhlIGBhcHBpdW1DbGlEZXN0YCBwcm9wZXJ0eSwgaWYgYW55OyBvciBiKSBjYW1lbC1jYXNlXG4gKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOZXcgb2JqZWN0IHdpdGggY2FtZWwtY2FzZWQga2V5cyAob3IgYGRlc3RgIGtleXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ29uZmlnKGNvbmZpZykge1xuICBjb25zdCBzY2hlbWEgPSBnZXRTY2hlbWEoKTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWN0aW9uXSAtIEtleXBhdGggKGxvZGFzaCBgXy5nZXQoKWAgc3R5bGUpIHRvIHNlY3Rpb24gb2YgY29uZmlnLiBJZiBvbWl0dGVkLCBhc3N1bWUgcm9vdCBBcHBpdW0gY29uZmlnIHNjaGVtYVxuICAgKiBAdG9kbyBSZXdyaXRlIGFzIGEgbG9vcFxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHNlY3Rpb24gb2YgY29uZmlnXG4gICAqL1xuICBjb25zdCBub3JtYWxpemUgPSAoY29uZmlnLCBzZWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb2JqID0gXy5pc1VuZGVmaW5lZChzZWN0aW9uKSA/IGNvbmZpZyA6IF8uZ2V0KGNvbmZpZywgc2VjdGlvbiwgY29uZmlnKTtcblxuICAgIGNvbnN0IG1hcHBlZE9iaiA9IF8ubWFwS2V5cyhcbiAgICAgIG9iaixcbiAgICAgIChfXywgcHJvcCkgPT4gc2NoZW1hLnByb3BlcnRpZXNbcHJvcF0/LmFwcGl1bUNsaURlc3QgPz8gXy5jYW1lbENhc2UocHJvcClcbiAgICApO1xuXG4gICAgcmV0dXJuIF8ubWFwVmFsdWVzKG1hcHBlZE9iaiwgKHZhbHVlLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgY29uc3QgbmV4dFNlY3Rpb24gPSBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtwcm9wZXJ0eX1gIDogcHJvcGVydHk7XG4gICAgICByZXR1cm4gaXNTY2hlbWFUeXBlT2JqZWN0KHZhbHVlKSA/IG5vcm1hbGl6ZShjb25maWcsIG5leHRTZWN0aW9uKSA6IHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2NoZW1hIHByb3AgcmVmZXJlbmNlcyBhbiBvYmplY3QsIG9yIGlmIGl0J3MgYW4gb2JqZWN0IGl0c2VsZlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fG9iamVjdH0gc2NoZW1hIC0gUmVmZXJlbmNpbmcgc2NoZW1hIG9iamVjdFxuICAgKi9cbiAgY29uc3QgaXNTY2hlbWFUeXBlT2JqZWN0ID0gKHNjaGVtYSkgPT4gQm9vbGVhbihzY2hlbWEucHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb25maWcpO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBjYWxsaW5nIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZVJlc3VsdFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IFtlcnJvcnNdIC0gVmFsaWRhdGlvbiBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLCBpZiBmb3VuZFxuICogQHByb3BlcnR5IHtib29sZWFufSBbaXNFbXB0eV0gLSBJZiBgdHJ1ZWAsIHRoZSBjb25maWcgZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5XG4gKiBAcHJvcGVydHkge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IFtjb25maWddIC0gVGhlIHBhcnNlZCBjb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xpbXBvcnQoJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJykuSU91dHB1dEVycm9yW119IFtyZWFzb25dIC0gSHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZXMgYW5kIHN1Z2dlc3Rpb25zLiBJZiB0aGUgYHByZXR0eWAgb3B0aW9uIGlzIGB0cnVlYCwgdGhpcyB3aWxsIGJlIGEgbmljZSBzdHJpbmcgdG8gcHJpbnQuXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVhZENvbmZpZ0ZpbGV9LlxuICogQHR5cGVkZWYgUmVhZENvbmZpZ0ZpbGVPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gSWYgYGZhbHNlYCwgZG8gbm90IHVzZSBjb2xvciBhbmQgZmFuY3kgZm9ybWF0dGluZyBpbiB0aGUgYHJlYXNvbmAgcHJvcGVydHkgb2YgdGhlIHtAbGluayBSZWFkQ29uZmlnRmlsZVJlc3VsdH0uIFRoZSB2YWx1ZSBvZiBgcmVhc29uYCBpcyB0aGVuIHN1aXRhYmxlIGZvciBtYWNoaW5lLXJlYWRpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGBBc3luY1NlYXJjaGVyYCB3aGljaCBpcyBpbmV4cGxpY2FibHkgX25vdF8gZXhwb3J0ZWQgYnkgdGhlIGBsaWxjb25maWdgIHR5cGUgZGVmaW5pdGlvbi5cbiAqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPGltcG9ydCgnbGlsY29uZmlnJylbXCJsaWxjb25maWdcIl0+fSBMaWxjb25maWdBc3luY1NlYXJjaGVyXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlLiBHZW5lcmF0ZWQgZnJvbSBzY2hlbWFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Db25maWd9IEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGFuIEFwcGl1bSBjb25maWcgZmlsZSB3aXRoIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgKGFuZCB1c2luZyBgYXBwaXVtQ2xpRGVzdGAgdmFsdWUgaWYgcHJlc2VudCkuIEdlbmVyYXRlZCBmcm9tIHtAbGluayBBcHBpdW1Db25maWd9XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gTm9ybWFsaXplZEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIHN0cmluZyBzaG91bGQgYmUgYSByYXcgSlNPTiBzdHJpbmcuXG4gKiBAdHlwZWRlZiB7c3RyaW5nfSBSYXdKc29uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZm9ybWF0RXJyb3JzfS5cbiAqIEB0eXBlZGVmIEZvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2NvbmZpZy1maWxlJykuUmF3SnNvbn0gW2pzb25dIC0gUmF3IEpTT04gY29uZmlnIChhcyBzdHJpbmcpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gLSBXaGV0aGVyIHRvIGZvcm1hdCBlcnJvcnMgYXMgYSBDTEktZnJpZW5kbHkgc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gIFtzY2hlbWFJZF0gLSBTcGVjaWZpYyBJRCBvZiBhIHByb3A7IG90aGVyd2lzZSBlbnRpcmUgc2NoZW1hXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU1BLFNBQVNBLFVBQVQsQ0FBb0JDLFFBQXBCLEVBQThCQyxPQUE5QixFQUF1QztFQUNyQyxPQUFPQyxhQUFBLENBQUtDLEtBQUwsQ0FBV0YsT0FBWCxDQUFQO0FBQ0Q7O0FBUUQsTUFBTUcsU0FBUyxHQUFHLElBQUlD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
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type ParsedArgs = import('appium/types').ParsedArgs;
|
|
2
|
+
export type Args = import('appium/types').Args;
|
|
3
|
+
export type ArgSpec = import("./schema/arg-spec").ArgSpec<any>;
|
|
4
|
+
/**
|
|
5
|
+
* Mutable object containing Appium build information. By default it
|
|
6
|
+
* only contains the Appium version, but is updated with the build timestamp
|
|
7
|
+
* and git commit hash asynchronously as soon as `updateBuildInfo` is called
|
|
8
|
+
* and succeeds.
|
|
9
|
+
* @returns {import('appium/types').BuildInfo}
|
|
10
|
+
*/
|
|
11
|
+
export function getBuildInfo(): import('appium/types').BuildInfo;
|
|
12
|
+
export function checkNodeOk(): void;
|
|
13
|
+
export function showBuildInfo(): Promise<void>;
|
|
14
|
+
export function warnNodeDeprecations(): void;
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} tmpDir
|
|
17
|
+
*/
|
|
18
|
+
export function validateTmpDir(tmpDir: string): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Returns k/v pairs of server arguments which are _not_ the defaults.
|
|
21
|
+
* @param {Args} parsedArgs
|
|
22
|
+
* @returns {Args}
|
|
23
|
+
*/
|
|
24
|
+
export function getNonDefaultServerArgs(parsedArgs: Args): Args;
|
|
25
|
+
export function getGitRev(useGithubApiFallback?: boolean): Promise<any>;
|
|
26
|
+
export const APPIUM_VER: any;
|
|
27
|
+
export function updateBuildInfo(useGithubApiFallback?: boolean): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Shows a breakdown of the current config after CLI params, config file loaded & defaults applied.
|
|
30
|
+
*
|
|
31
|
+
* The actual shape of `preConfigParsedArgs` and `defaults` does not matter for the purposes of this function,
|
|
32
|
+
* but it's intended to be called with values of type {@link ParsedArgs} and `DefaultValues<true>`, respectively.
|
|
33
|
+
*
|
|
34
|
+
* @param {Partial<ParsedArgs>} nonDefaultPreConfigParsedArgs - Parsed CLI args (or param to `init()`) before config & defaults applied
|
|
35
|
+
* @param {import('./config-file').ReadConfigFileResult} configResult - Result of attempting to load a config file. _Must_ be normalized
|
|
36
|
+
* @param {Partial<ParsedArgs>} defaults - Configuration defaults from schemas
|
|
37
|
+
* @param {ParsedArgs} parsedArgs - Entire parsed args object
|
|
38
|
+
*/
|
|
39
|
+
export function showConfig(nonDefaultPreConfigParsedArgs: Partial<ParsedArgs>, configResult: import('./config-file').ReadConfigFileResult, defaults: Partial<ParsedArgs>, parsedArgs: ParsedArgs): void;
|
|
40
|
+
export const rootDir: string;
|
|
41
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"yBAuUa,OAAO,cAAc,EAAE,UAAU;mBACjC,OAAO,cAAc,EAAE,IAAI;;AAzMxC;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAKC;AAeD,+CAGC;AAhBD,6CAWC;AA4ID;;GAEG;AACH,uCAFW,MAAM,iBAWhB;AAjJD;;;;GAIG;AACH,oDAHW,IAAI,GACF,IAAI,CAmFhB;AApMD,wEAgCC;AAzED,6BAAsC;AAkBtC,+EAUC;AAiOD;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAgBD,6BAAuC"}
|