@onekeyfe/hd-core 1.2.0-alpha.2 → 1.2.0-alpha.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.
Files changed (121) hide show
  1. package/__tests__/preInitialize.test.ts +33 -0
  2. package/__tests__/protocol-v2.test.ts +1577 -624
  3. package/dist/api/FileRead.d.ts.map +1 -1
  4. package/dist/api/FileWrite.d.ts.map +1 -1
  5. package/dist/api/FirmwareUpdateV4.d.ts +20 -2
  6. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  7. package/dist/api/GetPassphraseState.d.ts +4 -4
  8. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  9. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  10. package/dist/api/firmware/getBinary.d.ts +4 -0
  11. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  12. package/dist/api/index.d.ts +5 -10
  13. package/dist/api/index.d.ts.map +1 -1
  14. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
  15. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  16. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
  17. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  18. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
  19. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  20. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -1
  21. package/dist/api/protocol-v2/{DeviceGetDeviceInfo.d.ts → DeviceInfoGet.d.ts} +10 -10
  22. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  23. package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
  24. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  25. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
  26. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  27. package/dist/api/protocol-v2/helpers.d.ts +24 -19
  28. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  29. package/dist/api/ton/TonSignData.d.ts +1 -5
  30. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  31. package/dist/constants/index.d.ts +2 -1
  32. package/dist/constants/index.d.ts.map +1 -1
  33. package/dist/core/index.d.ts.map +1 -1
  34. package/dist/data-manager/DataManager.d.ts +1 -1
  35. package/dist/data-manager/DataManager.d.ts.map +1 -1
  36. package/dist/device/Device.d.ts +5 -1
  37. package/dist/device/Device.d.ts.map +1 -1
  38. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  39. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +1 -1
  40. package/dist/index.d.ts +85 -58
  41. package/dist/index.js +1672 -1640
  42. package/dist/inject.d.ts.map +1 -1
  43. package/dist/protocols/protocol-v2/features.d.ts +12 -14
  44. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  45. package/dist/protocols/protocol-v2/firmware.d.ts +10 -9
  46. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  47. package/dist/types/api/firmwareUpdate.d.ts +1 -6
  48. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  49. package/dist/types/api/getDeviceInfo.d.ts +2 -0
  50. package/dist/types/api/getDeviceInfo.d.ts.map +1 -1
  51. package/dist/types/api/getPassphraseState.d.ts +4 -4
  52. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  53. package/dist/types/api/index.d.ts +6 -11
  54. package/dist/types/api/index.d.ts.map +1 -1
  55. package/dist/types/api/protocolV2.d.ts +12 -17
  56. package/dist/types/api/protocolV2.d.ts.map +1 -1
  57. package/dist/types/device.d.ts +1 -0
  58. package/dist/types/device.d.ts.map +1 -1
  59. package/dist/types/params.d.ts +1 -0
  60. package/dist/types/params.d.ts.map +1 -1
  61. package/dist/types/settings.d.ts +29 -1
  62. package/dist/types/settings.d.ts.map +1 -1
  63. package/dist/utils/deviceFeaturesUtils.d.ts +2 -0
  64. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  65. package/dist/utils/patch.d.ts +1 -1
  66. package/dist/utils/patch.d.ts.map +1 -1
  67. package/package.json +4 -4
  68. package/src/api/FileRead.ts +14 -1
  69. package/src/api/FileWrite.ts +14 -1
  70. package/src/api/FirmwareUpdateV4.ts +933 -197
  71. package/src/api/GetOnekeyFeatures.ts +1 -1
  72. package/src/api/GetPassphraseState.ts +7 -4
  73. package/src/api/device/DeviceRebootToBoardloader.ts +4 -4
  74. package/src/api/device/DeviceRebootToBootloader.ts +4 -4
  75. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +11 -4
  76. package/src/api/index.ts +5 -10
  77. package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +3 -3
  78. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
  79. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +3 -5
  80. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +2 -2
  81. package/src/api/protocol-v2/{DeviceGetDeviceInfo.ts → DeviceInfoGet.ts} +52 -22
  82. package/src/api/protocol-v2/DeviceReboot.ts +2 -2
  83. package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +2 -2
  84. package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +2 -2
  85. package/src/api/protocol-v2/helpers.ts +48 -57
  86. package/src/api/ton/TonSignData.ts +1 -5
  87. package/src/constants/index.ts +10 -1
  88. package/src/core/index.ts +19 -3
  89. package/src/data/messages/messages-protocol-v2.json +1224 -1804
  90. package/src/data-manager/DataManager.ts +7 -0
  91. package/src/device/Device.ts +34 -12
  92. package/src/device/DevicePool.ts +6 -6
  93. package/src/deviceProfile/buildDeviceFeatures.ts +61 -63
  94. package/src/deviceProfile/buildDeviceProfile.ts +78 -60
  95. package/src/inject.ts +10 -16
  96. package/src/protocols/protocol-v2/features.ts +26 -62
  97. package/src/protocols/protocol-v2/firmware.ts +11 -36
  98. package/src/types/api/firmwareUpdate.ts +10 -20
  99. package/src/types/api/getDeviceInfo.ts +2 -0
  100. package/src/types/api/getPassphraseState.ts +4 -4
  101. package/src/types/api/index.ts +10 -20
  102. package/src/types/api/protocolV2.ts +21 -42
  103. package/src/types/device.ts +1 -0
  104. package/src/types/params.ts +4 -0
  105. package/src/types/settings.ts +44 -30
  106. package/src/utils/deviceFeaturesUtils.ts +52 -11
  107. package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
  108. package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
  109. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
  110. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +0 -6
  111. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +0 -1
  112. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
  113. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
  114. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
  115. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
  116. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
  117. package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
  118. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
  119. package/src/api/protocol-v2/DevReboot.ts +0 -24
  120. package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +0 -16
  121. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
