@trezor/connect 9.6.5-beta.2 → 9.7.0-beta.2

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 (415) hide show
  1. package/CHANGELOG.md +43 -15
  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 +6 -4
  75. package/lib/api/ethereum/api/ethereumSignTypedData.js +183 -171
  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.d.ts +11 -0
  82. package/lib/api/evoluGetDelegatedIdentityKey.js +41 -0
  83. package/lib/api/evoluGetNode.js +24 -17
  84. package/lib/api/evoluSignRegistrationRequest.d.ts +12 -0
  85. package/lib/api/evoluSignRegistrationRequest.js +35 -0
  86. package/lib/api/firmware/calculateFirmwareHash.js +44 -32
  87. package/lib/api/firmware/getBinary.js +30 -22
  88. package/lib/api/firmware/index.js +46 -8
  89. package/lib/api/firmware/modifyFirmware.js +13 -12
  90. package/lib/api/firmware/parseFirmwareHeaders.js +29 -30
  91. package/lib/api/firmware/uploadFirmware.js +84 -67
  92. package/lib/api/firmware/verifyEntropy.js +88 -83
  93. package/lib/api/getAccountDescriptor.js +118 -120
  94. package/lib/api/getAccountInfo.d.ts +14 -14
  95. package/lib/api/getAccountInfo.js +316 -287
  96. package/lib/api/getAddress.js +128 -118
  97. package/lib/api/getCoinInfo.js +22 -17
  98. package/lib/api/getDeviceState.js +16 -10
  99. package/lib/api/getFeatures.d.ts +5 -1
  100. package/lib/api/getFeatures.js +15 -12
  101. package/lib/api/getFirmwareHash.js +23 -18
  102. package/lib/api/getNonce.js +12 -9
  103. package/lib/api/getOwnershipId.js +57 -51
  104. package/lib/api/getOwnershipProof.js +66 -60
  105. package/lib/api/getPublicKey.js +72 -66
  106. package/lib/api/getSettings.js +12 -9
  107. package/lib/api/index.d.ts +2 -0
  108. package/lib/api/index.js +350 -58
  109. package/lib/api/loadDevice.js +40 -35
  110. package/lib/api/monero/api/index.js +28 -5
  111. package/lib/api/monero/api/moneroGetAddress.js +108 -82
  112. package/lib/api/monero/api/moneroGetWatchKey.js +37 -32
  113. package/lib/api/monero/api/moneroKeyImageSync.js +111 -107
  114. package/lib/api/monero/api/moneroSignTransaction.js +173 -185
  115. package/lib/api/nem/api/index.js +16 -3
  116. package/lib/api/nem/api/nemGetAddress.js +107 -102
  117. package/lib/api/nem/api/nemSignTransaction.js +25 -20
  118. package/lib/api/nem/nemSignTx.js +128 -125
  119. package/lib/api/pushTransaction.js +31 -27
  120. package/lib/api/recoveryDevice.js +44 -39
  121. package/lib/api/requestLogin.d.ts +0 -1
  122. package/lib/api/requestLogin.js +47 -52
  123. package/lib/api/resetDevice.js +100 -90
  124. package/lib/api/ripple/api/index.js +16 -3
  125. package/lib/api/ripple/api/rippleGetAddress.js +92 -88
  126. package/lib/api/ripple/api/rippleSignTransaction.js +44 -34
  127. package/lib/api/setBrightness.js +21 -16
  128. package/lib/api/setBusy.js +27 -20
  129. package/lib/api/setProxy.js +22 -15
  130. package/lib/api/showDeviceTutorial.js +18 -15
  131. package/lib/api/signMessage.js +50 -46
  132. package/lib/api/signTransaction.js +325 -238
  133. package/lib/api/solana/additionalInfo.js +17 -14
  134. package/lib/api/solana/api/index.js +28 -5
  135. package/lib/api/solana/api/solanaComposeTransaction.js +46 -50
  136. package/lib/api/solana/api/solanaGetAddress.js +92 -90
  137. package/lib/api/solana/api/solanaGetPublicKey.js +56 -52
  138. package/lib/api/solana/api/solanaSignTransaction.js +175 -168
  139. package/lib/api/solana/solanaDefinitions.js +32 -25
  140. package/lib/api/solana/solanaUtils.d.ts +2 -2
  141. package/lib/api/solana/solanaUtils.js +231 -177
  142. package/lib/api/stellar/api/index.js +16 -3
  143. package/lib/api/stellar/api/stellarGetAddress.js +92 -88
  144. package/lib/api/stellar/api/stellarSignTransaction.js +51 -44
  145. package/lib/api/stellar/stellarSignTx.js +184 -179
  146. package/lib/api/tezos/api/index.js +22 -4
  147. package/lib/api/tezos/api/tezosGetAddress.js +92 -88
  148. package/lib/api/tezos/api/tezosGetPublicKey.js +55 -51
  149. package/lib/api/tezos/api/tezosSignTransaction.js +23 -18
  150. package/lib/api/tezos/tezosSignTx.js +183 -169
  151. package/lib/api/thpGetCredentials.js +23 -20
  152. package/lib/api/thpRemoveCredentials.js +28 -21
  153. package/lib/api/unlockPath.js +28 -21
  154. package/lib/api/verifyMessage.js +35 -33
  155. package/lib/api/wipeDevice.js +39 -34
  156. package/lib/backend/BackendManager.js +127 -107
  157. package/lib/backend/Blockchain.d.ts +1 -1
  158. package/lib/backend/Blockchain.js +220 -205
  159. package/lib/backend/BlockchainLink.js +17 -5
  160. package/lib/backend/fees/BitcoinFeeLevels.js +41 -34
  161. package/lib/backend/fees/EthereumFeeLevels.js +51 -51
  162. package/lib/backend/fees/MiscFeeLevels.js +25 -24
  163. package/lib/backend/fees/index.js +28 -21
  164. package/lib/constants/cardano.js +11 -8
  165. package/lib/constants/errors.js +72 -65
  166. package/lib/constants/firmware.js +5 -5
  167. package/lib/constants/index.js +16 -3
  168. package/lib/constants/nem.js +19 -16
  169. package/lib/constants/network.js +15 -22
  170. package/lib/constants/utxo.js +4 -1
  171. package/lib/core/AbstractMethod.d.ts +1 -1
  172. package/lib/core/AbstractMethod.js +248 -224
  173. package/lib/core/index.js +936 -775
  174. package/lib/core/method.js +19 -16
  175. package/lib/core/method.native.js +28 -23
  176. package/lib/core/onCallFirmwareUpdate.js +368 -299
  177. package/lib/data/DataManager.js +85 -77
  178. package/lib/data/analyticsInfo.js +35 -29
  179. package/lib/data/coinInfo.js +154 -156
  180. package/lib/data/config.d.ts +1 -1
  181. package/lib/data/config.js +362 -326
  182. package/lib/data/connectSettings.js +131 -144
  183. package/lib/data/defaultFeeLevels.js +154 -108
  184. package/lib/data/firmwareInfo.d.ts +1 -0
  185. package/lib/data/firmwareInfo.js +407 -377
  186. package/lib/data/thpSettings.js +36 -35
  187. package/lib/data/udevInfo.js +24 -24
  188. package/lib/data/version.d.ts +1 -1
  189. package/lib/data/version.js +6 -5
  190. package/lib/device/Device.d.ts +10 -7
  191. package/lib/device/Device.js +731 -749
  192. package/lib/device/DeviceCommands.js +226 -194
  193. package/lib/device/DeviceCurrentSession.d.ts +427 -337
  194. package/lib/device/DeviceCurrentSession.js +235 -236
  195. package/lib/device/DeviceList.d.ts +2 -0
  196. package/lib/device/DeviceList.js +219 -181
  197. package/lib/device/StateStorage.js +32 -29
  198. package/lib/device/TransportList.d.ts +1 -1
  199. package/lib/device/TransportList.js +37 -36
  200. package/lib/device/TransportManager.js +136 -140
  201. package/lib/device/calculateRevisionForDevice.js +20 -14
  202. package/lib/device/checkFirmwareRevision.js +66 -53
  203. package/lib/device/resolveDescriptorForTaproot.js +26 -16
  204. package/lib/device/thp/handshake.js +95 -82
  205. package/lib/device/thp/index.js +53 -38
  206. package/lib/device/thp/pairing.js +209 -199
  207. package/lib/device/thp/session.js +27 -19
  208. package/lib/device/thp/thpCall.js +53 -43
  209. package/lib/device/workflow/checkFirmwareHash.js +77 -67
  210. package/lib/device/workflow/checkFirmwareHashWithRetries.js +32 -29
  211. package/lib/device/workflow/handshake.js +50 -41
  212. package/lib/device/workflow/index.js +10 -2
  213. package/lib/device/workflow/trezorPushNotification.js +68 -63
  214. package/lib/device/workflow/validateState.js +156 -123
  215. package/lib/events/blockchain.js +13 -10
  216. package/lib/events/call.d.ts +6 -4
  217. package/lib/events/call.js +14 -13
  218. package/lib/events/core.js +24 -21
  219. package/lib/events/device.d.ts +2 -2
  220. package/lib/events/device.js +32 -19
  221. package/lib/events/iframe.js +13 -10
  222. package/lib/events/index.d.ts +0 -1
  223. package/lib/events/index.js +6 -3
  224. package/lib/events/popup.js +20 -17
  225. package/lib/events/transport.d.ts +2 -2
  226. package/lib/events/transport.js +16 -11
  227. package/lib/events/ui-promise.js +4 -1
  228. package/lib/events/ui-request.d.ts +0 -4
  229. package/lib/events/ui-request.js +48 -46
  230. package/lib/events/ui-response.d.ts +2 -2
  231. package/lib/events/ui-response.js +20 -17
  232. package/lib/events/webextension.js +9 -6
  233. package/lib/exports.js +10 -2
  234. package/lib/factory.d.ts +3 -2
  235. package/lib/factory.js +34 -141
  236. package/lib/impl/core-in-module.d.ts +1 -8
  237. package/lib/impl/core-in-module.js +186 -211
  238. package/lib/impl/dynamic.d.ts +0 -1
  239. package/lib/impl/dynamic.js +108 -97
  240. package/lib/index-browser.d.ts +1 -0
  241. package/lib/index-browser.js +18 -16
  242. package/lib/index.d.ts +2 -0
  243. package/lib/index.js +144 -148
  244. package/lib/tsconfig.lib.tsbuildinfo +1 -1
  245. package/lib/types/account.js +4 -1
  246. package/lib/types/api/applyFlags.js +4 -1
  247. package/lib/types/api/applySettings.d.ts +3 -3
  248. package/lib/types/api/applySettings.js +7 -7
  249. package/lib/types/api/authenticateDevice.js +7 -4
  250. package/lib/types/api/authorizeCoinjoin.js +13 -10
  251. package/lib/types/api/backupDevice.js +4 -1
  252. package/lib/types/api/bitcoin/index.d.ts +5 -2
  253. package/lib/types/api/bitcoin/index.js +14 -11
  254. package/lib/types/api/bleUnpair.js +4 -1
  255. package/lib/types/api/blockchainDisconnect.js +4 -1
  256. package/lib/types/api/blockchainEstimateFee.js +4 -1
  257. package/lib/types/api/blockchainEvmRpcCall.js +4 -1
  258. package/lib/types/api/blockchainGetAccountBalanceHistory.js +4 -1
  259. package/lib/types/api/blockchainGetCurrentFiatRates.js +4 -1
  260. package/lib/types/api/blockchainGetFiatRatesForTimestamps.js +4 -1
  261. package/lib/types/api/blockchainGetInfo.js +4 -1
  262. package/lib/types/api/blockchainGetTransactions.js +4 -1
  263. package/lib/types/api/blockchainSetCustomBackend.js +4 -1
  264. package/lib/types/api/blockchainSubscribe.js +4 -1
  265. package/lib/types/api/blockchainSubscribeFiatRates.js +4 -1
  266. package/lib/types/api/blockchainUnsubscribe.js +4 -1
  267. package/lib/types/api/blockchainUnsubscribeFiatRates.js +4 -1
  268. package/lib/types/api/cancel.js +4 -1
  269. package/lib/types/api/cancelCoinjoinAuthorization.js +5 -2
  270. package/lib/types/api/cardano/index.d.ts +4 -4
  271. package/lib/types/api/cardano/index.js +173 -180
  272. package/lib/types/api/cardanoComposeTransaction.js +76 -65
  273. package/lib/types/api/cardanoGetAddress.js +4 -1
  274. package/lib/types/api/cardanoGetNativeScriptHash.js +4 -1
  275. package/lib/types/api/cardanoGetPublicKey.js +4 -1
  276. package/lib/types/api/cardanoSignMessage.js +4 -1
  277. package/lib/types/api/cardanoSignTransaction.js +4 -1
  278. package/lib/types/api/changeLanguage.d.ts +1 -1
  279. package/lib/types/api/changeLanguage.js +13 -13
  280. package/lib/types/api/changePin.js +4 -1
  281. package/lib/types/api/changeWipeCode.js +4 -1
  282. package/lib/types/api/cipherKeyValue.d.ts +2 -2
  283. package/lib/types/api/cipherKeyValue.js +11 -8
  284. package/lib/types/api/composeTransaction.js +4 -1
  285. package/lib/types/api/device.js +1 -2
  286. package/lib/types/api/disableWebUSB.js +4 -1
  287. package/lib/types/api/discoverAccounts.js +204 -55
  288. package/lib/types/api/dispose.js +4 -1
  289. package/lib/types/api/eos/index.d.ts +3 -3
  290. package/lib/types/api/eos/index.js +106 -162
  291. package/lib/types/api/eosGetPublicKey.js +4 -1
  292. package/lib/types/api/eosSignTransaction.js +4 -1
  293. package/lib/types/api/ethereum/index.d.ts +11 -7
  294. package/lib/types/api/ethereum/index.js +70 -65
  295. package/lib/types/api/ethereumGetAddress.js +4 -1
  296. package/lib/types/api/ethereumGetPublicKey.js +4 -1
  297. package/lib/types/api/ethereumSignMessage.js +4 -1
  298. package/lib/types/api/ethereumSignTransaction.js +4 -1
  299. package/lib/types/api/ethereumSignTypedData.js +4 -1
  300. package/lib/types/api/ethereumVerifyMessage.js +4 -1
  301. package/lib/types/api/evoluGetDelegatedIdentityKey.d.ts +9 -0
  302. package/lib/types/api/evoluGetDelegatedIdentityKey.js +6 -0
  303. package/lib/types/api/evoluGetNode.js +4 -1
  304. package/lib/types/api/evoluSignRegistrationRequest.d.ts +4 -0
  305. package/lib/types/api/evoluSignRegistrationRequest.js +6 -0
  306. package/lib/types/api/firmwareUpdate.d.ts +1 -1
  307. package/lib/types/api/firmwareUpdate.js +12 -12
  308. package/lib/types/api/getAccountDescriptor.js +8 -5
  309. package/lib/types/api/getAccountInfo.js +4 -1
  310. package/lib/types/api/getAddress.js +11 -11
  311. package/lib/types/api/getCoinInfo.js +4 -1
  312. package/lib/types/api/getDeviceState.js +4 -1
  313. package/lib/types/api/getFeatures.js +4 -1
  314. package/lib/types/api/getFirmwareHash.js +4 -1
  315. package/lib/types/api/getNonce.d.ts +1 -1
  316. package/lib/types/api/getNonce.js +4 -1
  317. package/lib/types/api/getOwnershipId.js +8 -5
  318. package/lib/types/api/getOwnershipProof.js +14 -9
  319. package/lib/types/api/getPublicKey.js +25 -28
  320. package/lib/types/api/getSettings.js +4 -1
  321. package/lib/types/api/index.d.ts +4 -0
  322. package/lib/types/api/index.js +4 -1
  323. package/lib/types/api/init.js +4 -1
  324. package/lib/types/api/loadDevice.js +4 -1
  325. package/lib/types/api/manifest.js +4 -1
  326. package/lib/types/api/monero/index.js +117 -114
  327. package/lib/types/api/moneroGetAddress.js +4 -1
  328. package/lib/types/api/moneroGetWatchKey.js +4 -1
  329. package/lib/types/api/moneroKeyImageSync.js +4 -1
  330. package/lib/types/api/moneroSignTransaction.js +4 -1
  331. package/lib/types/api/nem/index.d.ts +7 -7
  332. package/lib/types/api/nem/index.js +78 -112
  333. package/lib/types/api/nemGetAddress.js +7 -7
  334. package/lib/types/api/nemSignTransaction.js +4 -1
  335. package/lib/types/api/off.js +4 -1
  336. package/lib/types/api/on.js +4 -1
  337. package/lib/types/api/pushTransaction.js +10 -10
  338. package/lib/types/api/recoveryDevice.d.ts +1 -1
  339. package/lib/types/api/recoveryDevice.js +7 -7
  340. package/lib/types/api/removeAllListeners.js +4 -1
  341. package/lib/types/api/renderWebUSBButton.js +4 -1
  342. package/lib/types/api/requestLogin.d.ts +4 -24
  343. package/lib/types/api/requestLogin.js +11 -13
  344. package/lib/types/api/requestWebUSBDevice.js +4 -1
  345. package/lib/types/api/resetDevice.js +4 -1
  346. package/lib/types/api/ripple/index.js +17 -14
  347. package/lib/types/api/rippleGetAddress.js +4 -1
  348. package/lib/types/api/rippleSignTransaction.js +4 -1
  349. package/lib/types/api/setBrightness.js +4 -1
  350. package/lib/types/api/setBusy.js +4 -1
  351. package/lib/types/api/setProxy.js +4 -1
  352. package/lib/types/api/setTransports.js +4 -1
  353. package/lib/types/api/showDeviceTutorial.js +4 -1
  354. package/lib/types/api/signMessage.js +4 -1
  355. package/lib/types/api/signTransaction.js +4 -1
  356. package/lib/types/api/solana/index.js +55 -56
  357. package/lib/types/api/solanaComposeTransaction.js +4 -1
  358. package/lib/types/api/solanaGetAddress.js +4 -1
  359. package/lib/types/api/solanaGetPublicKey.js +4 -1
  360. package/lib/types/api/solanaSignTransaction.js +4 -1
  361. package/lib/types/api/stellar/index.d.ts +146 -146
  362. package/lib/types/api/stellar/index.js +151 -221
  363. package/lib/types/api/stellarGetAddress.js +4 -1
  364. package/lib/types/api/stellarSignTransaction.js +4 -1
  365. package/lib/types/api/tezos/index.js +46 -43
  366. package/lib/types/api/tezosGetAddress.js +4 -1
  367. package/lib/types/api/tezosGetPublicKey.js +4 -1
  368. package/lib/types/api/tezosSignTransaction.js +4 -1
  369. package/lib/types/api/thpGetCredentials.js +4 -1
  370. package/lib/types/api/thpRemoveCredentials.js +4 -1
  371. package/lib/types/api/uiResponse.js +4 -1
  372. package/lib/types/api/unlockPath.js +6 -3
  373. package/lib/types/api/verifyMessage.js +4 -1
  374. package/lib/types/api/wipeDevice.js +4 -1
  375. package/lib/types/coinInfo.js +62 -77
  376. package/lib/types/device.d.ts +11 -2
  377. package/lib/types/device.js +9 -4
  378. package/lib/types/fees.js +31 -37
  379. package/lib/types/firmware.js +4 -1
  380. package/lib/types/index.d.ts +1 -0
  381. package/lib/types/index.js +18 -3
  382. package/lib/types/params.js +25 -16
  383. package/lib/types/settings.js +4 -1
  384. package/lib/types/utils.js +4 -1
  385. package/lib/types/workflow.js +4 -1
  386. package/lib/utils/accountUtils.js +76 -81
  387. package/lib/utils/addressUtils.js +21 -21
  388. package/lib/utils/assetUtils.js +29 -26
  389. package/lib/utils/assets-browser.js +19 -13
  390. package/lib/utils/assets.js +10 -9
  391. package/lib/utils/assets.native.js +24 -23
  392. package/lib/utils/assetsTypes.js +4 -1
  393. package/lib/utils/debug.js +18 -13
  394. package/lib/utils/deviceFeaturesUtils.js +105 -127
  395. package/lib/utils/ethereumUtils.js +9 -6
  396. package/lib/utils/firmwareReleaseConfigUtils.js +69 -57
  397. package/lib/utils/firmwareUtils.js +45 -57
  398. package/lib/utils/formatUtils.d.ts +0 -1
  399. package/lib/utils/formatUtils.js +63 -62
  400. package/lib/utils/hdnodeUtils.d.ts +0 -1
  401. package/lib/utils/hdnodeUtils.js +51 -57
  402. package/lib/utils/interactionTimeout.js +26 -23
  403. package/lib/utils/pathUtils.js +132 -148
  404. package/lib/utils/popupPromiseManager.js +23 -14
  405. package/lib/utils/proxy-event-emitter.js +63 -60
  406. package/lib/utils/uiPromiseManager.js +55 -43
  407. package/lib/utils/urlUtils.js +20 -26
  408. package/lib/utils/versionCheck.js +10 -10
  409. package/lib/workers/workers-browser.d.ts +5 -5
  410. package/lib/workers/workers-browser.js +5 -2
  411. package/lib/workers/workers.d.ts +1 -1
  412. package/lib/workers/workers.js +49 -38
  413. package/lib/workers/workers.native.d.ts +5 -5
  414. package/lib/workers/workers.native.js +4 -1
  415. package/package.json +26 -23
