hunter-open-sdk 2.0.0-beta.5 → 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.
Files changed (35) hide show
  1. package/lib/abilities/activate/index.js +52 -0
  2. package/lib/abilities/activate/worker.js +40 -0
  3. package/lib/abilities/erase/index.js +52 -0
  4. package/lib/abilities/erase/worker.js +40 -0
  5. package/lib/abilities/getGeneralReport/index.js +56 -0
  6. package/lib/abilities/getGeneralReport/worker.js +28 -0
  7. package/lib/abilities/getSaaSReport/index.js +56 -0
  8. package/lib/abilities/getSaaSReport/worker.js +20 -0
  9. package/lib/abilities/skip/index.js +52 -0
  10. package/lib/abilities/skip/worker.js +40 -0
  11. package/lib/events/driver/command.js +8 -9
  12. package/lib/events/driver/service.js +23 -34
  13. package/lib/events/driver/winDriver.js +119 -186
  14. package/lib/getAndroidSn/index.js +145 -188
  15. package/lib/helper/deviceHelper.js +19 -37
  16. package/lib/index.js +14 -6
  17. package/lib/registerEvent/index.js +143 -242
  18. package/lib/resources/dll/{libinspectionkit_x64_0.1.0.dll → libinspectionkit_x64_0.1.1.dll} +0 -0
  19. package/lib/resources/mac/{libinspectionkit_arm64_0.1.0.dylib → libinspectionkit_amd64_0.1.1.dylib} +0 -0
  20. package/lib/resources/mac/libinspectionkit_arm64_0.1.1.dylib +0 -0
  21. package/lib/resources/version.online +1 -1
  22. package/lib/utils/utils.command.js +8 -9
  23. package/lib/utils/utils.global.js +74 -40
  24. package/lib/utils/utils.initDll.js +11 -10
  25. package/lib/utils/utils.js +20 -12
  26. package/lib/utils/utils.path.js +4 -3
  27. package/lib/utils/utils.process.js +24 -0
  28. package/lib/utils/utils.sn.js +31 -47
  29. package/package.json +8 -6
  30. package/lib/getGeneralReport/index.js +0 -76
  31. package/lib/getGeneralReport/worker.js +0 -20
  32. package/lib/getSaaSReport/index.js +0 -76
  33. package/lib/getSaaSReport/worker.js +0 -20
  34. package/lib/resources/mac/libinspectionkit_amd64_0.1.0.dylib +0 -0
  35. package/lib/test.js +0 -7
@@ -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
- var usbmux = require('usbmux');
16
- var path = require('path');
17
- var request = require("request");
18
- var fs = require('fs');
19
- var Sentry = require("@sentry/browser");
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
- var saasCallBack;
19
+ let saasCallBack;
23
20
 
24
21
  // usb监听
25
- var usbListener = null;
22
+ let usbListener = null;
26
23
  /**
27
24
  * 获取资源文件的基础路径
28
25
  */
