@onekeyfe/hd-core 1.2.0-alpha.1 → 1.2.0-alpha.11

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 (210) hide show
  1. package/__tests__/DeviceCommands.test.ts +25 -0
  2. package/__tests__/RequestQueue.test.ts +34 -0
  3. package/__tests__/connectSettings.test.ts +19 -0
  4. package/__tests__/device-wallet-session-store.test.ts +131 -0
  5. package/__tests__/preInitialize.test.ts +33 -0
  6. package/__tests__/pro2Wallpaper.test.ts +50 -0
  7. package/__tests__/protocol-v2-firmware-targets.test.ts +19 -0
  8. package/__tests__/protocol-v2.test.ts +3253 -1605
  9. package/dist/api/BaseMethod.d.ts +4 -0
  10. package/dist/api/BaseMethod.d.ts.map +1 -1
  11. package/dist/api/ClearSessionCache.d.ts +9 -0
  12. package/dist/api/ClearSessionCache.d.ts.map +1 -0
  13. package/dist/api/FileRead.d.ts.map +1 -1
  14. package/dist/api/FileWrite.d.ts.map +1 -1
  15. package/dist/api/FirmwareUpdateV4.d.ts +20 -3
  16. package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
  17. package/dist/api/GetPassphraseState.d.ts +1 -6
  18. package/dist/api/GetPassphraseState.d.ts.map +1 -1
  19. package/dist/api/UploadPortfolio.d.ts +18 -0
  20. package/dist/api/UploadPortfolio.d.ts.map +1 -0
  21. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +1 -0
  22. package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
  23. package/dist/api/firmware/getBinary.d.ts +4 -0
  24. package/dist/api/firmware/getBinary.d.ts.map +1 -1
  25. package/dist/api/firmware/progressThrottle.d.ts +3 -0
  26. package/dist/api/firmware/progressThrottle.d.ts.map +1 -0
  27. package/dist/api/index.d.ts +13 -10
  28. package/dist/api/index.d.ts.map +1 -1
  29. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +6 -0
  30. package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -0
  31. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +7 -0
  32. package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -0
  33. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -1
  34. package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
  35. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +3 -2
  36. package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
  37. package/dist/api/protocol-v2/{DeviceGetDeviceInfo.d.ts → DeviceInfoGet.d.ts} +10 -10
  38. package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -0
  39. package/dist/api/protocol-v2/DeviceSessionGet.d.ts +6 -0
  40. package/dist/api/protocol-v2/DeviceSessionGet.d.ts.map +1 -0
  41. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts +6 -0
  42. package/dist/api/protocol-v2/DeviceSettingsGet.d.ts.map +1 -0
  43. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts +16 -0
  44. package/dist/api/protocol-v2/DeviceSettingsPageShow.d.ts.map +1 -0
  45. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts +12 -0
  46. package/dist/api/protocol-v2/DeviceSettingsSet.d.ts.map +1 -0
  47. package/dist/api/protocol-v2/DeviceStatusGet.d.ts +6 -0
  48. package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
  49. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +26 -0
  50. package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
  51. package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
  52. package/dist/api/protocol-v2/{FilesystemFixPermission.d.ts → FilesystemPermissionFix.d.ts} +2 -2
  53. package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -0
  54. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +6 -0
  55. package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -0
  56. package/dist/api/protocol-v2/helpers.d.ts +27 -18
  57. package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
  58. package/dist/api/ton/TonSignData.d.ts +1 -5
  59. package/dist/api/ton/TonSignData.d.ts.map +1 -1
  60. package/dist/api/tron/TronSignMessage.d.ts +0 -1
  61. package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
  62. package/dist/api/tron/TronSignTransaction.d.ts +0 -1
  63. package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
  64. package/dist/core/RequestQueue.d.ts +2 -0
  65. package/dist/core/RequestQueue.d.ts.map +1 -1
  66. package/dist/core/index.d.ts +1 -0
  67. package/dist/core/index.d.ts.map +1 -1
  68. package/dist/data-manager/DataManager.d.ts +1 -1
  69. package/dist/data-manager/DataManager.d.ts.map +1 -1
  70. package/dist/data-manager/connectSettings.d.ts.map +1 -1
  71. package/dist/device/Device.d.ts +6 -3
  72. package/dist/device/Device.d.ts.map +1 -1
  73. package/dist/device/DeviceCommands.d.ts +4 -4
  74. package/dist/device/DeviceCommands.d.ts.map +1 -1
  75. package/dist/device/DeviceWalletSessionStore.d.ts +15 -0
  76. package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
  77. package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
  78. package/dist/deviceProfile/buildDeviceProfile.d.ts.map +1 -1
  79. package/dist/events/call.d.ts +7 -0
  80. package/dist/events/call.d.ts.map +1 -1
  81. package/dist/events/core.d.ts +2 -2
  82. package/dist/events/core.d.ts.map +1 -1
  83. package/dist/events/iframe.d.ts +1 -0
  84. package/dist/events/iframe.d.ts.map +1 -1
  85. package/dist/index.d.ts +166 -70
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +2659 -1750
  88. package/dist/inject.d.ts +3 -2
  89. package/dist/inject.d.ts.map +1 -1
  90. package/dist/lowLevelInject.d.ts +2 -1
  91. package/dist/lowLevelInject.d.ts.map +1 -1
  92. package/dist/protocols/protocol-v2/features.d.ts +12 -14
  93. package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
  94. package/dist/protocols/protocol-v2/firmware.d.ts +11 -9
  95. package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
  96. package/dist/protocols/protocol-v2/index.d.ts +1 -0
  97. package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
  98. package/dist/protocols/protocol-v2/unlockRetry.d.ts +9 -0
  99. package/dist/protocols/protocol-v2/unlockRetry.d.ts.map +1 -0
  100. package/dist/protocols/protocol-v2/walletSession.d.ts +13 -0
  101. package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
  102. package/dist/topLevelInject.d.ts.map +1 -1
  103. package/dist/types/api/firmwareUpdate.d.ts +6 -6
  104. package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
  105. package/dist/types/api/getDeviceInfo.d.ts +2 -0
  106. package/dist/types/api/getDeviceInfo.d.ts.map +1 -1
  107. package/dist/types/api/getPassphraseState.d.ts +2 -10
  108. package/dist/types/api/getPassphraseState.d.ts.map +1 -1
  109. package/dist/types/api/index.d.ts +18 -12
  110. package/dist/types/api/index.d.ts.map +1 -1
  111. package/dist/types/api/protocolV2.d.ts +31 -17
  112. package/dist/types/api/protocolV2.d.ts.map +1 -1
  113. package/dist/types/api/sessionCache.d.ts +10 -0
  114. package/dist/types/api/sessionCache.d.ts.map +1 -0
  115. package/dist/types/device.d.ts +1 -0
  116. package/dist/types/device.d.ts.map +1 -1
  117. package/dist/types/params.d.ts +1 -0
  118. package/dist/types/params.d.ts.map +1 -1
  119. package/dist/types/settings.d.ts +21 -2
  120. package/dist/types/settings.d.ts.map +1 -1
  121. package/dist/utils/deviceFeaturesUtils.d.ts +2 -2
  122. package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
  123. package/dist/utils/index.d.ts +2 -0
  124. package/dist/utils/index.d.ts.map +1 -1
  125. package/dist/utils/patch.d.ts +1 -1
  126. package/dist/utils/patch.d.ts.map +1 -1
  127. package/dist/utils/pro2Wallpaper.d.ts +12 -0
  128. package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
  129. package/package.json +4 -4
  130. package/src/api/BaseMethod.ts +18 -0
  131. package/src/api/ClearSessionCache.ts +28 -0
  132. package/src/api/FileRead.ts +16 -3
  133. package/src/api/FileWrite.ts +22 -1
  134. package/src/api/FirmwareUpdateV4.ts +1006 -265
  135. package/src/api/GetOnekeyFeatures.ts +1 -1
  136. package/src/api/GetPassphraseState.ts +9 -15
  137. package/src/api/UploadPortfolio.ts +37 -0
  138. package/src/api/device/DeviceRebootToBoardloader.ts +4 -4
  139. package/src/api/device/DeviceRebootToBootloader.ts +4 -4
  140. package/src/api/firmware/FirmwareUpdateBaseMethod.ts +18 -4
  141. package/src/api/firmware/progressThrottle.ts +44 -0
  142. package/src/api/index.ts +13 -10
  143. package/src/api/protocol-v2/{FactoryGetDeviceInfo.ts → DeviceFactoryInfoGet.ts} +3 -3
  144. package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +32 -0
  145. package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +3 -5
  146. package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +39 -5
  147. package/src/api/protocol-v2/{DeviceGetDeviceInfo.ts → DeviceInfoGet.ts} +52 -22
  148. package/src/api/protocol-v2/DeviceReboot.ts +1 -1
  149. package/src/api/protocol-v2/DeviceSessionGet.ts +15 -0
  150. package/src/api/protocol-v2/{DeviceGetOnboardingStatus.ts → DeviceSettingsGet.ts} +3 -3
  151. package/src/api/protocol-v2/DeviceSettingsPageShow.ts +59 -0
  152. package/src/api/protocol-v2/DeviceSettingsSet.ts +39 -0
  153. package/src/api/protocol-v2/DeviceStatusGet.ts +14 -0
  154. package/src/api/protocol-v2/DeviceUploadWallpaper.ts +160 -0
  155. package/src/api/protocol-v2/FilesystemFormat.ts +4 -1
  156. package/src/api/protocol-v2/{FilesystemFixPermission.ts → FilesystemPermissionFix.ts} +2 -2
  157. package/src/api/protocol-v2/{GetProtoVersion.ts → ProtocolInfoRequest.ts} +2 -2
  158. package/src/api/protocol-v2/helpers.ts +71 -47
  159. package/src/api/ton/TonSignData.ts +1 -5
  160. package/src/api/tron/TronSignMessage.ts +0 -1
  161. package/src/api/tron/TronSignTransaction.ts +0 -1
  162. package/src/core/RequestQueue.ts +19 -0
  163. package/src/core/index.ts +29 -6
  164. package/src/data/messages/messages-protocol-v2.json +760 -1110
  165. package/src/data/messages/messages.json +8 -0
  166. package/src/data-manager/DataManager.ts +7 -0
  167. package/src/data-manager/connectSettings.ts +2 -4
  168. package/src/device/Device.ts +103 -70
  169. package/src/device/DeviceCommands.ts +9 -3
  170. package/src/device/DeviceWalletSessionStore.ts +78 -0
  171. package/src/deviceProfile/buildDeviceFeatures.ts +60 -63
  172. package/src/deviceProfile/buildDeviceProfile.ts +77 -58
  173. package/src/events/call.ts +6 -0
  174. package/src/events/core.ts +2 -0
  175. package/src/events/iframe.ts +1 -0
  176. package/src/index.ts +4 -0
  177. package/src/inject.ts +26 -16
  178. package/src/lowLevelInject.ts +3 -0
  179. package/src/protocols/protocol-v2/features.ts +26 -63
  180. package/src/protocols/protocol-v2/firmware.ts +12 -36
  181. package/src/protocols/protocol-v2/index.ts +1 -0
  182. package/src/protocols/protocol-v2/unlockRetry.ts +46 -0
  183. package/src/protocols/protocol-v2/walletSession.ts +92 -0
  184. package/src/topLevelInject.ts +2 -0
  185. package/src/types/api/firmwareUpdate.ts +28 -20
  186. package/src/types/api/getDeviceInfo.ts +2 -0
  187. package/src/types/api/getPassphraseState.ts +2 -11
  188. package/src/types/api/index.ts +29 -21
  189. package/src/types/api/protocolV2.ts +74 -35
  190. package/src/types/api/sessionCache.ts +14 -0
  191. package/src/types/device.ts +1 -0
  192. package/src/types/params.ts +4 -0
  193. package/src/types/settings.ts +42 -35
  194. package/src/utils/deviceFeaturesUtils.ts +46 -20
  195. package/src/utils/index.ts +6 -0
  196. package/src/utils/pro2Wallpaper.ts +111 -0
  197. package/dist/api/protocol-v2/DevReboot.d.ts +0 -7
  198. package/dist/api/protocol-v2/DevReboot.d.ts.map +0 -1
  199. package/dist/api/protocol-v2/DeviceGetDeviceInfo.d.ts.map +0 -1
  200. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +0 -6
  201. package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +0 -1
  202. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts +0 -7
  203. package/dist/api/protocol-v2/FactoryDeviceInfoSettings.d.ts.map +0 -1
  204. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts +0 -6
  205. package/dist/api/protocol-v2/FactoryGetDeviceInfo.d.ts.map +0 -1
  206. package/dist/api/protocol-v2/FilesystemFixPermission.d.ts.map +0 -1
  207. package/dist/api/protocol-v2/GetProtoVersion.d.ts +0 -6
  208. package/dist/api/protocol-v2/GetProtoVersion.d.ts.map +0 -1
  209. package/src/api/protocol-v2/DevReboot.ts +0 -24
  210. package/src/api/protocol-v2/FactoryDeviceInfoSettings.ts +0 -29
