@onekeyfe/hd-core 0.1.0 → 0.1.3

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 (46) hide show
  1. package/dist/api/CheckBLEFirmwareRelease.d.ts +8 -1
  2. package/dist/api/CheckBLEFirmwareRelease.d.ts.map +1 -1
  3. package/dist/api/CheckFirmwareRelease.d.ts +8 -1
  4. package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
  5. package/dist/constants/errors.d.ts +1 -0
  6. package/dist/constants/errors.d.ts.map +1 -1
  7. package/dist/core/index.d.ts +1 -0
  8. package/dist/core/index.d.ts.map +1 -1
  9. package/dist/data-manager/DataManager.d.ts +10 -0
  10. package/dist/data-manager/DataManager.d.ts.map +1 -1
  11. package/dist/device/Device.d.ts +2 -1
  12. package/dist/device/Device.d.ts.map +1 -1
  13. package/dist/device/DeviceCommands.d.ts.map +1 -1
  14. package/dist/device/DeviceList.d.ts.map +1 -1
  15. package/dist/events/call.d.ts +7 -0
  16. package/dist/events/call.d.ts.map +1 -1
  17. package/dist/events/core.d.ts +2 -2
  18. package/dist/events/core.d.ts.map +1 -1
  19. package/dist/events/iframe.d.ts +1 -0
  20. package/dist/events/iframe.d.ts.map +1 -1
  21. package/dist/index.d.ts +42 -6
  22. package/dist/index.js +143 -47
  23. package/dist/types/api/checkBLEFirmwareRelease.d.ts +12 -2
  24. package/dist/types/api/checkBLEFirmwareRelease.d.ts.map +1 -1
  25. package/dist/types/api/checkFirmwareRelease.d.ts +11 -1
  26. package/dist/types/api/checkFirmwareRelease.d.ts.map +1 -1
  27. package/dist/types/api/index.d.ts +1 -1
  28. package/dist/types/api/index.d.ts.map +1 -1
  29. package/dist/utils/release.d.ts +4 -0
  30. package/dist/utils/release.d.ts.map +1 -0
  31. package/package.json +3 -3
  32. package/src/api/CheckBLEFirmwareRelease.ts +7 -1
  33. package/src/api/CheckFirmwareRelease.ts +7 -1
  34. package/src/constants/errors.ts +1 -0
  35. package/src/core/index.ts +28 -1
  36. package/src/data-manager/DataManager.ts +36 -20
  37. package/src/device/Device.ts +18 -11
  38. package/src/device/DeviceCommands.ts +4 -0
  39. package/src/device/DeviceList.ts +13 -1
  40. package/src/events/call.ts +6 -0
  41. package/src/events/core.ts +2 -1
  42. package/src/events/iframe.ts +1 -0
  43. package/src/types/api/checkBLEFirmwareRelease.ts +12 -4
  44. package/src/types/api/checkFirmwareRelease.ts +11 -1
  45. package/src/types/api/index.ts +1 -1
  46. package/src/utils/release.ts +24 -0