29
- var getResourcePath = function getResourcePath() {
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
- var publishPair = function publishPair() {
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
- var kitParamsObj = JSON.parse(params);
44
+ const kitParamsObj = JSON.parse(params);
50
45
 
51
46
  // 合并参数
52
47
  Object.assign(kitParamsObj, {
53
48
  cmd: 'publish_pair',
54
- udid: 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
- var getTrustStatus = /*#__PURE__*/function () {
65
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
66
- var udid,
67
- params,
68
- once,
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
- trustStatusRes = (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(kitParamsObj));
96
- if (!trustStatusRes) {
97
- _context.next = 21;
98
- break;
99
- }
100
- trustStatusResObj = JSON.parse(trustStatusRes);
101
- Code = trustStatusResObj.Code, Data = trustStatusResObj.Data;
102
- if (!(Code == 0 && (Data.imei || Data.serialNumber))) {
103
- _context.next = 15;
104
- break;
105
- }
106
- return _context.abrupt("return", Data);
107
- case 15:
108
- if (once) {
109
- _context.next = 21;
110
- break;
111
- }
112
- _context.next = 18;
113
- return (0, _utils.sleep)();
114
- case 18:
115
- _context.next = 20;
116
- return getTrustStatus(udid, params);
117
- case 20:
118
- return _context.abrupt("return", _context.sent);
119
- case 21:
120
- return _context.abrupt("return", false);
121
- case 22:
122
- case "end":
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
- var DevicePair = /*#__PURE__*/function () {
157
- var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
158
- var udid,
159
- params,
160
- trustStatusOnceRes,
161
- trustStatusRes,
162
- _args3 = arguments;
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
- }, _callee3);
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
- var writeDllVersion = function writeDllVersion(version) {
205
- var resourcePath = getResourcePath();
206
- var versionPath = path.resolve(resourcePath, 'version.online');
207
- fs.writeFile(versionPath, version, function (err) {
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
- var updateDll = function updateDll(packageUrl, targetVersion) {
158
+ const updateDll = (packageUrl, targetVersion) => {
231
159
  // 若需要更新 则下载完成后 覆盖本地dll文件
232
- var dllOutPath;
233
- var resourcePath = getResourcePath();
160
+ let dllOutPath;
161
+ const resourcePath = getResourcePath();
234
162
  if ((0, _utils.isMac)()) {
235
163
  if ((0, _utils.isArm64)()) {
236
- dllOutPath = path.resolve(resourcePath, "mac/libinspectionkit_arm64_".concat(targetVersion, ".dylib"));
164
+ dllOutPath = path.resolve(resourcePath, `mac/libinspectionkit_arm64_${targetVersion}.dylib`);
237
165
  }
238
166
  } else {
239
- dllOutPath = path.resolve(resourcePath, "dll/libinspectionkit_x64_".concat(targetVersion, ".dll"));
167
+ dllOutPath = path.resolve(resourcePath, `dll/libinspectionkit_x64_${targetVersion}.dll`);
240
168
  }
241
- var dllStream = fs.createWriteStream(dllOutPath);
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
- var updateDllFileCheck = function updateDllFileCheck() {
190
+ const updateDllFileCheck = () => {
263
191
  // mac的amd不支持更新
264
192
  if ((0, _utils.isMac)() && (0, _utils.isAmd64)()) return;
265
- var updateParams = {
193
+ const updateParams = {
266
194
  cmd: 'hot_update',
267
195
  label: (0, _utils.isWin)() ? 'Windows' : 'Mac',
268
196
  params: {}
269
197
  };
270
- var updateRes = (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(updateParams));
198
+ const updateRes = (0, _utils2.callHunterInspectionKit)('TheForceKit', JSON.stringify(updateParams));
271
199
  if (updateRes) {
272
- var updateResObj = JSON.parse(updateRes);
273
- var Code = updateResObj.Code,
274
- Data = updateResObj.Data;
200
+ const updateResObj = JSON.parse(updateRes);
201
+ const {
202
+ Code,
203
+ Data
204
+ } = updateResObj;
275
205
  if (Code == 0) {
276
- var isHot = Data.isHot,
277
- url = Data.url,
278
- targetVersion = Data.targetVersion;
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
- var checkAndInstallDriver = function checkAndInstallDriver() {
304
- return new Promise(function (resolve, reject) {
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(function (res) {
241
+ (0, _winDriver.checkHasDriver)().then(res => {
310
242
  if (res) {
311
243
  resolve();
312
244
  return;
313
245
  }
314
- (0, _winDriver.downloadDriver)(function (percent) {
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: percent // 下载进度
252
+ percent // 下载进度
321
253
  })
322
254
  }
323
255
  });
324
- }).then(function () {
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(function (err) {
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(function (err) {
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
- var RegisterEvent = exports.RegisterEvent = /*#__PURE__*/function () {
354
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(params, callBack) {
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
- // 检查是否需要更新dll
361
- updateDllFileCheck();
288
+ // 检查是否需要更新dll
289
+ updateDllFileCheck();
362
290
 
363
- // 在插线之前就检测驱动状态
364
- _context5.next = 4;
365
- return checkAndInstallDriver();
366
- case 4:
367
- usbListener = new usbmux.createListener().on('attached', /*#__PURE__*/function () {
368
- var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(udid) {
369
- return _regenerator.default.wrap(function _callee4$(_context4) {
370
- while (1) switch (_context4.prev = _context4.next) {
371
- case 0:
372
- if (udid) {
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
- }, _callee5);
419
- }));
420
- return function RegisterEvent(_x3, _x4) {
421
- return _ref4.apply(this, arguments);
422
- };
423
- }();
424
- var UnregisterEvent = exports.UnregisterEvent = function UnregisterEvent() {
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;
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -4,29 +4,28 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.command = command;
7
- var exec = require('child_process').exec;
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
- var cmdStr1 = cmd;
12
- var cmdPath = path;
10
+ let cmdStr1 = cmd;
11
+ let cmdPath = path;
13
12
  // 子进程名称
14
- var workerProcess;
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', function (data) {
20
+ workerProcess.stdout.on('data', data => {
22
21
  console.log('stdout: ' + data);
23
22
  });
24
23
  // 打印错误的后台可执行程序输出
25
- workerProcess.stderr.on('data', function (data) {
24
+ workerProcess.stderr.on('data', data => {
26
25
  console.log('stderr: ' + data);
27
26
  });
28
27
  // 退出之后的输出
29
- workerProcess.on('close', function (code) {
28
+ workerProcess.on('close', code => {
30
29
  console.log('out code:' + code);
31
30
  });
32
31
  }