package/src/core/index.ts CHANGED
@@ -95,6 +95,7 @@ const parseInitOptions = (method?: BaseMethod): InitOptions => ({
95
95
  deviceId: method?.payload.deviceId,
96
96
  deriveCardano: method && hasDeriveCardano(method),
97
97
  connectProtocol: method?.payload.connectProtocol,
98
+ protocolV2DeviceInfoTimeoutMs: method?.payload.protocolV2DeviceInfoTimeoutMs,
98
99
  });
99
100
 
100
101
  let _core: Core;
@@ -222,9 +223,15 @@ const handlePreWarmSignal = async (
222
223
  message: CoreMessage,
223
224
  method: BaseMethod
224
225
  ): Promise<any> => {
226
+ const createAckResponse = () => {
227
+ completeMethodRequestContext(method);
228
+ method.dispose();
229
+ return createResponseMessage(method.responseID, true, true);
230
+ };
231
+
225
232
  // no connectId: can't target a device safely, skip pre-warm (ack only)
226
233
  if (!method.connectId) {
227
- return createResponseMessage(method.responseID, true, true);
234
+ return createAckResponse();
228
235
  }
229
236
 
230
237
  const key = method.getPreWarmKey();
@@ -237,12 +244,12 @@ const handlePreWarmSignal = async (
237
244
  } catch {
238
245
  // pre-warm is best-effort; ignore its failure for the coalesced caller
239
246
  }
240
- return createResponseMessage(method.responseID, true, true);
247
+ return createAckResponse();
241
248
  }
242
249
 
243
250
  const doneAt = preWarmDoneAt.get(key);
244
251
  if (typeof doneAt === 'number' && Date.now() - doneAt <= method.preWarmTtl) {
245
- return createResponseMessage(method.responseID, true, true);
252
+ return createAckResponse();
246
253
  }
247
254
 
248
255
  const run = onCallDevice(context, message, method);
@@ -731,6 +738,15 @@ function initDevice(method: BaseMethod) {
731
738
 
732
739
  if (method.connectId) {
733
740
  device = _deviceList.getDevice(method.connectId);
741
+ if (!device && method.name === 'firmwareUpdateV4' && allDevices.length === 1) {
742
+ const [singleDevice] = allDevices;
743
+ if (singleDevice.isBootloader()) {
744
+ Log.debug(
745
+ 'firmwareUpdateV4 uses the only bootloader device when connectId changed after reboot'
746
+ );
747
+ device = singleDevice;
748
+ }
749
+ }
734
750
  } else if (allDevices.length === 1) {
735
751
  [device] = allDevices;
736
752
  } else if (allDevices.length > 1) {