@trezor/connect 9.7.0-beta.1 → 9.7.0

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 (408) hide show
  1. package/CHANGELOG.md +49 -16
  2. package/README.md +1 -1
  3. package/lib/api/applyFlags.js +31 -26
  4. package/lib/api/applySettings.js +43 -40
  5. package/lib/api/authenticateDevice.js +82 -54
  6. package/lib/api/authorizeCoinjoin.js +35 -28
  7. package/lib/api/backupDevice.js +32 -27
  8. package/lib/api/bitcoin/TransactionComposer.js +131 -123
  9. package/lib/api/bitcoin/createPendingTx.js +55 -52
  10. package/lib/api/bitcoin/enhanceSignTx.js +57 -55
  11. package/lib/api/bitcoin/index.js +4 -1
  12. package/lib/api/bitcoin/inputs.js +71 -46
  13. package/lib/api/bitcoin/outputs.js +108 -85
  14. package/lib/api/bitcoin/refTx.d.ts +1 -1
  15. package/lib/api/bitcoin/refTx.js +233 -201
  16. package/lib/api/bitcoin/signtx.js +208 -152
  17. package/lib/api/bitcoin/signtxLegacy.js +169 -119
  18. package/lib/api/bitcoin/signtxVerify.js +80 -67
  19. package/lib/api/bitcoin/transactionBytes.js +61 -59
  20. package/lib/api/bleUnpair.js +28 -25
  21. package/lib/api/blockchainDisconnect.js +31 -24
  22. package/lib/api/blockchainEstimateFee.js +94 -61
  23. package/lib/api/blockchainEvmRpcCall.js +51 -34
  24. package/lib/api/blockchainGetAccountBalanceHistory.d.ts +1 -1
  25. package/lib/api/blockchainGetAccountBalanceHistory.js +50 -32
  26. package/lib/api/blockchainGetCurrentFiatRates.d.ts +1 -1
  27. package/lib/api/blockchainGetCurrentFiatRates.js +43 -29
  28. package/lib/api/blockchainGetFiatRatesForTimestamps.d.ts +1 -1
  29. package/lib/api/blockchainGetFiatRatesForTimestamps.js +49 -32
  30. package/lib/api/blockchainGetInfo.js +31 -22
  31. package/lib/api/blockchainGetTransactions.d.ts +1 -1
  32. package/lib/api/blockchainGetTransactions.js +36 -24
  33. package/lib/api/blockchainSetCustomBackend.js +34 -25
  34. package/lib/api/blockchainSubscribe.js +57 -36
  35. package/lib/api/blockchainSubscribeFiatRates.js +36 -24
  36. package/lib/api/blockchainUnsubscribe.js +57 -37
  37. package/lib/api/blockchainUnsubscribeFiatRates.js +31 -22
  38. package/lib/api/cancelCoinjoinAuthorization.js +26 -20
  39. package/lib/api/cardano/api/cardanoComposeTransaction.js +75 -50
  40. package/lib/api/cardano/api/cardanoGetAddress.js +105 -102
  41. package/lib/api/cardano/api/cardanoGetNativeScriptHash.js +59 -56
  42. package/lib/api/cardano/api/cardanoGetPublicKey.js +58 -58
  43. package/lib/api/cardano/api/cardanoSignMessage.js +81 -78
  44. package/lib/api/cardano/api/cardanoSignTransaction.js +269 -240
  45. package/lib/api/cardano/api/index.js +40 -7
  46. package/lib/api/cardano/cardanoAddressParameters.js +71 -65
  47. package/lib/api/cardano/cardanoAuxiliaryData.js +68 -63
  48. package/lib/api/cardano/cardanoCertificate.js +124 -119
  49. package/lib/api/cardano/cardanoInputs.js +33 -33
  50. package/lib/api/cardano/cardanoOutputs.d.ts +1 -1
  51. package/lib/api/cardano/cardanoOutputs.js +63 -61
  52. package/lib/api/cardano/cardanoTokenBundle.d.ts +2 -2
  53. package/lib/api/cardano/cardanoTokenBundle.js +18 -13
  54. package/lib/api/cardano/cardanoUtils.js +94 -89
  55. package/lib/api/cardano/cardanoWitnesses.js +46 -42
  56. package/lib/api/changeLanguage.js +40 -29
  57. package/lib/api/changePin.js +21 -16
  58. package/lib/api/changeWipeCode.js +24 -16
  59. package/lib/api/cipherKeyValue.js +42 -41
  60. package/lib/api/common/Discovery.js +114 -112
  61. package/lib/api/common/paramsValidator.js +110 -116
  62. package/lib/api/composeTransaction.d.ts +1 -1
  63. package/lib/api/composeTransaction.js +307 -256
  64. package/lib/api/discoverAccounts.js +291 -191
  65. package/lib/api/eos/api/eosGetPublicKey.js +56 -52
  66. package/lib/api/eos/api/eosSignTransaction.js +35 -26
  67. package/lib/api/eos/api/index.js +16 -3
  68. package/lib/api/eos/eosSignTx.js +308 -312
  69. package/lib/api/ethereum/api/ethereumGetAddress.js +106 -107
  70. package/lib/api/ethereum/api/ethereumGetPublicKey.js +72 -62
  71. package/lib/api/ethereum/api/ethereumSignMessage.js +55 -48
  72. package/lib/api/ethereum/api/ethereumSignTransaction.d.ts +33 -0
  73. package/lib/api/ethereum/api/ethereumSignTransaction.js +137 -132
  74. package/lib/api/ethereum/api/ethereumSignTypedData.d.ts +4 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -181
  76. package/lib/api/ethereum/api/ethereumVerifyMessage.js +27 -24
  77. package/lib/api/ethereum/api/index.js +40 -7
  78. package/lib/api/ethereum/ethereumDefinitions.js +94 -87
  79. package/lib/api/ethereum/ethereumSignTx.js +116 -111
  80. package/lib/api/ethereum/ethereumSignTypedData.js +98 -95
  81. package/lib/api/evoluGetDelegatedIdentityKey.js +30 -26
  82. package/lib/api/evoluGetNode.js +24 -19
  83. package/lib/api/evoluSignRegistrationRequest.js +26 -21
  84. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  85. package/lib/api/firmware/getBinary.js +30 -22
  86. package/lib/api/firmware/index.js +46 -8
  87. package/lib/api/firmware/modifyFirmware.js +13 -12
  88. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  89. package/lib/api/firmware/uploadFirmware.js +84 -67
  90. package/lib/api/firmware/verifyEntropy.js +88 -83
  91. package/lib/api/getAccountDescriptor.js +118 -120
  92. package/lib/api/getAccountInfo.d.ts +14 -14
  93. package/lib/api/getAccountInfo.js +316 -287
  94. package/lib/api/getAddress.js +128 -118
  95. package/lib/api/getCoinInfo.js +22 -17
  96. package/lib/api/getDeviceState.js +16 -10
  97. package/lib/api/getFeatures.d.ts +1 -1
  98. package/lib/api/getFeatures.js +15 -12
  99. package/lib/api/getFirmwareHash.js +23 -18
  100. package/lib/api/getNonce.js +12 -9
  101. package/lib/api/getOwnershipId.js +57 -51
  102. package/lib/api/getOwnershipProof.js +66 -60
  103. package/lib/api/getPublicKey.js +72 -66
  104. package/lib/api/getSettings.js +12 -9
  105. package/lib/api/index.js +346 -58
  106. package/lib/api/loadDevice.js +40 -35
  107. package/lib/api/monero/api/index.js +28 -5
  108. package/lib/api/monero/api/moneroGetAddress.js +108 -97
  109. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  110. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  111. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  112. package/lib/api/nem/api/index.js +16 -3
  113. package/lib/api/nem/api/nemGetAddress.js +107 -102
  114. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  115. package/lib/api/nem/nemSignTx.js +128 -125
  116. package/lib/api/pushTransaction.js +31 -27
  117. package/lib/api/recoveryDevice.js +44 -39
  118. package/lib/api/requestLogin.d.ts +0 -1
  119. package/lib/api/requestLogin.js +47 -52
  120. package/lib/api/resetDevice.js +100 -90
  121. package/lib/api/ripple/api/index.js +16 -3
  122. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  123. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  124. package/lib/api/setBrightness.js +21 -16
  125. package/lib/api/setBusy.js +27 -20
  126. package/lib/api/setProxy.js +22 -15
  127. package/lib/api/showDeviceTutorial.js +18 -15
  128. package/lib/api/signMessage.js +50 -46
  129. package/lib/api/signTransaction.js +325 -238
  130. package/lib/api/solana/additionalInfo.js +17 -14
  131. package/lib/api/solana/api/index.js +28 -5
  132. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  133. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  134. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  135. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  136. package/lib/api/solana/solanaDefinitions.js +32 -25
  137. package/lib/api/solana/solanaUtils.d.ts +2 -2
  138. package/lib/api/solana/solanaUtils.js +231 -177
  139. package/lib/api/stellar/api/index.js +16 -3
  140. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  141. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  142. package/lib/api/stellar/stellarSignTx.js +184 -179
  143. package/lib/api/tezos/api/index.js +22 -4
  144. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  145. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  146. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  147. package/lib/api/tezos/tezosSignTx.js +183 -169
  148. package/lib/api/thpGetCredentials.js +23 -20
  149. package/lib/api/thpRemoveCredentials.js +28 -21
  150. package/lib/api/unlockPath.js +28 -21
  151. package/lib/api/verifyMessage.js +35 -33
  152. package/lib/api/wipeDevice.js +39 -34
  153. package/lib/backend/BackendManager.js +127 -107
  154. package/lib/backend/Blockchain.d.ts +1 -1
  155. package/lib/backend/Blockchain.js +220 -205
  156. package/lib/backend/BlockchainLink.js +17 -5
  157. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  158. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  159. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  160. package/lib/backend/fees/index.js +28 -21
  161. package/lib/constants/cardano.js +11 -8
  162. package/lib/constants/errors.js +72 -65
  163. package/lib/constants/firmware.js +5 -5
  164. package/lib/constants/index.js +16 -3
  165. package/lib/constants/nem.js +19 -16
  166. package/lib/constants/network.js +15 -22
  167. package/lib/constants/utxo.js +4 -1
  168. package/lib/core/AbstractMethod.d.ts +1 -1
  169. package/lib/core/AbstractMethod.js +248 -224
  170. package/lib/core/index.js +936 -775
  171. package/lib/core/method.js +19 -16
  172. package/lib/core/method.native.js +28 -23
  173. package/lib/core/onCallFirmwareUpdate.js +368 -299
  174. package/lib/data/DataManager.js +85 -77
  175. package/lib/data/analyticsInfo.js +35 -29
  176. package/lib/data/coinInfo.js +154 -156
  177. package/lib/data/config.d.ts +1 -1
  178. package/lib/data/config.js +362 -330
  179. package/lib/data/connectSettings.js +131 -144
  180. package/lib/data/defaultFeeLevels.js +154 -108
  181. package/lib/data/firmwareInfo.d.ts +1 -0
  182. package/lib/data/firmwareInfo.js +407 -377
  183. package/lib/data/thpSettings.js +36 -35
  184. package/lib/data/udevInfo.js +24 -24
  185. package/lib/data/version.d.ts +1 -1
  186. package/lib/data/version.js +6 -5
  187. package/lib/device/Device.d.ts +6 -7
  188. package/lib/device/Device.js +731 -749
  189. package/lib/device/DeviceCommands.js +226 -194
  190. package/lib/device/DeviceCurrentSession.d.ts +333 -333
  191. package/lib/device/DeviceCurrentSession.js +235 -236
  192. package/lib/device/DeviceList.d.ts +2 -0
  193. package/lib/device/DeviceList.js +219 -181
  194. package/lib/device/StateStorage.js +32 -29
  195. package/lib/device/TransportList.d.ts +1 -1
  196. package/lib/device/TransportList.js +37 -36
  197. package/lib/device/TransportManager.js +136 -140
  198. package/lib/device/calculateRevisionForDevice.js +20 -14
  199. package/lib/device/checkFirmwareRevision.js +66 -54
  200. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  201. package/lib/device/thp/handshake.js +95 -82
  202. package/lib/device/thp/index.js +53 -38
  203. package/lib/device/thp/pairing.js +209 -199
  204. package/lib/device/thp/session.js +27 -19
  205. package/lib/device/thp/thpCall.js +53 -43
  206. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  207. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  208. package/lib/device/workflow/handshake.js +50 -41
  209. package/lib/device/workflow/index.js +10 -2
  210. package/lib/device/workflow/trezorPushNotification.js +68 -64
  211. package/lib/device/workflow/validateState.js +155 -129
  212. package/lib/events/blockchain.js +13 -10
  213. package/lib/events/call.d.ts +6 -4
  214. package/lib/events/call.js +14 -13
  215. package/lib/events/core.js +24 -21
  216. package/lib/events/device.d.ts +2 -2
  217. package/lib/events/device.js +32 -19
  218. package/lib/events/iframe.js +13 -10
  219. package/lib/events/index.d.ts +0 -1
  220. package/lib/events/index.js +6 -3
  221. package/lib/events/popup.js +20 -17
  222. package/lib/events/transport.d.ts +2 -2
  223. package/lib/events/transport.js +16 -11
  224. package/lib/events/ui-promise.js +4 -1
  225. package/lib/events/ui-request.d.ts +0 -4
  226. package/lib/events/ui-request.js +48 -46
  227. package/lib/events/ui-response.d.ts +2 -2
  228. package/lib/events/ui-response.js +20 -17
  229. package/lib/events/webextension.js +9 -6
  230. package/lib/exports.js +10 -2
  231. package/lib/factory.d.ts +3 -2
  232. package/lib/factory.js +34 -143
  233. package/lib/impl/core-in-module.d.ts +1 -6
  234. package/lib/impl/core-in-module.js +187 -191
  235. package/lib/impl/dynamic.d.ts +0 -1
  236. package/lib/impl/dynamic.js +108 -97
  237. package/lib/index-browser.d.ts +1 -0
  238. package/lib/index-browser.js +18 -16
  239. package/lib/index.d.ts +2 -0
  240. package/lib/index.js +144 -148
  241. package/lib/types/account.js +4 -1
  242. package/lib/types/api/applyFlags.js +4 -1
  243. package/lib/types/api/applySettings.d.ts +2 -2
  244. package/lib/types/api/applySettings.js +7 -7
  245. package/lib/types/api/authenticateDevice.js +7 -4
  246. package/lib/types/api/authorizeCoinjoin.js +13 -10
  247. package/lib/types/api/backupDevice.js +4 -1
  248. package/lib/types/api/bitcoin/index.d.ts +5 -2
  249. package/lib/types/api/bitcoin/index.js +14 -11
  250. package/lib/types/api/bleUnpair.js +4 -1
  251. package/lib/types/api/blockchainDisconnect.js +4 -1
  252. package/lib/types/api/blockchainEstimateFee.js +4 -1
  253. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  254. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  255. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  256. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  257. package/lib/types/api/blockchainGetInfo.js +4 -1
  258. package/lib/types/api/blockchainGetTransactions.js +4 -1
  259. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  260. package/lib/types/api/blockchainSubscribe.js +4 -1
  261. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  262. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  263. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  264. package/lib/types/api/cancel.js +4 -1
  265. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  266. package/lib/types/api/cardano/index.d.ts +4 -4
  267. package/lib/types/api/cardano/index.js +173 -180
  268. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  269. package/lib/types/api/cardanoGetAddress.js +4 -1
  270. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  271. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  272. package/lib/types/api/cardanoSignMessage.js +4 -1
  273. package/lib/types/api/cardanoSignTransaction.js +4 -1
  274. package/lib/types/api/changeLanguage.d.ts +1 -1
  275. package/lib/types/api/changeLanguage.js +13 -13
  276. package/lib/types/api/changePin.js +4 -1
  277. package/lib/types/api/changeWipeCode.js +4 -1
  278. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  279. package/lib/types/api/cipherKeyValue.js +11 -8
  280. package/lib/types/api/composeTransaction.js +4 -1
  281. package/lib/types/api/device.js +1 -2
  282. package/lib/types/api/disableWebUSB.js +4 -1
  283. package/lib/types/api/discoverAccounts.js +204 -55
  284. package/lib/types/api/dispose.js +4 -1
  285. package/lib/types/api/eos/index.d.ts +3 -3
  286. package/lib/types/api/eos/index.js +106 -162
  287. package/lib/types/api/eosGetPublicKey.js +4 -1
  288. package/lib/types/api/eosSignTransaction.js +4 -1
  289. package/lib/types/api/ethereum/index.d.ts +7 -7
  290. package/lib/types/api/ethereum/index.js +70 -67
  291. package/lib/types/api/ethereumGetAddress.js +4 -1
  292. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  293. package/lib/types/api/ethereumSignMessage.js +4 -1
  294. package/lib/types/api/ethereumSignTransaction.js +4 -1
  295. package/lib/types/api/ethereumSignTypedData.js +4 -1
  296. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  297. package/lib/types/api/evoluGetDelegatedIdentityKey.js +4 -1
  298. package/lib/types/api/evoluGetNode.js +4 -1
  299. package/lib/types/api/evoluSignRegistrationRequest.js +4 -1
  300. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  301. package/lib/types/api/firmwareUpdate.js +12 -12
  302. package/lib/types/api/getAccountDescriptor.js +8 -5
  303. package/lib/types/api/getAccountInfo.js +4 -1
  304. package/lib/types/api/getAddress.js +11 -11
  305. package/lib/types/api/getCoinInfo.js +4 -1
  306. package/lib/types/api/getDeviceState.js +4 -1
  307. package/lib/types/api/getFeatures.js +4 -1
  308. package/lib/types/api/getFirmwareHash.js +4 -1
  309. package/lib/types/api/getNonce.d.ts +1 -1
  310. package/lib/types/api/getNonce.js +4 -1
  311. package/lib/types/api/getOwnershipId.js +8 -5
  312. package/lib/types/api/getOwnershipProof.js +14 -9
  313. package/lib/types/api/getPublicKey.js +25 -28
  314. package/lib/types/api/getSettings.js +4 -1
  315. package/lib/types/api/index.js +4 -1
  316. package/lib/types/api/init.js +4 -1
  317. package/lib/types/api/loadDevice.js +4 -1
  318. package/lib/types/api/manifest.js +4 -1
  319. package/lib/types/api/monero/index.js +117 -114
  320. package/lib/types/api/moneroGetAddress.js +4 -1
  321. package/lib/types/api/moneroGetWatchKey.js +4 -1
  322. package/lib/types/api/moneroKeyImageSync.js +4 -1
  323. package/lib/types/api/moneroSignTransaction.js +4 -1
  324. package/lib/types/api/nem/index.d.ts +7 -7
  325. package/lib/types/api/nem/index.js +78 -112
  326. package/lib/types/api/nemGetAddress.js +7 -7
  327. package/lib/types/api/nemSignTransaction.js +4 -1
  328. package/lib/types/api/off.js +4 -1
  329. package/lib/types/api/on.js +4 -1
  330. package/lib/types/api/pushTransaction.js +10 -10
  331. package/lib/types/api/recoveryDevice.d.ts +1 -1
  332. package/lib/types/api/recoveryDevice.js +7 -7
  333. package/lib/types/api/removeAllListeners.js +4 -1
  334. package/lib/types/api/renderWebUSBButton.js +4 -1
  335. package/lib/types/api/requestLogin.d.ts +4 -24
  336. package/lib/types/api/requestLogin.js +11 -13
  337. package/lib/types/api/requestWebUSBDevice.js +4 -1
  338. package/lib/types/api/resetDevice.js +4 -1
  339. package/lib/types/api/ripple/index.js +17 -14
  340. package/lib/types/api/rippleGetAddress.js +4 -1
  341. package/lib/types/api/rippleSignTransaction.js +4 -1
  342. package/lib/types/api/setBrightness.js +4 -1
  343. package/lib/types/api/setBusy.js +4 -1
  344. package/lib/types/api/setProxy.js +4 -1
  345. package/lib/types/api/setTransports.js +4 -1
  346. package/lib/types/api/showDeviceTutorial.js +4 -1
  347. package/lib/types/api/signMessage.js +4 -1
  348. package/lib/types/api/signTransaction.js +4 -1
  349. package/lib/types/api/solana/index.js +55 -56
  350. package/lib/types/api/solanaComposeTransaction.js +4 -1
  351. package/lib/types/api/solanaGetAddress.js +4 -1
  352. package/lib/types/api/solanaGetPublicKey.js +4 -1
  353. package/lib/types/api/solanaSignTransaction.js +4 -1
  354. package/lib/types/api/stellar/index.d.ts +146 -146
  355. package/lib/types/api/stellar/index.js +151 -221
  356. package/lib/types/api/stellarGetAddress.js +4 -1
  357. package/lib/types/api/stellarSignTransaction.js +4 -1
  358. package/lib/types/api/tezos/index.js +46 -43
  359. package/lib/types/api/tezosGetAddress.js +4 -1
  360. package/lib/types/api/tezosGetPublicKey.js +4 -1
  361. package/lib/types/api/tezosSignTransaction.js +4 -1
  362. package/lib/types/api/thpGetCredentials.js +4 -1
  363. package/lib/types/api/thpRemoveCredentials.js +4 -1
  364. package/lib/types/api/uiResponse.js +4 -1
  365. package/lib/types/api/unlockPath.js +6 -3
  366. package/lib/types/api/verifyMessage.js +4 -1
  367. package/lib/types/api/wipeDevice.js +4 -1
  368. package/lib/types/coinInfo.js +62 -77
  369. package/lib/types/device.d.ts +7 -2
  370. package/lib/types/device.js +7 -4
  371. package/lib/types/fees.js +31 -37
  372. package/lib/types/firmware.js +4 -1
  373. package/lib/types/index.d.ts +1 -0
  374. package/lib/types/index.js +18 -3
  375. package/lib/types/params.js +25 -16
  376. package/lib/types/settings.js +4 -1
  377. package/lib/types/utils.js +4 -1
  378. package/lib/types/workflow.js +4 -1
  379. package/lib/utils/accountUtils.js +76 -81
  380. package/lib/utils/addressUtils.js +21 -21
  381. package/lib/utils/assetUtils.js +29 -26
  382. package/lib/utils/assets-browser.js +19 -13
  383. package/lib/utils/assets.js +10 -9
  384. package/lib/utils/assets.native.js +24 -23
  385. package/lib/utils/assetsTypes.js +4 -1
  386. package/lib/utils/debug.js +18 -13
  387. package/lib/utils/deviceFeaturesUtils.js +105 -127
  388. package/lib/utils/ethereumUtils.js +9 -6
  389. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  390. package/lib/utils/firmwareUtils.js +45 -57
  391. package/lib/utils/formatUtils.d.ts +0 -1
  392. package/lib/utils/formatUtils.js +63 -62
  393. package/lib/utils/hdnodeUtils.d.ts +0 -1
  394. package/lib/utils/hdnodeUtils.js +51 -57
  395. package/lib/utils/interactionTimeout.js +26 -23
  396. package/lib/utils/pathUtils.js +132 -148
  397. package/lib/utils/popupPromiseManager.js +23 -14
  398. package/lib/utils/proxy-event-emitter.js +63 -60
  399. package/lib/utils/uiPromiseManager.js +55 -43
  400. package/lib/utils/urlUtils.js +20 -26
  401. package/lib/utils/versionCheck.js +10 -10
  402. package/lib/workers/workers-browser.d.ts +5 -5
  403. package/lib/workers/workers-browser.js +5 -2
  404. package/lib/workers/workers.d.ts +1 -1
  405. package/lib/workers/workers.js +49 -38
  406. package/lib/workers/workers.native.d.ts +5 -5
  407. package/lib/workers/workers.native.js +4 -1
  408. package/package.json +23 -20