@@ -0,0 +1,28 @@
1
+ import { BaseMethod } from './BaseMethod';
2
+ import { deviceWalletSessionStore } from '../device/DeviceWalletSessionStore';
3
+
4
+ import type { ClearSessionCacheParams } from '../types/api/sessionCache';
5
+
6
+ export default class ClearSessionCache extends BaseMethod<ClearSessionCacheParams> {
7
+ init() {
8
+ this.useDevice = false;
9
+ this.useDevicePassphraseState = false;
10
+ this.skipForceUpdateCheck = true;
11
+ this.params = {
12
+ deviceId: this.payload.deviceId,
13
+ passphraseState: this.payload.passphraseState,
14
+ };
15
+ }
16
+
17
+ run() {
18
+ const { deviceId, passphraseState } = this.params;
19
+ if (!deviceId) {
20
+ deviceWalletSessionStore.clear();
21
+ } else if (!passphraseState) {
22
+ deviceWalletSessionStore.deleteDevice(deviceId);
23
+ } else {
24
+ deviceWalletSessionStore.delete(deviceId, passphraseState);
25
+ }
26
+ return Promise.resolve({ cleared: true as const });
27
+ }
28
+ }
@@ -1,5 +1,5 @@
1
1
  import {
2
- PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
2
+ PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE,
3
3
  PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE,
4
4
  } from '@onekeyfe/hd-transport';
