@onekeyfe/hd-core 1.2.0-alpha.4 → 1.2.0-alpha.40
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 +155 -0
- package/__tests__/DeviceCommands.test.ts +517 -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 +282 -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__/device-features-state.test.ts +78 -0
- package/__tests__/device-identity.test.ts +52 -0
- package/__tests__/device-lifecycle-events.test.ts +249 -0
- package/__tests__/device-pool-state.test.ts +144 -0
- package/__tests__/device-settings.test.ts +416 -0
- package/__tests__/device-state-contract.test.ts +27 -0
- package/__tests__/device-state-events.test.ts +286 -0
- package/__tests__/device-state-mapper.test.ts +261 -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 +107 -0
- package/__tests__/device-wallet-session-store.test.ts +478 -0
- package/__tests__/deviceFeaturesUtils.test.ts +39 -0
- package/__tests__/deviceSettings.test.ts +103 -0
- package/__tests__/deviceUploadNft.test.ts +187 -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 +601 -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 +113 -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 +1609 -0
- package/__tests__/pro2Nft.test.ts +108 -0
- package/__tests__/pro2Wallpaper.test.ts +39 -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-ui-lifecycle.test.ts +56 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +96 -0
- package/__tests__/protocol-v2.test.ts +5748 -2387
- package/__tests__/protocolV2FileWrite.test.ts +92 -0
- package/__tests__/protocolV2UiInteraction.test.ts +266 -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 +136 -0
- package/__tests__/tron-sign-message-init.test.ts +74 -0
- package/__tests__/uiProgressThrottle.test.ts +74 -0
- package/dist/api/BaseMethod.d.ts +16 -1
- package/dist/api/BaseMethod.d.ts.map +1 -1
- package/dist/api/CheckAllFirmwareRelease.d.ts +24 -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/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 +23 -14
- 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 +1 -0
- 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/getBinary.d.ts +8 -4
- package/dist/api/firmware/getBinary.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 +35 -0
- package/dist/api/helpers/protocolV2FileWrite.d.ts.map +1 -0
- package/dist/api/index.d.ts +8 -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 +1 -0
- 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/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 +4 -2
- 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 +30 -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 +4 -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 +1 -0
- package/dist/api/solana/SolSignMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignOffchainMessage.d.ts +1 -0
- package/dist/api/solana/SolSignOffchainMessage.d.ts.map +1 -1
- package/dist/api/solana/SolSignTransaction.d.ts +1 -0
- 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 +1 -0
- package/dist/api/sui/SuiGetAddress.d.ts.map +1 -1
- package/dist/api/sui/SuiGetPublicKey.d.ts +1 -0
- package/dist/api/sui/SuiGetPublicKey.d.ts.map +1 -1
- package/dist/api/sui/SuiSignMessage.d.ts +1 -0
- package/dist/api/sui/SuiSignMessage.d.ts.map +1 -1
- package/dist/api/sui/SuiSignTransaction.d.ts +1 -0
- package/dist/api/sui/SuiSignTransaction.d.ts.map +1 -1
- package/dist/api/ton/TonGetAddress.d.ts +1 -0
- 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 +1 -0
- package/dist/api/ton/TonSignMessage.d.ts.map +1 -1
- package/dist/api/ton/TonSignProof.d.ts +1 -0
- 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 +5 -0
- package/dist/api/tron/TronSignMessage.d.ts.map +1 -1
- package/dist/api/tron/TronSignTransaction.d.ts +1 -0
- 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/data-manager/connectSettings.d.ts.map +1 -1
- package/dist/device/Device.d.ts +64 -16
- 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 +1 -1
- 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-request.d.ts +46 -4
- package/dist/events/ui-request.d.ts.map +1 -1
- package/dist/index.d.ts +1442 -712
- package/dist/index.js +7497 -3705
- package/dist/inject.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 +25 -17
- package/dist/protocols/protocol-v2/features.d.ts.map +1 -1
- package/dist/protocols/protocol-v2/firmware.d.ts +1 -0
- 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/settingsUnlockPolicy.d.ts +17 -0
- package/dist/protocols/protocol-v2/settingsUnlockPolicy.d.ts.map +1 -0
- package/dist/protocols/protocol-v2/uiInteraction.d.ts +39 -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 +25 -0
- package/dist/protocols/protocol-v2/walletSession.d.ts.map +1 -0
- package/dist/types/api/checkAllFirmwareRelease.d.ts +25 -4
- package/dist/types/api/checkAllFirmwareRelease.d.ts.map +1 -1
- 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 +1 -1
- package/dist/types/api/deviceUnlock.d.ts.map +1 -1
- package/dist/types/api/export.d.ts +3 -2
- package/dist/types/api/export.d.ts.map +1 -1
- package/dist/types/api/firmwareUpdate.d.ts +6 -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 +19 -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 +132 -8
- package/dist/types/device.d.ts.map +1 -1
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/settings.d.ts +7 -14
- 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 +8 -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 +29 -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 +296 -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/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 +11 -12
- package/src/api/FirmwareUpdateV2.ts +132 -52
- package/src/api/FirmwareUpdateV3.ts +3 -11
- package/src/api/FirmwareUpdateV4.ts +693 -535
- 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 +251 -0
- package/src/api/PathInfo.ts +9 -4
- package/src/api/PromptWebDeviceAccess.ts +2 -7
- package/src/api/SearchDevices.ts +29 -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/AllNetworkGetAddressBase.ts +41 -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 +194 -1
- package/src/api/device/DeviceSupportFeatures.ts +4 -0
- package/src/api/device/DeviceUnlock.ts +14 -1
- 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 +3 -3
- package/src/api/firmware/getBinary.ts +8 -3
- 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 +206 -0
- package/src/api/index.ts +9 -26
- package/src/api/kaspa/KaspaGetAddress.ts +7 -0
- package/src/api/kaspa/KaspaSignTransaction.ts +380 -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/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 +43 -5
- 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 +166 -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 +21 -16
- 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 +4 -0
- package/src/api/solana/SolSignOffchainMessage.ts +4 -0
- package/src/api/solana/SolSignTransaction.ts +4 -0
- 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 +4 -0
- package/src/api/sui/SuiGetPublicKey.ts +4 -0
- package/src/api/sui/SuiSignMessage.ts +4 -0
- package/src/api/sui/SuiSignTransaction.ts +4 -0
- package/src/api/ton/TonGetAddress.ts +4 -0
- package/src/api/ton/TonSignData.ts +5 -1
- package/src/api/ton/TonSignMessage.ts +4 -0
- package/src/api/ton/TonSignProof.ts +4 -0
- package/src/api/tron/TronGetAddress.ts +4 -0
- package/src/api/tron/TronSignMessage.ts +18 -7
- package/src/api/tron/TronSignTransaction.ts +4 -0
- 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 +274 -120
- package/src/data/messages/messages-protocol-v2.json +1161 -477
- package/src/data/messages/messages.json +286 -1
- package/src/data-manager/DataManager.ts +6 -6
- package/src/data-manager/TransportManager.ts +1 -1
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +820 -282
- package/src/device/DeviceCommands.ts +166 -158
- package/src/device/DeviceConnector.ts +10 -7
- package/src/device/DeviceFeaturesState.ts +25 -0
- package/src/device/DevicePool.ts +66 -16
- 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 +224 -190
- package/src/deviceProfile/index.ts +0 -1
- package/src/deviceProfile/protocolV2DeviceIdentity.ts +32 -0
- package/src/events/device.ts +22 -1
- package/src/events/logBlockEvent.ts +80 -2
- package/src/events/ui-request.ts +57 -4
- package/src/inject.ts +16 -41
- package/src/protocols/protocol-v2/deviceSession.ts +24 -0
- package/src/protocols/protocol-v2/features.ts +103 -32
- package/src/protocols/protocol-v2/firmware.ts +2 -1
- package/src/protocols/protocol-v2/index.ts +8 -1
- package/src/protocols/protocol-v2/settingsUnlockPolicy.ts +65 -0
- package/src/protocols/protocol-v2/uiInteraction.ts +236 -0
- package/src/protocols/protocol-v2/unlockPolicy.ts +1 -0
- package/src/protocols/protocol-v2/unlockPolicyRunner.ts +117 -0
- package/src/protocols/protocol-v2/walletSession.ts +360 -0
- package/src/types/api/checkAllFirmwareRelease.ts +46 -4
- package/src/types/api/deviceSettings.ts +26 -2
- package/src/types/api/deviceUnlock.ts +1 -1
- package/src/types/api/export.ts +8 -0
- package/src/types/api/firmwareUpdate.ts +23 -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 +27 -64
- package/src/types/api/kaspaSignTransaction.ts +60 -4
- package/src/types/api/openWalletSession.ts +54 -0
- package/src/types/api/protocolV2.ts +33 -139
- package/src/types/api/sessionCache.ts +19 -0
- package/src/types/device.ts +185 -7
- package/src/types/params.ts +3 -2
- package/src/types/settings.ts +17 -16
- package/src/utils/assets.ts +4 -1
- package/src/utils/deviceFeaturesCompat.ts +180 -0
- package/src/utils/deviceFeaturesUtils.ts +56 -45
- package/src/utils/deviceInfoUtils.ts +27 -69
- package/src/utils/deviceSettings.ts +171 -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 +91 -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/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/protocol-v2/FilesystemDiskControl.ts +0 -50
- package/src/deviceProfile/buildDeviceProfile.ts +0 -352
- package/src/types/api/getDeviceInfo.ts +0 -101
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { ERRORS, HardwareError, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
2
|
+
import {
|
|
3
|
+
DeviceErrorCode,
|
|
4
|
+
DeviceSessionErrorCode,
|
|
5
|
+
type FailureType,
|
|
6
|
+
type Messages,
|
|
7
|
+
type Transport,
|
|
8
|
+
type TransportCallOptions,
|
|
9
|
+
getSafeTransportLogPayload,
|
|
10
|
+
} from '@onekeyfe/hd-transport';
|
|
2
11
|
|
|
3
12
|
import TransportManager from '../data-manager/TransportManager';
|
|
4
|
-
import DataManager from '../data-manager/DataManager';
|
|
5
13
|
import { LoggerNames, getLogger, patchFeatures } from '../utils';
|
|
6
14
|
import { DEVICE, type PassphraseRequestPayload } from '../events';
|
|
7
15
|
import { DeviceModelToTypes } from '../types';
|
|
@@ -12,12 +20,6 @@ import {
|
|
|
12
20
|
} from '../utils/tracing';
|
|
13
21
|
|
|
14
22
|
import type { Device } from './Device';
|
|
15
|
-
import type {
|
|
16
|
-
FailureType,
|
|
17
|
-
Messages,
|
|
18
|
-
Transport,
|
|
19
|
-
TransportCallOptions,
|
|
20
|
-
} from '@onekeyfe/hd-transport';
|
|
21
23
|
|
|
22
24
|
export type PassphrasePromptResponse = {
|
|
23
25
|
passphrase?: string;
|
|
@@ -37,10 +39,6 @@ type TypedCallResponseMap = {
|
|
|
37
39
|
};
|
|
38
40
|
export type DefaultMessageResponse = TypedCallResponseMap[MessageKey];
|
|
39
41
|
|
|
40
|
-
const MAX_DEBUG_ARRAY_ITEMS = 20;
|
|
41
|
-
const MAX_DEBUG_OBJECT_KEYS = 40;
|
|
42
|
-
const MAX_DEBUG_STRING_LENGTH = 512;
|
|
43
|
-
const MAX_DEBUG_DEPTH = 4;
|
|
44
42
|
const HIGH_VOLUME_DEBUG_CALLS = new Set([
|
|
45
43
|
'FilesystemFileRead',
|
|
46
44
|
'FilesystemFileWrite',
|
|
@@ -51,100 +49,27 @@ const HIGH_VOLUME_DEBUG_CALLS = new Set([
|
|
|
51
49
|
'FirmwareUpload',
|
|
52
50
|
'ResourceAck',
|
|
53
51
|
]);
|
|
52
|
+
const DEVICE_SESSION_CALLS = new Set([
|
|
53
|
+
'DeviceSessionGet',
|
|
54
|
+
'DeviceSessionAskPin',
|
|
55
|
+
'DeviceSessionAskPassphrase',
|
|
56
|
+
]);
|
|
57
|
+
|
|
58
|
+
// Protocol V2 subcodes are domain-scoped, so cross-domain cancellation fallback
|
|
59
|
+
// must use explicit firmware cancellation messages instead of a global number map.
|
|
60
|
+
const isProtocolV2ActionCancelledMessage = (message: string) =>
|
|
61
|
+
/^(?:cancel(?:led|ed)(?: on device)?|confirm dismissed|user cancel(?:led|ed)(?:\s+.*)?)$/i.test(
|
|
62
|
+
message
|
|
63
|
+
);
|
|
54
64
|
|
|
55
65
|
function shouldReduceDebugForCall(type: string) {
|
|
56
66
|
return HIGH_VOLUME_DEBUG_CALLS.has(type);
|
|
57
67
|
}
|
|
58
68
|
|
|
59
|
-
function getBinaryByteLength(value: unknown): number | undefined {
|
|
60
|
-
if (value instanceof ArrayBuffer) {
|
|
61
|
-
return value.byteLength;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (ArrayBuffer.isView(value)) {
|
|
65
|
-
return value.byteLength;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (typeof Blob !== 'undefined' && value instanceof Blob) {
|
|
69
|
-
return value.size;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function summarizeRedactedData(value: unknown): string {
|
|
76
|
-
const byteLength = getBinaryByteLength(value);
|
|
77
|
-
if (byteLength !== undefined) {
|
|
78
|
-
return `[redacted data: ${byteLength} bytes]`;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (typeof value === 'string') {
|
|
82
|
-
return `[redacted data: string length=${value.length}]`;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (Array.isArray(value)) {
|
|
86
|
-
return `[redacted data: array length=${value.length}]`;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (value && typeof value === 'object') {
|
|
90
|
-
return `[redacted data: object keys=${Object.keys(value).length}]`;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return `[redacted data: ${typeof value}]`;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function sanitizeDebugPayload(value: unknown, key = '', depth = 0): unknown {
|
|
97
|
-
if (key === 'data' && value !== null && value !== undefined) {
|
|
98
|
-
return summarizeRedactedData(value);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const byteLength = getBinaryByteLength(value);
|
|
102
|
-
if (byteLength !== undefined) {
|
|
103
|
-
return `[binary: ${byteLength} bytes]`;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (typeof value === 'string') {
|
|
107
|
-
return value.length > MAX_DEBUG_STRING_LENGTH
|
|
108
|
-
? `${value.slice(0, MAX_DEBUG_STRING_LENGTH)}... (len=${value.length})`
|
|
109
|
-
: value;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (!value || typeof value !== 'object') {
|
|
113
|
-
return value;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (depth >= MAX_DEBUG_DEPTH) {
|
|
117
|
-
return Array.isArray(value)
|
|
118
|
-
? `[array length=${value.length}]`
|
|
119
|
-
: `[object keys=${Object.keys(value).length}]`;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (Array.isArray(value)) {
|
|
123
|
-
const items = value
|
|
124
|
-
.slice(0, MAX_DEBUG_ARRAY_ITEMS)
|
|
125
|
-
.map(item => sanitizeDebugPayload(item, key, depth + 1));
|
|
126
|
-
if (value.length > MAX_DEBUG_ARRAY_ITEMS) {
|
|
127
|
-
items.push(`... (${value.length - MAX_DEBUG_ARRAY_ITEMS} more)`);
|
|
128
|
-
}
|
|
129
|
-
return items;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
const entries = Object.entries(value).slice(0, MAX_DEBUG_OBJECT_KEYS);
|
|
133
|
-
const sanitized: Record<string, unknown> = {};
|
|
134
|
-
entries.forEach(([entryKey, entryValue]) => {
|
|
135
|
-
sanitized[entryKey] = sanitizeDebugPayload(entryValue, entryKey, depth + 1);
|
|
136
|
-
});
|
|
137
|
-
if (Object.keys(value).length > MAX_DEBUG_OBJECT_KEYS) {
|
|
138
|
-
sanitized.__truncated__ = `${Object.keys(value).length - MAX_DEBUG_OBJECT_KEYS} more keys`;
|
|
139
|
-
}
|
|
140
|
-
return sanitized;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
69
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* 等与响应类型相关的选项。
|
|
70
|
+
* Interactive acknowledgements must not inherit timeoutMs from the original call.
|
|
71
|
+
* User confirmation and PIN/passphrase entry have unbounded think time. Preserve only
|
|
72
|
+
* response-related options such as expectedTypes and intermediateTypes.
|
|
148
73
|
*/
|
|
149
74
|
const stripInteractiveAckTimeout = (
|
|
150
75
|
options?: TransportCallOptions
|
|
@@ -326,20 +251,27 @@ export class DeviceCommands {
|
|
|
326
251
|
if (this.disposed) {
|
|
327
252
|
return;
|
|
328
253
|
}
|
|
329
|
-
this.
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
254
|
+
const activeCall = this.callPromise;
|
|
255
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
256
|
+
const cancellation = (async () => {
|
|
257
|
+
await this.dispose(true);
|
|
258
|
+
await activeCall?.catch(() => undefined);
|
|
259
|
+
})();
|
|
260
|
+
|
|
261
|
+
try {
|
|
262
|
+
await Promise.race([
|
|
263
|
+
cancellation,
|
|
264
|
+
new Promise<void>(resolve => {
|
|
265
|
+
timer = setTimeout(resolve, 10 * 1000);
|
|
266
|
+
}),
|
|
267
|
+
]);
|
|
268
|
+
} finally {
|
|
269
|
+
if (timer) clearTimeout(timer);
|
|
270
|
+
if (this.callPromise === activeCall) {
|
|
341
271
|
this.callPromise = undefined;
|
|
342
272
|
}
|
|
273
|
+
// The cancellation work may finish after the bounded wait.
|
|
274
|
+
cancellation.catch(() => undefined);
|
|
343
275
|
}
|
|
344
276
|
}
|
|
345
277
|
|
|
@@ -351,21 +283,31 @@ export class DeviceCommands {
|
|
|
351
283
|
): Promise<DefaultMessageResponse> {
|
|
352
284
|
const shouldReduceDebug = shouldReduceDebugForCall(type);
|
|
353
285
|
if (!shouldReduceDebug) {
|
|
354
|
-
Log.debug(
|
|
286
|
+
Log.debug(
|
|
287
|
+
'[DeviceCommands] [call] Sending',
|
|
288
|
+
type,
|
|
289
|
+
getSafeTransportLogPayload(msg ?? {}, type)
|
|
290
|
+
);
|
|
355
291
|
}
|
|
356
292
|
|
|
357
293
|
try {
|
|
358
294
|
const promise = this.transport.call(this.mainId, type, msg ?? {}, options) as any;
|
|
359
295
|
this.callPromise = promise;
|
|
360
296
|
const res = await promise;
|
|
361
|
-
if (
|
|
362
|
-
LogCore.debug(
|
|
363
|
-
|
|
364
|
-
|
|
297
|
+
if (!shouldReduceDebug) {
|
|
298
|
+
LogCore.debug(
|
|
299
|
+
'[DeviceCommands] [call] Received',
|
|
300
|
+
res.type,
|
|
301
|
+
getSafeTransportLogPayload(res.message, res.type)
|
|
302
|
+
);
|
|
365
303
|
}
|
|
366
304
|
return res;
|
|
367
305
|
} catch (error) {
|
|
368
|
-
LogCore.debug('[DeviceCommands] [call] Received error',
|
|
306
|
+
LogCore.debug('[DeviceCommands] [call] Received error', {
|
|
307
|
+
request: type,
|
|
308
|
+
errorCode: error?.errorCode,
|
|
309
|
+
response: getSafeTransportLogPayload(error?.response?.data, type),
|
|
310
|
+
});
|
|
369
311
|
if (error.errorCode === HardwareErrorCode.BleDeviceBondError) {
|
|
370
312
|
return {
|
|
371
313
|
type: 'BleDeviceBondError',
|
|
@@ -386,9 +328,6 @@ export class DeviceCommands {
|
|
|
386
328
|
}
|
|
387
329
|
}
|
|
388
330
|
|
|
389
|
-
if (responseData) {
|
|
390
|
-
Log.debug('error response', responseData);
|
|
391
|
-
}
|
|
392
331
|
if (responseError === 'device disconnected during action') {
|
|
393
332
|
return { type: 'BridgeDeviceDisconnected', message: { error: responseError } } as any;
|
|
394
333
|
}
|
|
@@ -433,31 +372,6 @@ export class DeviceCommands {
|
|
|
433
372
|
);
|
|
434
373
|
}
|
|
435
374
|
|
|
436
|
-
// Structured log of actual outgoing payloads (skip acks)
|
|
437
|
-
try {
|
|
438
|
-
const skipTypes: MessageKey[] = [
|
|
439
|
-
'ButtonAck',
|
|
440
|
-
'PinMatrixAck',
|
|
441
|
-
'PassphraseAck',
|
|
442
|
-
'Cancel',
|
|
443
|
-
'BixinPinInputOnDevice',
|
|
444
|
-
'FilesystemFileRead',
|
|
445
|
-
'FilesystemFileWrite',
|
|
446
|
-
'FileRead',
|
|
447
|
-
'FileWrite',
|
|
448
|
-
'EmmcFileRead',
|
|
449
|
-
'EmmcFileWrite',
|
|
450
|
-
'FirmwareUpload',
|
|
451
|
-
'ResourceAck',
|
|
452
|
-
] as any;
|
|
453
|
-
if (!skipTypes.includes(type) && msg) {
|
|
454
|
-
// Use debug channel to avoid noise escalation
|
|
455
|
-
Log.debug('[DeviceCommands] [typedCall] Sending payload', type, sanitizeDebugPayload(msg));
|
|
456
|
-
}
|
|
457
|
-
} catch (e) {
|
|
458
|
-
// ignore logging errors
|
|
459
|
-
}
|
|
460
|
-
|
|
461
375
|
const expectedTypes = Array.isArray(resType) ? resType : resType.split('|');
|
|
462
376
|
const response = await this._commonCall(type, msg, {
|
|
463
377
|
...options,
|
|
@@ -479,7 +393,6 @@ export class DeviceCommands {
|
|
|
479
393
|
request: type,
|
|
480
394
|
expected: resType,
|
|
481
395
|
received: response.type,
|
|
482
|
-
response: sanitizeDebugPayload(response.message),
|
|
483
396
|
});
|
|
484
397
|
// Do not intercept CallMethodError
|
|
485
398
|
// Do not intercept “assertType: Response of unexpected type” error
|
|
@@ -519,12 +432,11 @@ export class DeviceCommands {
|
|
|
519
432
|
options?: TransportCallOptions
|
|
520
433
|
): Promise<DefaultMessageResponse> {
|
|
521
434
|
try {
|
|
522
|
-
if (shouldReduceDebugForCall(callType)) {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
Log.debug('_filterCommonTypes: ', sanitizeDebugPayload(res));
|
|
435
|
+
if (!shouldReduceDebugForCall(callType)) {
|
|
436
|
+
Log.debug('_filterCommonTypes: ', {
|
|
437
|
+
request: callType,
|
|
438
|
+
response: res.type,
|
|
439
|
+
});
|
|
528
440
|
}
|
|
529
441
|
} catch (error) {
|
|
530
442
|
// ignore
|
|
@@ -532,8 +444,9 @@ export class DeviceCommands {
|
|
|
532
444
|
|
|
533
445
|
this.device.clearCancelableAction();
|
|
534
446
|
if (res.type === 'Failure') {
|
|
535
|
-
const { code, message } = res.message as {
|
|
447
|
+
const { code, subcode, message } = res.message as {
|
|
536
448
|
code?: string | FailureType;
|
|
449
|
+
subcode?: number;
|
|
537
450
|
message?: string;
|
|
538
451
|
};
|
|
539
452
|
let error: HardwareError | null = null;
|
|
@@ -577,8 +490,85 @@ export class DeviceCommands {
|
|
|
577
490
|
}
|
|
578
491
|
|
|
579
492
|
if (code === 'Failure_ProcessError') {
|
|
580
|
-
|
|
493
|
+
const normalizedMessage = message?.trim() ?? '';
|
|
494
|
+
const isProtocolV2ActionCancelledFailure =
|
|
495
|
+
this.device.isProtocolV2() && isProtocolV2ActionCancelledMessage(normalizedMessage);
|
|
496
|
+
const isLegacyProtocolV2LockedFailure =
|
|
497
|
+
this.device.isProtocolV2() && /^device (?:is )?locked$/i.test(normalizedMessage);
|
|
581
498
|
if (
|
|
499
|
+
DEVICE_SESSION_CALLS.has(callType) &&
|
|
500
|
+
subcode === DeviceSessionErrorCode.DeviceSessionError_InvalidSession
|
|
501
|
+
) {
|
|
502
|
+
error = ERRORS.TypedError(HardwareErrorCode.WalletSessionInvalid, message, {
|
|
503
|
+
failureCode: code,
|
|
504
|
+
subcode,
|
|
505
|
+
firmwareMessage: message,
|
|
506
|
+
});
|
|
507
|
+
} else if (
|
|
508
|
+
DEVICE_SESSION_CALLS.has(callType) &&
|
|
509
|
+
subcode === DeviceSessionErrorCode.DeviceSessionError_UserCancelled
|
|
510
|
+
) {
|
|
511
|
+
error = ERRORS.TypedError(HardwareErrorCode.ActionCancelled, message, {
|
|
512
|
+
failureCode: code,
|
|
513
|
+
subcode,
|
|
514
|
+
firmwareMessage: message,
|
|
515
|
+
});
|
|
516
|
+
} else if (
|
|
517
|
+
DEVICE_SESSION_CALLS.has(callType) &&
|
|
518
|
+
subcode === DeviceSessionErrorCode.DeviceSessionError_AttachPinUnavailable
|
|
519
|
+
) {
|
|
520
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceCheckUnlockTypeError, message, {
|
|
521
|
+
failureCode: code,
|
|
522
|
+
subcode,
|
|
523
|
+
firmwareMessage: message,
|
|
524
|
+
});
|
|
525
|
+
} else if (
|
|
526
|
+
DEVICE_SESSION_CALLS.has(callType) &&
|
|
527
|
+
subcode === DeviceSessionErrorCode.DeviceSessionError_PassphraseDisabled
|
|
528
|
+
) {
|
|
529
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceNotOpenedPassphrase, message, {
|
|
530
|
+
failureCode: code,
|
|
531
|
+
subcode,
|
|
532
|
+
firmwareMessage: message,
|
|
533
|
+
});
|
|
534
|
+
} else if (
|
|
535
|
+
DEVICE_SESSION_CALLS.has(callType) &&
|
|
536
|
+
(subcode === DeviceSessionErrorCode.DeviceSessionError_Busy ||
|
|
537
|
+
/^(?:busy|another flow in progress)$/i.test(normalizedMessage))
|
|
538
|
+
) {
|
|
539
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceBusy, message, {
|
|
540
|
+
failureCode: code,
|
|
541
|
+
subcode,
|
|
542
|
+
firmwareMessage: message,
|
|
543
|
+
});
|
|
544
|
+
} else if (
|
|
545
|
+
callType === 'DeviceSessionAskPin' &&
|
|
546
|
+
/^passphrase disabled$/i.test(normalizedMessage)
|
|
547
|
+
) {
|
|
548
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceNotOpenedPassphrase, message, {
|
|
549
|
+
failureCode: code,
|
|
550
|
+
subcode,
|
|
551
|
+
firmwareMessage: message,
|
|
552
|
+
});
|
|
553
|
+
} else if (
|
|
554
|
+
subcode === DeviceErrorCode.DeviceError_ActionCancelled ||
|
|
555
|
+
isProtocolV2ActionCancelledFailure
|
|
556
|
+
) {
|
|
557
|
+
error = ERRORS.TypedError(HardwareErrorCode.ActionCancelled, message, {
|
|
558
|
+
failureCode: code,
|
|
559
|
+
subcode,
|
|
560
|
+
firmwareMessage: message,
|
|
561
|
+
});
|
|
562
|
+
} else if (
|
|
563
|
+
subcode === DeviceErrorCode.DeviceError_DeviceLocked ||
|
|
564
|
+
isLegacyProtocolV2LockedFailure
|
|
565
|
+
) {
|
|
566
|
+
error = ERRORS.TypedError(HardwareErrorCode.DeviceLocked, message, {
|
|
567
|
+
failureCode: code,
|
|
568
|
+
subcode,
|
|
569
|
+
firmwareMessage: message,
|
|
570
|
+
});
|
|
571
|
+
} else if (
|
|
582
572
|
message?.includes('Bootloader file verify failed') ||
|
|
583
573
|
message?.includes('verify failed')
|
|
584
574
|
) {
|
|
@@ -655,7 +645,7 @@ export class DeviceCommands {
|
|
|
655
645
|
|
|
656
646
|
if (res.type === 'PassphraseRequest') {
|
|
657
647
|
const existsAttachPinUser = res.message.exists_attach_pin_user;
|
|
658
|
-
return this.
|
|
648
|
+
return this.promptPassphrase({
|
|
659
649
|
existsAttachPinUser,
|
|
660
650
|
}).then(response => {
|
|
661
651
|
const { passphrase, passphraseOnDevice, attachPinOnDevice } = response;
|
|
@@ -753,10 +743,27 @@ export class DeviceCommands {
|
|
|
753
743
|
});
|
|
754
744
|
}
|
|
755
745
|
|
|
756
|
-
|
|
746
|
+
promptPassphrase(
|
|
747
|
+
options: PassphraseRequestPayload,
|
|
748
|
+
promptOptions: { cancelDeviceOnReject?: boolean } = {}
|
|
749
|
+
) {
|
|
757
750
|
return new Promise<PassphrasePromptResponse>((resolve, reject) => {
|
|
758
|
-
const cancelAndReject = (_error?: Error) =>
|
|
759
|
-
|
|
751
|
+
const cancelAndReject = (_error?: Error) => {
|
|
752
|
+
const rejectWithCancelledError = () => {
|
|
753
|
+
reject(
|
|
754
|
+
ERRORS.TypedError(
|
|
755
|
+
HardwareErrorCode.CallQueueActionCancelled,
|
|
756
|
+
`${DEVICE.PASSPHRASE} canceled`
|
|
757
|
+
)
|
|
758
|
+
);
|
|
759
|
+
};
|
|
760
|
+
|
|
761
|
+
if (promptOptions.cancelDeviceOnReject === false) {
|
|
762
|
+
rejectWithCancelledError();
|
|
763
|
+
return Promise.resolve();
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
return cancelDeviceInPrompt(this.device, false)
|
|
760
767
|
.then(onCancel => {
|
|
761
768
|
const error = ERRORS.TypedError(
|
|
762
769
|
HardwareErrorCode.CallQueueActionCancelled,
|
|
@@ -773,6 +780,7 @@ export class DeviceCommands {
|
|
|
773
780
|
.catch(error => {
|
|
774
781
|
reject(error);
|
|
775
782
|
});
|
|
783
|
+
};
|
|
776
784
|
|
|
777
785
|
if (this.device.listenerCount(DEVICE.PASSPHRASE) > 0) {
|
|
778
786
|
this.device.setCancelableAction(cancelAndReject);
|
|
@@ -82,9 +82,10 @@ export default class DeviceConnector {
|
|
|
82
82
|
path: string,
|
|
83
83
|
session?: string | null,
|
|
84
84
|
forceCleanRunPromise?: boolean,
|
|
85
|
-
|
|
85
|
+
expectedProtocol?: HardwareConnectProtocol,
|
|
86
|
+
protocolHint?: HardwareConnectProtocol
|
|
86
87
|
) {
|
|
87
|
-
Log.debug('acquire', path, session,
|
|
88
|
+
Log.debug('acquire', path, session, expectedProtocol, protocolHint);
|
|
88
89
|
const env = DataManager.getSettings('env');
|
|
89
90
|
try {
|
|
90
91
|
let res;
|
|
@@ -92,21 +93,23 @@ export default class DeviceConnector {
|
|
|
92
93
|
res = await this.transport.acquire({
|
|
93
94
|
uuid: path,
|
|
94
95
|
forceCleanRunPromise,
|
|
95
|
-
expectedProtocol
|
|
96
|
+
expectedProtocol,
|
|
97
|
+
protocolHint,
|
|
96
98
|
});
|
|
97
99
|
} else {
|
|
98
100
|
res = await this.transport.acquire({
|
|
99
101
|
path,
|
|
100
102
|
previous: session ?? null,
|
|
101
|
-
expectedProtocol
|
|
103
|
+
expectedProtocol,
|
|
104
|
+
protocolHint,
|
|
102
105
|
});
|
|
103
106
|
}
|
|
104
|
-
if (
|
|
107
|
+
if (expectedProtocol) {
|
|
105
108
|
const detectedProtocol = this.transport.getProtocolType(path);
|
|
106
|
-
if (detectedProtocol !==
|
|
109
|
+
if (detectedProtocol !== expectedProtocol) {
|
|
107
110
|
throw ERRORS.TypedError(
|
|
108
111
|
HardwareErrorCode.RuntimeError,
|
|
109
|
-
`Device protocol mismatch: expected ${
|
|
112
|
+
`Device protocol mismatch: expected ${expectedProtocol}, detected ${detectedProtocol}`
|
|
110
113
|
);
|
|
111
114
|
}
|
|
112
115
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Features } from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Merge a field-level device-state patch.
|
|
5
|
+
*
|
|
6
|
+
* `undefined` means the response omitted a field and preserves the cache; `null`
|
|
7
|
+
* means the device explicitly returned an empty value and must be cached. Callers
|
|
8
|
+
* provide complete object fields such as raw; this function does not deep-merge.
|
|
9
|
+
*/
|
|
10
|
+
export function mergeDeviceFeaturesPatch(previous: Features, patch: Partial<Features>): Features {
|
|
11
|
+
let next = previous;
|
|
12
|
+
|
|
13
|
+
for (const [key, value] of Object.entries(patch) as Array<
|
|
14
|
+
[keyof Features, Features[keyof Features] | undefined]
|
|
15
|
+
>) {
|
|
16
|
+
if (value !== undefined && !Object.is(previous[key], value)) {
|
|
17
|
+
if (next === previous) {
|
|
18
|
+
next = { ...previous };
|
|
19
|
+
}
|
|
20
|
+
(next as Record<keyof Features, Features[keyof Features]>)[key] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return next;
|
|
25
|
+
}
|
package/src/device/DevicePool.ts
CHANGED
|
@@ -106,16 +106,22 @@ export class DevicePool extends EventEmitter {
|
|
|
106
106
|
if (exist) {
|
|
107
107
|
// Log.debug('find existed Device: ', connectId);
|
|
108
108
|
device.updateDescriptor(exist, true);
|
|
109
|
+
await this._refreshRuntimeState(device, initOptions);
|
|
109
110
|
devices[connectId] = device;
|
|
110
111
|
deviceList.push(device);
|
|
111
|
-
await this._checkDevicePool(initOptions);
|
|
112
|
+
await this._checkDevicePool(initOptions, connectId);
|
|
112
113
|
return { devices, deviceList };
|
|
113
114
|
}
|
|
114
115
|
Log.debug('found device in cache, but path is different: ', connectId);
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
const matchedDescriptor = connectId
|
|
120
|
+
? descriptorList.find(descriptor => descriptor.path === connectId)
|
|
121
|
+
: undefined;
|
|
122
|
+
const descriptorsToInitialize = matchedDescriptor ? [matchedDescriptor] : descriptorList;
|
|
123
|
+
|
|
124
|
+
for await (const descriptor of descriptorsToInitialize) {
|
|
119
125
|
const device = await this._createDevice(descriptor, initOptions);
|
|
120
126
|
|
|
121
127
|
const connectId = device.getConnectId();
|
|
@@ -133,7 +139,7 @@ export class DevicePool extends EventEmitter {
|
|
|
133
139
|
// Log.debug('get devices result : ', devices, deviceList);
|
|
134
140
|
// console.log('device poll -> connected: ', this.connectedPool);
|
|
135
141
|
// console.log('device poll -> disconnected: ', this.disconnectPool);
|
|
136
|
-
await this._checkDevicePool(initOptions);
|
|
142
|
+
await this._checkDevicePool(initOptions, matchedDescriptor ? connectId : undefined);
|
|
137
143
|
return { devices, deviceList };
|
|
138
144
|
}
|
|
139
145
|
|
|
@@ -151,32 +157,73 @@ export class DevicePool extends EventEmitter {
|
|
|
151
157
|
device = Device.fromDescriptor(descriptor);
|
|
152
158
|
device.deviceConnector = this.connector;
|
|
153
159
|
await device.connect(initOptions?.connectProtocol);
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
try {
|
|
161
|
+
await device.initialize(initOptions);
|
|
162
|
+
if (initOptions?.refreshRuntimeState && device.isProtocolV2()) {
|
|
163
|
+
await this._refreshProtocolV2DiscoveryState(device);
|
|
164
|
+
}
|
|
165
|
+
} finally {
|
|
166
|
+
await device.release();
|
|
167
|
+
}
|
|
156
168
|
}
|
|
157
169
|
return device;
|
|
158
170
|
}
|
|
159
171
|
|
|
160
|
-
static async
|
|
161
|
-
|
|
172
|
+
static async _refreshRuntimeState(device: Device, initOptions?: InitOptions) {
|
|
173
|
+
if (!initOptions?.refreshRuntimeState || !device.isProtocolV2()) return;
|
|
174
|
+
let refreshError: unknown;
|
|
175
|
+
await device.run(
|
|
176
|
+
async () => {
|
|
177
|
+
try {
|
|
178
|
+
await this._refreshProtocolV2DiscoveryState(device);
|
|
179
|
+
} catch (error) {
|
|
180
|
+
// Device.run releases after the callback; then propagate the actual read error.
|
|
181
|
+
refreshError = error;
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{ connectProtocol: initOptions.connectProtocol }
|
|
185
|
+
);
|
|
186
|
+
if (refreshError instanceof Error) throw refreshError;
|
|
187
|
+
if (refreshError) throw new Error(String(refreshError));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Device lists require live mode and name data. A status failure remains a connection
|
|
192
|
+
* error; settings only supplies a label, so its failure retains the existing name.
|
|
193
|
+
* Device.getDeviceState skips unsupported status/settings calls in loader mode.
|
|
194
|
+
*/
|
|
195
|
+
static async _refreshProtocolV2DiscoveryState(device: Device) {
|
|
196
|
+
await device.getDeviceState({ refreshSections: ['status'] });
|
|
197
|
+
try {
|
|
198
|
+
await device.getDeviceState({ refreshSections: ['settings'] });
|
|
199
|
+
} catch (error) {
|
|
200
|
+
Log.debug('Unable to refresh Protocol V2 device label during discovery', error);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
static async _checkDevicePool(initOptions?: InitOptions, connectId?: string) {
|
|
205
|
+
await this._sendConnectMessage(initOptions, connectId);
|
|
162
206
|
this._sendDisconnectMessage();
|
|
163
207
|
}
|
|
164
208
|
|
|
165
|
-
static async _sendConnectMessage(initOptions?: InitOptions) {
|
|
209
|
+
static async _sendConnectMessage(initOptions?: InitOptions, connectId?: string) {
|
|
166
210
|
for (let i = this.connectedPool.length - 1; i >= 0; i--) {
|
|
167
211
|
const descriptor = this.connectedPool[i];
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
212
|
+
if (!connectId || descriptor.path === connectId) {
|
|
213
|
+
const device = await this._createDevice(descriptor, initOptions);
|
|
214
|
+
Log.debug('emit DEVICE.CONNECT: ', device?.features);
|
|
215
|
+
this.emitter.emit(DEVICE.CONNECT, device);
|
|
216
|
+
this.connectedPool.splice(i, 1);
|
|
217
|
+
}
|
|
172
218
|
}
|
|
173
219
|
}
|
|
174
220
|
|
|
175
221
|
static _sendDisconnectMessage() {
|
|
176
222
|
for (let i = this.disconnectPool.length - 1; i >= 0; i--) {
|
|
177
|
-
const descriptor = this.
|
|
223
|
+
const descriptor = this.disconnectPool[i];
|
|
178
224
|
const device = descriptor?.path ? this.getDeviceByPath(descriptor.path) : null;
|
|
179
225
|
if (device) {
|
|
226
|
+
device.markTransportDisconnected();
|
|
180
227
|
this.emitter.emit(DEVICE.DISCONNECT, device);
|
|
181
228
|
}
|
|
182
229
|
this.disconnectPool.splice(i, 1);
|
|
@@ -216,6 +263,7 @@ export class DevicePool extends EventEmitter {
|
|
|
216
263
|
}
|
|
217
264
|
|
|
218
265
|
Log.debug('emit DEVICE.DISCONNECT: ', device.features);
|
|
266
|
+
device.markTransportDisconnected();
|
|
219
267
|
this.emitter.emit(DEVICE.DISCONNECT, device);
|
|
220
268
|
});
|
|
221
269
|
}
|
|
@@ -258,9 +306,11 @@ export class DevicePool extends EventEmitter {
|
|
|
258
306
|
this.disconnectPool = [];
|
|
259
307
|
this.devicesCache = {};
|
|
260
308
|
|
|
261
|
-
// Clear all event listeners but keep the emitter instance
|
|
262
|
-
this.emitter.removeAllListeners();
|
|
263
|
-
|
|
264
309
|
Log.debug('DevicePool state has been reset');
|
|
265
310
|
}
|
|
311
|
+
|
|
312
|
+
static dispose() {
|
|
313
|
+
this.resetState();
|
|
314
|
+
this.emitter.removeAllListeners();
|
|
315
|
+
}
|
|
266
316
|
}
|