@@ -1,154 +1,150 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.TransportManager = void 0;
4
7
  const transport_1 = require("@trezor/transport");
5
8
  const utils_1 = require("@trezor/utils");
6
9
  const createOverrideLock = () => {
7
- let promise;
8
- let sequence = 0;
9
- let abort;
10
- let message;
11
- const override = async (abortMessage, action) => {
12
- message = abortMessage;
13
- const seq = ++sequence;
14
- while (promise) {
15
- abort?.abort(new Error(abortMessage));
16
- await promise.catch(() => { });
17
- }
18
- if (seq !== sequence)
19
- return Promise.reject(new Error(message));
20
- abort = new AbortController();
21
- promise = action(abort.signal).finally(() => {
22
- abort = undefined;
23
- promise = undefined;
24
- });
25
- return promise;
26
- };
27
- const getPending = () => promise;
28
- return { override, getPending };
10
+ let promise;
11
+ let sequence = 0;
12
+ let abort;
13
+ let message;
14
+ const override = async (abortMessage, action) => {
15
+ message = abortMessage;
16
+ const seq = ++sequence;
17
+ while (promise) {
18
+ abort?.abort(new Error(abortMessage));
19
+ await promise.catch(() => {});
20
+ }
21
+ if (seq !== sequence) return Promise.reject(new Error(message));
22
+ abort = new AbortController();
23
+ promise = action(abort.signal).finally(() => {
24
+ abort = undefined;
25
+ promise = undefined;
26
+ });
27
+ return promise;
28
+ };
29
+ const getPending = () => promise;
30
+ return {
31
+ override,
32
+ getPending
33
+ };
29
34
  };
