@onekeyfe/hd-core 1.2.0-alpha.6 → 1.2.0-alpha.60
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.
- package/__tests__/AllNetworkGetAddressBase.tracing.test.ts +390 -0
- package/__tests__/DeviceCommands.test.ts +563 -0
- package/__tests__/DeviceEventRegistration.test.ts +49 -0
- package/__tests__/chain-params-onekey-compatibility.test.ts +229 -0
- package/__tests__/check-all-firmware-release-protocol-v2.test.ts +477 -0
- package/__tests__/connectSettings.test.ts +19 -0
- package/__tests__/core-dispose.test.ts +34 -0
- package/__tests__/core-error-output.test.ts +39 -0
- package/__tests__/core-initialization.test.ts +23 -0
- package/__tests__/device-connector-protocol.test.ts +81 -0
- package/__tests__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +52 -0
- package/__tests__/device-lifecycle-events.test.ts +351 -0
- package/__tests__/device-pool-state.test.ts +166 -0
- package/__tests__/device-settings.test.ts +437 -0
- package/__tests__/device-state-contract.test.ts +28 -0
- package/__tests__/device-state-events.test.ts +286 -0
- package/__tests__/device-state-mapper.test.ts +273 -0
- package/__tests__/device-state-projector.test.ts +94 -0
- package/__tests__/device-state-store.test.ts +82 -0
- package/__tests__/device-utils.test.ts +154 -0
- package/__tests__/device-wallet-session-store.test.ts +478 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +113 -0
- package/__tests__/deviceUploadNft.test.ts +316 -0
- package/__tests__/evmLedgerLegacySafety.test.ts +12 -6
- package/__tests__/evmSignTransaction.test.ts +69 -0
- package/__tests__/evmSignTypedData.test.ts +80 -0
- package/__tests__/filesystemValidation.test.ts +53 -0
- package/__tests__/firmware-update/firmware-update-v2-download-before-boot.test.ts +402 -0
- package/__tests__/get-device-state.test.ts +578 -0
- package/__tests__/homescreen.test.ts +64 -0
- package/__tests__/kaspa-public-types.type-test.ts +16 -0
- package/__tests__/kaspa-use-tweak-pro2.test.ts +20 -0
- package/__tests__/kaspaSignTransaction.test.ts +578 -0
- package/__tests__/known-device-public-types.type-test.ts +3 -0
- package/__tests__/logBlockEvent.test.ts +128 -1
- package/__tests__/method-protocol-support.test.ts +132 -0
- package/__tests__/networkUtils.test.ts +406 -0
- package/__tests__/open-wallet-session-error-response.test.ts +43 -0
- package/__tests__/open-wallet-session.test.ts +1899 -0
- package/__tests__/pro2Nft.test.ts +108 -0
- package/__tests__/pro2Wallpaper.test.ts +39 -0
- package/__tests__/protocol-binding.test.ts +89 -0
- package/__tests__/protocol-v2-bootloader-mode.test.ts +37 -0
- package/__tests__/protocol-v2-firmware-targets.test.ts +37 -0
- package/__tests__/protocol-v2-ping.test.ts +28 -0
- package/__tests__/protocol-v2-resources.test.ts +340 -0
- package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +245 -0
- package/__tests__/protocol-v2.test.ts +6478 -2536
- package/__tests__/protocolV2FileWrite.test.ts +244 -0
- package/__tests__/protocolV2UiInteraction.test.ts +329 -0
- package/__tests__/public-device-state-api.test.ts +275 -0
- package/__tests__/public-pro2-api-boundary.test.ts +107 -0
- package/__tests__/refresh-device-state.test.ts +101 -0
- package/__tests__/request-context-logging.test.ts +16 -0
- package/__tests__/search-devices.test.ts +145 -0
- package/__tests__/tron-sign-message-init.test.ts +74 -0
- package/__tests__/uiProgressThrottle.test.ts +74 -0
- package/__tests__/uiPromiseRegistry.test.ts +97 -0
- package/dist/api/BaseMethod.d.ts +16 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +25 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CheckBootloaderRelease.d.ts.map +1 -1
- package/dist/api/CheckFirmwareRelease.d.ts.map +1 -1
- package/dist/api/CipherKeyValue.d.ts +1 -0
- package/dist/api/CipherKeyValue.d.ts.map +1 -1
- package/dist/api/ClearSessionCache.d.ts +9 -0
- package/dist/api/ClearSessionCache.d.ts.map +1 -0
- package/dist/api/DetectDeviceConnectProtocol.d.ts +7 -0
- package/dist/api/DetectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/api/DirList.d.ts +1 -0
- package/dist/api/DirList.d.ts.map +1 -1
- package/dist/api/DirMake.d.ts +1 -0
- package/dist/api/DirMake.d.ts.map +1 -1
- package/dist/api/DirRemove.d.ts +1 -0
- package/dist/api/DirRemove.d.ts.map +1 -1
- package/dist/api/FileDelete.d.ts +1 -0
- package/dist/api/FileDelete.d.ts.map +1 -1
- package/dist/api/FileRead.d.ts +1 -0
- package/dist/api/FileRead.d.ts.map +1 -1
- package/dist/api/FileWrite.d.ts +2 -0
- package/dist/api/FileWrite.d.ts.map +1 -1
- package/dist/api/FirmwareUpdate.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV2.d.ts +2 -2
- package/dist/api/FirmwareUpdateV2.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV3.d.ts.map +1 -1
- package/dist/api/FirmwareUpdateV4.d.ts +26 -16
- package/dist/api/FirmwareUpdateV4.d.ts.map +1 -1
- package/dist/api/GetDeviceState.d.ts +8 -0
- package/dist/api/GetDeviceState.d.ts.map +1 -0
- package/dist/api/GetFeatures.d.ts +1 -1
- package/dist/api/GetFeatures.d.ts.map +1 -1
- package/dist/api/GetOnekeyFeatures.d.ts.map +1 -1
- package/dist/api/GetPassphraseState.d.ts +2 -6
- package/dist/api/GetPassphraseState.d.ts.map +1 -1
- package/dist/api/OpenWalletSession.d.ts +8 -0
- package/dist/api/OpenWalletSession.d.ts.map +1 -0
- package/dist/api/PathInfo.d.ts +1 -0
- package/dist/api/PathInfo.d.ts.map +1 -1
- package/dist/api/PromptWebDeviceAccess.d.ts.map +1 -1
- package/dist/api/SearchDevices.d.ts +3 -0
- package/dist/api/SearchDevices.d.ts.map +1 -1
- package/dist/api/UploadPortfolio.d.ts +17 -0
- package/dist/api/UploadPortfolio.d.ts.map +1 -0
- package/dist/api/alephium/AlephiumGetAddress.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignMessage.d.ts.map +1 -1
- package/dist/api/alephium/AlephiumSignTransaction.d.ts.map +1 -1
- package/dist/api/algo/AlgoGetAddress.d.ts +1 -0
- package/dist/api/algo/AlgoGetAddress.d.ts.map +1 -1
- package/dist/api/algo/AlgoSignTransaction.d.ts +1 -0
- package/dist/api/algo/AlgoSignTransaction.d.ts.map +1 -1
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts +1 -0
- package/dist/api/allnetwork/AllNetworkGetAddressBase.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetAddress.d.ts +1 -0
- package/dist/api/aptos/AptosGetAddress.d.ts.map +1 -1
- package/dist/api/aptos/AptosGetPublicKey.d.ts +1 -0
- package/dist/api/aptos/AptosGetPublicKey.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignInMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignInMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignMessage.d.ts +1 -0
- package/dist/api/aptos/AptosSignMessage.d.ts.map +1 -1
- package/dist/api/aptos/AptosSignTransaction.d.ts +1 -0
- package/dist/api/aptos/AptosSignTransaction.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetAddress.d.ts.map +1 -1
- package/dist/api/benfen/BenfenGetPublicKey.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignMessage.d.ts.map +1 -1
- package/dist/api/benfen/BenfenSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCGetAddress.d.ts +1 -0
- package/dist/api/btc/BTCGetAddress.d.ts.map +1 -1
- package/dist/api/btc/BTCGetPublicKey.d.ts +1 -0
- package/dist/api/btc/BTCGetPublicKey.d.ts.map +1 -1
- package/dist/api/btc/BTCSignMessage.d.ts +1 -0
- package/dist/api/btc/BTCSignMessage.d.ts.map +1 -1
- package/dist/api/btc/BTCSignPsbt.d.ts +1 -0
- package/dist/api/btc/BTCSignPsbt.d.ts.map +1 -1
- package/dist/api/btc/BTCSignTransaction.d.ts +1 -0
- package/dist/api/btc/BTCSignTransaction.d.ts.map +1 -1
- package/dist/api/btc/BTCVerifyMessage.d.ts +1 -0
- package/dist/api/btc/BTCVerifyMessage.d.ts.map +1 -1
- package/dist/api/btc/helpers/versionLimit.d.ts +2 -0
- package/dist/api/btc/helpers/versionLimit.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetAddress.d.ts +1 -0
- package/dist/api/cardano/CardanoGetAddress.d.ts.map +1 -1
- package/dist/api/cardano/CardanoGetPublicKey.d.ts +1 -0
- package/dist/api/cardano/CardanoGetPublicKey.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignMessage.d.ts +1 -0
- package/dist/api/cardano/CardanoSignMessage.d.ts.map +1 -1
- package/dist/api/cardano/CardanoSignTransaction.d.ts +1 -0
- package/dist/api/cardano/CardanoSignTransaction.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxGetAddress.d.ts +2 -0
- package/dist/api/conflux/ConfluxGetAddress.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessage.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessage.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignMessageCIP23.d.ts.map +1 -1
- package/dist/api/conflux/ConfluxSignTransaction.d.ts +2 -0
- package/dist/api/conflux/ConfluxSignTransaction.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetAddress.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetAddress.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts +1 -0
- package/dist/api/cosmos/CosmosGetPublicKey.d.ts.map +1 -1
- package/dist/api/cosmos/CosmosSignTransaction.d.ts +1 -0
- package/dist/api/cosmos/CosmosSignTransaction.d.ts.map +1 -1
- package/dist/api/device/DeviceCancel.d.ts +1 -0
- package/dist/api/device/DeviceCancel.d.ts.map +1 -1
- package/dist/api/device/DeviceChangePin.d.ts +1 -0
- package/dist/api/device/DeviceChangePin.d.ts.map +1 -1
- package/dist/api/device/DeviceFullyUploadResource.d.ts +1 -2
- package/dist/api/device/DeviceFullyUploadResource.d.ts.map +1 -1
- package/dist/api/device/DeviceLock.d.ts +1 -0
- package/dist/api/device/DeviceLock.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBoardloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBoardloader.d.ts.map +1 -1
- package/dist/api/device/DeviceRebootToBootloader.d.ts +1 -0
- package/dist/api/device/DeviceRebootToBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceSettings.d.ts +1 -0
- package/dist/api/device/DeviceSettings.d.ts.map +1 -1
- package/dist/api/device/DeviceSupportFeatures.d.ts +1 -0
- package/dist/api/device/DeviceSupportFeatures.d.ts.map +1 -1
- package/dist/api/device/DeviceUnlock.d.ts +3 -2
- package/dist/api/device/DeviceUnlock.d.ts.map +1 -1
- package/dist/api/device/DeviceUpdateBootloader.d.ts.map +1 -1
- package/dist/api/device/DeviceWipe.d.ts +1 -0
- package/dist/api/device/DeviceWipe.d.ts.map +1 -1
- package/dist/api/device/PreInitialize.d.ts +1 -0
- package/dist/api/device/PreInitialize.d.ts.map +1 -1
- package/dist/api/dynex/DnxGetAddress.d.ts.map +1 -1
- package/dist/api/dynex/DnxSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMGetAddress.d.ts +1 -0
- package/dist/api/evm/EVMGetAddress.d.ts.map +1 -1
- package/dist/api/evm/EVMGetPublicKey.d.ts +1 -0
- package/dist/api/evm/EVMGetPublicKey.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessage.d.ts +1 -0
- package/dist/api/evm/EVMSignMessage.d.ts.map +1 -1
- package/dist/api/evm/EVMSignMessageEIP712.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTransaction.d.ts +1 -0
- package/dist/api/evm/EVMSignTransaction.d.ts.map +1 -1
- package/dist/api/evm/EVMSignTypedData.d.ts +1 -0
- package/dist/api/evm/EVMSignTypedData.d.ts.map +1 -1
- package/dist/api/evm/EVMVerifyMessage.d.ts +1 -0
- package/dist/api/evm/EVMVerifyMessage.d.ts.map +1 -1
- package/dist/api/evm/protocol.d.ts +3 -0
- package/dist/api/evm/protocol.d.ts.map +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts +1 -0
- package/dist/api/filecoin/FilecoinGetAddress.d.ts.map +1 -1
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts +1 -0
- package/dist/api/filecoin/FilecoinSignTransaction.d.ts.map +1 -1
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts +4 -3
- package/dist/api/firmware/FirmwareUpdateBaseMethod.d.ts.map +1 -1
- package/dist/api/firmware/getBinary.d.ts +8 -4
- package/dist/api/firmware/getBinary.d.ts.map +1 -1
- package/dist/api/firmware/uploadFirmware.d.ts.map +1 -1
- package/dist/api/helpers/filesystemValidation.d.ts +3 -0
- package/dist/api/helpers/filesystemValidation.d.ts.map +1 -1
- package/dist/api/helpers/paramsValidator.d.ts +1 -0
- package/dist/api/helpers/paramsValidator.d.ts.map +1 -1
- package/dist/api/helpers/protocolV2FileWrite.d.ts +42 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +9 -25
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaGetAddress.d.ts +4 -0
- package/dist/api/kaspa/KaspaGetAddress.d.ts.map +1 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts +9 -1
- package/dist/api/kaspa/KaspaSignTransaction.d.ts.map +1 -1
- package/dist/api/kaspa/helpers/TransferSerialize.d.ts.map +1 -1
- package/dist/api/lightning/LnurlAuth.d.ts +0 -4
- package/dist/api/lightning/LnurlAuth.d.ts.map +1 -1
- package/dist/api/near/NearGetAddress.d.ts +1 -0
- package/dist/api/near/NearGetAddress.d.ts.map +1 -1
- package/dist/api/near/NearSignTransaction.d.ts +1 -0
- package/dist/api/near/NearSignTransaction.d.ts.map +1 -1
- package/dist/api/nem/NEMGetAddress.d.ts +1 -0
- package/dist/api/nem/NEMGetAddress.d.ts.map +1 -1
- package/dist/api/nem/NEMSignTransaction.d.ts +1 -0
- package/dist/api/nem/NEMSignTransaction.d.ts.map +1 -1
- package/dist/api/neo/NeoGetAddress.d.ts.map +1 -1
- package/dist/api/neo/NeoSignTransaction.d.ts.map +1 -1
- package/dist/api/nervos/NervosGetAddress.d.ts.map +1 -1
- package/dist/api/nervos/NervosSignTransaction.d.ts.map +1 -1
- package/dist/api/nexa/NexaGetAddress.d.ts.map +1 -1
- package/dist/api/nexa/NexaSignTransaction.d.ts +1 -0
- package/dist/api/nexa/NexaSignTransaction.d.ts.map +1 -1
- package/dist/api/nostr/NostrDecryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrDecryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrEncryptMessage.d.ts +1 -0
- package/dist/api/nostr/NostrEncryptMessage.d.ts.map +1 -1
- package/dist/api/nostr/NostrGetPublicKey.d.ts +1 -0
- package/dist/api/nostr/NostrGetPublicKey.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignEvent.d.ts +1 -0
- package/dist/api/nostr/NostrSignEvent.d.ts.map +1 -1
- package/dist/api/nostr/NostrSignSchnorr.d.ts +1 -0
- package/dist/api/nostr/NostrSignSchnorr.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts +2 -1
- package/dist/api/polkadot/PolkadotGetAddress.d.ts.map +1 -1
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts +1 -0
- package/dist/api/polkadot/PolkadotSignTransaction.d.ts.map +1 -1
- package/dist/api/polkadot/networks.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFactoryInfoSet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceFirmwareUpdate.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceGetFirmwareUpdateStatus.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceGetOnboardingStatus.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts +1 -1
- package/dist/api/protocol-v2/DeviceInfoGet.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceReboot.d.ts +1 -0
- package/dist/api/protocol-v2/DeviceReboot.d.ts.map +1 -1
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts +7 -0
- package/dist/api/protocol-v2/DeviceStatusGet.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts +31 -0
- package/dist/api/protocol-v2/DeviceUploadNft.d.ts.map +1 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts +27 -0
- package/dist/api/protocol-v2/DeviceUploadWallpaper.d.ts.map +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemFormat.d.ts.map +1 -1
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts +1 -0
- package/dist/api/protocol-v2/FilesystemPermissionFix.d.ts.map +1 -1
- package/dist/api/protocol-v2/Ping.d.ts +3 -0
- package/dist/api/protocol-v2/Ping.d.ts.map +1 -1
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts +1 -0
- package/dist/api/protocol-v2/ProtocolInfoRequest.d.ts.map +1 -1
- package/dist/api/protocol-v2/helpers.d.ts +1 -1
- package/dist/api/protocol-v2/helpers.d.ts.map +1 -1
- package/dist/api/scdo/ScdoGetAddress.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignMessage.d.ts.map +1 -1
- package/dist/api/scdo/ScdoSignTransaction.d.ts.map +1 -1
- package/dist/api/solana/SolGetAddress.d.ts +1 -0
- package/dist/api/solana/SolGetAddress.d.ts.map +1 -1
- package/dist/api/solana/SolSignMessage.d.ts +2 -1
- package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +2 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +3 -2
- package/dist/api/solana/SolSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetAddress.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetAddress.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts +1 -0
- package/dist/api/starcoin/StarcoinGetPublicKey.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignMessage.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts +1 -0
- package/dist/api/starcoin/StarcoinSignTransaction.d.ts.map +1 -1
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts +1 -0
- package/dist/api/starcoin/StarcoinVerifyMessage.d.ts.map +1 -1
- package/dist/api/stellar/StellarGetAddress.d.ts +1 -2
- package/dist/api/stellar/StellarGetAddress.d.ts.map +1 -1
- package/dist/api/stellar/StellarSignTransaction.d.ts +1 -2
- package/dist/api/stellar/StellarSignTransaction.d.ts.map +1 -1
- package/dist/api/sui/SuiGetAddress.d.ts +2 -1
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +2 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +2 -1
- package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +2 -1
- package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +2 -1
- package/dist/api/ton/TonGetAddress.d.ts.map +1 -1
- package/dist/api/ton/TonSignData.d.ts +1 -0
- package/dist/api/ton/TonSignData.d.ts.map +1 -1
- package/dist/api/ton/TonSignMessage.d.ts +2 -1
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/ton/TonSignProof.d.ts +2 -1
- package/dist/api/ton/TonSignProof.d.ts.map +1 -1
- package/dist/api/tron/TronGetAddress.d.ts +1 -0
- package/dist/api/tron/TronGetAddress.d.ts.map +1 -1
- package/dist/api/tron/TronSignMessage.d.ts +6 -1
- package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
- package/dist/api/tron/TronSignTransaction.d.ts +2 -1
- package/dist/api/tron/TronSignTransaction.d.ts.map +1 -1
- package/dist/api/utils.d.ts +2 -1
- package/dist/api/utils.d.ts.map +1 -1
- package/dist/api/xrp/XrpGetAddress.d.ts +1 -0
- package/dist/api/xrp/XrpGetAddress.d.ts.map +1 -1
- package/dist/api/xrp/XrpSignTransaction.d.ts +1 -0
- package/dist/api/xrp/XrpSignTransaction.d.ts.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/core/RequestQueue.d.ts.map +1 -1
- package/dist/core/deviceEventRegistration.d.ts +13 -0
- package/dist/core/deviceEventRegistration.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/uiPromiseRegistry.d.ts +5 -0
- package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
- package/dist/data-manager/DataManager.d.ts +9 -3
- package/dist/data-manager/DataManager.d.ts.map +1 -1
- package/dist/data-manager/TransportManager.d.ts.map +1 -1
- package/dist/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +71 -17
- package/dist/device/Device.d.ts.map +1 -1
- package/dist/device/DeviceCommands.d.ts +8 -6
- package/dist/device/DeviceCommands.d.ts.map +1 -1
- package/dist/device/DeviceConnector.d.ts +3 -2
- package/dist/device/DeviceConnector.d.ts.map +1 -1
- package/dist/device/DeviceFeaturesState.d.ts +3 -0
- package/dist/device/DeviceFeaturesState.d.ts.map +1 -0
- package/dist/device/DevicePool.d.ts +5 -2
- package/dist/device/DevicePool.d.ts.map +1 -1
- package/dist/device/DeviceStateMapper.d.ts +13 -0
- package/dist/device/DeviceStateMapper.d.ts.map +1 -0
- package/dist/device/DeviceStateProjector.d.ts +7 -0
- package/dist/device/DeviceStateProjector.d.ts.map +1 -0
- package/dist/device/DeviceStateStore.d.ts +21 -0
- package/dist/device/DeviceStateStore.d.ts.map +1 -0
- package/dist/device/DeviceWalletSessionStore.d.ts +27 -0
- package/dist/device/DeviceWalletSessionStore.d.ts.map +1 -0
- package/dist/device/cloneDeviceState.d.ts +2 -0
- package/dist/device/cloneDeviceState.d.ts.map +1 -0
- package/dist/device/deviceIdentity.d.ts +5 -0
- package/dist/device/deviceIdentity.d.ts.map +1 -0
- package/dist/deviceProfile/buildDeviceFeatures.d.ts +9 -3
- package/dist/deviceProfile/buildDeviceFeatures.d.ts.map +1 -1
- package/dist/deviceProfile/index.d.ts +0 -1
- package/dist/deviceProfile/index.d.ts.map +1 -1
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts +7 -0
- package/dist/deviceProfile/protocolV2DeviceIdentity.d.ts.map +1 -0
- package/dist/events/device.d.ts +16 -2
- package/dist/events/device.d.ts.map +1 -1
- package/dist/events/logBlockEvent.d.ts +2 -0
- package/dist/events/logBlockEvent.d.ts.map +1 -1
- package/dist/events/ui-promise.d.ts +4 -2
- package/dist/events/ui-promise.d.ts.map +1 -1
- package/dist/events/ui-request.d.ts +50 -4
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/events/ui-response.d.ts +10 -2
- package/dist/events/ui-response.d.ts.map +1 -1
- package/dist/index.d.ts +1593 -773
- package/dist/index.js +8490 -3881
- package/dist/inject.d.ts +6 -1
- package/dist/inject.d.ts.map +1 -1
- package/dist/lowLevelInject.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/deviceSession.d.ts +7 -0
- package/dist/protocols/protocol-v2/deviceSession.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/features.d.ts +21 -17
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/index.d.ts +3 -2
- package/dist/protocols/protocol-v2/index.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/resources.d.ts +30 -0
- package/dist/protocols/protocol-v2/resources.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts +17 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +42 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts +2 -0
- package/dist/protocols/protocol-v2/unlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts +22 -0
- package/dist/protocols/protocol-v2/unlockPolicyRunner.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts +27 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/topLevelInject.d.ts.map +1 -1
- package/dist/types/api/checkAllFirmwareRelease.d.ts +27 -4
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- package/dist/types/api/detectDeviceConnectProtocol.d.ts +4 -0
- package/dist/types/api/detectDeviceConnectProtocol.d.ts.map +1 -0
- package/dist/types/api/deviceSettings.d.ts +11 -2
- package/dist/types/api/deviceSettings.d.ts.map +1 -1
- package/dist/types/api/deviceUnlock.d.ts +6 -2
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +4 -2
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +8 -1
- package/dist/types/api/firmwareUpdate.d.ts.map +1 -1
- package/dist/types/api/getDeviceState.d.ts +12 -0
- package/dist/types/api/getDeviceState.d.ts.map +1 -0
- package/dist/types/api/getFeatures.d.ts.map +1 -1
- package/dist/types/api/getOnekeyFeatures.d.ts.map +1 -1
- package/dist/types/api/getPassphraseState.d.ts +2 -10
- package/dist/types/api/getPassphraseState.d.ts.map +1 -1
- package/dist/types/api/index.d.ts +23 -30
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/kaspaSignTransaction.d.ts +42 -4
- package/dist/types/api/kaspaSignTransaction.d.ts.map +1 -1
- package/dist/types/api/openWalletSession.d.ts +35 -0
- package/dist/types/api/openWalletSession.d.ts.map +1 -0
- package/dist/types/api/protocolV2.d.ts +18 -84
- package/dist/types/api/protocolV2.d.ts.map +1 -1
- package/dist/types/api/sessionCache.d.ts +13 -0
- package/dist/types/api/sessionCache.d.ts.map +1 -0
- package/dist/types/device.d.ts +134 -10
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts +1 -0
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +44 -21
- package/dist/types/settings.d.ts.map +1 -1
- package/dist/utils/assets.d.ts +2 -1
- package/dist/utils/assets.d.ts.map +1 -1
- package/dist/utils/deviceFeaturesCompat.d.ts +13 -0
- package/dist/utils/deviceFeaturesCompat.d.ts.map +1 -0
- package/dist/utils/deviceFeaturesUtils.d.ts +10 -3
- package/dist/utils/deviceFeaturesUtils.d.ts.map +1 -1
- package/dist/utils/deviceInfoUtils.d.ts +9 -9
- package/dist/utils/deviceInfoUtils.d.ts.map +1 -1
- package/dist/utils/deviceSettings.d.ts +38 -7
- package/dist/utils/deviceSettings.d.ts.map +1 -1
- package/dist/utils/deviceVersionUtils.d.ts +7 -5
- package/dist/utils/deviceVersionUtils.d.ts.map +1 -1
- package/dist/utils/homescreen.d.ts +4 -0
- package/dist/utils/homescreen.d.ts.map +1 -1
- package/dist/utils/index.d.ts +6 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/networkUtils.d.ts +10 -1
- package/dist/utils/networkUtils.d.ts.map +1 -1
- package/dist/utils/patch.d.ts +1 -1
- package/dist/utils/patch.d.ts.map +1 -1
- package/dist/utils/pro2Nft.d.ts +31 -0
- package/dist/utils/pro2Nft.d.ts.map +1 -0
- package/dist/utils/pro2Wallpaper.d.ts +22 -0
- package/dist/utils/pro2Wallpaper.d.ts.map +1 -0
- package/dist/utils/tracing.d.ts.map +1 -1
- package/dist/utils/uiProgressThrottle.d.ts +3 -0
- package/dist/utils/uiProgressThrottle.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/api/BaseMethod.ts +53 -20
- package/src/api/CheckAllFirmwareRelease.ts +340 -1
- package/src/api/CheckBootloaderRelease.ts +1 -2
- package/src/api/CheckFirmwareRelease.ts +1 -2
- package/src/api/CipherKeyValue.ts +4 -0
- package/src/api/ClearSessionCache.ts +32 -0
- package/src/api/DetectDeviceConnectProtocol.ts +18 -0
- package/src/api/DirList.ts +9 -4
- package/src/api/DirMake.ts +7 -4
- package/src/api/DirRemove.ts +7 -4
- package/src/api/FileDelete.ts +7 -4
- package/src/api/FileRead.ts +15 -9
- package/src/api/FileWrite.ts +26 -181
- package/src/api/FirmwareUpdate.ts +17 -14
- package/src/api/FirmwareUpdateV2.ts +137 -54
- package/src/api/FirmwareUpdateV3.ts +9 -13
- package/src/api/FirmwareUpdateV4.ts +805 -626
- package/src/api/GetDeviceState.ts +59 -0
- package/src/api/GetFeatures.ts +6 -4
- package/src/api/GetOnekeyFeatures.ts +1 -75
- package/src/api/GetPassphraseState.ts +36 -21
- package/src/api/OpenWalletSession.ts +268 -0
- package/src/api/PathInfo.ts +9 -4
- package/src/api/PromptWebDeviceAccess.ts +2 -7
- package/src/api/SearchDevices.ts +31 -4
- package/src/api/UploadPortfolio.ts +40 -0
- package/src/api/alephium/AlephiumGetAddress.ts +0 -4
- package/src/api/alephium/AlephiumSignMessage.ts +0 -4
- package/src/api/alephium/AlephiumSignTransaction.ts +2 -6
- package/src/api/algo/AlgoGetAddress.ts +4 -0
- package/src/api/algo/AlgoSignTransaction.ts +4 -0
- package/src/api/allnetwork/AllNetworkGetAddress.ts +21 -21
- package/src/api/allnetwork/AllNetworkGetAddressBase.ts +45 -32
- package/src/api/aptos/AptosGetAddress.ts +4 -0
- package/src/api/aptos/AptosGetPublicKey.ts +4 -0
- package/src/api/aptos/AptosSignInMessage.ts +4 -0
- package/src/api/aptos/AptosSignMessage.ts +4 -0
- package/src/api/aptos/AptosSignTransaction.ts +4 -0
- package/src/api/benfen/BenfenGetAddress.ts +11 -7
- package/src/api/benfen/BenfenGetPublicKey.ts +0 -4
- package/src/api/benfen/BenfenSignMessage.ts +0 -4
- package/src/api/benfen/BenfenSignTransaction.ts +0 -4
- package/src/api/btc/BTCGetAddress.ts +8 -1
- package/src/api/btc/BTCGetPublicKey.ts +9 -2
- package/src/api/btc/BTCSignMessage.ts +8 -1
- package/src/api/btc/BTCSignPsbt.ts +4 -0
- package/src/api/btc/BTCSignTransaction.ts +8 -1
- package/src/api/btc/BTCVerifyMessage.ts +8 -1
- package/src/api/btc/helpers/versionLimit.ts +7 -4
- package/src/api/cardano/CardanoGetAddress.ts +4 -0
- package/src/api/cardano/CardanoGetPublicKey.ts +4 -0
- package/src/api/cardano/CardanoSignMessage.ts +5 -1
- package/src/api/cardano/CardanoSignTransaction.ts +5 -1
- package/src/api/conflux/ConfluxGetAddress.ts +6 -0
- package/src/api/conflux/ConfluxSignMessage.ts +6 -0
- package/src/api/conflux/ConfluxSignMessageCIP23.ts +6 -0
- package/src/api/conflux/ConfluxSignTransaction.ts +8 -5
- package/src/api/cosmos/CosmosGetAddress.ts +4 -0
- package/src/api/cosmos/CosmosGetPublicKey.ts +4 -0
- package/src/api/cosmos/CosmosSignTransaction.ts +4 -0
- package/src/api/device/DeviceCancel.ts +5 -0
- package/src/api/device/DeviceChangePin.ts +28 -0
- package/src/api/device/DeviceFullyUploadResource.ts +4 -5
- package/src/api/device/DeviceLock.ts +5 -0
- package/src/api/device/DeviceRebootToBoardloader.ts +5 -0
- package/src/api/device/DeviceRebootToBootloader.ts +5 -0
- package/src/api/device/DeviceSettings.ts +195 -1
- package/src/api/device/DeviceSupportFeatures.ts +4 -0
- package/src/api/device/DeviceUnlock.ts +21 -3
- package/src/api/device/DeviceUpdateBootloader.ts +1 -2
- package/src/api/device/DeviceWipe.ts +25 -0
- package/src/api/device/PreInitialize.ts +4 -0
- package/src/api/dynex/DnxGetAddress.ts +0 -6
- package/src/api/dynex/DnxSignTransaction.ts +0 -6
- package/src/api/evm/EVMGetAddress.ts +6 -2
- package/src/api/evm/EVMGetPublicKey.ts +6 -2
- package/src/api/evm/EVMSignMessage.ts +6 -2
- package/src/api/evm/EVMSignMessageEIP712.ts +1 -11
- package/src/api/evm/EVMSignTransaction.ts +6 -2
- package/src/api/evm/EVMSignTypedData.ts +42 -50
- package/src/api/evm/EVMVerifyMessage.ts +6 -2
- package/src/api/evm/legacyV1/getAddress.ts +2 -2
- package/src/api/evm/legacyV1/getPublicKey.ts +2 -2
- package/src/api/evm/legacyV1/signMessage.ts +2 -2
- package/src/api/evm/legacyV1/signTypedData.ts +2 -2
- package/src/api/evm/legacyV1/signTypedHash.ts +2 -2
- package/src/api/evm/legacyV1/verifyMessage.ts +2 -2
- package/src/api/evm/protocol.ts +6 -0
- package/src/api/filecoin/FilecoinGetAddress.ts +4 -0
- package/src/api/filecoin/FilecoinSignTransaction.ts +4 -0
- package/src/api/firmware/FirmwareUpdateBaseMethod.ts +30 -15
- package/src/api/firmware/getBinary.ts +8 -3
- package/src/api/firmware/uploadFirmware.ts +17 -4
- package/src/api/helpers/batchGetPublickeys.ts +2 -2
- package/src/api/helpers/filesystemValidation.ts +61 -0
- package/src/api/helpers/paramsValidator.ts +1 -1
- package/src/api/helpers/protocolV2FileWrite.ts +338 -0
- package/src/api/index.ts +10 -26
- package/src/api/kaspa/KaspaGetAddress.ts +7 -0
- package/src/api/kaspa/KaspaSignTransaction.ts +369 -29
- package/src/api/kaspa/helpers/TransferSerialize.ts +17 -7
- package/src/api/lightning/LnurlAuth.ts +0 -4
- package/src/api/near/NearGetAddress.ts +4 -0
- package/src/api/near/NearSignTransaction.ts +4 -0
- package/src/api/nem/NEMGetAddress.ts +4 -0
- package/src/api/nem/NEMSignTransaction.ts +4 -0
- package/src/api/neo/NeoGetAddress.ts +0 -4
- package/src/api/neo/NeoSignTransaction.ts +0 -4
- package/src/api/nervos/NervosGetAddress.ts +0 -4
- package/src/api/nervos/NervosSignTransaction.ts +2 -6
- package/src/api/nexa/NexaGetAddress.ts +0 -4
- package/src/api/nexa/NexaSignTransaction.ts +3 -5
- package/src/api/nostr/NostrDecryptMessage.ts +4 -0
- package/src/api/nostr/NostrEncryptMessage.ts +4 -0
- package/src/api/nostr/NostrGetPublicKey.ts +4 -0
- package/src/api/nostr/NostrSignEvent.ts +4 -0
- package/src/api/nostr/NostrSignSchnorr.ts +4 -0
- package/src/api/polkadot/PolkadotGetAddress.ts +4 -0
- package/src/api/polkadot/PolkadotSignTransaction.ts +4 -0
- package/src/api/polkadot/networks.ts +3 -3
- package/src/api/protocol-v2/DeviceFactoryInfoGet.ts +5 -2
- package/src/api/protocol-v2/DeviceFactoryInfoSet.ts +5 -2
- package/src/api/protocol-v2/DeviceFirmwareUpdate.ts +8 -5
- package/src/api/protocol-v2/DeviceGetFirmwareUpdateStatus.ts +10 -6
- package/src/api/protocol-v2/DeviceGetOnboardingStatus.ts +21 -0
- package/src/api/protocol-v2/DeviceInfoGet.ts +8 -15
- package/src/api/protocol-v2/DeviceReboot.ts +7 -3
- package/src/api/protocol-v2/DeviceStatusGet.ts +19 -0
- package/src/api/protocol-v2/DeviceUploadNft.ts +197 -0
- package/src/api/protocol-v2/DeviceUploadWallpaper.ts +134 -0
- package/src/api/protocol-v2/FilesystemFormat.ts +9 -3
- package/src/api/protocol-v2/FilesystemPermissionFix.ts +5 -2
- package/src/api/protocol-v2/Ping.ts +37 -3
- package/src/api/protocol-v2/ProtocolInfoRequest.ts +8 -3
- package/src/api/protocol-v2/helpers.ts +17 -17
- package/src/api/scdo/ScdoGetAddress.ts +0 -4
- package/src/api/scdo/ScdoSignMessage.ts +0 -4
- package/src/api/scdo/ScdoSignTransaction.ts +0 -4
- package/src/api/solana/SolGetAddress.ts +4 -0
- package/src/api/solana/SolSignMessage.ts +5 -1
- package/src/api/solana/SolSignOffchainMessage.ts +5 -1
- package/src/api/solana/SolSignTransaction.ts +6 -2
- package/src/api/starcoin/StarcoinGetAddress.ts +4 -0
- package/src/api/starcoin/StarcoinGetPublicKey.ts +4 -0
- package/src/api/starcoin/StarcoinSignMessage.ts +4 -0
- package/src/api/starcoin/StarcoinSignTransaction.ts +4 -0
- package/src/api/starcoin/StarcoinVerifyMessage.ts +4 -0
- package/src/api/stellar/StellarGetAddress.ts +1 -10
- package/src/api/stellar/StellarSignTransaction.ts +1 -14
- package/src/api/sui/SuiGetAddress.ts +5 -1
- package/src/api/sui/SuiGetPublicKey.ts +5 -1
- package/src/api/sui/SuiSignMessage.ts +5 -1
- package/src/api/sui/SuiSignTransaction.ts +5 -1
- package/src/api/ton/TonGetAddress.ts +5 -1
- package/src/api/ton/TonSignData.ts +5 -1
- package/src/api/ton/TonSignMessage.ts +5 -1
- package/src/api/ton/TonSignProof.ts +5 -1
- package/src/api/tron/TronGetAddress.ts +4 -0
- package/src/api/tron/TronSignMessage.ts +19 -8
- package/src/api/tron/TronSignTransaction.ts +5 -1
- package/src/api/utils.ts +7 -3
- package/src/api/xrp/XrpGetAddress.ts +4 -0
- package/src/api/xrp/XrpSignTransaction.ts +5 -1
- package/src/constants/index.ts +1 -4
- package/src/core/RequestQueue.ts +1 -0
- package/src/core/deviceEventRegistration.ts +27 -0
- package/src/core/index.ts +333 -130
- package/src/core/uiPromiseRegistry.ts +50 -0
- package/src/data/messages/messages-protocol-v2.json +1138 -441
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +88 -16
- package/src/data-manager/TransportManager.ts +7 -1
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +891 -295
- package/src/device/DeviceCommands.ts +193 -158
- package/src/device/DeviceConnector.ts +43 -20
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +86 -22
- package/src/device/DeviceStateMapper.ts +374 -0
- package/src/device/DeviceStateProjector.ts +94 -0
- package/src/device/DeviceStateStore.ts +201 -0
- package/src/device/DeviceWalletSessionStore.ts +144 -0
- package/src/device/cloneDeviceState.ts +39 -0
- package/src/device/deviceIdentity.ts +18 -0
- package/src/deviceProfile/buildDeviceFeatures.ts +223 -189
- package/src/deviceProfile/index.ts +0 -1
- package/src/deviceProfile/protocolV2DeviceIdentity.ts +35 -0
- package/src/events/device.ts +22 -1
- package/src/events/logBlockEvent.ts +80 -2
- package/src/events/ui-promise.ts +4 -2
- package/src/events/ui-request.ts +61 -4
- package/src/events/ui-response.ts +12 -2
- package/src/inject.ts +73 -43
- package/src/lowLevelInject.ts +6 -3
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +100 -33
- package/src/protocols/protocol-v2/firmware.ts +3 -1
- package/src/protocols/protocol-v2/index.ts +8 -1
- package/src/protocols/protocol-v2/resources.ts +390 -0
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +250 -0
- package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +118 -0
- package/src/protocols/protocol-v2/walletSession.ts +463 -0
- package/src/topLevelInject.ts +6 -3
- package/src/types/api/checkAllFirmwareRelease.ts +48 -4
- package/src/types/api/detectDeviceConnectProtocol.ts +6 -0
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +13 -2
- package/src/types/api/export.ts +9 -0
- package/src/types/api/firmwareUpdate.ts +26 -5
- package/src/types/api/getDeviceState.ts +19 -0
- package/src/types/api/getFeatures.ts +3 -0
- package/src/types/api/getOnekeyFeatures.ts +3 -0
- package/src/types/api/getPassphraseState.ts +9 -11
- package/src/types/api/index.ts +38 -64
- package/src/types/api/kaspaSignTransaction.ts +60 -4
- package/src/types/api/openWalletSession.ts +54 -0
- package/src/types/api/protocolV2.ts +33 -141
- package/src/types/api/sessionCache.ts +19 -0
- package/src/types/device.ts +200 -10
- package/src/types/params.ts +9 -2
- package/src/types/settings.ts +76 -24
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +185 -0
- package/src/utils/deviceFeaturesUtils.ts +65 -47
- package/src/utils/deviceInfoUtils.ts +29 -69
- package/src/utils/deviceSettings.ts +174 -39
- package/src/utils/deviceVersionUtils.ts +25 -44
- package/src/utils/findDefectiveBatchDevice.ts +3 -3
- package/src/utils/homescreen.ts +36 -0
- package/src/utils/index.ts +27 -3
- package/src/utils/networkUtils.ts +274 -16
- package/src/utils/pro2Nft.ts +142 -0
- package/src/utils/pro2Wallpaper.ts +130 -0
- package/src/utils/tracing.ts +3 -1
- package/src/utils/uiProgressThrottle.ts +63 -0
- package/tsconfig.type-tests.json +12 -0
- package/dist/api/GetDeviceInfo.d.ts +0 -9
- package/dist/api/GetDeviceInfo.d.ts.map +0 -1
- package/dist/api/firmware/progressThrottle.d.ts +0 -3
- package/dist/api/firmware/progressThrottle.d.ts.map +0 -1
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts +0 -13
- package/dist/api/protocol-v2/FilesystemDiskControl.d.ts.map +0 -1
- package/dist/deviceProfile/buildDeviceProfile.d.ts +0 -21
- package/dist/deviceProfile/buildDeviceProfile.d.ts.map +0 -1
- package/dist/types/api/getDeviceInfo.d.ts +0 -87
- package/dist/types/api/getDeviceInfo.d.ts.map +0 -1
- package/src/api/GetDeviceInfo.ts +0 -145
- package/src/api/firmware/progressThrottle.ts +0 -44
- package/src/api/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -352
- package/src/types/api/getDeviceInfo.ts +0 -101
package/src/core/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import semver from 'semver';
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
+
import { DeviceSessionPinType, TRANSPORT_EVENT } from '@onekeyfe/hd-transport';
|
|
3
4
|
import {
|
|
4
5
|
ERRORS,
|
|
5
6
|
ERROR_CODES_REQUIRE_RELEASE,
|
|
@@ -14,14 +15,7 @@ import {
|
|
|
14
15
|
createNewFirmwareUnReleaseHardwareError,
|
|
15
16
|
} from '@onekeyfe/hd-shared';
|
|
16
17
|
|
|
17
|
-
import {
|
|
18
|
-
LoggerNames,
|
|
19
|
-
enableLog,
|
|
20
|
-
getLogger,
|
|
21
|
-
isMethodVersionRangeUnsupported,
|
|
22
|
-
setLoggerPostMessage,
|
|
23
|
-
wait,
|
|
24
|
-
} from '../utils';
|
|
18
|
+
import { LoggerNames, enableLog, getLogger, setLoggerPostMessage, wait } from '../utils';
|
|
25
19
|
import {
|
|
26
20
|
findDefectiveBatchDevice,
|
|
27
21
|
getDefectiveDeviceInfo,
|
|
@@ -32,10 +26,12 @@ import {
|
|
|
32
26
|
createRequestContext,
|
|
33
27
|
createSdkTracingContext,
|
|
34
28
|
formatRequestContext,
|
|
29
|
+
generateInstanceId,
|
|
35
30
|
getActiveRequestsByDeviceInstance,
|
|
36
31
|
updateRequestContext,
|
|
37
32
|
} from '../utils/tracing';
|
|
38
33
|
import { Device } from '../device/Device';
|
|
34
|
+
import { checkLiveDeviceId } from '../device/deviceIdentity';
|
|
39
35
|
import { DeviceList } from '../device/DeviceList';
|
|
40
36
|
import { DevicePool } from '../device/DevicePool';
|
|
41
37
|
import { PollingStateManager } from './PollingStateManager';
|
|
@@ -51,18 +47,33 @@ import {
|
|
|
51
47
|
createDeviceMessage,
|
|
52
48
|
createResponseMessage,
|
|
53
49
|
createUiMessage,
|
|
50
|
+
formatLogMethodLabel,
|
|
51
|
+
getLogBlockLabel,
|
|
52
|
+
getSafeLogPayload,
|
|
54
53
|
} from '../events';
|
|
55
54
|
import TransportManager from '../data-manager/TransportManager';
|
|
56
55
|
import DeviceConnector from '../device/DeviceConnector';
|
|
57
56
|
import RequestQueue from './RequestQueue';
|
|
57
|
+
import { findUiPromiseForResponse, rejectUiPromises } from './uiPromiseRegistry';
|
|
58
|
+
import { registerHardwareUiEventListeners } from './deviceEventRegistration';
|
|
58
59
|
import { getSynchronize } from '../utils/getSynchronize';
|
|
60
|
+
import { runMethodWithUnlockPolicy } from '../protocols/protocol-v2/unlockPolicyRunner';
|
|
61
|
+
import {
|
|
62
|
+
ProtocolV2UiInteractionCoordinator,
|
|
63
|
+
isProtocolV2UiEnabled,
|
|
64
|
+
} from '../protocols/protocol-v2/uiInteraction';
|
|
65
|
+
import { createUiProgressMessageFilter } from '../utils/uiProgressThrottle';
|
|
59
66
|
|
|
60
67
|
import type { ConnectSettings, Features, KnownDevice } from '../types';
|
|
61
68
|
import type { CoreMessage, IFrameCallMessage, UiPromise, UiPromiseResponse } from '../events';
|
|
62
69
|
import type { DeviceEvents, InitOptions, RunOptions } from '../device/Device';
|
|
63
70
|
import type { SdkTracingContext } from '../utils/tracing';
|
|
64
71
|
import type { Deferred } from '@onekeyfe/hd-shared';
|
|
65
|
-
import type {
|
|
72
|
+
import type {
|
|
73
|
+
LowlevelTransportSharedPlugin,
|
|
74
|
+
OneKeyDeviceInfo,
|
|
75
|
+
TransportDeviceDisconnectEvent,
|
|
76
|
+
} from '@onekeyfe/hd-transport';
|
|
66
77
|
import type { BaseMethod } from '../api/BaseMethod';
|
|
67
78
|
|
|
68
79
|
const Log = getLogger(LoggerNames.Core);
|
|
@@ -91,14 +102,15 @@ function hasDeriveCardano(method: BaseMethod): boolean {
|
|
|
91
102
|
|
|
92
103
|
const parseInitOptions = (method?: BaseMethod): InitOptions => ({
|
|
93
104
|
initSession: method?.payload.initSession,
|
|
94
|
-
passphraseState: method?.payload.passphraseState,
|
|
105
|
+
passphraseState: method?.payload.useEmptyPassphrase ? undefined : method?.payload.passphraseState,
|
|
95
106
|
deviceId: method?.payload.deviceId,
|
|
96
107
|
deriveCardano: method && hasDeriveCardano(method),
|
|
97
108
|
connectProtocol: method?.payload.connectProtocol,
|
|
109
|
+
forceProtocolDetection: method?.payload.forceProtocolDetection,
|
|
98
110
|
protocolV2DeviceInfoTimeoutMs: method?.payload.protocolV2DeviceInfoTimeoutMs,
|
|
99
111
|
});
|
|
100
112
|
|
|
101
|
-
let _core: Core;
|
|
113
|
+
let _core: Core | undefined;
|
|
102
114
|
let _deviceList: DeviceList | undefined;
|
|
103
115
|
let _connector: DeviceConnector | undefined;
|
|
104
116
|
let _uiPromises: UiPromise<UiPromiseResponse['type']>[] = []; // Waiting for ui response
|
|
@@ -142,11 +154,16 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
|
|
|
142
154
|
}
|
|
143
155
|
|
|
144
156
|
// find api method
|
|
145
|
-
let method
|
|
157
|
+
let method!: BaseMethod;
|
|
146
158
|
try {
|
|
147
159
|
method = findMethod(message as IFrameCallMessage);
|
|
148
160
|
method.connector = _connector;
|
|
149
|
-
|
|
161
|
+
const shouldPostMessage = createUiProgressMessageFilter();
|
|
162
|
+
method.postMessage = event => {
|
|
163
|
+
if (shouldPostMessage(event)) {
|
|
164
|
+
postMessage(event);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
150
167
|
method.setContext?.(context);
|
|
151
168
|
|
|
152
169
|
method.requestContext = createRequestContext(method.responseID, method.name, {
|
|
@@ -158,11 +175,13 @@ export const callAPI = async (context: CoreContext, message: CoreMessage) => {
|
|
|
158
175
|
|
|
159
176
|
method.init();
|
|
160
177
|
} catch (error) {
|
|
161
|
-
|
|
178
|
+
if (method) {
|
|
179
|
+
completeMethodRequestContext(method, error);
|
|
180
|
+
method.dispose();
|
|
181
|
+
}
|
|
182
|
+
return createResponseMessage(method?.responseID ?? message.id, false, { error });
|
|
162
183
|
}
|
|
163
184
|
|
|
164
|
-
DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
165
|
-
|
|
166
185
|
if (!method.useDevice) {
|
|
167
186
|
updateMethodRequestContext(method, { status: 'running' });
|
|
168
187
|
try {
|
|
@@ -357,7 +376,7 @@ const onCallDevice = async (
|
|
|
357
376
|
);
|
|
358
377
|
} catch (e) {
|
|
359
378
|
preWarmCallbackTask?.resolve();
|
|
360
|
-
|
|
379
|
+
Log.debug('ensureConnected error: ', e);
|
|
361
380
|
|
|
362
381
|
completeMethodRequestContext(method, e);
|
|
363
382
|
|
|
@@ -394,18 +413,28 @@ const onCallDevice = async (
|
|
|
394
413
|
);
|
|
395
414
|
}
|
|
396
415
|
|
|
397
|
-
device
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
416
|
+
registerHardwareUiEventListeners(device, {
|
|
417
|
+
pin: onDevicePinHandler,
|
|
418
|
+
pinOnDevice: onEnterPinOnDeviceHandler,
|
|
419
|
+
pinOnDeviceComplete: onPinOnDeviceCompleteHandler,
|
|
420
|
+
button: onDeviceButtonHandler,
|
|
421
|
+
passphrase: message.payload.useEmptyPassphrase
|
|
422
|
+
? onEmptyPassphraseHandler
|
|
423
|
+
: onDevicePassphraseHandler,
|
|
424
|
+
passphraseOnDevice: onEnterPassphraseOnDeviceHandler,
|
|
425
|
+
attachPinOnDevice: onEnterAttachPinOnDeviceHandler,
|
|
426
|
+
});
|
|
404
427
|
device.on(DEVICE.FEATURES, onDeviceFeaturesHandler);
|
|
428
|
+
device.on(DEVICE.STATE, onDeviceStateHandler);
|
|
405
429
|
device.on(
|
|
406
430
|
DEVICE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE,
|
|
407
431
|
onSelectDeviceInBootloaderForWebDeviceHandler
|
|
408
432
|
);
|
|
433
|
+
|
|
434
|
+
const protocolV2UiCoordinator = new ProtocolV2UiInteractionCoordinator(device, postMessage);
|
|
435
|
+
let protocolV2Operation = false;
|
|
436
|
+
let protocolV2CloseEmitted = false;
|
|
437
|
+
device.beginProtocolV2UiInteraction();
|
|
409
438
|
device.on(
|
|
410
439
|
DEVICE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE,
|
|
411
440
|
onSelectDeviceForSwitchFirmwareWebDeviceHandler
|
|
@@ -420,11 +449,10 @@ const onCallDevice = async (
|
|
|
420
449
|
await waitForPendingPromise(getPrePendingCallPromise, setPrePendingCallPromise);
|
|
421
450
|
|
|
422
451
|
const inner = async (): Promise<void> => {
|
|
423
|
-
// Protocol
|
|
424
|
-
//
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
}
|
|
452
|
+
// Protocol is established from an active device response during acquire/initialize.
|
|
453
|
+
// Reject unsupported methods before any method-specific device command is sent.
|
|
454
|
+
method.assertProtocolSupported(device.getProtocol(), device.getCurrentFirmwareType());
|
|
455
|
+
protocolV2Operation = device.isProtocolV2();
|
|
428
456
|
|
|
429
457
|
// check firmware version
|
|
430
458
|
const versionRange = device.getCurrentMethodVersionRange(
|
|
@@ -435,8 +463,8 @@ const onCallDevice = async (
|
|
|
435
463
|
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
436
464
|
let newVersionStatus: ReturnType<typeof DataManager.getFirmwareStatus> | undefined;
|
|
437
465
|
|
|
438
|
-
//
|
|
439
|
-
// Pro2
|
|
466
|
+
// Defective-batch and forced-update gates depend on V1 features/remote config.
|
|
467
|
+
// Pro2 joins after DataManager supports its profile firmwareStatus.
|
|
440
468
|
if (device.features && !device.isProtocolV2()) {
|
|
441
469
|
await DataManager.checkAndReloadData();
|
|
442
470
|
|
|
@@ -484,10 +512,6 @@ const onCallDevice = async (
|
|
|
484
512
|
}
|
|
485
513
|
}
|
|
486
514
|
|
|
487
|
-
if (isMethodVersionRangeUnsupported(versionRange)) {
|
|
488
|
-
throw createDeviceNotSupportMethodError(method.name, deviceFirmwareType);
|
|
489
|
-
}
|
|
490
|
-
|
|
491
515
|
if (versionRange) {
|
|
492
516
|
if (semver.valid(versionRange.min) && semver.lt(currentFirmwareVersion, versionRange.min)) {
|
|
493
517
|
if (newVersionStatus === 'none' || newVersionStatus === 'valid') {
|
|
@@ -538,89 +562,102 @@ const onCallDevice = async (
|
|
|
538
562
|
);
|
|
539
563
|
}
|
|
540
564
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
565
|
+
try {
|
|
566
|
+
let deviceIdCheckedDuringUnlockPreflight = false;
|
|
567
|
+
const response = await runMethodWithUnlockPolicy<object>(method, device, {
|
|
568
|
+
uiCoordinator: protocolV2UiCoordinator,
|
|
569
|
+
afterStatusBeforeUnlock: () => {
|
|
570
|
+
if (method.deviceId && method.checkDeviceId) {
|
|
571
|
+
if (!device.checkDeviceId(method.deviceId)) {
|
|
572
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
573
|
+
}
|
|
574
|
+
deviceIdCheckedDuringUnlockPreflight = true;
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
prepare: async () => {
|
|
578
|
+
if (method.deviceId && method.checkDeviceId && !deviceIdCheckedDuringUnlockPreflight) {
|
|
579
|
+
const isSameDeviceID = await checkLiveDeviceId(device, method.deviceId);
|
|
580
|
+
if (!isSameDeviceID) {
|
|
581
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckDeviceIdError);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
552
584
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
585
|
+
/**
|
|
586
|
+
* check firmware release info
|
|
587
|
+
*/
|
|
588
|
+
method.checkFirmwareRelease();
|
|
557
589
|
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
590
|
+
/**
|
|
591
|
+
* check additional supported feature
|
|
592
|
+
*/
|
|
593
|
+
method.checkDeviceSupportFeature();
|
|
562
594
|
|
|
563
|
-
|
|
564
|
-
|
|
595
|
+
// reconfigure messages
|
|
596
|
+
if (_deviceList && device.features && !device.isProtocolV2()) {
|
|
597
|
+
await TransportManager.reconfigure(device.features);
|
|
598
|
+
}
|
|
565
599
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
600
|
+
// Check to see if it is safe to use Passphrase
|
|
601
|
+
checkPassphraseEnableState(method, device.features);
|
|
602
|
+
|
|
603
|
+
if (shouldCheckPassphraseState(method, device)) {
|
|
604
|
+
// check version
|
|
605
|
+
const support = device.supportNewPassphrase();
|
|
606
|
+
if (!support.support) {
|
|
607
|
+
throw ERRORS.TypedError(
|
|
608
|
+
HardwareErrorCode.DeviceNotSupportPassphrase,
|
|
609
|
+
`Device not support passphrase, please update to ${support.require}`,
|
|
610
|
+
{
|
|
611
|
+
require: support.require,
|
|
612
|
+
}
|
|
613
|
+
);
|
|
576
614
|
}
|
|
577
|
-
)
|
|
578
|
-
);
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
// Check Device passphrase State
|
|
582
|
-
const passphraseStateSafety = await device.checkPassphraseStateSafety(
|
|
583
|
-
method.payload?.passphraseState,
|
|
584
|
-
method.payload?.useEmptyPassphrase,
|
|
585
|
-
method.payload?.skipPassphraseCheck
|
|
586
|
-
);
|
|
587
615
|
|
|
588
|
-
|
|
589
|
-
|
|
616
|
+
// Check Device passphrase State after the Protocol V2 pre-unlock gate.
|
|
617
|
+
const passphraseStateSafety = await device.checkPassphraseStateSafety(
|
|
618
|
+
method.payload?.passphraseState,
|
|
619
|
+
method.payload?.useEmptyPassphrase,
|
|
620
|
+
method.payload?.skipPassphraseCheck,
|
|
621
|
+
hasDeriveCardano(method)
|
|
622
|
+
);
|
|
590
623
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
return Promise.reject(
|
|
594
|
-
ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError)
|
|
595
|
-
);
|
|
596
|
-
}
|
|
624
|
+
// Double check, handles the special case of Touch/Pro
|
|
625
|
+
checkPassphraseEnableState(method, device.features);
|
|
597
626
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
627
|
+
if (!passphraseStateSafety) {
|
|
628
|
+
DevicePool.clearDeviceCache(method.payload.connectId);
|
|
629
|
+
throw ERRORS.TypedError(HardwareErrorCode.DeviceCheckPassphraseStateError);
|
|
630
|
+
}
|
|
601
631
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
? e
|
|
609
|
-
: ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
|
|
610
|
-
// messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
611
|
-
// requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
612
|
-
// return;
|
|
613
|
-
throw error;
|
|
614
|
-
}
|
|
632
|
+
// Protocol V2 emits the PIN phase completion from DeviceSessionAskPin.
|
|
633
|
+
// Keep the legacy compatibility close for Protocol V1 only.
|
|
634
|
+
if (!device.isProtocolV2()) {
|
|
635
|
+
postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW));
|
|
636
|
+
}
|
|
637
|
+
}
|
|
615
638
|
|
|
616
|
-
|
|
639
|
+
// Automatic check safety_check level for Kovan, Ropsten, Rinkeby, Goerli test networks.
|
|
640
|
+
try {
|
|
641
|
+
await method.checkSafetyLevelOnTestNet();
|
|
642
|
+
} catch (e) {
|
|
643
|
+
throw e instanceof HardwareError
|
|
644
|
+
? e
|
|
645
|
+
: ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'open safety check failed.');
|
|
646
|
+
}
|
|
617
647
|
|
|
618
|
-
|
|
619
|
-
|
|
648
|
+
method.device?.commands?.checkDisposed();
|
|
649
|
+
},
|
|
650
|
+
});
|
|
620
651
|
messageResponse = createResponseMessage(method.responseID, true, response);
|
|
621
652
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
622
653
|
completeMethodRequestContext(method);
|
|
623
654
|
} catch (error) {
|
|
655
|
+
// Device.run may release the request before transport callbacks finish after a timeout.
|
|
656
|
+
// Ignore the stale callback because the caller already received the connection error.
|
|
657
|
+
if (!requestQueue.getTask(method.responseID)) {
|
|
658
|
+
Log.debug(`Call API - Ignore late inner method result`, error);
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
624
661
|
Log.debug(`Call API - Inner Method Run Error`, error);
|
|
625
662
|
messageResponse = createResponseMessage(method.responseID, false, { error });
|
|
626
663
|
requestQueue.resolveRequest(method.responseID, messageResponse);
|
|
@@ -633,6 +670,13 @@ const onCallDevice = async (
|
|
|
633
670
|
) {
|
|
634
671
|
throw error;
|
|
635
672
|
}
|
|
673
|
+
} finally {
|
|
674
|
+
if (isProtocolV2UiEnabled(method)) {
|
|
675
|
+
protocolV2CloseEmitted = protocolV2UiCoordinator.close({
|
|
676
|
+
ensureOperationClose: protocolV2Operation,
|
|
677
|
+
protocolV2Operation,
|
|
678
|
+
});
|
|
679
|
+
}
|
|
636
680
|
}
|
|
637
681
|
};
|
|
638
682
|
Log.debug('Call API - Device Run: ', device.mainId);
|
|
@@ -686,7 +730,17 @@ const onCallDevice = async (
|
|
|
686
730
|
|
|
687
731
|
requestQueue.releaseTask(method.responseID);
|
|
688
732
|
|
|
689
|
-
|
|
733
|
+
if (isProtocolV2UiEnabled(method)) {
|
|
734
|
+
if (!protocolV2CloseEmitted && protocolV2Operation) {
|
|
735
|
+
protocolV2CloseEmitted = protocolV2UiCoordinator.close({
|
|
736
|
+
ensureOperationClose: true,
|
|
737
|
+
protocolV2Operation: true,
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
if (!protocolV2CloseEmitted) {
|
|
741
|
+
closePopup();
|
|
742
|
+
}
|
|
743
|
+
}
|
|
690
744
|
|
|
691
745
|
cleanup();
|
|
692
746
|
|
|
@@ -848,8 +902,23 @@ function isRetryableBleProtocolV2ProbeError(method: BaseMethod, error: unknown)
|
|
|
848
902
|
*/
|
|
849
903
|
async function connectDeviceForBle(method: BaseMethod, device: Device, retryCount = 0) {
|
|
850
904
|
try {
|
|
851
|
-
|
|
905
|
+
if (method.payload.forceProtocolDetection && device.hasDeviceAcquire()) {
|
|
906
|
+
await device.release();
|
|
907
|
+
}
|
|
908
|
+
const shouldAcquire =
|
|
909
|
+
method.payload.forceProtocolDetection ||
|
|
910
|
+
!device.hasDeviceAcquire() ||
|
|
911
|
+
!device.commands ||
|
|
912
|
+
device.commands.disposed;
|
|
913
|
+
if (shouldAcquire) {
|
|
914
|
+
await device.acquire(method.payload.connectProtocol, {
|
|
915
|
+
forceProtocolDetection: method.payload.forceProtocolDetection,
|
|
916
|
+
});
|
|
917
|
+
}
|
|
852
918
|
if (method.payload?.onlyConnectBleDevice) {
|
|
919
|
+
if (shouldAcquire) {
|
|
920
|
+
DevicePool.emitter.emit(DEVICE.CONNECT, device);
|
|
921
|
+
}
|
|
853
922
|
return;
|
|
854
923
|
}
|
|
855
924
|
// Skip initialize if conditions are met
|
|
@@ -860,6 +929,9 @@ async function connectDeviceForBle(method: BaseMethod, device: Device, retryCoun
|
|
|
860
929
|
passphraseState: initOptions.passphraseState,
|
|
861
930
|
});
|
|
862
931
|
}
|
|
932
|
+
if (shouldAcquire) {
|
|
933
|
+
DevicePool.emitter.emit(DEVICE.CONNECT, device);
|
|
934
|
+
}
|
|
863
935
|
} catch (err) {
|
|
864
936
|
if (
|
|
865
937
|
(err.errorCode === HardwareErrorCode.BleTimeoutError ||
|
|
@@ -1154,14 +1226,17 @@ const shouldCheckPassphraseState = (method: BaseMethod, device: Device) => {
|
|
|
1154
1226
|
};
|
|
1155
1227
|
|
|
1156
1228
|
const cleanup = () => {
|
|
1229
|
+
const pendingUiPromises = _uiPromises;
|
|
1157
1230
|
_uiPromises = [];
|
|
1231
|
+
rejectUiPromises(
|
|
1232
|
+
pendingUiPromises,
|
|
1233
|
+
ERRORS.TypedError(HardwareErrorCode.ActionCancelled, 'UI request was cancelled')
|
|
1234
|
+
);
|
|
1158
1235
|
Log.debug('Cleanup...');
|
|
1159
1236
|
};
|
|
1160
1237
|
|
|
1161
1238
|
const removeDeviceListener = (device: Device) => {
|
|
1162
1239
|
device.removeAllListeners();
|
|
1163
|
-
DevicePool.emitter.removeAllListeners(DEVICE.CONNECT);
|
|
1164
|
-
// DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1165
1240
|
};
|
|
1166
1241
|
|
|
1167
1242
|
/**
|
|
@@ -1172,16 +1247,30 @@ const closePopup = () => {
|
|
|
1172
1247
|
};
|
|
1173
1248
|
|
|
1174
1249
|
const onDeviceConnectHandler = (device: Device) => {
|
|
1175
|
-
const
|
|
1176
|
-
|
|
1177
|
-
postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject
|
|
1250
|
+
const deviceObject = device.toMessageObject();
|
|
1251
|
+
if (!deviceObject) return;
|
|
1252
|
+
postMessage(createDeviceMessage(DEVICE.CONNECT, { device: deviceObject }));
|
|
1178
1253
|
};
|
|
1179
1254
|
|
|
1180
1255
|
const onDeviceDisconnectHandler = (device: Device) => {
|
|
1181
1256
|
device.clearPreInitialized();
|
|
1182
|
-
const
|
|
1183
|
-
|
|
1184
|
-
postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject
|
|
1257
|
+
const deviceObject = device.toMessageObject();
|
|
1258
|
+
if (!deviceObject) return;
|
|
1259
|
+
postMessage(createDeviceMessage(DEVICE.DISCONNECT, { device: deviceObject }));
|
|
1260
|
+
};
|
|
1261
|
+
|
|
1262
|
+
const onTransportDeviceDisconnectHandler = (event: TransportDeviceDisconnectEvent) => {
|
|
1263
|
+
const device =
|
|
1264
|
+
deviceCacheMap.get(event.connectId) ??
|
|
1265
|
+
DevicePool.devicesCache[event.connectId] ??
|
|
1266
|
+
DevicePool.getDeviceByPath(event.connectId);
|
|
1267
|
+
if (!device) {
|
|
1268
|
+
Log.debug('Ignoring transport disconnect for an unknown device:', event.connectId);
|
|
1269
|
+
return;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
device.markTransportDisconnected();
|
|
1273
|
+
DevicePool.emitter.emit(DEVICE.DISCONNECT, device);
|
|
1185
1274
|
};
|
|
1186
1275
|
|
|
1187
1276
|
const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin']) => {
|
|
@@ -1193,6 +1282,7 @@ const onDevicePinHandler = async (...[device, type, callback]: DeviceEvents['pin
|
|
|
1193
1282
|
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1194
1283
|
device: device.toMessageObject() as unknown as KnownDevice,
|
|
1195
1284
|
type,
|
|
1285
|
+
responseCorrelation: uiPromise.responseCorrelation,
|
|
1196
1286
|
})
|
|
1197
1287
|
);
|
|
1198
1288
|
// wait for pin
|
|
@@ -1222,6 +1312,10 @@ const onDeviceFeaturesHandler = (...[_, features]: [...DeviceEvents['features']]
|
|
|
1222
1312
|
postMessage(createDeviceMessage(DEVICE.FEATURES, { ...features }));
|
|
1223
1313
|
};
|
|
1224
1314
|
|
|
1315
|
+
const onDeviceStateHandler = (...[_, stateEvent]: [...DeviceEvents['state']]) => {
|
|
1316
|
+
postMessage(createDeviceMessage(DEVICE.STATE, stateEvent));
|
|
1317
|
+
};
|
|
1318
|
+
|
|
1225
1319
|
const onDevicePassphraseHandler = async (
|
|
1226
1320
|
...[device, requestPayload, callback]: DeviceEvents['passphrase']
|
|
1227
1321
|
) => {
|
|
@@ -1232,6 +1326,12 @@ const onDevicePassphraseHandler = async (
|
|
|
1232
1326
|
device: device.toMessageObject() as KnownDevice,
|
|
1233
1327
|
passphraseState: device.passphraseState,
|
|
1234
1328
|
existsAttachPinUser: requestPayload.existsAttachPinUser,
|
|
1329
|
+
deviceOnly: requestPayload.deviceOnly,
|
|
1330
|
+
source: requestPayload.source,
|
|
1331
|
+
reason: requestPayload.reason,
|
|
1332
|
+
expectedPassphraseState: requestPayload.expectedPassphraseState,
|
|
1333
|
+
...(requestPayload.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1334
|
+
responseCorrelation: uiPromise.responseCorrelation,
|
|
1235
1335
|
})
|
|
1236
1336
|
);
|
|
1237
1337
|
// wait for passphrase
|
|
@@ -1253,16 +1353,61 @@ const onEmptyPassphraseHandler = (...[_, , callback]: DeviceEvents['passphrase']
|
|
|
1253
1353
|
};
|
|
1254
1354
|
|
|
1255
1355
|
const onEnterPassphraseOnDeviceHandler = (
|
|
1256
|
-
...[device]: [...DeviceEvents['passphrase_on_device']]
|
|
1356
|
+
...[device, requestPayload]: [...DeviceEvents['passphrase_on_device']]
|
|
1257
1357
|
) => {
|
|
1258
1358
|
postMessage(
|
|
1259
1359
|
createUiMessage(UI_REQUEST.REQUEST_PASSPHRASE_ON_DEVICE, {
|
|
1260
1360
|
device: device.toMessageObject() as KnownDevice,
|
|
1261
1361
|
passphraseState: device.passphraseState,
|
|
1362
|
+
source: requestPayload?.source,
|
|
1363
|
+
reason: requestPayload?.reason,
|
|
1364
|
+
...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1365
|
+
})
|
|
1366
|
+
);
|
|
1367
|
+
};
|
|
1368
|
+
|
|
1369
|
+
const onEnterAttachPinOnDeviceHandler = (
|
|
1370
|
+
...[device, requestPayload]: [...DeviceEvents['attach_pin_on_device']]
|
|
1371
|
+
) => {
|
|
1372
|
+
postMessage(
|
|
1373
|
+
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1374
|
+
device: device.toMessageObject() as KnownDevice,
|
|
1375
|
+
type: 'ButtonRequest_AttachPin',
|
|
1376
|
+
source: requestPayload?.source,
|
|
1377
|
+
reason: requestPayload?.reason,
|
|
1378
|
+
...(requestPayload?.interaction ? { interaction: requestPayload.interaction } : {}),
|
|
1379
|
+
})
|
|
1380
|
+
);
|
|
1381
|
+
};
|
|
1382
|
+
|
|
1383
|
+
const onEnterPinOnDeviceHandler = (
|
|
1384
|
+
...[device, pinType, metadata]: [...DeviceEvents['pin_on_device']]
|
|
1385
|
+
) => {
|
|
1386
|
+
postMessage(
|
|
1387
|
+
createUiMessage(UI_REQUEST.REQUEST_PIN, {
|
|
1388
|
+
device: device.toMessageObject() as KnownDevice,
|
|
1389
|
+
type:
|
|
1390
|
+
pinType === DeviceSessionPinType.AttachToPin
|
|
1391
|
+
? 'ButtonRequest_AttachPin'
|
|
1392
|
+
: 'ButtonRequest_PinEntry',
|
|
1393
|
+
source: metadata?.source,
|
|
1394
|
+
reason: metadata?.reason,
|
|
1395
|
+
deviceOnly: metadata?.deviceOnly ?? true,
|
|
1396
|
+
completion: metadata?.completion,
|
|
1397
|
+
method: metadata?.method,
|
|
1398
|
+
page: metadata?.page,
|
|
1399
|
+
operation: metadata?.operation,
|
|
1400
|
+
...(metadata?.interaction ? { interaction: metadata.interaction } : {}),
|
|
1262
1401
|
})
|
|
1263
1402
|
);
|
|
1264
1403
|
};
|
|
1265
1404
|
|
|
1405
|
+
const onPinOnDeviceCompleteHandler = (
|
|
1406
|
+
...[_, metadata]: [...DeviceEvents['pin_on_device_complete']]
|
|
1407
|
+
) => {
|
|
1408
|
+
postMessage(createUiMessage(UI_REQUEST.CLOSE_UI_PIN_WINDOW, metadata));
|
|
1409
|
+
};
|
|
1410
|
+
|
|
1266
1411
|
const onSelectDeviceInBootloaderForWebDeviceHandler = async (
|
|
1267
1412
|
...[device, callback]: [...DeviceEvents['select_device_in_bootloader_for_web_device']]
|
|
1268
1413
|
) => {
|
|
@@ -1310,14 +1455,21 @@ const postMessage = (message: CoreMessage) => {
|
|
|
1310
1455
|
|
|
1311
1456
|
const createUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T, device?: Device) => {
|
|
1312
1457
|
const uiPromise: UiPromise<T> = createDeferred(promiseEvent, device);
|
|
1458
|
+
if (
|
|
1459
|
+
device &&
|
|
1460
|
+
(promiseEvent === UI_RESPONSE.RECEIVE_PIN || promiseEvent === UI_RESPONSE.RECEIVE_PASSPHRASE)
|
|
1461
|
+
) {
|
|
1462
|
+
const publicDeviceId = device.toMessageObject()?.deviceId;
|
|
1463
|
+
uiPromise.responseCorrelation = {
|
|
1464
|
+
interactionId: generateInstanceId('UiResponse', device.sdkInstanceId),
|
|
1465
|
+
deviceId: publicDeviceId || device.instanceId,
|
|
1466
|
+
};
|
|
1467
|
+
}
|
|
1313
1468
|
_uiPromises.push(uiPromise as any);
|
|
1314
1469
|
|
|
1315
1470
|
return uiPromise;
|
|
1316
1471
|
};
|
|
1317
1472
|
|
|
1318
|
-
const findUiPromise = <T extends UiPromiseResponse['type']>(promiseEvent: T) =>
|
|
1319
|
-
_uiPromises.find(p => p.id === promiseEvent);
|
|
1320
|
-
|
|
1321
1473
|
const removeUiPromise = (promise: Deferred<any>) => {
|
|
1322
1474
|
_uiPromises = _uiPromises.filter(p => p !== promise);
|
|
1323
1475
|
};
|
|
@@ -1329,6 +1481,8 @@ export default class Core extends EventEmitter {
|
|
|
1329
1481
|
|
|
1330
1482
|
private requestQueue = new RequestQueue();
|
|
1331
1483
|
|
|
1484
|
+
private disposePromise?: Promise<void>;
|
|
1485
|
+
|
|
1332
1486
|
// background task
|
|
1333
1487
|
private prePendingCallPromise: Promise<void> | undefined;
|
|
1334
1488
|
|
|
@@ -1367,11 +1521,16 @@ export default class Core extends EventEmitter {
|
|
|
1367
1521
|
case UI_RESPONSE.RECEIVE_PASSPHRASE:
|
|
1368
1522
|
case UI_RESPONSE.SELECT_DEVICE_IN_BOOTLOADER_FOR_WEB_DEVICE:
|
|
1369
1523
|
case UI_RESPONSE.SELECT_DEVICE_FOR_SWITCH_FIRMWARE_WEB_DEVICE: {
|
|
1370
|
-
const uiPromise =
|
|
1524
|
+
const uiPromise = findUiPromiseForResponse(_uiPromises, message);
|
|
1371
1525
|
if (uiPromise) {
|
|
1372
1526
|
Log.log('receive UI Response: ', message.type);
|
|
1373
1527
|
uiPromise.resolve(message);
|
|
1374
1528
|
removeUiPromise(uiPromise);
|
|
1529
|
+
} else if (
|
|
1530
|
+
message.type === UI_RESPONSE.RECEIVE_PIN ||
|
|
1531
|
+
message.type === UI_RESPONSE.RECEIVE_PASSPHRASE
|
|
1532
|
+
) {
|
|
1533
|
+
Log.warn('Ignored unmatched or ambiguous sensitive UI response:', message.type);
|
|
1375
1534
|
}
|
|
1376
1535
|
break;
|
|
1377
1536
|
}
|
|
@@ -1387,10 +1546,17 @@ export default class Core extends EventEmitter {
|
|
|
1387
1546
|
}
|
|
1388
1547
|
|
|
1389
1548
|
case IFRAME.CALL: {
|
|
1390
|
-
|
|
1549
|
+
const logBlockLabel = getLogBlockLabel(message);
|
|
1550
|
+
Log.log(
|
|
1551
|
+
formatLogMethodLabel(`[${Date.now()}][CALL_API]`, logBlockLabel),
|
|
1552
|
+
getSafeLogPayload(message, logBlockLabel)
|
|
1553
|
+
);
|
|
1391
1554
|
const response = await callAPI(this.getCoreContext(), message);
|
|
1392
1555
|
const { success, payload } = response;
|
|
1393
|
-
Log.log(
|
|
1556
|
+
Log.log(
|
|
1557
|
+
formatLogMethodLabel(`[${Date.now()}][CALL_API_RESPONSE]`, logBlockLabel),
|
|
1558
|
+
getSafeLogPayload(response, logBlockLabel)
|
|
1559
|
+
);
|
|
1394
1560
|
if (success) {
|
|
1395
1561
|
return response;
|
|
1396
1562
|
}
|
|
@@ -1420,25 +1586,65 @@ export default class Core extends EventEmitter {
|
|
|
1420
1586
|
return Promise.resolve(message);
|
|
1421
1587
|
}
|
|
1422
1588
|
|
|
1423
|
-
dispose() {
|
|
1589
|
+
dispose(): Promise<void> {
|
|
1590
|
+
if (!this.disposePromise) {
|
|
1591
|
+
this.disposePromise = this.disposeResources();
|
|
1592
|
+
}
|
|
1593
|
+
return this.disposePromise;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
private async disposeResources(): Promise<void> {
|
|
1597
|
+
Log.debug(`[Core] Disposing SDK instance: ${this.sdkInstanceId}`);
|
|
1598
|
+
pollingManager.stopAll();
|
|
1599
|
+
this.requestQueue.abortAllRequests();
|
|
1600
|
+
cleanup();
|
|
1601
|
+
|
|
1602
|
+
_connector?.stop();
|
|
1603
|
+
let transportCleanup: Promise<void>;
|
|
1604
|
+
try {
|
|
1605
|
+
transportCleanup = Promise.resolve(TransportManager.getTransport()?.stop?.()).catch(error => {
|
|
1606
|
+
Log.warn('[Core] Transport cleanup failed:', error);
|
|
1607
|
+
});
|
|
1608
|
+
} catch (error) {
|
|
1609
|
+
Log.warn('[Core] Transport cleanup failed:', error);
|
|
1610
|
+
transportCleanup = Promise.resolve();
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
// Preserve synchronous dispose semantics for in-memory state and listeners.
|
|
1424
1614
|
_deviceList = undefined;
|
|
1425
1615
|
_connector = undefined;
|
|
1616
|
+
DevicePool.dispose();
|
|
1426
1617
|
deviceCacheMap.clear();
|
|
1427
1618
|
preWarmInflight.clear();
|
|
1428
1619
|
preWarmDoneAt.clear();
|
|
1429
|
-
|
|
1620
|
+
preConnectCache = { passphraseState: undefined };
|
|
1621
|
+
this.prePendingCallPromise = undefined;
|
|
1622
|
+
this.removeAllListeners();
|
|
1430
1623
|
cleanupSdkInstance(this.sdkInstanceId);
|
|
1624
|
+
if (_core === this) _core = undefined;
|
|
1625
|
+
|
|
1626
|
+
// Transports, especially Node USB, may release native handles asynchronously.
|
|
1627
|
+
await transportCleanup;
|
|
1431
1628
|
}
|
|
1432
1629
|
}
|
|
1433
1630
|
|
|
1434
1631
|
export const initCore = () => {
|
|
1435
|
-
|
|
1436
|
-
|
|
1632
|
+
const core = new Core();
|
|
1633
|
+
_core = core;
|
|
1634
|
+
return core;
|
|
1437
1635
|
};
|
|
1438
1636
|
|
|
1439
1637
|
export const initConnector = () => {
|
|
1440
1638
|
_connector = new DeviceConnector();
|
|
1639
|
+
DevicePool.emitter.removeListener(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
1640
|
+
DevicePool.emitter.removeListener(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1641
|
+
DevicePool.emitter.removeListener(
|
|
1642
|
+
TRANSPORT_EVENT.DEVICE_DISCONNECT,
|
|
1643
|
+
onTransportDeviceDisconnectHandler
|
|
1644
|
+
);
|
|
1645
|
+
DevicePool.emitter.on(DEVICE.CONNECT, onDeviceConnectHandler);
|
|
1441
1646
|
DevicePool.emitter.on(DEVICE.DISCONNECT, onDeviceDisconnectHandler);
|
|
1647
|
+
DevicePool.emitter.on(TRANSPORT_EVENT.DEVICE_DISCONNECT, onTransportDeviceDisconnectHandler);
|
|
1442
1648
|
return _connector;
|
|
1443
1649
|
};
|
|
1444
1650
|
|
|
@@ -1452,12 +1658,8 @@ export const init = async (
|
|
|
1452
1658
|
plugin?: LowlevelTransportSharedPlugin
|
|
1453
1659
|
) => {
|
|
1454
1660
|
try {
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
initTransport(Transport, plugin);
|
|
1458
|
-
} catch {
|
|
1459
|
-
Log.error('DataManager.load error');
|
|
1460
|
-
}
|
|
1661
|
+
await DataManager.load(settings);
|
|
1662
|
+
initTransport(Transport, plugin);
|
|
1461
1663
|
enableLog(DataManager.getSettings('debug'));
|
|
1462
1664
|
if (DataManager.getSettings('env') !== 'react-native') {
|
|
1463
1665
|
setLoggerPostMessage(postMessage);
|
|
@@ -1468,6 +1670,7 @@ export const init = async (
|
|
|
1468
1670
|
return _core;
|
|
1469
1671
|
} catch (error) {
|
|
1470
1672
|
Log.error('core init', error);
|
|
1673
|
+
throw error;
|
|
1471
1674
|
}
|
|
1472
1675
|
};
|
|
1473
1676
|
|