5
5
  import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
@@ -27,7 +27,7 @@ const MIN_FILE_READ_CHUNK_SIZE = 64;
27
27
  function getProtocolV2FileReadChunkLimit() {
28
28
  const env = DataManager.getSettings('env');
29
29
  if (env && DataManager.isBleConnect(env)) {
30
- return PROTOCOL_V2_BLE_FILE_CHUNK_SIZE;
30
+ return PROTOCOL_V2_BLE_FILE_READ_CHUNK_SIZE;
31
31
  }
32
32
  return PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
33
33
  }
@@ -69,6 +69,19 @@ function toUint8Array(value: unknown): Uint8Array {
69
69
  return new Uint8Array(0);
70
70
  }
71
71
 
72
+ function getDeviceTransferProgress(bytesBeforeChunk: number, bytesAfterChunk: number, totalBytes: number) {
73
+ if (!Number.isFinite(totalBytes) || totalBytes <= 0) {
74
+ return 100;
75
+ }
76
+ if (bytesBeforeChunk <= 0 && bytesAfterChunk < totalBytes) {
77
+ return 0;
78
+ }
79
+ if (bytesAfterChunk >= totalBytes) {
80
+ return 100;
81
+ }
82
+ return Math.min(Math.max(Math.ceil((bytesAfterChunk / totalBytes) * 100), 1), 99);
83
+ }
84
+
72
85
  export default class FileRead extends BaseMethod<FileReadParams> {
73
86
  init() {
74
87
  // Protocol V2 (Pro2) 专属方法,core 调度层统一做非 V2 设备守卫
@@ -124,7 +137,7 @@ export default class FileRead extends BaseMethod<FileReadParams> {
124
137
  const offset = startOffset + read;
125
138
  const progress =
126
139
  this.params.uiPercentage ??
127
- Math.min(Math.ceil(((read + readLen) / Math.max(totalLength, 1)) * 100), 99);
140
+ getDeviceTransferProgress(read, read + readLen, totalLength);
128
141
  const res = await this.device.commands.typedCall('FilesystemFileRead', 'FilesystemFile', {
129
142
  file: {
130
143
  path: this.params.path,
@@ -84,6 +84,23 @@ function getConfirmedProgress(
84
84
  return 100;
85
85
  }
86
86
 
87
+ function getDeviceTransferProgress(
88
+ bytesBeforeChunk: number,
89
+ bytesAfterChunk: number,
90
+ totalBytes: number
91
+ ) {
92
+ if (!Number.isFinite(totalBytes) || totalBytes <= 0) {
93
+ return 100;
94
+ }
95
+ if (bytesBeforeChunk <= 0 && bytesAfterChunk < totalBytes) {
96
+ return 0;
97
+ }
98
+ if (bytesAfterChunk >= totalBytes) {
99
+ return 100;
100
+ }
101
+ return Math.min(Math.max(Math.ceil((bytesAfterChunk / totalBytes) * 100), 1), 99);
102
+ }
103
+
87
104
  export default class FileWrite extends BaseMethod<FileWriteParams> {
88
105
  init() {
89
106
  // Protocol V2 (Pro2) 专属方法,core 调度层统一做非 V2 设备守卫
@@ -108,6 +125,7 @@ export default class FileWrite extends BaseMethod<FileWriteParams> {
108
125
  }
109
126
 
110
127
  async run() {
128
+ this.throwIfAborted();
111
129
  const data = await dataToUint8Array(this.params.data);
112
130
  const dataLength = data.byteLength;
113
131
  const offsetValue = Number(this.params.offset ?? 0);
@@ -141,13 +159,14 @@ export default class FileWrite extends BaseMethod<FileWriteParams> {
141
159
  this.params.timeoutMs === undefined ? undefined : Number(this.params.timeoutMs);
142
160
 
143
161
  while (written < dataLength) {
162
+ this.throwIfAborted();
144
163
  const chunkEnd = Math.min(written + chunkSize, dataLength);
145
164
  const chunk = data.slice(written, chunkEnd);
146
165
  const offset = startOffset + written;
147
166
  const isFirstChunk = chunkIndex === 0;
148
167
  const progress =
149
168
  this.params.uiPercentage ??
150
- Math.min(Math.ceil(((written + chunk.byteLength) / dataLength) * 100), 99);
169
+ getDeviceTransferProgress(offset, offset + chunk.byteLength, totalSize);
151
170
 
152
171
  const res = await this.device.commands.typedCall(
153
172
  'FilesystemFileWrite',
@@ -168,6 +187,8 @@ export default class FileWrite extends BaseMethod<FileWriteParams> {
168
187
  }
169
188
  );
170
189
 
190
+ this.throwIfAborted();
191
+
171
192
  lastMessage = res.message;
172
193
  const processedByte = Number(res.message?.processed_byte);
173
194
  if (Number.isFinite(processedByte) && processedByte > offset) {