30
35
  class TransportManager extends utils_1.TypedEmitter {
31
- lock = createOverrideLock();
32
- transports = [];
33
- activeTransport;
34
- transportReconnect = false;
35
- upgradeTimeout;
36
- startTransport;
37
- constructor(startTransport) {
38
- super();
39
- this.startTransport = startTransport;
40
- }
41
- pending() {
42
- return this.lock.getPending();
43
- }
44
- get() {
45
- return this.activeTransport;
46
- }
47
- init({ transports, transportReconnect = false, pendingTransportEvent = false }) {
48
- this.transports = transports;
49
- this.transportReconnect = transportReconnect;
50
- return this.lock.override('New init', signal => this.createInitPromise(pendingTransportEvent, signal));
51
- }
52
- dispose() {
53
- this.removeAllListeners();
54
- return this.lock.override('Disposing', () => {
55
- const { activeTransport } = this;
56
- if (activeTransport) {
57
- clearTimeout(this.upgradeTimeout);
58
- delete this.activeTransport;
59
- activeTransport.stop();
60
- }
61
- return Promise.resolve();
62
- });
63
- }
64
- async selectTransport([transport, ...rest], signal) {
65
- if (signal.aborted)
66
- throw new Error(signal.reason);
67
- if (transport === this.activeTransport)
68
- return transport;
69
- const result = await transport.init({ signal });
70
- if (result.success)
71
- return transport;
72
- else if (rest.length)
73
- return this.selectTransport(rest, signal);
74
- else
75
- throw new Error(result.error);
76
- }
77
- scheduleUpgradeCheck(pendingTransportEvent) {
36
+ lock = createOverrideLock();
37
+ transports = [];
38
+ activeTransport;
39
+ transportReconnect = false;
40
+ upgradeTimeout;
41
+ startTransport;
42
+ constructor(startTransport) {
43
+ super();
44
+ this.startTransport = startTransport;
45
+ }
46
+ pending() {
47
+ return this.lock.getPending();
48
+ }
49
+ get() {
50
+ return this.activeTransport;
51
+ }
52
+ init({
53
+ transports,
54
+ transportReconnect = false,
55
+ pendingTransportEvent = false
56
+ }) {
57
+ this.transports = transports;
58
+ this.transportReconnect = transportReconnect;
59
+ return this.lock.override('New init', signal => this.createInitPromise(pendingTransportEvent, signal));
60
+ }
61
+ dispose() {
62
+ this.removeAllListeners();
63
+ return this.lock.override('Disposing', () => {
64
+ const {
65
+ activeTransport
66
+ } = this;
67
+ if (activeTransport) {
78
68
  clearTimeout(this.upgradeTimeout);
79
- this.upgradeTimeout = setTimeout(async () => {
80
- if (!this.activeTransport || this.activeTransport === this.transports[0])
81
- return;
82
- for (const t of this.transports) {
83
- if (t === this.activeTransport)
84
- break;
85
- if (await t.ping()) {
86
- this.lock
87
- .override('Upgrading', signal => this.createInitPromise(pendingTransportEvent, signal))
88
- .catch(() => { });
89
- return;
90
- }
91
- }
92
- this.scheduleUpgradeCheck(pendingTransportEvent);
93
- }, 1000);
94
- }
95
- async createInitPromise(pendingTransportEvent, abortSignal) {
96
- try {
97
- const { transports, activeTransport } = this;
98
- const transport = transports.length
99
- ? await this.selectTransport(transports, abortSignal)
100
- : undefined;
101
- if (activeTransport !== transport) {
102
- if (activeTransport) {
103
- clearTimeout(this.upgradeTimeout);
104
- delete this.activeTransport;
105
- activeTransport.stop();
106
- }
107
- if (transport) {
108
- try {
109
- await this.startTransport(transport, pendingTransportEvent, abortSignal);
110
- }
111
- catch (err) {
112
- transport.stop();
113
- throw err;
114
- }
115
- transport.on(transport_1.TRANSPORT.ERROR, error => {
116
- this.emit(transport_1.TRANSPORT.ERROR, error);
117
- clearTimeout(this.upgradeTimeout);
118
- this.lock
119
- .override('Transport error', async (signal) => {
120
- delete this.activeTransport;
121
- transport.stop();
122
- if (this.transportReconnect) {
123
- await (0, utils_1.resolveAfter)(1000, signal);
124
- await this.createInitPromise(pendingTransportEvent, signal);
125
- }
126
- })
127
- .catch(() => { });
128
- });
129
- this.activeTransport = transport;
130
- this.emit(transport_1.TRANSPORT.START, transport);
131
- }
132
- else {
133
- this.emit(transport_1.TRANSPORT.ERROR, 'Transport disabled');
134
- }
135
- }
136
- if (transport && transport !== transports[0]) {
137
- this.scheduleUpgradeCheck(pendingTransportEvent);
138
- }
69
+ delete this.activeTransport;
70
+ activeTransport.stop();
71
+ }
72
+ return Promise.resolve();
73
+ });
74
+ }
75
+ async selectTransport([transport, ...rest], signal) {
76
+ if (signal.aborted) throw new Error(signal.reason);
77
+ if (transport === this.activeTransport) return transport;
78
+ const result = await transport.init({
79
+ signal
80
+ });
81
+ if (result.success) return transport;else if (rest.length) return this.selectTransport(rest, signal);else throw new Error(result.error);
82
+ }
83
+ scheduleUpgradeCheck(pendingTransportEvent) {
84
+ clearTimeout(this.upgradeTimeout);
85
+ this.upgradeTimeout = setTimeout(async () => {
86
+ if (!this.activeTransport || this.activeTransport === this.transports[0]) return;
87
+ for (const t of this.transports) {
88
+ if (t === this.activeTransport) break;
89
+ if (await t.ping()) {
90
+ this.lock.override('Upgrading', signal => this.createInitPromise(pendingTransportEvent, signal)).catch(() => {});
91
+ return;
92
+ }
93
+ }
94
+ this.scheduleUpgradeCheck(pendingTransportEvent);
95
+ }, 1000);
96
+ }
97
+ async createInitPromise(pendingTransportEvent, abortSignal) {
98
+ try {
99
+ const {
100
+ transports,
101
+ activeTransport
102
+ } = this;
103
+ const transport = transports.length ? await this.selectTransport(transports, abortSignal) : undefined;
104
+ if (activeTransport !== transport) {
105
+ if (activeTransport) {
106
+ clearTimeout(this.upgradeTimeout);
107
+ delete this.activeTransport;
108
+ activeTransport.stop();
139
109
  }
140
- catch (error) {
141
- this.emit(transport_1.TRANSPORT.ERROR, error?.message);
142
- if (this.transportReconnect && !abortSignal.aborted) {
143
- this.lock
144
- .override('Reconnecting', async (signal) => {
145
- await (0, utils_1.resolveAfter)(1000, signal);
146
- await this.createInitPromise(pendingTransportEvent, signal);
147
- })
148
- .catch(() => { });
149
- }
110
+ if (transport) {
111
+ try {
112
+ await this.startTransport(transport, pendingTransportEvent, abortSignal);
113
+ } catch (err) {
114
+ transport.stop();
115
+ throw err;
116
+ }
117
+ transport.on(transport_1.TRANSPORT.ERROR, error => {
118
+ this.emit(transport_1.TRANSPORT.ERROR, error);
119
+ clearTimeout(this.upgradeTimeout);
120
+ this.lock.override('Transport error', async signal => {
121
+ delete this.activeTransport;
122
+ transport.stop();
123
+ if (this.transportReconnect) {
124
+ await (0, utils_1.resolveAfter)(1000, signal);
125
+ await this.createInitPromise(pendingTransportEvent, signal);
126
+ }
127
+ }).catch(() => {});
128
+ });
129
+ this.activeTransport = transport;
130
+ this.emit(transport_1.TRANSPORT.START, transport);
131
+ } else {
132
+ this.emit(transport_1.TRANSPORT.ERROR, 'Transport disabled');
150
133
  }
134
+ }
135
+ if (transport && transport !== transports[0]) {
136
+ this.scheduleUpgradeCheck(pendingTransportEvent);
137
+ }
138
+ } catch (error) {
139
+ this.emit(transport_1.TRANSPORT.ERROR, error?.message);
140
+ if (this.transportReconnect && !abortSignal.aborted) {
141
+ this.lock.override('Reconnecting', async signal => {
142
+ await (0, utils_1.resolveAfter)(1000, signal);
143
+ await this.createInitPromise(pendingTransportEvent, signal);
144
+ }).catch(() => {});
145
+ }
151
146
  }
147
+ }
152
148
  }
153
149
  exports.TransportManager = TransportManager;
154
150
  //# sourceMappingURL=TransportManager.js.map
@@ -1,21 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.calculateRevisionForDevice = void 0;
4
7
  const versionUtils_1 = require("@trezor/utils/lib/versionUtils");
5
- const calculateRevisionForDevice = ({ commitRevision, version, }) => {
6
- if ((0, versionUtils_1.isNewer)(version, '2.4.0')) {
7
- return commitRevision;
8
- }
9
- if ((0, versionUtils_1.isNewer)(version, '2.2.0')) {
10
- return commitRevision.slice(0, 9);
11
- }
12
- if ((0, versionUtils_1.isNewer)(version, '2.1.8')) {
13
- return commitRevision;
14
- }
15
- if ((0, versionUtils_1.isNewer)(version, '2.0.0')) {
16
- return commitRevision.slice(0, 8);
17
- }
8
+ const calculateRevisionForDevice = ({
9
+ commitRevision,
10
+ version
11
+ }) => {
12
+ if ((0, versionUtils_1.isNewer)(version, '2.4.0')) {
18
13
  return commitRevision;
14
+ }
15
+ if ((0, versionUtils_1.isNewer)(version, '2.2.0')) {
16
+ return commitRevision.slice(0, 9);
17
+ }
18
+ if ((0, versionUtils_1.isNewer)(version, '2.1.8')) {
19
+ return commitRevision;
20
+ }
21
+ if ((0, versionUtils_1.isNewer)(version, '2.0.0')) {
22
+ return commitRevision.slice(0, 8);
23
+ }
24
+ return commitRevision;
19
25
  };
20
26
  exports.calculateRevisionForDevice = calculateRevisionForDevice;
21
27
  //# sourceMappingURL=calculateRevisionForDevice.js.map
@@ -1,71 +1,83 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.checkFirmwareRevision = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
8
  const calculateRevisionForDevice_1 = require("./calculateRevisionForDevice");
6
9
  const firmwareInfo_1 = require("../data/firmwareInfo");
7
10
  const assetUtils_1 = require("../utils/assetUtils");
8
- const isNotFoundError = (e) => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404;
9
- const isNodeJSOfflineError = (e) => ['FetchError', 'AbortError'].includes(e.name);
10
- const isReactNativeOfflineError = (e) => e.name === 'TypeError' && e.message.includes('Network request failed');
11
- const isAbortControllerTimeout = (e) => e.message.includes('Aborted') ||
12
- e.name === 'AbortError' ||
13
- (e.name === 'TimeoutError' && e.message.includes('signal timed out'));
14
- const isOfflineError = (e) => {
15
- if (!(e instanceof Error))
16
- return false;
17
- return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e);
11
+ const isNotFoundError = e => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404;
12
+ const isNodeJSOfflineError = e => ['FetchError', 'AbortError'].includes(e.name);
13
+ const isReactNativeOfflineError = e => e.name === 'TypeError' && e.message.includes('Network request failed');
14
+ const isAbortControllerTimeout = e => e.message.includes('Aborted') || e.name === 'AbortError' || e.name === 'TimeoutError' && e.message.includes('signal timed out');
15
+ const isOfflineError = e => {
16
+ if (!(e instanceof Error)) return false;
17
+ return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e);
18
18
  };
19
19
  const failFirmwareRevisionCheck = (error, errorPayload) => ({
20
- success: false,
21
- error,
22
- ...(errorPayload ? { errorPayload } : null),
20
+ success: false,
21
+ error,
22
+ ...(errorPayload ? {
23
+ errorPayload
24
+ } : null)
23
25
  });
24
- const doRevisionsMatch = ({ deviceRevision, expectedCommitRevision, firmwareVersion, }) => {
25
- if (deviceRevision === null) {
26
- return false;
27
- }
28
- const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({
29
- commitRevision: expectedCommitRevision,
30
- version: firmwareVersion,
31
- });
32
- return adjustedExpected === deviceRevision;
26
+ const doRevisionsMatch = ({
27
+ deviceRevision,
28
+ expectedCommitRevision,
29
+ firmwareVersion
30
+ }) => {
31
+ if (deviceRevision === null) {
32
+ return false;
33
+ }
34
+ const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({
35
+ commitRevision: expectedCommitRevision,
36
+ version: firmwareVersion
37
+ });
38
+ return adjustedExpected === deviceRevision;
33
39
  };
34
- const checkFirmwareRevision = async ({ firmwareVersion, internalModel, deviceRevision, expectedRevision, firmwareType, }) => {
35
- if (expectedRevision === undefined) {
36
- if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {
37
- return failFirmwareRevisionCheck('firmware-version-unknown');
38
- }
39
- try {
40
- const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType);
41
- if (onlineRelease?.firmware_revision === undefined) {
42
- return failFirmwareRevisionCheck('firmware-version-unknown');
43
- }
44
- if (!doRevisionsMatch({
45
- deviceRevision,
46
- expectedCommitRevision: onlineRelease.firmware_revision,
47
- firmwareVersion,
48
- })) {
49
- return failFirmwareRevisionCheck('revision-mismatch');
50
- }
51
- return { success: true };
52
- }
53
- catch (e) {
54
- if (isNotFoundError(e))
55
- return failFirmwareRevisionCheck('firmware-version-unknown');
56
- return isOfflineError(e)
57
- ? failFirmwareRevisionCheck('cannot-perform-check-offline')
58
- : failFirmwareRevisionCheck('other-error', (0, utils_1.serializeError)(e));
59
- }
40
+ const checkFirmwareRevision = async ({
41
+ firmwareVersion,
42
+ internalModel,
43
+ deviceRevision,
44
+ expectedRevision,
45
+ firmwareType
46
+ }) => {
47
+ if (expectedRevision === undefined) {
48
+ if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {
49
+ return failFirmwareRevisionCheck('firmware-version-unknown');
60
50
  }
61
- if (!doRevisionsMatch({
51
+ try {
52
+ const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType);
53
+ if (onlineRelease?.firmware_revision === undefined) {
54
+ return failFirmwareRevisionCheck('firmware-version-unknown');
55
+ }
56
+ if (!doRevisionsMatch({
62
57
  deviceRevision,
63
- expectedCommitRevision: expectedRevision,
64
- firmwareVersion,
65
- })) {
58
+ expectedCommitRevision: onlineRelease.firmware_revision,
59
+ firmwareVersion
60
+ })) {
66
61
  return failFirmwareRevisionCheck('revision-mismatch');
62
+ }
63
+ return {
64
+ success: true
65
+ };
66
+ } catch (e) {
67
+ if (isNotFoundError(e)) return failFirmwareRevisionCheck('firmware-version-unknown');
68
+ return isOfflineError(e) ? failFirmwareRevisionCheck('cannot-perform-check-offline') : failFirmwareRevisionCheck('other-error', (0, utils_1.serializeError)(e));
67
69
  }
68
- return { success: true };
70
+ }
71
+ if (!doRevisionsMatch({
72
+ deviceRevision,
73
+ expectedCommitRevision: expectedRevision,
74
+ firmwareVersion
75
+ })) {
76
+ return failFirmwareRevisionCheck('revision-mismatch');
77
+ }
78
+ return {
79
+ success: true
80
+ };
69
81
  };
70
82
  exports.checkFirmwareRevision = checkFirmwareRevision;
71
83
  //# sourceMappingURL=checkFirmwareRevision.js.map
@@ -1,23 +1,33 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.resolveDescriptorForTaproot = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
- const resolveDescriptorForTaproot = ({ response, publicKey, }) => {
6
- if (publicKey.descriptor !== null && publicKey.descriptor !== undefined) {
7
- const [xpub, checksum] = publicKey.descriptor.split('#');
8
- const correctedXpub = (0, utils_1.convertTaprootXpub)({ xpub, direction: 'h-to-apostrophe' });
9
- if (correctedXpub !== null) {
10
- return { xpub: correctedXpub, checksum };
11
- }
8
+ const resolveDescriptorForTaproot = ({
9
+ response,
10
+ publicKey
11
+ }) => {
12
+ if (publicKey.descriptor !== null && publicKey.descriptor !== undefined) {
13
+ const [xpub, checksum] = publicKey.descriptor.split('#');
14
+ const correctedXpub = (0, utils_1.convertTaprootXpub)({
15
+ xpub,
16
+ direction: 'h-to-apostrophe'
17
+ });
18
+ if (correctedXpub !== null) {
19
+ return {
20
+ xpub: correctedXpub,
21
+ checksum
22
+ };
12
23
  }
13
- const fingerprint = Number(publicKey.root_fingerprint || 0)
14
- .toString(16)
15
- .padStart(8, '0');
16
- const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`;
17
- return {
18
- xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`,
19
- checksum: undefined,
20
- };
24
+ }
25
+ const fingerprint = Number(publicKey.root_fingerprint || 0).toString(16).padStart(8, '0');
26
+ const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`;
27
+ return {
28
+ xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`,
29
+ checksum: undefined
30
+ };
21
31
  };
22
32
  exports.resolveDescriptorForTaproot = resolveDescriptorForTaproot;
23
33
  //# sourceMappingURL=resolveDescriptorForTaproot.js.map