@@ -1,188 +1,172 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getLabel = exports.fixPath = exports.getIndexFromPath = exports.getPathFromIndex = exports.getSerializedPath = exports.validatePath = exports.getOutputScriptType = exports.getScriptType = exports.getAccountType = exports.isTaprootPath = exports.isBech32Path = exports.isSegwitPath = exports.getHDPath = exports.getSlip44ByPath = exports.fromHardened = exports.toHardened = exports.HD_HARDENED = void 0;
4
7
  const constants_1 = require("../constants");
5
8
  exports.HD_HARDENED = 0x80000000;
6
- const toHardened = (n) => (n | exports.HD_HARDENED) >>> 0;
9
+ const toHardened = n => (n | exports.HD_HARDENED) >>> 0;
7
10
  exports.toHardened = toHardened;
8
- const fromHardened = (n) => (n & ~exports.HD_HARDENED) >>> 0;
11
+ const fromHardened = n => (n & ~exports.HD_HARDENED) >>> 0;
9
12
  exports.fromHardened = fromHardened;
10
- const getSlip44ByPath = (path) => (0, exports.fromHardened)(path[1]);
13
+ const getSlip44ByPath = path => (0, exports.fromHardened)(path[1]);
11
14
  exports.getSlip44ByPath = getSlip44ByPath;
