hunter-open-sdk 2.0.0-beta.6 → 2.0.0-beta.7
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/lib/abilities/activate/index.js +52 -0
- package/lib/abilities/activate/worker.js +40 -0
- package/lib/abilities/erase/index.js +52 -0
- package/lib/abilities/erase/worker.js +40 -0
- package/lib/abilities/getGeneralReport/index.js +56 -0
- package/lib/abilities/getGeneralReport/worker.js +28 -0
- package/lib/abilities/getSaaSReport/index.js +56 -0
- package/lib/abilities/getSaaSReport/worker.js +20 -0
- package/lib/abilities/skip/index.js +52 -0
- package/lib/abilities/skip/worker.js +40 -0
- package/lib/events/driver/command.js +8 -9
- package/lib/events/driver/service.js +23 -34
- package/lib/events/driver/winDriver.js +119 -186
- package/lib/getAndroidSn/index.js +133 -197
- package/lib/helper/deviceHelper.js +19 -37
- package/lib/index.js +14 -6
- package/lib/registerEvent/index.js +143 -242
- package/lib/resources/dll/{libinspectionkit_x64_0.1.0.dll → libinspectionkit_x64_0.1.1.dll} +0 -0
- package/lib/resources/mac/{libinspectionkit_arm64_0.1.0.dylib → libinspectionkit_amd64_0.1.1.dylib} +0 -0
- package/lib/resources/mac/libinspectionkit_arm64_0.1.1.dylib +0 -0
- package/lib/resources/version.online +1 -1
- package/lib/utils/utils.command.js +8 -9
- package/lib/utils/utils.global.js +74 -40
- package/lib/utils/utils.initDll.js +11 -10
- package/lib/utils/utils.js +20 -12
- package/lib/utils/utils.path.js +4 -3
- package/lib/utils/utils.process.js +24 -0
- package/lib/utils/utils.sn.js +31 -47
- package/package.json +6 -4
- package/lib/getGeneralReport/index.js +0 -76
- package/lib/getGeneralReport/worker.js +0 -20
- package/lib/getSaaSReport/index.js +0 -76
- package/lib/getSaaSReport/worker.js +0 -20
- package/lib/resources/mac/libinspectionkit_amd64_0.1.0.dylib +0 -0
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.UnregisterEvent = exports.RegisterEvent = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
7
|
var _utils = require("../utils/utils");
|
|
11
8
|
var _winDriver = require("../events/driver/winDriver");
|
|
12
9
|
var _utils2 = require("../utils/utils.global");
|
|
13
10
|
var _deviceHelper = require("../helper/deviceHelper");
|
|
14
11
|
var _utils3 = require("../utils/utils.initDll");
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
const usbmux = require('usbmux');
|
|
13
|
+
const path = require('path');
|
|
14
|
+
const request = require("request");
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const Sentry = require("@sentry/browser");
|
|
20
17
|
|
|
21
18
|
// saas回调
|
|
22
|
-
|
|
19
|
+
let saasCallBack;
|
|
23
20
|
|
|
24
21
|
// usb监听
|
|
25
|
-
|
|
22
|
+
let usbListener = null;
|
|
26
23
|
/**
|
|
27
24
|
* 获取资源文件的基础路径
|
|
28
25
|
*/
|
|
29
|
-
|
|
26
|
+
const getResourcePath = () => {
|
|
30
27
|
if ((0, _utils.isDev)()) {
|
|
31
28
|
// 开发环境:使用源码目录
|
|
32
29
|
return path.resolve(__dirname, '../resources');
|
|
@@ -42,16 +39,14 @@ var getResourcePath = function getResourcePath() {
|
|
|
42
39
|
* @param {String} params 参数
|
|
43
40
|
* @returns {String} 发布配对结果
|
|
44
41
|
*/
|
|
45
|
-
|
|
46
|
-
var udid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
47
|
-
var params = arguments.length > 1 ? arguments[1] : undefined;
|
|
42
|
+
const publishPair = (udid = '', params) => {
|
|
48
43
|
// 通过调用 trust_status 来判断信任状态
|
|
49
|
-
|
|
44
|
+
const kitParamsObj = JSON.parse(params);
|
|
50
45
|
|
|
51
46
|
// 合并参数
|
|
52
47
|
Object.assign(kitParamsObj, {
|
|
53
48
|
cmd: 'publish_pair',
|
|
54
|
-
udid
|
|
49
|
+
udid
|
|
55
50
|
});
|
|
56
51
|
return (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(kitParamsObj));
|
|
57
52
|
};
|
|
@@ -61,150 +56,83 @@ var publishPair = function publishPair() {
|
|
|
61
56
|
* @param {String} udid 设备id
|
|
62
57
|
* @returns
|
|
63
58
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
kitParamsObj,
|
|
70
|
-
trustStatusRes,
|
|
71
|
-
trustStatusResObj,
|
|
72
|
-
Code,
|
|
73
|
-
Data,
|
|
74
|
-
_args = arguments;
|
|
75
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
76
|
-
while (1) switch (_context.prev = _context.next) {
|
|
77
|
-
case 0:
|
|
78
|
-
udid = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
|
|
79
|
-
params = _args.length > 1 ? _args[1] : undefined;
|
|
80
|
-
once = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
|
|
81
|
-
if (_deviceHelper.deviceHelper.hasUdid(udid)) {
|
|
82
|
-
_context.next = 5;
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
return _context.abrupt("return", false);
|
|
86
|
-
case 5:
|
|
87
|
-
// 通过调用 trust_status 来判断信任状态
|
|
88
|
-
kitParamsObj = JSON.parse(params); // 合并参数
|
|
89
|
-
Object.assign(kitParamsObj, {
|
|
90
|
-
cmd: 'trust_status',
|
|
91
|
-
udid: udid
|
|
92
|
-
});
|
|
59
|
+
const getTrustStatus = async (udid = '', params, once = false) => {
|
|
60
|
+
if (!_deviceHelper.deviceHelper.hasUdid(udid)) {
|
|
61
|
+
// 防止一直循环占用cpu资源
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
93
64
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return _context.stop();
|
|
124
|
-
}
|
|
125
|
-
}, _callee);
|
|
126
|
-
}));
|
|
127
|
-
return function getTrustStatus() {
|
|
128
|
-
return _ref.apply(this, arguments);
|
|
129
|
-
};
|
|
130
|
-
}();
|
|
131
|
-
var getTrustStatusOnce = /*#__PURE__*/function () {
|
|
132
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(udid, params) {
|
|
133
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
134
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
135
|
-
case 0:
|
|
136
|
-
_context2.next = 2;
|
|
137
|
-
return getTrustStatus(udid, params, true);
|
|
138
|
-
case 2:
|
|
139
|
-
return _context2.abrupt("return", _context2.sent);
|
|
140
|
-
case 3:
|
|
141
|
-
case "end":
|
|
142
|
-
return _context2.stop();
|
|
143
|
-
}
|
|
144
|
-
}, _callee2);
|
|
145
|
-
}));
|
|
146
|
-
return function getTrustStatusOnce(_x, _x2) {
|
|
147
|
-
return _ref2.apply(this, arguments);
|
|
148
|
-
};
|
|
149
|
-
}();
|
|
65
|
+
// 通过调用 trust_status 来判断信任状态
|
|
66
|
+
const kitParamsObj = JSON.parse(params);
|
|
67
|
+
|
|
68
|
+
// 合并参数
|
|
69
|
+
Object.assign(kitParamsObj, {
|
|
70
|
+
cmd: 'trust_status',
|
|
71
|
+
udid
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// 获取信任状态
|
|
75
|
+
const trustStatusRes = (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(kitParamsObj));
|
|
76
|
+
if (trustStatusRes) {
|
|
77
|
+
const trustStatusResObj = JSON.parse(trustStatusRes);
|
|
78
|
+
const {
|
|
79
|
+
Code,
|
|
80
|
+
Data
|
|
81
|
+
} = trustStatusResObj;
|
|
82
|
+
if (Code == 0 && (Data.imei || Data.serialNumber)) {
|
|
83
|
+
return Data;
|
|
84
|
+
} else if (!once) {
|
|
85
|
+
await (0, _utils.sleep)();
|
|
86
|
+
return await getTrustStatus(udid, params);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
const getTrustStatusOnce = async (udid, params) => {
|
|
92
|
+
return await getTrustStatus(udid, params, true);
|
|
93
|
+
};
|
|
150
94
|
|
|
151
95
|
/**
|
|
152
96
|
* 配对并获取信任状态
|
|
153
97
|
* @param {String} udid 设备id
|
|
154
98
|
* @returns
|
|
155
99
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
164
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
165
|
-
case 0:
|
|
166
|
-
udid = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : '';
|
|
167
|
-
params = _args3.length > 1 ? _args3[1] : undefined;
|
|
168
|
-
_context3.next = 4;
|
|
169
|
-
return getTrustStatusOnce(udid, params);
|
|
170
|
-
case 4:
|
|
171
|
-
trustStatusOnceRes = _context3.sent;
|
|
172
|
-
// 未信任弹起信任窗口
|
|
173
|
-
if (!trustStatusOnceRes) {
|
|
174
|
-
// 发布配对
|
|
175
|
-
publishPair(udid, params);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// 通过 trust_status 来判断信任状态
|
|
179
|
-
_context3.next = 8;
|
|
180
|
-
return getTrustStatus(udid, params);
|
|
181
|
-
case 8:
|
|
182
|
-
trustStatusRes = _context3.sent;
|
|
183
|
-
if (trustStatusRes) {
|
|
184
|
-
saasCallBack({
|
|
185
|
-
data: {
|
|
186
|
-
eventName: 'type_trust_result',
|
|
187
|
-
udid: udid,
|
|
188
|
-
eventCode: 0
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
case 10:
|
|
193
|
-
case "end":
|
|
194
|
-
return _context3.stop();
|
|
100
|
+
const DevicePair = async (udid = '', params) => {
|
|
101
|
+
const callBack = () => {
|
|
102
|
+
saasCallBack({
|
|
103
|
+
data: {
|
|
104
|
+
eventName: 'type_trust_result',
|
|
105
|
+
udid,
|
|
106
|
+
eventCode: 0
|
|
195
107
|
}
|
|
196
|
-
}
|
|
197
|
-
}));
|
|
198
|
-
return function DevicePair() {
|
|
199
|
-
return _ref3.apply(this, arguments);
|
|
108
|
+
});
|
|
200
109
|
};
|
|
201
|
-
|
|
110
|
+
|
|
111
|
+
// 单次获取信任状态
|
|
112
|
+
const trustStatusOnceRes = await getTrustStatusOnce(udid, params);
|
|
113
|
+
|
|
114
|
+
// 未信任弹起信任窗口
|
|
115
|
+
if (!trustStatusOnceRes) {
|
|
116
|
+
// 发布配对
|
|
117
|
+
publishPair(udid, params);
|
|
118
|
+
|
|
119
|
+
// 通过 trust_status 来判断信任状态
|
|
120
|
+
const trustStatusRes = await getTrustStatus(udid, params);
|
|
121
|
+
if (trustStatusRes) {
|
|
122
|
+
callBack();
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// 已信任 直接返回
|
|
128
|
+
callBack();
|
|
129
|
+
};
|
|
202
130
|
|
|
203
131
|
// 写入dll文件version
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
fs.writeFile(versionPath, version,
|
|
132
|
+
const writeDllVersion = version => {
|
|
133
|
+
const resourcePath = getResourcePath();
|
|
134
|
+
const versionPath = path.resolve(resourcePath, 'version.online');
|
|
135
|
+
fs.writeFile(versionPath, version, err => {
|
|
208
136
|
if (err) {
|
|
209
137
|
saasCallBack({
|
|
210
138
|
data: {
|
|
@@ -227,18 +155,18 @@ var writeDllVersion = function writeDllVersion(version) {
|
|
|
227
155
|
};
|
|
228
156
|
|
|
229
157
|
// 下载更新dll
|
|
230
|
-
|
|
158
|
+
const updateDll = (packageUrl, targetVersion) => {
|
|
231
159
|
// 若需要更新 则下载完成后 覆盖本地dll文件
|
|
232
|
-
|
|
233
|
-
|
|
160
|
+
let dllOutPath;
|
|
161
|
+
const resourcePath = getResourcePath();
|
|
234
162
|
if ((0, _utils.isMac)()) {
|
|
235
163
|
if ((0, _utils.isArm64)()) {
|
|
236
|
-
dllOutPath = path.resolve(resourcePath,
|
|
164
|
+
dllOutPath = path.resolve(resourcePath, `mac/libinspectionkit_arm64_${targetVersion}.dylib`);
|
|
237
165
|
}
|
|
238
166
|
} else {
|
|
239
|
-
dllOutPath = path.resolve(resourcePath,
|
|
167
|
+
dllOutPath = path.resolve(resourcePath, `dll/libinspectionkit_x64_${targetVersion}.dll`);
|
|
240
168
|
}
|
|
241
|
-
|
|
169
|
+
const dllStream = fs.createWriteStream(dllOutPath);
|
|
242
170
|
request(packageUrl).pipe(dllStream).on("close", function (err) {
|
|
243
171
|
if (err) {
|
|
244
172
|
saasCallBack({
|
|
@@ -259,23 +187,27 @@ var updateDll = function updateDll(packageUrl, targetVersion) {
|
|
|
259
187
|
* @param {String} udid 设备id
|
|
260
188
|
* @returns
|
|
261
189
|
*/
|
|
262
|
-
|
|
190
|
+
const updateDllFileCheck = () => {
|
|
263
191
|
// mac的amd不支持更新
|
|
264
192
|
if ((0, _utils.isMac)() && (0, _utils.isAmd64)()) return;
|
|
265
|
-
|
|
193
|
+
const updateParams = {
|
|
266
194
|
cmd: 'hot_update',
|
|
267
195
|
label: (0, _utils.isWin)() ? 'Windows' : 'Mac',
|
|
268
196
|
params: {}
|
|
269
197
|
};
|
|
270
|
-
|
|
198
|
+
const updateRes = (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(updateParams));
|
|
271
199
|
if (updateRes) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
200
|
+
const updateResObj = JSON.parse(updateRes);
|
|
201
|
+
const {
|
|
202
|
+
Code,
|
|
203
|
+
Data
|
|
204
|
+
} = updateResObj;
|
|
275
205
|
if (Code == 0) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
206
|
+
const {
|
|
207
|
+
isHot,
|
|
208
|
+
url,
|
|
209
|
+
targetVersion
|
|
210
|
+
} = Data;
|
|
279
211
|
|
|
280
212
|
// 需要更新 则直接下载
|
|
281
213
|
isHot == 1 && updateDll(url, targetVersion);
|
|
@@ -300,28 +232,28 @@ var updateDllFileCheck = function updateDllFileCheck() {
|
|
|
300
232
|
/**
|
|
301
233
|
* 检查并安装驱动
|
|
302
234
|
*/
|
|
303
|
-
|
|
304
|
-
return new Promise(
|
|
235
|
+
const checkAndInstallDriver = () => {
|
|
236
|
+
return new Promise((resolve, reject) => {
|
|
305
237
|
if (!(0, _utils.isWin)()) {
|
|
306
238
|
resolve();
|
|
307
239
|
return;
|
|
308
240
|
}
|
|
309
|
-
(0, _winDriver.checkHasDriver)().then(
|
|
241
|
+
(0, _winDriver.checkHasDriver)().then(res => {
|
|
310
242
|
if (res) {
|
|
311
243
|
resolve();
|
|
312
244
|
return;
|
|
313
245
|
}
|
|
314
|
-
(0, _winDriver.downloadDriver)(
|
|
246
|
+
(0, _winDriver.downloadDriver)(percent => {
|
|
315
247
|
saasCallBack({
|
|
316
248
|
data: {
|
|
317
249
|
eventName: 'type_need_install_driver',
|
|
318
250
|
eventCode: 0,
|
|
319
251
|
eventContent: JSON.stringify({
|
|
320
|
-
percent
|
|
252
|
+
percent // 下载进度
|
|
321
253
|
})
|
|
322
254
|
}
|
|
323
255
|
});
|
|
324
|
-
}).then(
|
|
256
|
+
}).then(() => {
|
|
325
257
|
// 成功
|
|
326
258
|
console.log('驱动下载并安装成功');
|
|
327
259
|
saasCallBack({
|
|
@@ -331,7 +263,7 @@ var checkAndInstallDriver = function checkAndInstallDriver() {
|
|
|
331
263
|
}
|
|
332
264
|
});
|
|
333
265
|
resolve();
|
|
334
|
-
}).catch(
|
|
266
|
+
}).catch(err => {
|
|
335
267
|
// 失败
|
|
336
268
|
console.error('驱动下载或安装失败', err);
|
|
337
269
|
Sentry.captureException('驱动下载或安装失败:' + JSON.stringify(err));
|
|
@@ -343,85 +275,54 @@ var checkAndInstallDriver = function checkAndInstallDriver() {
|
|
|
343
275
|
});
|
|
344
276
|
reject();
|
|
345
277
|
});
|
|
346
|
-
}).catch(
|
|
278
|
+
}).catch(err => {
|
|
347
279
|
console.error('驱动检测失败', err);
|
|
348
280
|
Sentry.captureException('驱动检测失败:' + JSON.stringify(err));
|
|
349
281
|
reject();
|
|
350
282
|
});
|
|
351
283
|
});
|
|
352
284
|
};
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
356
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
357
|
-
case 0:
|
|
358
|
-
saasCallBack = callBack;
|
|
285
|
+
const RegisterEvent = async (params, callBack) => {
|
|
286
|
+
saasCallBack = callBack;
|
|
359
287
|
|
|
360
|
-
|
|
361
|
-
|
|
288
|
+
// 检查是否需要更新dll
|
|
289
|
+
updateDllFileCheck();
|
|
362
290
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
_context4.next = 2;
|
|
374
|
-
break;
|
|
375
|
-
}
|
|
376
|
-
return _context4.abrupt("return");
|
|
377
|
-
case 2:
|
|
378
|
-
// 插入设备通知
|
|
379
|
-
saasCallBack({
|
|
380
|
-
data: {
|
|
381
|
-
eventName: 'type_usb_device_result',
|
|
382
|
-
udid: udid,
|
|
383
|
-
eventCode: 0
|
|
384
|
-
}
|
|
385
|
-
});
|
|
386
|
-
_deviceHelper.deviceHelper.addUdid(udid);
|
|
387
|
-
// 有驱动,直接运行脚本
|
|
388
|
-
DevicePair(udid, params);
|
|
389
|
-
case 5:
|
|
390
|
-
case "end":
|
|
391
|
-
return _context4.stop();
|
|
392
|
-
}
|
|
393
|
-
}, _callee4);
|
|
394
|
-
}));
|
|
395
|
-
return function (_x5) {
|
|
396
|
-
return _ref5.apply(this, arguments);
|
|
397
|
-
};
|
|
398
|
-
}()).on('detached', function (udid) {
|
|
399
|
-
// 拔出设备
|
|
400
|
-
saasCallBack({
|
|
401
|
-
data: {
|
|
402
|
-
eventName: 'type_usb_device_result',
|
|
403
|
-
udid: udid,
|
|
404
|
-
eventCode: -1
|
|
405
|
-
}
|
|
406
|
-
});
|
|
407
|
-
_deviceHelper.deviceHelper.removeUdid(udid);
|
|
408
|
-
}).on('error', function (err) {
|
|
409
|
-
console.log('usb连接错误:', err);
|
|
410
|
-
Sentry.captureException('usb连接错误:' + JSON.stringify(err));
|
|
411
|
-
var errMsg = "usb\u8FDE\u63A5\u9519\u8BEF\uFF1A".concat(err);
|
|
412
|
-
throw new Error(errMsg);
|
|
413
|
-
});
|
|
414
|
-
case 5:
|
|
415
|
-
case "end":
|
|
416
|
-
return _context5.stop();
|
|
291
|
+
// 在插线之前就检测驱动状态
|
|
292
|
+
await checkAndInstallDriver();
|
|
293
|
+
usbListener = new usbmux.createListener().on('attached', async udid => {
|
|
294
|
+
if (!udid) return;
|
|
295
|
+
// 插入设备通知
|
|
296
|
+
saasCallBack({
|
|
297
|
+
data: {
|
|
298
|
+
eventName: 'type_usb_device_result',
|
|
299
|
+
udid,
|
|
300
|
+
eventCode: 0
|
|
417
301
|
}
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
|
|
302
|
+
});
|
|
303
|
+
_deviceHelper.deviceHelper.addUdid(udid);
|
|
304
|
+
// 有驱动,直接运行脚本
|
|
305
|
+
DevicePair(udid, params);
|
|
306
|
+
}).on('detached', function (udid) {
|
|
307
|
+
// 拔出设备
|
|
308
|
+
saasCallBack({
|
|
309
|
+
data: {
|
|
310
|
+
eventName: 'type_usb_device_result',
|
|
311
|
+
udid,
|
|
312
|
+
eventCode: -1
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
_deviceHelper.deviceHelper.removeUdid(udid);
|
|
316
|
+
}).on('error', function (err) {
|
|
317
|
+
console.log('usb连接错误:', err);
|
|
318
|
+
Sentry.captureException('usb连接错误:' + JSON.stringify(err));
|
|
319
|
+
const errMsg = `usb连接错误:${err}`;
|
|
320
|
+
throw new Error(errMsg);
|
|
321
|
+
});
|
|
322
|
+
};
|
|
323
|
+
exports.RegisterEvent = RegisterEvent;
|
|
324
|
+
const UnregisterEvent = () => {
|
|
425
325
|
usbListener && usbListener.destroy();
|
|
426
326
|
_deviceHelper.deviceHelper.clearUdidList();
|
|
427
|
-
};
|
|
327
|
+
};
|
|
328
|
+
exports.UnregisterEvent = UnregisterEvent;
|
|
Binary file
|
package/lib/resources/mac/{libinspectionkit_arm64_0.1.0.dylib → libinspectionkit_amd64_0.1.1.dylib}
RENAMED
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.1
|
|
@@ -4,29 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.command = command;
|
|
7
|
-
|
|
8
|
-
function command(cmd) {
|
|
9
|
-
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : './';
|
|
7
|
+
const exec = require('child_process').exec;
|
|
8
|
+
function command(cmd, path = './') {
|
|
10
9
|
// 任何你期望执行的cmd命令,ls都可以
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
let cmdStr1 = cmd;
|
|
11
|
+
let cmdPath = path;
|
|
13
12
|
// 子进程名称
|
|
14
|
-
|
|
13
|
+
let workerProcess;
|
|
15
14
|
runExec(cmdStr1);
|
|
16
15
|
function runExec(cmdStr) {
|
|
17
16
|
workerProcess = exec(cmdStr, {
|
|
18
17
|
cwd: cmdPath
|
|
19
18
|
});
|
|
20
19
|
// 打印正常的后台可执行程序输出
|
|
21
|
-
workerProcess.stdout.on('data',
|
|
20
|
+
workerProcess.stdout.on('data', data => {
|
|
22
21
|
console.log('stdout: ' + data);
|
|
23
22
|
});
|
|
24
23
|
// 打印错误的后台可执行程序输出
|
|
25
|
-
workerProcess.stderr.on('data',
|
|
24
|
+
workerProcess.stderr.on('data', data => {
|
|
26
25
|
console.log('stderr: ' + data);
|
|
27
26
|
});
|
|
28
27
|
// 退出之后的输出
|
|
29
|
-
workerProcess.on('close',
|
|
28
|
+
workerProcess.on('close', code => {
|
|
30
29
|
console.log('out code:' + code);
|
|
31
30
|
});
|
|
32
31
|
}
|