appium-adb 9.10.3 → 9.10.4

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/build/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSdkRootFromEnv = exports.getAndroidBinaryPath = exports.default = exports.DEFAULT_ADB_PORT = exports.ADB = void 0;
7
+
8
+ require("source-map-support/register");
9
+
10
+ var adb = _interopRequireWildcard(require("./lib/adb"));
11
+
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+
16
+ const {
17
+ ADB,
18
+ DEFAULT_ADB_PORT,
19
+ getAndroidBinaryPath,
20
+ getSdkRootFromEnv
21
+ } = adb;
22
+ exports.getSdkRootFromEnv = getSdkRootFromEnv;
23
+ exports.getAndroidBinaryPath = getAndroidBinaryPath;
24
+ exports.DEFAULT_ADB_PORT = DEFAULT_ADB_PORT;
25
+ exports.ADB = ADB;
26
+ var _default = ADB;
27
+ exports.default = _default;
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBREIiLCJERUZBVUxUX0FEQl9QT1JUIiwiZ2V0QW5kcm9pZEJpbmFyeVBhdGgiLCJnZXRTZGtSb290RnJvbUVudiIsImFkYiJdLCJzb3VyY2VzIjpbIi4uL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCAqIGFzIGFkYiBmcm9tICcuL2xpYi9hZGInO1xuXG5jb25zdCB7XG4gIEFEQixcbiAgREVGQVVMVF9BREJfUE9SVCxcbiAgZ2V0QW5kcm9pZEJpbmFyeVBhdGgsXG4gIGdldFNka1Jvb3RGcm9tRW52XG59ID0gYWRiO1xuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7O0FBRUEsTUFBTTtFQUNKQSxHQURJO0VBRUpDLGdCQUZJO0VBR0pDLG9CQUhJO0VBSUpDO0FBSkksSUFLRkMsR0FMSjs7Ozs7ZUFPZUosRyJ9
@@ -0,0 +1,130 @@
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 = exports.DEFAULT_ADB_PORT = exports.ADB = void 0;
9
+ Object.defineProperty(exports, "getAndroidBinaryPath", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _index.getAndroidBinaryPath;
13
+ }
14
+ });
15
+ Object.defineProperty(exports, "getSdkRootFromEnv", {
16
+ enumerable: true,
17
+ get: function () {
18
+ return _helpers.getSdkRootFromEnv;
19
+ }
20
+ });
21
+
22
+ require("source-map-support/register");
23
+
24
+ var _lodash = _interopRequireDefault(require("lodash"));
25
+
26
+ var _os = _interopRequireDefault(require("os"));
27
+
28
+ var _index = _interopRequireWildcard(require("./tools/index.js"));
29
+
30
+ var _helpers = require("./helpers");
31
+
32
+ var _logger = _interopRequireDefault(require("./logger.js"));
33
+
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
+
38
+ const DEFAULT_ADB_PORT = 5037;
39
+ exports.DEFAULT_ADB_PORT = DEFAULT_ADB_PORT;
40
+ const DEFAULT_OPTS = {
41
+ sdkRoot: (0, _helpers.getSdkRootFromEnv)() || null,
42
+ udid: null,
43
+ appDeviceReadyTimeout: null,
44
+ useKeystore: null,
45
+ keystorePath: null,
46
+ keystorePassword: null,
47
+ keyAlias: null,
48
+ keyPassword: null,
49
+ executable: {
50
+ path: 'adb',
51
+ defaultArgs: []
52
+ },
53
+ tmpDir: _os.default.tmpdir(),
54
+ curDeviceId: null,
55
+ emulatorPort: null,
56
+ logcat: null,
57
+ binaries: {},
58
+ instrumentProc: null,
59
+ suppressKillServer: null,
60
+ jars: {},
61
+ adbPort: DEFAULT_ADB_PORT,
62
+ adbHost: null,
63
+ adbExecTimeout: _helpers.DEFAULT_ADB_EXEC_TIMEOUT,
64
+ remoteAppsCacheLimit: 10,
65
+ buildToolsVersion: null,
66
+ allowOfflineDevices: false,
67
+ allowDelayAdb: true
68
+ };
69
+
70
+ class ADB {
71
+ constructor(opts = {}) {
72
+ Object.assign(this, opts);
73
+
74
+ _lodash.default.defaultsDeep(this, _lodash.default.cloneDeep(DEFAULT_OPTS));
75
+
76
+ if (opts.remoteAdbHost) {
77
+ this.executable.defaultArgs.push('-H', opts.remoteAdbHost);
78
+ this.adbHost = opts.remoteAdbHost;
79
+ }
80
+
81
+ if (opts.remoteAdbPort) {
82
+ this.adbPort = opts.remoteAdbPort;
83
+ }
84
+
85
+ this.executable.defaultArgs.push('-P', this.adbPort);
86
+ }
87
+
88
+ clone(opts = {}) {
89
+ const originalOptions = _lodash.default.cloneDeep(_lodash.default.pick(this, Object.keys(DEFAULT_OPTS)));
90
+
91
+ const cloneOptions = _lodash.default.defaultsDeep(opts, originalOptions);
92
+
93
+ const defaultArgs = cloneOptions.executable.defaultArgs;
94
+
95
+ if (cloneOptions.remoteAdbHost && defaultArgs.includes('-H')) {
96
+ defaultArgs.splice(defaultArgs.indexOf('-H'), 2);
97
+ }
98
+
99
+ if (defaultArgs.includes('-P')) {
100
+ defaultArgs.splice(defaultArgs.indexOf('-P'), 2);
101
+ }
102
+
103
+ return new ADB(cloneOptions);
104
+ }
105
+
106
+ }
107
+
108
+ exports.ADB = ADB;
109
+
110
+ ADB.createADB = async function createADB(opts) {
111
+ const adb = new ADB(opts);
112
+ adb.sdkRoot = await (0, _helpers.requireSdkRoot)(adb.sdkRoot);
113
+ await adb.getAdbWithCorrectAdbPath();
114
+
115
+ try {
116
+ await adb.adbExec(['start-server']);
117
+ } catch (e) {
118
+ _logger.default.warn(e.stderr || e.message);
119
+ }
120
+
121
+ return adb;
122
+ };
123
+
124
+ for (const [fnName, fn] of _lodash.default.toPairs(_index.default)) {
125
+ ADB.prototype[fnName] = fn;
126
+ }
127
+
128
+ var _default = ADB;
129
+ exports.default = _default;
130
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0FEQl9QT1JUIiwiREVGQVVMVF9PUFRTIiwic2RrUm9vdCIsImdldFNka1Jvb3RGcm9tRW52IiwidWRpZCIsImFwcERldmljZVJlYWR5VGltZW91dCIsInVzZUtleXN0b3JlIiwia2V5c3RvcmVQYXRoIiwia2V5c3RvcmVQYXNzd29yZCIsImtleUFsaWFzIiwia2V5UGFzc3dvcmQiLCJleGVjdXRhYmxlIiwicGF0aCIsImRlZmF1bHRBcmdzIiwidG1wRGlyIiwib3MiLCJ0bXBkaXIiLCJjdXJEZXZpY2VJZCIsImVtdWxhdG9yUG9ydCIsImxvZ2NhdCIsImJpbmFyaWVzIiwiaW5zdHJ1bWVudFByb2MiLCJzdXBwcmVzc0tpbGxTZXJ2ZXIiLCJqYXJzIiwiYWRiUG9ydCIsImFkYkhvc3QiLCJhZGJFeGVjVGltZW91dCIsIkRFRkFVTFRfQURCX0VYRUNfVElNRU9VVCIsInJlbW90ZUFwcHNDYWNoZUxpbWl0IiwiYnVpbGRUb29sc1ZlcnNpb24iLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiYWxsb3dEZWxheUFkYiIsIkFEQiIsImNvbnN0cnVjdG9yIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsIl8iLCJkZWZhdWx0c0RlZXAiLCJjbG9uZURlZXAiLCJyZW1vdGVBZGJIb3N0IiwicHVzaCIsInJlbW90ZUFkYlBvcnQiLCJjbG9uZSIsIm9yaWdpbmFsT3B0aW9ucyIsInBpY2siLCJrZXlzIiwiY2xvbmVPcHRpb25zIiwiaW5jbHVkZXMiLCJzcGxpY2UiLCJpbmRleE9mIiwiY3JlYXRlQURCIiwiYWRiIiwicmVxdWlyZVNka1Jvb3QiLCJnZXRBZGJXaXRoQ29ycmVjdEFkYlBhdGgiLCJhZGJFeGVjIiwiZSIsImxvZyIsIndhcm4iLCJzdGRlcnIiLCJtZXNzYWdlIiwiZm5OYW1lIiwiZm4iLCJ0b1BhaXJzIiwibWV0aG9kcyIsInByb3RvdHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hZGIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgbWV0aG9kcywgeyBnZXRBbmRyb2lkQmluYXJ5UGF0aCB9IGZyb20gJy4vdG9vbHMvaW5kZXguanMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9BREJfRVhFQ19USU1FT1VULCByZXF1aXJlU2RrUm9vdCwgZ2V0U2RrUm9vdEZyb21FbnZcbn0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5jb25zdCBERUZBVUxUX0FEQl9QT1JUID0gNTAzNztcbmNvbnN0IERFRkFVTFRfT1BUUyA9IHtcbiAgc2RrUm9vdDogZ2V0U2RrUm9vdEZyb21FbnYoKSB8fCBudWxsLFxuICB1ZGlkOiBudWxsLFxuICBhcHBEZXZpY2VSZWFkeVRpbWVvdXQ6IG51bGwsXG4gIHVzZUtleXN0b3JlOiBudWxsLFxuICBrZXlzdG9yZVBhdGg6IG51bGwsXG4gIGtleXN0b3JlUGFzc3dvcmQ6IG51bGwsXG4gIGtleUFsaWFzOiBudWxsLFxuICBrZXlQYXNzd29yZDogbnVsbCxcbiAgZXhlY3V0YWJsZToge3BhdGg6ICdhZGInLCBkZWZhdWx0QXJnczogW119LFxuICB0bXBEaXI6IG9zLnRtcGRpcigpLFxuICBjdXJEZXZpY2VJZDogbnVsbCxcbiAgZW11bGF0b3JQb3J0OiBudWxsLFxuICBsb2djYXQ6IG51bGwsXG4gIGJpbmFyaWVzOiB7fSxcbiAgaW5zdHJ1bWVudFByb2M6IG51bGwsXG4gIHN1cHByZXNzS2lsbFNlcnZlcjogbnVsbCxcbiAgamFyczoge30sXG4gIGFkYlBvcnQ6IERFRkFVTFRfQURCX1BPUlQsXG4gIGFkYkhvc3Q6IG51bGwsXG4gIGFkYkV4ZWNUaW1lb3V0OiBERUZBVUxUX0FEQl9FWEVDX1RJTUVPVVQsXG4gIHJlbW90ZUFwcHNDYWNoZUxpbWl0OiAxMCxcbiAgYnVpbGRUb29sc1ZlcnNpb246IG51bGwsXG4gIGFsbG93T2ZmbGluZURldmljZXM6IGZhbHNlLFxuICBhbGxvd0RlbGF5QWRiOiB0cnVlLFxufTtcblxuY2xhc3MgQURCIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0cyk7XG4gICAgXy5kZWZhdWx0c0RlZXAodGhpcywgXy5jbG9uZURlZXAoREVGQVVMVF9PUFRTKSk7XG5cbiAgICBpZiAob3B0cy5yZW1vdGVBZGJIb3N0KSB7XG4gICAgICB0aGlzLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MucHVzaCgnLUgnLCBvcHRzLnJlbW90ZUFkYkhvc3QpO1xuICAgICAgdGhpcy5hZGJIb3N0ID0gb3B0cy5yZW1vdGVBZGJIb3N0O1xuICAgIH1cbiAgICAvLyBUT0RPIGZpZ3VyZSBvdXQgd2h5IHdlIGhhdmUgdGhpcyBvcHRpb24gYXMgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlXG4gICAgLy8gdXNlZCBhbnl3aGVyZS4gUHJvYmFibHkgZGVwcmVjYXRlIGluIGZhdm9yIG9mIHNpbXBsZSBvcHRzLmFkYlBvcnRcbiAgICBpZiAob3B0cy5yZW1vdGVBZGJQb3J0KSB7XG4gICAgICB0aGlzLmFkYlBvcnQgPSBvcHRzLnJlbW90ZUFkYlBvcnQ7XG4gICAgfVxuICAgIHRoaXMuZXhlY3V0YWJsZS5kZWZhdWx0QXJncy5wdXNoKCctUCcsIHRoaXMuYWRiUG9ydCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGBBREJgIHRoYXQgaW5oZXJpdHMgY29uZmlndXJhdGlvbiBmcm9tIHRoaXMgYEFEQmAgaW5zdGFuY2UuXG4gICAqIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIGNhbGwgYEFEQi5jcmVhdGVBREIoKWAgbXVsdGlwbGUgdGltZXMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRzIC0gQWRkaXRpb25hbCBvcHRpb25zIG1hcHBpbmcgdG8gcGFzcyB0byB0aGUgYEFEQmAgY29uc3RydWN0b3IuXG4gICAqIEByZXR1cm5zIHtBREJ9IFRoZSByZXN1bHRpbmcgY2xhc3MgaW5zdGFuY2UuXG4gICAqL1xuICBjbG9uZSAob3B0cyA9IHt9KSB7XG4gICAgY29uc3Qgb3JpZ2luYWxPcHRpb25zID0gXy5jbG9uZURlZXAoXy5waWNrKHRoaXMsIE9iamVjdC5rZXlzKERFRkFVTFRfT1BUUykpKTtcbiAgICBjb25zdCBjbG9uZU9wdGlvbnMgPSBfLmRlZmF1bHRzRGVlcChvcHRzLCBvcmlnaW5hbE9wdGlvbnMpO1xuXG4gICAgLy8gUmVzZXQgZGVmYXVsdCBhcmd1bWVudHMgY3JlYXRlZCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgLy8gV2l0aG91dCB0aGlzIGNvZGUsIC1IIGFuZCAtUCBjYW4gYmUgaW5qZWN0ZWQgaW50byBkZWZhdWx0QXJncyBtdWx0aXBsZSB0aW1lcy5cbiAgICBjb25zdCBkZWZhdWx0QXJncyA9IGNsb25lT3B0aW9ucy5leGVjdXRhYmxlLmRlZmF1bHRBcmdzO1xuICAgIGlmIChjbG9uZU9wdGlvbnMucmVtb3RlQWRiSG9zdCAmJiBkZWZhdWx0QXJncy5pbmNsdWRlcygnLUgnKSkge1xuICAgICAgZGVmYXVsdEFyZ3Muc3BsaWNlKGRlZmF1bHRBcmdzLmluZGV4T2YoJy1IJyksIDIpO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdEFyZ3MuaW5jbHVkZXMoJy1QJykpIHtcbiAgICAgIGRlZmF1bHRBcmdzLnNwbGljZShkZWZhdWx0QXJncy5pbmRleE9mKCctUCcpLCAyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEFEQihjbG9uZU9wdGlvbnMpO1xuICB9XG59XG5cbkFEQi5jcmVhdGVBREIgPSBhc3luYyBmdW5jdGlvbiBjcmVhdGVBREIgKG9wdHMpIHtcbiAgY29uc3QgYWRiID0gbmV3IEFEQihvcHRzKTtcbiAgYWRiLnNka1Jvb3QgPSBhd2FpdCByZXF1aXJlU2RrUm9vdChhZGIuc2RrUm9vdCk7XG4gIGF3YWl0IGFkYi5nZXRBZGJXaXRoQ29ycmVjdEFkYlBhdGgoKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhZGIuYWRiRXhlYyhbJ3N0YXJ0LXNlcnZlciddKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy53YXJuKGUuc3RkZXJyIHx8IGUubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIGFkYjtcbn07XG5cbi8vIGFkZCBhbGwgdGhlIG1ldGhvZHMgdG8gdGhlIEFEQiBwcm90b3R5cGVcbmZvciAoY29uc3QgW2ZuTmFtZSwgZm5dIG9mIF8udG9QYWlycyhtZXRob2RzKSkge1xuICBBREIucHJvdG90eXBlW2ZuTmFtZV0gPSBmbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQURCO1xuZXhwb3J0IHsgQURCLCBERUZBVUxUX0FEQl9QT1JULCBnZXRBbmRyb2lkQmluYXJ5UGF0aCwgZ2V0U2RrUm9vdEZyb21FbnYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7O0FBRUEsTUFBTUEsZ0JBQWdCLEdBQUcsSUFBekI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHO0VBQ25CQyxPQUFPLEVBQUUsSUFBQUMsMEJBQUEsT0FBdUIsSUFEYjtFQUVuQkMsSUFBSSxFQUFFLElBRmE7RUFHbkJDLHFCQUFxQixFQUFFLElBSEo7RUFJbkJDLFdBQVcsRUFBRSxJQUpNO0VBS25CQyxZQUFZLEVBQUUsSUFMSztFQU1uQkMsZ0JBQWdCLEVBQUUsSUFOQztFQU9uQkMsUUFBUSxFQUFFLElBUFM7RUFRbkJDLFdBQVcsRUFBRSxJQVJNO0VBU25CQyxVQUFVLEVBQUU7SUFBQ0MsSUFBSSxFQUFFLEtBQVA7SUFBY0MsV0FBVyxFQUFFO0VBQTNCLENBVE87RUFVbkJDLE1BQU0sRUFBRUMsV0FBQSxDQUFHQyxNQUFILEVBVlc7RUFXbkJDLFdBQVcsRUFBRSxJQVhNO0VBWW5CQyxZQUFZLEVBQUUsSUFaSztFQWFuQkMsTUFBTSxFQUFFLElBYlc7RUFjbkJDLFFBQVEsRUFBRSxFQWRTO0VBZW5CQyxjQUFjLEVBQUUsSUFmRztFQWdCbkJDLGtCQUFrQixFQUFFLElBaEJEO0VBaUJuQkMsSUFBSSxFQUFFLEVBakJhO0VBa0JuQkMsT0FB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