12
15
  const PATH_NOT_VALID = constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Not a valid path');
13
16
  const PATH_NEGATIVE_VALUES = constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Path cannot contain negative values');
14
- const getHDPath = (path) => {
15
- const parts = path.toLowerCase().split('/');
16
- if (parts[0] !== 'm')
17
- throw PATH_NOT_VALID;
18
- return parts
19
- .filter(p => p !== 'm' && p !== '')
20
- .map(p => {
21
- let hardened = false;
22
- if (p.endsWith("'")) {
23
- hardened = true;
24
- p = p.substring(0, p.length - 1);
25
- }
26
- let n = parseInt(p, 10);
27
- if (Number.isNaN(n)) {
28
- throw PATH_NOT_VALID;
29
- }
30
- else if (n < 0) {
31
- throw PATH_NEGATIVE_VALUES;
32
- }
33
- if (hardened) {
34
- n = (0, exports.toHardened)(n);
35
- }
36
- return n;
37
- });
17
+ const getHDPath = path => {
18
+ const parts = path.toLowerCase().split('/');
19
+ if (parts[0] !== 'm') throw PATH_NOT_VALID;
20
+ return parts.filter(p => p !== 'm' && p !== '').map(p => {
21
+ let hardened = false;
22
+ if (p.endsWith("'")) {
23
+ hardened = true;
24
+ p = p.substring(0, p.length - 1);
25
+ }
26
+ let n = parseInt(p, 10);
27
+ if (Number.isNaN(n)) {
28
+ throw PATH_NOT_VALID;
29
+ } else if (n < 0) {
30
+ throw PATH_NEGATIVE_VALUES;
31
+ }
32
+ if (hardened) {
33
+ n = (0, exports.toHardened)(n);
34
+ }
35
+ return n;
36
+ });
38
37
  };
39
38
  exports.getHDPath = getHDPath;
40
- const isSegwitPath = (path) => Array.isArray(path) && path[0] === (0, exports.toHardened)(49);
39
+ const isSegwitPath = path => Array.isArray(path) && path[0] === (0, exports.toHardened)(49);
41
40
  exports.isSegwitPath = isSegwitPath;
42
- const isBech32Path = (path) => Array.isArray(path) && path[0] === (0, exports.toHardened)(84);
41
+ const isBech32Path = path => Array.isArray(path) && path[0] === (0, exports.toHardened)(84);
43
42
  exports.isBech32Path = isBech32Path;
44
- const isTaprootPath = (path) => Array.isArray(path) && (path[0] === (0, exports.toHardened)(86) || path[0] === (0, exports.toHardened)(10025));
43
+ const isTaprootPath = path => Array.isArray(path) && (path[0] === (0, exports.toHardened)(86) || path[0] === (0, exports.toHardened)(10025));
45
44
  exports.isTaprootPath = isTaprootPath;
46
- const getAccountType = (path) => {
47
- if ((0, exports.isTaprootPath)(path))
48
- return 'p2tr';
49
- if ((0, exports.isBech32Path)(path))
50
- return 'p2wpkh';
51
- if ((0, exports.isSegwitPath)(path))
52
- return 'p2sh';
53
- return 'p2pkh';
45
+ const getAccountType = path => {
46
+ if ((0, exports.isTaprootPath)(path)) return 'p2tr';
47
+ if ((0, exports.isBech32Path)(path)) return 'p2wpkh';
48
+ if ((0, exports.isSegwitPath)(path)) return 'p2sh';
49
+ return 'p2pkh';
54
50
  };
55
51
  exports.getAccountType = getAccountType;
56
- const getScriptType = (path) => {
57
- if (!Array.isArray(path) || path.length < 1)
58
- return undefined;
59
- const p1 = (0, exports.fromHardened)(path[0]);
60
- switch (p1) {
61
- case 44:
62
- return 'SPENDADDRESS';
63
- case 48: {
64
- if (path.length < 4)
65
- return undefined;
66
- const p3 = (0, exports.fromHardened)(path[3]);
67
- switch (p3) {
68
- case 0:
69
- return 'SPENDMULTISIG';
70
- case 1:
71
- return 'SPENDP2SHWITNESS';
72
- case 2:
73
- return 'SPENDWITNESS';
74
- default:
75
- return undefined;
76
- }
77
- }
78
- case 49:
52
+ const getScriptType = path => {
53
+ if (!Array.isArray(path) || path.length < 1) return undefined;
54
+ const p1 = (0, exports.fromHardened)(path[0]);
55
+ switch (p1) {
56
+ case 44:
57
+ return 'SPENDADDRESS';
58
+ case 48:
59
+ {
60
+ if (path.length < 4) return undefined;
61
+ const p3 = (0, exports.fromHardened)(path[3]);
62
+ switch (p3) {
63
+ case 0:
64
+ return 'SPENDMULTISIG';
65
+ case 1:
79
66
  return 'SPENDP2SHWITNESS';
80
- case 84:
67
+ case 2:
81
68
  return 'SPENDWITNESS';
82
- case 86:
83
- case 10025:
84
- return 'SPENDTAPROOT';
85
- default:
69
+ default:
86
70
  return undefined;
87
- }
71
+ }
72
+ }
73
+ case 49:
74
+ return 'SPENDP2SHWITNESS';
75
+ case 84:
76
+ return 'SPENDWITNESS';
77
+ case 86:
78
+ case 10025:
79
+ return 'SPENDTAPROOT';
80
+ default:
81
+ return undefined;
82
+ }
88
83
  };
89
84
  exports.getScriptType = getScriptType;
90
- const getOutputScriptType = (path) => {
91
- if (!Array.isArray(path) || path.length < 1)
92
- return undefined;
93
- const p = (0, exports.fromHardened)(path[0]);
94
- switch (p) {
95
- case 44:
96
- return 'PAYTOADDRESS';
97
- case 48: {
98
- if (path.length < 4)
99
- return undefined;
100
- const p3 = (0, exports.fromHardened)(path[3]);
101
- switch (p3) {
102
- case 0:
103
- return 'PAYTOMULTISIG';
104
- case 1:
105
- return 'PAYTOP2SHWITNESS';
106
- case 2:
107
- return 'PAYTOWITNESS';
108
- default:
109
- return undefined;
110
- }
111
- }
112
- case 49:
85
+ const getOutputScriptType = path => {
86
+ if (!Array.isArray(path) || path.length < 1) return undefined;
87
+ const p = (0, exports.fromHardened)(path[0]);
88
+ switch (p) {
89
+ case 44:
90
+ return 'PAYTOADDRESS';
91
+ case 48:
92
+ {
93
+ if (path.length < 4) return undefined;
94
+ const p3 = (0, exports.fromHardened)(path[3]);
95
+ switch (p3) {
96
+ case 0:
97
+ return 'PAYTOMULTISIG';
98
+ case 1:
113
99
  return 'PAYTOP2SHWITNESS';
114
- case 84:
100
+ case 2:
115
101
  return 'PAYTOWITNESS';
116
- case 86:
117
- case 10025:
118
- return 'PAYTOTAPROOT';
119
- default:
102
+ default:
120
103
  return undefined;
121
- }
104
+ }
105
+ }
106
+ case 49:
107
+ return 'PAYTOP2SHWITNESS';
108
+ case 84:
109
+ return 'PAYTOWITNESS';
110
+ case 86:
111
+ case 10025:
112
+ return 'PAYTOTAPROOT';
113
+ default:
114
+ return undefined;
115
+ }
122
116
  };
123
117
  exports.getOutputScriptType = getOutputScriptType;
124
118
  const validatePath = (path, length = 0, base = false) => {
125
- let valid;
126
- if (typeof path === 'string') {
127
- valid = (0, exports.getHDPath)(path);
128
- }
129
- else if (Array.isArray(path)) {
130
- valid = path.map((p) => {
131
- const n = parseInt(p, 10);
132
- if (Number.isNaN(n)) {
133
- throw PATH_NOT_VALID;
134
- }
135
- else if (n < 0) {
136
- throw PATH_NEGATIVE_VALUES;
137
- }
138
- return n;
139
- });
140
- }
141
- if (!valid)
142
- throw PATH_NOT_VALID;
143
- if (length > 0 && valid.length < length)
119
+ let valid;
120
+ if (typeof path === 'string') {
121
+ valid = (0, exports.getHDPath)(path);
122
+ } else if (Array.isArray(path)) {
123
+ valid = path.map(p => {
124
+ const n = parseInt(p, 10);
125
+ if (Number.isNaN(n)) {
144
126
  throw PATH_NOT_VALID;
145
- return base ? valid.splice(0, 3) : valid;
127
+ } else if (n < 0) {
128
+ throw PATH_NEGATIVE_VALUES;
129
+ }
130
+ return n;
131
+ });
132
+ }
133
+ if (!valid) throw PATH_NOT_VALID;
134
+ if (length > 0 && valid.length < length) throw PATH_NOT_VALID;
135
+ return base ? valid.splice(0, 3) : valid;
146
136
  };
147
137
  exports.validatePath = validatePath;
148
- const getSerializedPath = (path) => `m/${path
149
- .map(i => {
150
- const s = (i & ~exports.HD_HARDENED).toString();
151
- if (i & exports.HD_HARDENED) {
152
- return `${s}'`;
153
- }
154
- return s;
155
- })
156
- .join('/')}`;
138
+ const getSerializedPath = path => `m/${path.map(i => {
139
+ const s = (i & ~exports.HD_HARDENED).toString();
140
+ if (i & exports.HD_HARDENED) {
141
+ return `${s}'`;
142
+ }
143
+ return s;
144
+ }).join('/')}`;
157
145
  exports.getSerializedPath = getSerializedPath;
158
- const getPathFromIndex = (bip44purpose, bip44cointype, index) => [
159
- (0, exports.toHardened)(bip44purpose),
160
- (0, exports.toHardened)(bip44cointype),
161
- (0, exports.toHardened)(index),
162
- ];
146
+ const getPathFromIndex = (bip44purpose, bip44cointype, index) => [(0, exports.toHardened)(bip44purpose), (0, exports.toHardened)(bip44cointype), (0, exports.toHardened)(index)];
163
147
  exports.getPathFromIndex = getPathFromIndex;
164
- const getIndexFromPath = (path) => {
165
- if (path.length < 3) {
166
- throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `getIndexFromPath: invalid path length ${path.toString()}`);
167
- }
168
- return (0, exports.fromHardened)(path[2]);
148
+ const getIndexFromPath = path => {
149
+ if (path.length < 3) {
150
+ throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `getIndexFromPath: invalid path length ${path.toString()}`);
151
+ }
152
+ return (0, exports.fromHardened)(path[2]);
169
153
  };
170
154
  exports.getIndexFromPath = getIndexFromPath;
171
- const fixPath = (utxo) => {
172
- if (utxo.address_n && Array.isArray(utxo.address_n)) {
173
- utxo.address_n = utxo.address_n.map(i => i >>> 0);
174
- }
175
- if (utxo.address_n && typeof utxo.address_n === 'string') {
176
- utxo.address_n = (0, exports.getHDPath)(utxo.address_n);
177
- }
178
- return utxo;
155
+ const fixPath = utxo => {
156
+ if (utxo.address_n && Array.isArray(utxo.address_n)) {
157
+ utxo.address_n = utxo.address_n.map(i => i >>> 0);
158
+ }
159
+ if (utxo.address_n && typeof utxo.address_n === 'string') {
160
+ utxo.address_n = (0, exports.getHDPath)(utxo.address_n);
161
+ }
162
+ return utxo;
179
163
  };
180
164
  exports.fixPath = fixPath;
181
165
  const getLabel = (label, coinInfo) => {
182
- if (coinInfo) {
183
- return label.replace('#NETWORK', coinInfo.label);
184
- }
185
- return label.replace('#NETWORK', '');
166
+ if (coinInfo) {
167
+ return label.replace('#NETWORK', coinInfo.label);
168
+ }
169
+ return label.replace('#NETWORK', '');
186
170
  };
187
171
  exports.getLabel = getLabel;
188
172
  //# sourceMappingURL=pathUtils.js.map
@@ -1,21 +1,30 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.createPopupPromiseManager = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
8
  const createPopupPromiseManager = () => {
6
- let _popupPromise;
7
- const ensure = () => _popupPromise ?? (_popupPromise = (0, utils_1.createDeferred)());
8
- const wait = () => ensure().promise;
9
- const resolve = () => ensure().resolve();
10
- const isWaiting = () => !!_popupPromise;
11
- const reject = (error) => {
12
- _popupPromise?.reject(error);
13
- _popupPromise = undefined;
14
- };
15
- const clear = () => {
16
- _popupPromise = undefined;
17
- };
18
- return { wait, isWaiting, clear, resolve, reject };
9
+ let _popupPromise;
10
+ const ensure = () => _popupPromise ?? (_popupPromise = (0, utils_1.createDeferred)());
11
+ const wait = () => ensure().promise;
12
+ const resolve = () => ensure().resolve();
13
+ const isWaiting = () => !!_popupPromise;
14
+ const reject = error => {
15
+ _popupPromise?.reject(error);
16
+ _popupPromise = undefined;
17
+ };
18
+ const clear = () => {
19
+ _popupPromise = undefined;
20
+ };
21
+ return {
22
+ wait,
23
+ isWaiting,
24
+ clear,
25
+ resolve,
26
+ reject
27
+ };
19
28
  };
20
29
  exports.createPopupPromiseManager = createPopupPromiseManager;
21
30
  //# sourceMappingURL=popupPromiseManager.js.map
@@ -1,66 +1,69 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.ProxyEventEmitter = void 0;
4
7
  class ProxyEventEmitter {
5
- eventEmitters;
6
- constructor(eventEmitters) {
7
- this.eventEmitters = eventEmitters;
8
- }
9
- emit(eventName, ...args) {
10
- this.eventEmitters.forEach(emitter => emitter.emit(eventName, ...args));
11
- return true;
12
- }
13
- on(eventName, listener) {
14
- this.eventEmitters.forEach(emitter => emitter.on(eventName, listener));
15
- return this;
16
- }
17
- off(eventName, listener) {
18
- this.eventEmitters.forEach(emitter => emitter.off(eventName, listener));
19
- return this;
20
- }
21
- once(eventName, listener) {
22
- this.eventEmitters.forEach(emitter => emitter.once(eventName, listener));
23
- return this;
24
- }
25
- addListener(eventName, listener) {
26
- this.eventEmitters.forEach(emitter => emitter.addListener(eventName, listener));
27
- return this;
28
- }
29
- prependListener(eventName, listener) {
30
- this.eventEmitters.forEach(emitter => emitter.prependListener(eventName, listener));
31
- return this;
32
- }
33
- prependOnceListener(eventName, listener) {
34
- this.eventEmitters.forEach(emitter => emitter.prependOnceListener(eventName, listener));
35
- return this;
36
- }
37
- removeAllListeners(event) {
38
- this.eventEmitters.forEach(emitter => emitter.removeAllListeners(event));
39
- return this;
40
- }
41
- removeListener(eventName, listener) {
42
- this.eventEmitters.forEach(emitter => emitter.removeListener(eventName, listener));
43
- return this;
44
- }
45
- setMaxListeners(n) {
46
- this.eventEmitters.forEach(emitter => emitter.setMaxListeners(n));
47
- return this;
48
- }
49
- eventNames() {
50
- return this.eventEmitters[0].eventNames();
51
- }
52
- getMaxListeners() {
53
- return this.eventEmitters[0].getMaxListeners();
54
- }
55
- listenerCount(eventName, listener) {
56
- return this.eventEmitters[0].listenerCount(eventName, listener);
57
- }
58
- rawListeners(eventName) {
59
- return this.eventEmitters[0].rawListeners(eventName);
60
- }
61
- listeners(eventName) {
62
- return this.eventEmitters[0].listeners(eventName);
63
- }
8
+ eventEmitters;
9
+ constructor(eventEmitters) {
10
+ this.eventEmitters = eventEmitters;
11
+ }
12
+ emit(eventName, ...args) {
13
+ this.eventEmitters.forEach(emitter => emitter.emit(eventName, ...args));
14
+ return true;
15
+ }
16
+ on(eventName, listener) {
17
+ this.eventEmitters.forEach(emitter => emitter.on(eventName, listener));
18
+ return this;
19
+ }
20
+ off(eventName, listener) {
21
+ this.eventEmitters.forEach(emitter => emitter.off(eventName, listener));
22
+ return this;
23
+ }
24
+ once(eventName, listener) {
25
+ this.eventEmitters.forEach(emitter => emitter.once(eventName, listener));
26
+ return this;
27
+ }
28
+ addListener(eventName, listener) {
29
+ this.eventEmitters.forEach(emitter => emitter.addListener(eventName, listener));
30
+ return this;
31
+ }
32
+ prependListener(eventName, listener) {
33
+ this.eventEmitters.forEach(emitter => emitter.prependListener(eventName, listener));
34
+ return this;
35
+ }
36
+ prependOnceListener(eventName, listener) {
37
+ this.eventEmitters.forEach(emitter => emitter.prependOnceListener(eventName, listener));
38
+ return this;
39
+ }
40
+ removeAllListeners(event) {
41
+ this.eventEmitters.forEach(emitter => emitter.removeAllListeners(event));
42
+ return this;
43
+ }
44
+ removeListener(eventName, listener) {
45
+ this.eventEmitters.forEach(emitter => emitter.removeListener(eventName, listener));
46
+ return this;
47
+ }
48
+ setMaxListeners(n) {
49
+ this.eventEmitters.forEach(emitter => emitter.setMaxListeners(n));
50
+ return this;
51
+ }
52
+ eventNames() {
53
+ return this.eventEmitters[0].eventNames();
54
+ }
55
+ getMaxListeners() {
56
+ return this.eventEmitters[0].getMaxListeners();
57
+ }
58
+ listenerCount(eventName, listener) {
59
+ return this.eventEmitters[0].listenerCount(eventName, listener);
60
+ }
61
+ rawListeners(eventName) {
62
+ return this.eventEmitters[0].rawListeners(eventName);
63
+ }
64
+ listeners(eventName) {
65
+ return this.eventEmitters[0].listeners(eventName);
66
+ }
64
67
  }
65
68
  exports.ProxyEventEmitter = ProxyEventEmitter;
66
69
  //# sourceMappingURL=proxy-event-emitter.js.map
@@ -1,51 +1,63 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.createUiPromiseManager = void 0;
4
7
  const utils_1 = require("@trezor/utils");
5
8
  const events_1 = require("../events");
6
- const createUiPromiseManager = (interactionTimeout) => {
7
- let _uiPromises = [];
8
- const exists = (type) => _uiPromises.some(p => p.id === type);
9
- const create = (promiseEvent, device) => {
10
- const uiPromise = {
11
- ...(0, utils_1.createDeferred)(promiseEvent),
12
- device,
13
- };
14
- const existing = _uiPromises.findIndex(p => p.id === promiseEvent);
15
- if (existing >= 0) {
16
- console.warn(`UiPromise '${promiseEvent}' already exists.`);
17
- _uiPromises.splice(existing, 1);
18
- }
19
- _uiPromises.push(uiPromise);
20
- interactionTimeout();
21
- return uiPromise;
9
+ const createUiPromiseManager = interactionTimeout => {
10
+ let _uiPromises = [];
11
+ const exists = type => _uiPromises.some(p => p.id === type);
12
+ const create = (promiseEvent, device) => {
13
+ const uiPromise = {
14
+ ...(0, utils_1.createDeferred)(promiseEvent),
15
+ device
22
16
  };
23
- const resolve = (event) => {
24
- const uiPromise = _uiPromises.find(p => p.id === event.type);
25
- if (!uiPromise)
26
- return false;
27
- uiPromise.resolve(event);
28
- _uiPromises = _uiPromises.filter(p => p !== uiPromise);
29
- return true;
30
- };
31
- const rejectAll = (error) => {
32
- _uiPromises.forEach(p => p.reject(error));
33
- _uiPromises = [];
34
- };
35
- const disconnected = (devicePath) => {
36
- const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, (p) => p.device?.getUniquePath() === devicePath && p.id === events_1.DEVICE.DISCONNECT);
37
- toResolve.forEach(p => p.resolve({ type: events_1.DEVICE.DISCONNECT }));
38
- _uiPromises = toKeep;
39
- return !!toResolve.length || toKeep.some(p => p.device?.getUniquePath() === devicePath);
40
- };
41
- const get = (type) => {
42
- const uiPromise = _uiPromises.find(p => p.id === type);
43
- return uiPromise?.promise ?? Promise.reject(new Error(`UiPromise ${type} doesn't exist`));
44
- };
45
- const clear = () => {
46
- _uiPromises = [];
47
- };
48
- return { exists, create, resolve, rejectAll, disconnected, get, clear };
17
+ const existing = _uiPromises.findIndex(p => p.id === promiseEvent);
18
+ if (existing >= 0) {
19
+ console.warn(`UiPromise '${promiseEvent}' already exists.`);
20
+ _uiPromises.splice(existing, 1);
21
+ }
22
+ _uiPromises.push(uiPromise);
23
+ interactionTimeout();
24
+ return uiPromise;
25
+ };
26
+ const resolve = event => {
27
+ const uiPromise = _uiPromises.find(p => p.id === event.type);
28
+ if (!uiPromise) return false;
29
+ uiPromise.resolve(event);
30
+ _uiPromises = _uiPromises.filter(p => p !== uiPromise);
31
+ return true;
32
+ };
33
+ const rejectAll = error => {
34
+ _uiPromises.forEach(p => p.reject(error));
35
+ _uiPromises = [];
36
+ };
37
+ const disconnected = devicePath => {
38
+ const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, p => p.device?.getUniquePath() === devicePath && p.id === events_1.DEVICE.DISCONNECT);
39
+ toResolve.forEach(p => p.resolve({
40
+ type: events_1.DEVICE.DISCONNECT
41
+ }));
42
+ _uiPromises = toKeep;
43
+ return !!toResolve.length || toKeep.some(p => p.device?.getUniquePath() === devicePath);
44
+ };
45
+ const get = type => {
46
+ const uiPromise = _uiPromises.find(p => p.id === type);
47
+ return uiPromise?.promise ?? Promise.reject(new Error(`UiPromise ${type} doesn't exist`));
48
+ };
49
+ const clear = () => {
50
+ _uiPromises = [];
51
+ };
52
+ return {
53
+ exists,
54
+ create,
55
+ resolve,
56
+ rejectAll,
57
+ disconnected,
58
+ get,
59
+ clear
60
+ };
49
61
  };
50
62
  exports.createUiPromiseManager = createUiPromiseManager;
51
63
  //# sourceMappingURL=uiPromiseManager.js.map