package/dist/index.js CHANGED
@@ -615,6 +615,7 @@ const ERROR_CODES = {
615
615
  Device_UnexpectedMode: '',
616
616
  Device_CallInProgress: '',
617
617
  Device_InitializeFailed: '',
618
+ Device_Interrupted: 'The device is performing other operations',
618
619
  Not_Use_Onekey_Device: 'Please use onekey device',
619
620
  Runtime: '',
620
621
  Init_NotInitialized: 'Init_NotInitialized',
@@ -658,7 +659,7 @@ const colors = {
658
659
  Transport: 'color: #ffb6c1; background: #000;',
659
660
  };
660
661
  const MAX_ENTRIES = 100;
661
- class Log$5 {
662
+ class Log$6 {
662
663
  constructor(prefix, enabled) {
663
664
  this.prefix = prefix;
664
665
  this.enabled = enabled;
@@ -708,7 +709,7 @@ class Log$5 {
708
709
  }
709
710
  const _logs = {};
710
711
  const initLog = (prefix, enabled) => {
711
- const instance = new Log$5(prefix, !!enabled);
712
+ const instance = new Log$6(prefix, !!enabled);
712
713
  _logs[prefix] = instance;
713
714
  return instance;
714
715
  };
@@ -9754,6 +9755,21 @@ var MessagesJSON = {
9754
9755
  nested: nested
9755
9756
  };
9756
9757
 
9758
+ const getReleaseStatus = (releases, currentVersion) => {
9759
+ const newVersions = releases.filter(r => semver__default["default"].gt(r.version.join('.'), currentVersion));
9760
+ if (newVersions.length === 0) {
9761
+ return 'valid';
9762
+ }
9763
+ if (newVersions.some(r => r.required)) {
9764
+ return 'required';
9765
+ }
9766
+ return 'outdated';
9767
+ };
9768
+ const getReleaseChangelog = (releases, currentVersion) => {
9769
+ const newVersions = releases.filter(r => semver__default["default"].gt(r.version.join('.'), currentVersion));
9770
+ return newVersions.map(r => r.changelog);
9771
+ };
9772
+
9757
9773
  var _a;
9758
9774
  class DataManager {
9759
9775
  static load(settings) {
@@ -9821,17 +9837,26 @@ DataManager.getFirmwareStatus = (features) => {
9821
9837
  return 'unknown';
9822
9838
  }
9823
9839
  const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.firmware) !== null && _c !== void 0 ? _c : [];
9824
- const latestFirmware = targetDeviceConfigList[targetDeviceConfigList.length - 1];
9825
- if (!latestFirmware)
9826
- return 'valid';
9827
- const latestVersion = latestFirmware.version.join('.');
9828
9840
  const currentVersion = deviceFirmwareVersion.join('.');
9829
- if (semver__default["default"].gt(latestVersion, currentVersion)) {
9830
- if (latestFirmware.required)
9831
- return 'required';
9832
- return 'outdated';
9841
+ return getReleaseStatus(targetDeviceConfigList, currentVersion);
9842
+ };
9843
+ DataManager.getFirmwareChangelog = (features) => {
9844
+ var _b, _c;
9845
+ const deviceType = getDeviceType(features);
9846
+ const deviceFirmwareVersion = getDeviceFirmwareVersion(features);
9847
+ if (features.firmware_present === false ||
9848
+ (deviceType === 'classic' && features.bootloader_mode)) {
9849
+ return [];
9833
9850
  }
9834
- return 'valid';
9851
+ const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.firmware) !== null && _c !== void 0 ? _c : [];
9852
+ const currentVersion = deviceFirmwareVersion.join('.');
9853
+ return getReleaseChangelog(targetDeviceConfigList, currentVersion);
9854
+ };
9855
+ DataManager.getFirmwareLeatestRelease = (features) => {
9856
+ var _b, _c;
9857
+ const deviceType = getDeviceType(features);
9858
+ const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.firmware) !== null && _c !== void 0 ? _c : [];
9859
+ return targetDeviceConfigList[targetDeviceConfigList.length - 1];
9835
9860
  };
9836
9861
  DataManager.getBLEFirmwareStatus = (features) => {
9837
9862
  var _b, _c;
@@ -9841,17 +9866,25 @@ DataManager.getBLEFirmwareStatus = (features) => {
9841
9866
  return 'none';
9842
9867
  }
9843
9868
  const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.ble) !== null && _c !== void 0 ? _c : [];
9844
- const latestBLEFirmware = targetDeviceConfigList[targetDeviceConfigList.length - 1];
9845
- if (!latestBLEFirmware)
9846
- return 'valid';
9847
- const latestVersion = latestBLEFirmware.version.join('.');
9848
9869
  const currentVersion = deviceBLEFirmwareVersion.join('.');
9849
- if (semver__default["default"].gt(latestVersion, currentVersion)) {
9850
- if (latestBLEFirmware.required)
9851
- return 'required';
9852
- return 'outdated';
9870
+ return getReleaseStatus(targetDeviceConfigList, currentVersion);
9871
+ };
9872
+ DataManager.getBleFirmwareChangelog = (features) => {
9873
+ var _b, _c;
9874
+ const deviceType = getDeviceType(features);
9875
+ const deviceBLEFirmwareVersion = getDeviceBLEFirmwareVersion(features);
9876
+ if (!deviceBLEFirmwareVersion) {
9877
+ return [];
9853
9878
  }
9854
- return 'valid';
9879
+ const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.ble) !== null && _c !== void 0 ? _c : [];
9880
+ const currentVersion = deviceBLEFirmwareVersion.join('.');
9881
+ return getReleaseChangelog(targetDeviceConfigList, currentVersion);
9882
+ };
9883
+ DataManager.getBleFirmwareLeatestRelease = (features) => {
9884
+ var _b, _c;
9885
+ const deviceType = getDeviceType(features);
9886
+ const targetDeviceConfigList = (_c = (_b = _a.deviceMap[deviceType]) === null || _b === void 0 ? void 0 : _b.ble) !== null && _c !== void 0 ? _c : [];
9887
+ return targetDeviceConfigList[targetDeviceConfigList.length - 1];
9855
9888
  };
9856
9889
  DataManager.getTransportStatus = (localVersion) => {
9857
9890
  var _b, _c;
@@ -9862,7 +9895,7 @@ DataManager.getTransportStatus = (localVersion) => {
9862
9895
  return isLatest ? 'valid' : 'outdated';
9863
9896
  };
9864
9897
 
9865
- const Log$4 = initLog('Transport');
9898
+ const Log$5 = initLog('Transport');
9866
9899
  class TransportManager {
9867
9900
  static load() {
9868
9901
  console.log('transport manager load');
@@ -9873,25 +9906,25 @@ class TransportManager {
9873
9906
  return __awaiter(this, void 0, void 0, function* () {
9874
9907
  try {
9875
9908
  const env = DataManager.getSettings('env');
9876
- Log$4.debug('Initializing transports');
9909
+ Log$5.debug('Initializing transports');
9877
9910
  if (env === 'react-native') {
9878
9911
  if (!this.reactNativeInit) {
9879
9912
  yield this.transport.init();
9880
9913
  this.reactNativeInit = true;
9881
9914
  }
9882
9915
  else {
9883
- Log$4.debug('React Native Do Not Initializing transports');
9916
+ Log$5.debug('React Native Do Not Initializing transports');
9884
9917
  }
9885
9918
  }
9886
9919
  else {
9887
9920
  yield this.transport.init();
9888
9921
  }
9889
- Log$4.debug('Configuring transports');
9922
+ Log$5.debug('Configuring transports');
9890
9923
  yield this.transport.configure(JSON.stringify(this.defaultMessages));
9891
- Log$4.debug('Configuring transports done');
9924
+ Log$5.debug('Configuring transports done');
9892
9925
  }
9893
9926
  catch (error) {
9894
- Log$4.debug('Initializing transports error: ', error);
9927
+ Log$5.debug('Initializing transports error: ', error);
9895
9928
  }
9896
9929
  });
9897
9930
  }
@@ -9978,6 +10011,7 @@ const IFRAME = {
9978
10011
  INIT: 'iframe-init',
9979
10012
  INIT_BRIDGE: 'iframe-init-bridge',
9980
10013
  CALL: 'iframe-call',
10014
+ CANCEL: 'iframe-cancel',
9981
10015
  };
9982
10016
  const createIFrameMessage = (type, payload) => ({
9983
10017
  event: UI_EVENT,
@@ -10034,7 +10068,7 @@ const assertType = (res, resType) => {
10034
10068
  throw TypedError('Runtime', `assertType: Response of unexpected type: ${res.type}. Should be ${resType}`);
10035
10069
  }
10036
10070
  };
10037
- const Log$3 = initLog('DeviceCommands');
10071
+ const Log$4 = initLog('DeviceCommands');
10038
10072
  class DeviceCommands {
10039
10073
  constructor(device, mainId) {
10040
10074
  this.device = device;
@@ -10043,8 +10077,13 @@ class DeviceCommands {
10043
10077
  this.disposed = false;
10044
10078
  }
10045
10079
  dispose() {
10080
+ var _a, _b;
10046
10081
  this.disposed = true;
10082
+ if (this._cancelableRequest) {
10083
+ this._cancelableRequest();
10084
+ }
10047
10085
  this._cancelableRequest = undefined;
10086
+ (_b = (_a = this.transport).cancel) === null || _b === void 0 ? void 0 : _b.call(_a);
10048
10087
  }
10049
10088
  call(type, msg = {}) {
10050
10089
  return __awaiter(this, void 0, void 0, function* () {
@@ -10053,11 +10092,11 @@ class DeviceCommands {
10053
10092
  const promise = this.transport.call(this.mainId, type, msg);
10054
10093
  this.callPromise = promise;
10055
10094
  const res = yield promise;
10056
- Log$3.debug('[DeviceCommands] [call] Received', res.type);
10095
+ Log$4.debug('[DeviceCommands] [call] Received', res.type);
10057
10096
  return res;
10058
10097
  }
10059
10098
  catch (error) {
10060
- Log$3.debug('[DeviceCommands] [call] Received error', error);
10099
+ Log$4.debug('[DeviceCommands] [call] Received error', error);
10061
10100
  throw error;
10062
10101
  }
10063
10102
  });
@@ -10250,7 +10289,7 @@ const parseRunOptions = (options) => {
10250
10289
  options = {};
10251
10290
  return options;
10252
10291
  };
10253
- const Log$2 = initLog('Device');
10292
+ const Log$3 = initLog('Device');
10254
10293
  class Device extends events.exports {
10255
10294
  constructor(descriptor) {
10256
10295
  super();
@@ -10261,7 +10300,6 @@ class Device extends events.exports {
10261
10300
  this.unavailableCapabilities = {};
10262
10301
  this.instance = 0;
10263
10302
  this.internalState = [];
10264
- this.loaded = false;
10265
10303
  this.needReloadDevice = false;
10266
10304
  this.keepSession = false;
10267
10305
  this.originalDescriptor = descriptor;
@@ -10330,11 +10368,11 @@ class Device extends events.exports {
10330
10368
  if (env === 'react-native') {
10331
10369
  const res = yield ((_a = this.deviceConnector) === null || _a === void 0 ? void 0 : _a.acquire(this.originalDescriptor.id));
10332
10370
  this.mainId = (_b = res.uuid) !== null && _b !== void 0 ? _b : '';
10333
- Log$2.debug('Expected uuid:', this.mainId);
10371
+ Log$3.debug('Expected uuid:', this.mainId);
10334
10372
  }
10335
10373
  else {
10336
10374
  this.mainId = yield ((_c = this.deviceConnector) === null || _c === void 0 ? void 0 : _c.acquire(this.originalDescriptor.path, this.originalDescriptor.session));
10337
- Log$2.debug('Expected session id:', this.mainId);
10375
+ Log$3.debug('Expected session id:', this.mainId);
10338
10376
  }
10339
10377
  this.updateDescriptor({ [mainIdKey]: this.mainId });
10340
10378
  if (this.commands) {
@@ -10375,7 +10413,7 @@ class Device extends events.exports {
10375
10413
  this.updateDescriptor({ session: null });
10376
10414
  }
10377
10415
  catch (err) {
10378
- Log$2.error('[Device] release error: ', err);
10416
+ Log$3.error('[Device] release error: ', err);
10379
10417
  }
10380
10418
  finally {
10381
10419
  this.needReloadDevice = true;
@@ -10428,11 +10466,19 @@ class Device extends events.exports {
10428
10466
  this.originalDescriptor.session = upcomingSession;
10429
10467
  }
10430
10468
  }
10469
+ updateFromCache(device) {
10470
+ this.mainId = device.mainId;
10471
+ this.commands = device.commands;
10472
+ this.updateDescriptor(device.originalDescriptor);
10473
+ if (device.features) {
10474
+ this._updateFeatures(device.features);
10475
+ }
10476
+ }
10431
10477
  run(fn, options) {
10432
10478
  return __awaiter(this, void 0, void 0, function* () {
10433
10479
  if (this.runPromise) {
10434
- Log$2.error('[Device] run error:', 'Device is running');
10435
- throw TypedError('Device_CallInProgress');
10480
+ this.interruption();
10481
+ Log$3.debug('[Device] run error:', 'Device is running, but will cancel previous operate');
10436
10482
  }
10437
10483
  options = parseRunOptions(options);
10438
10484
  this.runPromise = create(this._runInner.bind(this, fn, options));
@@ -10459,24 +10505,26 @@ class Device extends events.exports {
10459
10505
  if (fn) {
10460
10506
  yield fn();
10461
10507
  }
10462
- if (this.loaded && this.features) {
10463
- yield this.getFeatures();
10464
- }
10465
10508
  if ((!this.keepSession && typeof options.keepSession !== 'boolean') ||
10466
10509
  options.keepSession === false) {
10467
10510
  this.keepSession = false;
10468
10511
  yield this.release();
10469
- Log$2.debug('release device, mainId: ', this.mainId);
10512
+ Log$3.debug('release device, mainId: ', this.mainId);
10470
10513
  }
10471
10514
  if (this.runPromise) {
10472
10515
  this.runPromise.resolve();
10473
10516
  }
10474
10517
  this.runPromise = null;
10475
- if (!this.loaded) {
10476
- this.loaded = true;
10477
- }
10478
10518
  });
10479
10519
  }
10520
+ interruption() {
10521
+ if (this.commands) {
10522
+ this.commands.dispose();
10523
+ }
10524
+ if (this.runPromise) {
10525
+ this.runPromise.reject(TypedError('Device_Interrupted'));
10526
+ }
10527
+ }
10480
10528
  getMode() {
10481
10529
  var _a, _b, _c;
10482
10530
  if ((_a = this.features) === null || _a === void 0 ? void 0 : _a.bootloader_mode)
@@ -10541,6 +10589,8 @@ class Device extends events.exports {
10541
10589
  }
10542
10590
  }
10543
10591
 
10592
+ const cacheDeviceMap = new Map();
10593
+ const Log$2 = initLog('DeviceList');
10544
10594
  class DeviceList extends events.exports {
10545
10595
  constructor() {
10546
10596
  super(...arguments);
@@ -10558,7 +10608,7 @@ class DeviceList extends events.exports {
10558
10608
  try {
10559
10609
  for (var descriptorList_1 = __asyncValues(descriptorList), descriptorList_1_1; descriptorList_1_1 = yield descriptorList_1.next(), !descriptorList_1_1.done;) {
10560
10610
  const descriptor = descriptorList_1_1.value;
10561
- const device = Device.fromDescriptor(descriptor);
10611
+ let device = Device.fromDescriptor(descriptor);
10562
10612
  device.deviceConnector = this.connector;
10563
10613
  yield device.connect();
10564
10614
  yield device.initialize();
@@ -10566,7 +10616,14 @@ class DeviceList extends events.exports {
10566
10616
  deviceList.push(device);
10567
10617
  if (device.features) {
10568
10618
  const uuid = getDeviceUUID(device.features);
10619
+ if (cacheDeviceMap.has(uuid)) {
10620
+ const cache = cacheDeviceMap.get(uuid);
10621
+ cache === null || cache === void 0 ? void 0 : cache.updateFromCache(device);
10622
+ device = cache;
10623
+ Log$2.debug('use cache device: ', uuid);
10624
+ }
10569
10625
  this.devices[uuid] = device;
10626
+ cacheDeviceMap.set(uuid, device);
10570
10627
  }
10571
10628
  }
10572
10629
  }
@@ -11562,7 +11619,13 @@ class CheckFirmwareRelease extends BaseMethod {
11562
11619
  run() {
11563
11620
  if (this.device.features) {
11564
11621
  const firmwareStatus = DataManager.getFirmwareStatus(this.device.features);
11565
- return Promise.resolve(firmwareStatus);
11622
+ const changelog = DataManager.getFirmwareChangelog(this.device.features);
11623
+ const release = DataManager.getFirmwareLeatestRelease(this.device.features);
11624
+ return Promise.resolve({
11625
+ status: firmwareStatus,
11626
+ changelog,
11627
+ release,
11628
+ });
11566
11629
  }
11567
11630
  return Promise.resolve(null);
11568
11631
  }
@@ -11575,7 +11638,13 @@ class CheckBLEFirmwareRelease extends BaseMethod {
11575
11638
  run() {
11576
11639
  if (this.device.features) {
11577
11640
  const firmwareStatus = DataManager.getBLEFirmwareStatus(this.device.features);
11578
- return Promise.resolve(firmwareStatus);
11641
+ const changelog = DataManager.getBleFirmwareChangelog(this.device.features);
11642
+ const release = DataManager.getBleFirmwareLeatestRelease(this.device.features);
11643
+ return Promise.resolve({
11644
+ status: firmwareStatus,
11645
+ changelog,
11646
+ release,
11647
+ });
11579
11648
  }
11580
11649
  return Promise.resolve(null);
11581
11650
  }
@@ -13155,6 +13224,7 @@ let _deviceList;
13155
13224
  let _connector;
13156
13225
  let _uiPromises = [];
13157
13226
  let _callPromise;
13227
+ const deviceCacheMap = new Map();
13158
13228
  const callAPI = (message) => __awaiter(void 0, void 0, void 0, function* () {
13159
13229
  var _a, _b;
13160
13230
  if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
@@ -13315,10 +13385,32 @@ function initDeviceForBle(method) {
13315
13385
  if (!method.connectId) {
13316
13386
  return initDevice(method);
13317
13387
  }
13318
- const device = Device.fromDescriptor({ id: method.connectId });
13388
+ let device;
13389
+ if (deviceCacheMap.has(method.connectId)) {
13390
+ device = deviceCacheMap.get(method.connectId);
13391
+ }
13392
+ else {
13393
+ device = Device.fromDescriptor({ id: method.connectId });
13394
+ deviceCacheMap.set(method.connectId, device);
13395
+ }
13319
13396
  device.deviceConnector = _connector;
13320
13397
  return device;
13321
13398
  }
13399
+ const cancel = (connectId) => {
13400
+ const env = DataManager.getSettings('env');
13401
+ if (connectId) {
13402
+ let device;
13403
+ if (env === 'react-native') {
13404
+ device = initDeviceForBle({ connectId });
13405
+ }
13406
+ else {
13407
+ device = initDevice({ connectId });
13408
+ }
13409
+ device === null || device === void 0 ? void 0 : device.interruption();
13410
+ }
13411
+ cleanup();
13412
+ closePopup();
13413
+ };
13322
13414
  const cleanup = () => {
13323
13415
  _uiPromises = [];
13324
13416
  Log.debug('Cleanup...');
@@ -13381,6 +13473,10 @@ class Core extends events.exports {
13381
13473
  const response = yield callAPI(message);
13382
13474
  return response;
13383
13475
  }
13476
+ case IFRAME.CANCEL: {
13477
+ cancel(message.payload.connectId);
13478
+ break;
13479
+ }
13384
13480
  }
13385
13481
  return Promise.resolve(message);
13386
13482
  });
@@ -1,4 +1,14 @@
1
1
  import type { Response } from '../params';
2
- import type { IDeviceFirmwareStatus } from '../device';
3
- export declare function checkBLEFirmwareRelease(connectId?: string): Response<IDeviceFirmwareStatus>;
2
+ import type { IDeviceBLEFirmwareStatus } from '../device';
3
+ import { IBLEFirmwareReleaseInfo } from '../settings';
4
+ declare type BleFirmwareRelease = {
5
+ status: IDeviceBLEFirmwareStatus;
6
+ changelog: {
7
+ 'zh-CN': string;
8
+ 'en-US': string;
9
+ }[];
10
+ release: IBLEFirmwareReleaseInfo;
11
+ };
12
+ export declare function checkBLEFirmwareRelease(connectId?: string): Response<BleFirmwareRelease>;
13
+ export {};
4
14
  //# sourceMappingURL=checkBLEFirmwareRelease.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkBLEFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkBLEFirmwareRelease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,SAAS,CAAC,EAAE,MAAM,GACjB,QAAQ,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"checkBLEFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkBLEFirmwareRelease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,aAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC"}
@@ -1,4 +1,14 @@
1
1
  import type { Response } from '../params';
2
2
  import type { IDeviceFirmwareStatus } from '../device';
3
- export declare function checkFirmwareRelease(connectId?: string): Response<IDeviceFirmwareStatus>;
3
+ import { IFirmwareReleaseInfo } from '../settings';
4
+ declare type FirmwareRelease = {
5
+ status: IDeviceFirmwareStatus;
6
+ changelog: {
7
+ 'en-US': string;
8
+ 'zh-CN': string;
9
+ }[];
10
+ release: IFirmwareReleaseInfo;
11
+ };
12
+ export declare function checkFirmwareRelease(connectId?: string): Response<FirmwareRelease>;
13
+ export {};
4
14
  //# sourceMappingURL=checkFirmwareRelease.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkFirmwareRelease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"checkFirmwareRelease.d.ts","sourceRoot":"","sources":["../../../src/types/api/checkFirmwareRelease.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,aAAK,eAAe,GAAG;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC"}
@@ -49,7 +49,7 @@ export declare type CoreApi = {
49
49
  dispose: () => void;
50
50
  call: (params: any) => Promise<any>;
51
51
  uiResponse: typeof uiResponse;
52
- cancel: (params?: string) => void;
52
+ cancel: (connectId?: string) => void;
53
53
  searchDevices: typeof searchDevices;
54
54
  getFeatures: typeof getFeatures;
55
55
  checkFirmwareRelease: typeof checkFirmwareRelease;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { IBLEFirmwareReleaseInfo, IDeviceFirmwareStatus, IFirmwareReleaseInfo } from '../types';
2
+ export declare const getReleaseStatus: (releases: (IFirmwareReleaseInfo | IBLEFirmwareReleaseInfo)[], currentVersion: string) => IDeviceFirmwareStatus;
3
+ export declare const getReleaseChangelog: (releases: (IFirmwareReleaseInfo | IBLEFirmwareReleaseInfo)[], currentVersion: string) => IFirmwareReleaseInfo['changelog'][];
4
+ //# sourceMappingURL=release.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/utils/release.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhG,eAAO,MAAM,gBAAgB,aACjB,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,EAAE,kBAC5C,MAAM,KACrB,qBASF,CAAC;AAEF,eAAO,MAAM,mBAAmB,aACpB,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,EAAE,kBAC5C,MAAM,KACrB,oBAAoB,CAAC,WAAW,CAAC,EAGnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "> TODO: description",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,7 +25,7 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-transport": "^0.1.0",
28
+ "@onekeyfe/hd-transport": "^0.1.3",
29
29
  "axios": "^0.27.2",
30
30
  "bignumber.js": "^9.0.2",
31
31
  "parse-uri": "^1.0.7",
@@ -35,5 +35,5 @@
35
35
  "@types/parse-uri": "^1.0.0",
36
36
  "@types/semver": "^7.3.9"
37
37
  },
38
- "gitHead": "d50dc424865150391b7249d1010ee75dc2074a7e"
38
+ "gitHead": "64411d3cac440d142574f8aa30c9d60204d47c2c"
39
39
  }
@@ -11,7 +11,13 @@ export default class CheckBLEFirmwareRelease extends BaseMethod {
11
11
  run() {
12
12
  if (this.device.features) {
13
13
  const firmwareStatus = DataManager.getBLEFirmwareStatus(this.device.features);
14
- return Promise.resolve(firmwareStatus);
14
+ const changelog = DataManager.getBleFirmwareChangelog(this.device.features);
15
+ const release = DataManager.getBleFirmwareLeatestRelease(this.device.features);
16
+ return Promise.resolve({
17
+ status: firmwareStatus,
18
+ changelog,
19
+ release,
20
+ });
15
21
  }
16
22
  return Promise.resolve(null);
17
23
  }
@@ -8,7 +8,13 @@ export default class CheckFirmwareRelease extends BaseMethod {
8
8
  run() {
9
9
  if (this.device.features) {
10
10
  const firmwareStatus = DataManager.getFirmwareStatus(this.device.features);
11
- return Promise.resolve(firmwareStatus);
11
+ const changelog = DataManager.getFirmwareChangelog(this.device.features);
12
+ const release = DataManager.getFirmwareLeatestRelease(this.device.features);
13
+ return Promise.resolve({
14
+ status: firmwareStatus,
15
+ changelog,
16
+ release,
17
+ });
12
18
  }
13
19
  return Promise.resolve(null);
14
20
  }
@@ -11,6 +11,7 @@ export const ERROR_CODES = {
11
11
  Device_UnexpectedMode: '',
12
12
  Device_CallInProgress: '',
13
13
  Device_InitializeFailed: '',
14
+ Device_Interrupted: 'The device is performing other operations',
14
15
  Not_Use_Onekey_Device: 'Please use onekey device',
15
16
 
16
17
  // runtime error
package/src/core/index.ts CHANGED
@@ -41,6 +41,8 @@ let _uiPromises: UiPromise<UiPromiseResponse['type']>[] = []; // Waiting for ui
41
41
  let _callPromise: Deferred<any> | undefined;
42
42
  const callApiQueue = [];
43
43
 
44
+ const deviceCacheMap = new Map<string, Device>();
45
+
44
46
  export const callAPI = async (message: CoreMessage) => {
45
47
  if (!message.id || !message.payload || message.type !== IFRAME.CALL) {
46
48
  return Promise.reject(
@@ -250,11 +252,32 @@ function initDeviceForBle(method: BaseMethod) {
250
252
  return initDevice(method);
251
253
  }
252
254
 
253
- const device = Device.fromDescriptor({ id: method.connectId } as OneKeyDeviceInfo);
255
+ let device: Device;
256
+ if (deviceCacheMap.has(method.connectId)) {
257
+ device = deviceCacheMap.get(method.connectId) as Device;
258
+ } else {
259
+ device = Device.fromDescriptor({ id: method.connectId } as OneKeyDeviceInfo);
260
+ deviceCacheMap.set(method.connectId, device);
261
+ }
254
262
  device.deviceConnector = _connector;
255
263
  return device;
256
264
  }
257
265
 
266
+ export const cancel = (connectId?: string) => {
267
+ const env = DataManager.getSettings('env');
268
+ if (connectId) {
269
+ let device;
270
+ if (env === 'react-native') {
271
+ device = initDeviceForBle({ connectId } as BaseMethod);
272
+ } else {
273
+ device = initDevice({ connectId } as BaseMethod);
274
+ }
275
+ device?.interruption();
276
+ }
277
+ cleanup();
278
+ closePopup();
279
+ };
280
+
258
281
  const cleanup = () => {
259
282
  _uiPromises = [];
260
283
  Log.debug('Cleanup...');
@@ -346,6 +369,10 @@ export default class Core extends EventEmitter {
346
369
  const response = await callAPI(message);
347
370
  return response;
348
371
  }
372
+ case IFRAME.CANCEL: {
373
+ cancel(message.payload.connectId);
374
+ break;
375
+ }
349
376
  default:
350
377
  break;
351
378
  }