@onekeyfe/hd-core 1.2.0-alpha.5 → 1.2.0-alpha.50
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 +390 -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 +351 -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 +293 -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 +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 +1781 -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 +284 -0
- package/__tests__/protocol-v2-ui-lifecycle.test.ts +91 -0
- package/__tests__/protocol-v2-unlock-policy.test.ts +206 -0
- package/__tests__/protocol-v2.test.ts +6162 -2544
- package/__tests__/protocolV2FileWrite.test.ts +92 -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 +86 -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/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 +24 -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 +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/FirmwareUpdateBaseMethod.d.ts +0 -1
- 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 +35 -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 +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 +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 +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/core/uiPromiseRegistry.d.ts +4 -0
- package/dist/core/uiPromiseRegistry.d.ts.map +1 -0
- package/dist/data-manager/DataManager.d.ts +4 -1
- package/dist/data-manager/DataManager.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 +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-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 +1592 -794
- package/dist/index.js +8249 -3981
- 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 +25 -17
- package/dist/protocols/protocol-v2/features.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 +25 -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 +26 -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 +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 +7 -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 +132 -8
- 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 +29 -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 +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 +329 -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 +660 -580
- 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 +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/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 +18 -14
- 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 +206 -0
- package/src/api/index.ts +10 -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 +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 +189 -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 +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 +319 -124
- package/src/core/uiPromiseRegistry.ts +41 -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 +42 -13
- package/src/data-manager/TransportManager.ts +1 -1
- package/src/data-manager/connectSettings.ts +4 -0
- package/src/device/Device.ts +878 -292
- 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 +72 -17
- 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-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 +103 -32
- package/src/protocols/protocol-v2/firmware.ts +1 -1
- package/src/protocols/protocol-v2/index.ts +8 -1
- package/src/protocols/protocol-v2/resources.ts +359 -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 +124 -0
- package/src/protocols/protocol-v2/walletSession.ts +424 -0
- package/src/topLevelInject.ts +6 -3
- package/src/types/api/checkAllFirmwareRelease.ts +47 -4
- package/src/types/api/detectDeviceConnectProtocol.ts +7 -0
- 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 +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 +185 -7
- package/src/types/params.ts +9 -2
- package/src/types/settings.ts +59 -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 +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/api/FileWrite.ts
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PROTOCOL_V2_BLE_FILE_CHUNK_SIZE,
|
|
3
|
-
PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE,
|
|
4
|
-
} from '@onekeyfe/hd-transport';
|
|
5
|
-
import { ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
|
|
6
|
-
|
|
7
1
|
import { BaseMethod } from './BaseMethod';
|
|
8
2
|
import {
|
|
9
|
-
validateNonEmptyString,
|
|
10
3
|
validateNonNegativeInteger,
|
|
11
4
|
validateOptionalNonNegativeInteger,
|
|
12
5
|
validateOptionalPercentage,
|
|
6
|
+
validateProtocolV2FilesystemPath,
|
|
13
7
|
validateRequiredData,
|
|
14
8
|
} from './helpers/filesystemValidation';
|
|
9
|
+
import { writeProtocolV2File } from './helpers/protocolV2FileWrite';
|
|
15
10
|
import { UI_REQUEST, createUiMessage } from '../events/ui-request';
|
|
16
|
-
import { DataManager } from '../data-manager';
|
|
17
11
|
|
|
18
12
|
export type FileWriteParams = {
|
|
19
13
|
path: string;
|
|
@@ -24,87 +18,22 @@ export type FileWriteParams = {
|
|
|
24
18
|
chunkLen?: number;
|
|
25
19
|
overwrite?: boolean;
|
|
26
20
|
append?: boolean;
|
|
21
|
+
emitProgress?: boolean;
|
|
27
22
|
uiPercentage?: number;
|
|
28
23
|
timeoutMs?: number | string;
|
|
29
24
|
};
|
|
30
25
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const env = DataManager.getSettings('env');
|
|
35
|
-
if (env && DataManager.isBleConnect(env)) {
|
|
36
|
-
return PROTOCOL_V2_BLE_FILE_CHUNK_SIZE;
|
|
37
|
-
}
|
|
38
|
-
return PROTOCOL_V2_WEBUSB_FILE_CHUNK_SIZE;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function dataToUint8Array(data: FileWriteParams['data'] | Blob): Promise<Uint8Array> {
|
|
42
|
-
if (typeof data === 'string') {
|
|
43
|
-
return new TextEncoder().encode(data);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (data instanceof ArrayBuffer) {
|
|
47
|
-
return new Uint8Array(data);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (ArrayBuffer.isView(data)) {
|
|
51
|
-
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (typeof Blob !== 'undefined' && data instanceof Blob) {
|
|
55
|
-
return new Uint8Array(await data.arrayBuffer());
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
throw ERRORS.TypedError(
|
|
59
|
-
HardwareErrorCode.CallMethodInvalidParameter,
|
|
60
|
-
'Unsupported FilesystemFileWrite data'
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function normalizeChunkSize(value: unknown, maxChunkSize: number): number {
|
|
65
|
-
const numeric = Number(value);
|
|
66
|
-
if (!Number.isFinite(numeric) || numeric <= 0) return maxChunkSize;
|
|
67
|
-
return Math.min(Math.max(Math.floor(numeric), MIN_FILE_CHUNK_SIZE), maxChunkSize);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function getConfirmedProgress(
|
|
71
|
-
processedByte: number,
|
|
72
|
-
totalSize: number,
|
|
73
|
-
written: number,
|
|
74
|
-
dataLength: number
|
|
75
|
-
) {
|
|
76
|
-
if (Number.isFinite(processedByte) && Number.isFinite(totalSize) && totalSize > 0) {
|
|
77
|
-
if (processedByte >= totalSize) return 100;
|
|
78
|
-
return Math.min(Math.max(Math.floor((processedByte / totalSize) * 100), 0), 99);
|
|
79
|
-
}
|
|
80
|
-
if (dataLength > 0) {
|
|
81
|
-
if (written >= dataLength) return 100;
|
|
82
|
-
return Math.min(Math.max(Math.floor((written / dataLength) * 100), 0), 99);
|
|
83
|
-
}
|
|
84
|
-
return 100;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function getDeviceTransferProgress(bytesBeforeChunk: number, bytesAfterChunk: number, totalBytes: number) {
|
|
88
|
-
if (!Number.isFinite(totalBytes) || totalBytes <= 0) {
|
|
89
|
-
return 100;
|
|
90
|
-
}
|
|
91
|
-
if (bytesBeforeChunk <= 0 && bytesAfterChunk < totalBytes) {
|
|
92
|
-
return 0;
|
|
93
|
-
}
|
|
94
|
-
if (bytesAfterChunk >= totalBytes) {
|
|
95
|
-
return 100;
|
|
26
|
+
export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
27
|
+
getSupportedProtocols() {
|
|
28
|
+
return ['V2'] as const;
|
|
96
29
|
}
|
|
97
|
-
return Math.min(Math.max(Math.ceil((bytesAfterChunk / totalBytes) * 100), 1), 99);
|
|
98
|
-
}
|
|
99
30
|
|
|
100
|
-
export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
101
31
|
init() {
|
|
102
|
-
// Protocol V2 (Pro2)
|
|
103
|
-
this.requireProtocolV2 = true;
|
|
32
|
+
// Protocol V2 (Pro2) only; Core rejects non-V2 devices.
|
|
104
33
|
this.skipForceUpdateCheck = true;
|
|
105
34
|
this.useDevicePassphraseState = false;
|
|
106
35
|
validateRequiredData(this.payload.data, 'data');
|
|
107
|
-
const path =
|
|
36
|
+
const path = validateProtocolV2FilesystemPath(this.payload.path, 'path');
|
|
108
37
|
const offset = validateNonNegativeInteger(this.payload.offset, 'offset', 0);
|
|
109
38
|
this.params = {
|
|
110
39
|
path,
|
|
@@ -115,115 +44,31 @@ export default class FileWrite extends BaseMethod<FileWriteParams> {
|
|
|
115
44
|
chunkLen: validateOptionalNonNegativeInteger(this.payload.chunkLen, 'chunkLen'),
|
|
116
45
|
overwrite: this.payload.overwrite ?? offset === 0,
|
|
117
46
|
append: this.payload.append ?? false,
|
|
47
|
+
emitProgress: this.payload.emitProgress ?? true,
|
|
118
48
|
uiPercentage: validateOptionalPercentage(this.payload.uiPercentage, 'uiPercentage'),
|
|
119
49
|
timeoutMs: validateOptionalNonNegativeInteger(this.payload.timeoutMs, 'timeoutMs'),
|
|
120
50
|
};
|
|
121
51
|
}
|
|
122
52
|
|
|
123
53
|
async run() {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const offsetValue = Number(this.params.offset ?? 0);
|
|
127
|
-
const startOffset = Number.isFinite(offsetValue) && offsetValue > 0 ? offsetValue : 0;
|
|
128
|
-
const payloadTotalSize = Number(this.params.totalSize);
|
|
129
|
-
const totalSize =
|
|
130
|
-
Number.isFinite(payloadTotalSize) && payloadTotalSize > 0
|
|
131
|
-
? payloadTotalSize
|
|
132
|
-
: startOffset + dataLength;
|
|
133
|
-
|
|
134
|
-
if (totalSize < startOffset + dataLength) {
|
|
135
|
-
throw ERRORS.TypedError(
|
|
136
|
-
HardwareErrorCode.RuntimeError,
|
|
137
|
-
`FilesystemFileWrite totalSize ${totalSize} is smaller than offset + data length ${
|
|
138
|
-
startOffset + dataLength
|
|
139
|
-
}`
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const chunkSize = normalizeChunkSize(
|
|
144
|
-
this.params.chunkSize ?? this.params.chunkLen,
|
|
145
|
-
getProtocolV2FileChunkLimit()
|
|
146
|
-
);
|
|
147
|
-
const overwrite = this.params.overwrite ?? false;
|
|
148
|
-
const append = this.params.append ?? false;
|
|
149
|
-
let written = 0;
|
|
150
|
-
let chunkIndex = 0;
|
|
151
|
-
let lastMessage: Record<string, unknown> | undefined;
|
|
152
|
-
const startTime = Date.now();
|
|
153
|
-
const timeoutMs =
|
|
154
|
-
this.params.timeoutMs === undefined ? undefined : Number(this.params.timeoutMs);
|
|
155
|
-
|
|
156
|
-
while (written < dataLength) {
|
|
157
|
-
const chunkEnd = Math.min(written + chunkSize, dataLength);
|
|
158
|
-
const chunk = data.slice(written, chunkEnd);
|
|
159
|
-
const offset = startOffset + written;
|
|
160
|
-
const isFirstChunk = chunkIndex === 0;
|
|
161
|
-
const progress =
|
|
162
|
-
this.params.uiPercentage ??
|
|
163
|
-
getDeviceTransferProgress(offset, offset + chunk.byteLength, totalSize);
|
|
164
|
-
|
|
165
|
-
const res = await this.device.commands.typedCall(
|
|
166
|
-
'FilesystemFileWrite',
|
|
167
|
-
'FilesystemFile',
|
|
168
|
-
{
|
|
169
|
-
file: {
|
|
170
|
-
path: this.params.path,
|
|
171
|
-
offset,
|
|
172
|
-
total_size: totalSize,
|
|
173
|
-
data: chunk,
|
|
174
|
-
},
|
|
175
|
-
overwrite: isFirstChunk ? overwrite : false,
|
|
176
|
-
append,
|
|
177
|
-
ui_percentage: progress,
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
timeoutMs,
|
|
181
|
-
}
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
lastMessage = res.message;
|
|
185
|
-
const processedByte = Number(res.message?.processed_byte);
|
|
186
|
-
if (Number.isFinite(processedByte) && processedByte > offset) {
|
|
187
|
-
written = processedByte - startOffset;
|
|
188
|
-
} else {
|
|
189
|
-
written += chunk.byteLength;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
if (written > dataLength) {
|
|
193
|
-
throw ERRORS.TypedError(
|
|
194
|
-
HardwareErrorCode.RuntimeError,
|
|
195
|
-
`FilesystemFileWrite invalid processed_byte ${processedByte}`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const confirmedProcessedByte =
|
|
200
|
-
Number.isFinite(processedByte) && processedByte > offset
|
|
201
|
-
? processedByte
|
|
202
|
-
: startOffset + written;
|
|
203
|
-
if (typeof this.postMessage === 'function') {
|
|
204
|
-
const elapsedMs = Date.now() - startTime;
|
|
205
|
-
const transferredBytes = Math.min(written, dataLength);
|
|
206
|
-
this.postMessage(
|
|
207
|
-
createUiMessage(UI_REQUEST.DEVICE_PROGRESS, {
|
|
208
|
-
progress: getConfirmedProgress(confirmedProcessedByte, totalSize, written, dataLength),
|
|
209
|
-
transferredBytes,
|
|
210
|
-
totalBytes: dataLength,
|
|
211
|
-
rateBytesPerSecond:
|
|
212
|
-
elapsedMs > 0 ? Math.round((transferredBytes / elapsedMs) * 1000) : undefined,
|
|
213
|
-
elapsedMs,
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
chunkIndex += 1;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return Promise.resolve({
|
|
221
|
-
...lastMessage,
|
|
54
|
+
return writeProtocolV2File({
|
|
55
|
+
commands: this.device.commands,
|
|
222
56
|
path: this.params.path,
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
57
|
+
data: this.params.data,
|
|
58
|
+
offset: this.params.offset,
|
|
59
|
+
totalSize: this.params.totalSize,
|
|
60
|
+
chunkSize: this.params.chunkSize,
|
|
61
|
+
chunkLen: this.params.chunkLen,
|
|
62
|
+
overwrite: this.params.overwrite,
|
|
63
|
+
append: this.params.append,
|
|
64
|
+
uiPercentage: this.params.uiPercentage,
|
|
65
|
+
timeoutMs: this.params.timeoutMs === undefined ? undefined : Number(this.params.timeoutMs),
|
|
66
|
+
throwIfAborted: () => this.throwIfAborted(),
|
|
67
|
+
onProgress: payload => {
|
|
68
|
+
if (this.params.emitProgress && typeof this.postMessage === 'function') {
|
|
69
|
+
this.postMessage(createUiMessage(UI_REQUEST.DEVICE_PROGRESS, payload));
|
|
70
|
+
}
|
|
71
|
+
},
|
|
227
72
|
});
|
|
228
73
|
}
|
|
229
74
|
}
|
|
@@ -14,7 +14,7 @@ import { uploadFirmware } from './firmware/uploadFirmware';
|
|
|
14
14
|
import { createUiMessage } from '../events';
|
|
15
15
|
import { DeviceModelToTypes, type KnownDevice } from '../types';
|
|
16
16
|
import { isEnteredManuallyBoot } from './firmware/bootloaderHelper';
|
|
17
|
-
import { LoggerNames,
|
|
17
|
+
import { LoggerNames, getLogger, wait } from '../utils';
|
|
18
18
|
import { DataManager } from '../data-manager';
|
|
19
19
|
import { DevicePool } from '../device/DevicePool';
|
|
20
20
|
|
|
@@ -89,7 +89,8 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
89
89
|
await this.device.deviceConnector?.acquire(
|
|
90
90
|
this.device.originalDescriptor.id,
|
|
91
91
|
null,
|
|
92
|
-
true
|
|
92
|
+
true,
|
|
93
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
|
|
93
94
|
);
|
|
94
95
|
await this.device.initialize();
|
|
95
96
|
if (this.device.isBootloader()) {
|
|
@@ -103,7 +104,10 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
103
104
|
} else {
|
|
104
105
|
const deviceDiff = await this.device.deviceConnector?.enumerate();
|
|
105
106
|
const devicesDescriptor = deviceDiff?.descriptors ?? [];
|
|
106
|
-
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId
|
|
107
|
+
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId, {
|
|
108
|
+
connectProtocol:
|
|
109
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
|
|
110
|
+
});
|
|
107
111
|
|
|
108
112
|
if (deviceList.length === 1 && deviceList[0]?.isBootloader()) {
|
|
109
113
|
// should update current device from cache
|
|
@@ -133,16 +137,8 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
133
137
|
const { features, commands } = device;
|
|
134
138
|
const deviceType = device.getCurrentDeviceType();
|
|
135
139
|
|
|
136
|
-
// Protocol V2 (Pro2) 固件升级走 DeviceFirmwareUpdate 流程,禁止进入 legacy 入口
|
|
137
|
-
if (device.isProtocolV2()) {
|
|
138
|
-
throw ERRORS.TypedError(
|
|
139
|
-
HardwareErrorCode.RuntimeError,
|
|
140
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
140
|
if (!device.isBootloader() && features) {
|
|
145
|
-
const
|
|
141
|
+
const serialNo = device.getCurrentSerialNo();
|
|
146
142
|
// should go to bootloader mode manually
|
|
147
143
|
if (isEnteredManuallyBoot(features, params.updateType)) {
|
|
148
144
|
return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
|
|
@@ -161,7 +157,7 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
161
157
|
|
|
162
158
|
// force clean classic device cache so that the device can initialize again
|
|
163
159
|
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
164
|
-
DevicePool.clearDeviceCache(
|
|
160
|
+
DevicePool.clearDeviceCache(serialNo);
|
|
165
161
|
}
|
|
166
162
|
delete DevicePool.devicesCache[''];
|
|
167
163
|
await this.checkPromise?.promise;
|
|
@@ -182,7 +178,7 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
180
|
|
|
185
|
-
let binary;
|
|
181
|
+
let binary: ArrayBuffer | undefined;
|
|
186
182
|
try {
|
|
187
183
|
if (params.binary) {
|
|
188
184
|
binary = this.params.binary;
|
|
@@ -207,6 +203,13 @@ export default class FirmwareUpdate extends BaseMethod<Params> {
|
|
|
207
203
|
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
208
204
|
}
|
|
209
205
|
|
|
206
|
+
if (!binary) {
|
|
207
|
+
throw ERRORS.TypedError(
|
|
208
|
+
HardwareErrorCode.FirmwareUpdateDownloadFailed,
|
|
209
|
+
'Firmware binary is unavailable'
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
|
|
210
213
|
await this.device.acquire();
|
|
211
214
|
|
|
212
215
|
const response = await uploadFirmware(
|
|
@@ -15,20 +15,14 @@ import { validateParams } from './helpers/paramsValidator';
|
|
|
15
15
|
import { DevicePool } from '../device/DevicePool';
|
|
16
16
|
import { getBinary, getInfo, getSysResourceBinary } from './firmware/getBinary';
|
|
17
17
|
import { updateResources, uploadFirmware } from './firmware/uploadFirmware';
|
|
18
|
-
import {
|
|
19
|
-
LoggerNames,
|
|
20
|
-
getDeviceBootloaderVersion,
|
|
21
|
-
getDeviceFirmwareVersion,
|
|
22
|
-
getDeviceUUID,
|
|
23
|
-
getLogger,
|
|
24
|
-
wait,
|
|
25
|
-
} from '../utils';
|
|
18
|
+
import { LoggerNames, getLogger, wait } from '../utils';
|
|
26
19
|
import { FirmwareUpdateTipMessage, createUiMessage } from '../events/ui-request';
|
|
27
20
|
import { DeviceModelToTypes } from '../types';
|
|
28
21
|
import { DataManager } from '../data-manager';
|
|
29
22
|
import { DEVICE } from '../events';
|
|
30
23
|
|
|
31
24
|
import type { Features, KnownDevice } from '../types';
|
|
25
|
+
import type { FirmwareBinary } from './firmware/getBinary';
|
|
32
26
|
|
|
33
27
|
type Params = {
|
|
34
28
|
binary?: ArrayBuffer;
|
|
@@ -41,6 +35,77 @@ type Params = {
|
|
|
41
35
|
|
|
42
36
|
const Log = getLogger(LoggerNames.Method);
|
|
43
37
|
|
|
38
|
+
const FIRMWARE_DOWNLOAD_REQUEST_OPTIONS = {
|
|
39
|
+
connectTimeoutMs: 60_000,
|
|
40
|
+
readTimeoutMs: 60_000,
|
|
41
|
+
overallTimeoutMs: 180_000,
|
|
42
|
+
maxRetries: 2,
|
|
43
|
+
retryDelayMs: 500,
|
|
44
|
+
} as const;
|
|
45
|
+
|
|
46
|
+
const normalizeFirmwareBinary = (binary: unknown): FirmwareBinary | undefined => {
|
|
47
|
+
if (typeof binary !== 'object' || binary === null) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const isNodeBuffer =
|
|
52
|
+
typeof Buffer !== 'undefined' &&
|
|
53
|
+
typeof Buffer.isBuffer === 'function' &&
|
|
54
|
+
Buffer.isBuffer(binary);
|
|
55
|
+
if (isNodeBuffer) {
|
|
56
|
+
return binary.byteLength > 0 ? binary : undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (typeof ArrayBuffer !== 'undefined' && binary instanceof ArrayBuffer) {
|
|
60
|
+
return binary.byteLength > 0 ? binary : undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (
|
|
64
|
+
typeof ArrayBuffer !== 'undefined' &&
|
|
65
|
+
typeof ArrayBuffer.isView === 'function' &&
|
|
66
|
+
ArrayBuffer.isView(binary)
|
|
67
|
+
) {
|
|
68
|
+
if (binary.byteLength <= 0) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
const source = new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength);
|
|
72
|
+
const normalized = new Uint8Array(binary.byteLength);
|
|
73
|
+
normalized.set(source);
|
|
74
|
+
return normalized.buffer;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const customBuffer = binary as {
|
|
78
|
+
[index: number]: unknown;
|
|
79
|
+
byteLength?: unknown;
|
|
80
|
+
constructor?: {
|
|
81
|
+
isBuffer?: (value: unknown) => boolean;
|
|
82
|
+
};
|
|
83
|
+
length?: unknown;
|
|
84
|
+
};
|
|
85
|
+
if (
|
|
86
|
+
typeof customBuffer.constructor?.isBuffer !== 'function' ||
|
|
87
|
+
!customBuffer.constructor.isBuffer(binary) ||
|
|
88
|
+
typeof customBuffer.byteLength !== 'number' ||
|
|
89
|
+
!Number.isSafeInteger(customBuffer.byteLength) ||
|
|
90
|
+
customBuffer.byteLength <= 0 ||
|
|
91
|
+
typeof customBuffer.length !== 'number' ||
|
|
92
|
+
customBuffer.length !== customBuffer.byteLength
|
|
93
|
+
) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const { byteLength } = customBuffer;
|
|
98
|
+
const normalized = new Uint8Array(byteLength);
|
|
99
|
+
for (let index = 0; index < byteLength; index += 1) {
|
|
100
|
+
const { [index]: byte } = customBuffer;
|
|
101
|
+
if (typeof byte !== 'number' || !Number.isInteger(byte) || byte < 0 || byte > 255) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
normalized[index] = byte;
|
|
105
|
+
}
|
|
106
|
+
return normalized.buffer;
|
|
107
|
+
};
|
|
108
|
+
|
|
44
109
|
export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
45
110
|
checkPromise: Deferred<any> | null = null;
|
|
46
111
|
|
|
@@ -173,7 +238,8 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
173
238
|
await this.device.deviceConnector?.acquire(
|
|
174
239
|
this.device.originalDescriptor.id,
|
|
175
240
|
null,
|
|
176
|
-
true
|
|
241
|
+
true,
|
|
242
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
|
|
177
243
|
);
|
|
178
244
|
await this.device.initialize();
|
|
179
245
|
if (this.device.isBootloader()) {
|
|
@@ -207,7 +273,9 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
207
273
|
) {
|
|
208
274
|
const deviceDiff = await this.device.deviceConnector?.enumerate();
|
|
209
275
|
const devicesDescriptor = deviceDiff?.descriptors ?? [];
|
|
210
|
-
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId
|
|
276
|
+
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, connectId, {
|
|
277
|
+
connectProtocol: this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
|
|
278
|
+
});
|
|
211
279
|
|
|
212
280
|
if (deviceList.length === 1 && deviceList[0]?.isBootloader()) {
|
|
213
281
|
// should update current device from cache
|
|
@@ -223,22 +291,22 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
223
291
|
return false;
|
|
224
292
|
}
|
|
225
293
|
|
|
226
|
-
isEnteredManuallyBoot(
|
|
294
|
+
isEnteredManuallyBoot() {
|
|
227
295
|
const deviceType = this.device.getCurrentDeviceType();
|
|
228
296
|
const isMini = deviceType === EDeviceType.Mini;
|
|
229
297
|
const isBoot183ClassicUpBle =
|
|
230
298
|
this.params.updateType === 'firmware' &&
|
|
231
299
|
deviceType === EDeviceType.Classic &&
|
|
232
|
-
|
|
300
|
+
this.device.getCurrentBootloaderVersionString() === '1.8.3';
|
|
233
301
|
return isMini || isBoot183ClassicUpBle;
|
|
234
302
|
}
|
|
235
303
|
|
|
236
|
-
isSupportResourceUpdate(
|
|
304
|
+
isSupportResourceUpdate(updateType: string) {
|
|
237
305
|
if (updateType !== 'firmware') return false;
|
|
238
306
|
|
|
239
307
|
const deviceType = this.device.getCurrentDeviceType();
|
|
240
308
|
const isTouchMode = deviceType === EDeviceType.Touch || deviceType === EDeviceType.Pro;
|
|
241
|
-
const currentVersion =
|
|
309
|
+
const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
|
|
242
310
|
|
|
243
311
|
return isTouchMode && semver.gte(currentVersion, '3.2.0');
|
|
244
312
|
}
|
|
@@ -250,7 +318,7 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
250
318
|
checkVersionForCopyTouchResource(features: Features | undefined, firmwareType: EFirmwareType) {
|
|
251
319
|
if (!features) return;
|
|
252
320
|
const deviceType = this.device.getCurrentDeviceType();
|
|
253
|
-
const currentVersion =
|
|
321
|
+
const currentVersion = this.device.getCurrentFirmwareVersionString() ?? '0.0.0';
|
|
254
322
|
const targetVersion = this.params.version?.join('.');
|
|
255
323
|
const { updateType } = this.params;
|
|
256
324
|
|
|
@@ -276,28 +344,62 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
276
344
|
const { features, commands } = device;
|
|
277
345
|
const deviceType = device.getCurrentDeviceType();
|
|
278
346
|
|
|
279
|
-
// Protocol V2 (Pro2) 固件升级走 DeviceFirmwareUpdate 流程,禁止进入 legacy 入口
|
|
280
|
-
if (device.isProtocolV2()) {
|
|
281
|
-
throw ERRORS.TypedError(
|
|
282
|
-
HardwareErrorCode.RuntimeError,
|
|
283
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
284
|
-
);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
347
|
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
288
348
|
const firmwareType = params.firmwareType ?? deviceFirmwareType;
|
|
289
349
|
|
|
290
350
|
this.checkVersionForCopyTouchResource(features, firmwareType);
|
|
291
351
|
|
|
352
|
+
let preparedBinary: FirmwareBinary | undefined;
|
|
353
|
+
const acquireFirmwareBinary = async (): Promise<FirmwareBinary> => {
|
|
354
|
+
try {
|
|
355
|
+
if (preparedBinary) {
|
|
356
|
+
return preparedBinary;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
if (params.binary !== undefined) {
|
|
360
|
+
preparedBinary = normalizeFirmwareBinary(params.binary);
|
|
361
|
+
if (!preparedBinary) {
|
|
362
|
+
throw new Error('firmware binary is empty or invalid');
|
|
363
|
+
}
|
|
364
|
+
return preparedBinary;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (!device.features) {
|
|
368
|
+
throw ERRORS.TypedError(
|
|
369
|
+
HardwareErrorCode.RuntimeError,
|
|
370
|
+
'no features found for this device'
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
this.postTipMessage('DownloadFirmware');
|
|
375
|
+
const firmware = await getBinary({
|
|
376
|
+
features: device.features,
|
|
377
|
+
version: params.version,
|
|
378
|
+
updateType: params.updateType,
|
|
379
|
+
isUpdateBootloader: params.isUpdateBootloader,
|
|
380
|
+
firmwareType,
|
|
381
|
+
requestOptions: FIRMWARE_DOWNLOAD_REQUEST_OPTIONS,
|
|
382
|
+
});
|
|
383
|
+
preparedBinary = normalizeFirmwareBinary(firmware.binary);
|
|
384
|
+
if (!preparedBinary) {
|
|
385
|
+
throw new Error('downloaded firmware binary is empty or invalid');
|
|
386
|
+
}
|
|
387
|
+
this.postTipMessage('DownloadFirmwareSuccess');
|
|
388
|
+
return preparedBinary;
|
|
389
|
+
} catch (err) {
|
|
390
|
+
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
|
|
292
394
|
if (!device.isBootloader() && features) {
|
|
293
|
-
const
|
|
395
|
+
const serialNo = device.getCurrentSerialNo();
|
|
294
396
|
// should go to bootloader mode manually
|
|
295
|
-
if (this.isEnteredManuallyBoot(
|
|
397
|
+
if (this.isEnteredManuallyBoot()) {
|
|
296
398
|
return Promise.reject(ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateManuallyEnterBoot));
|
|
297
399
|
}
|
|
298
400
|
|
|
299
401
|
// check & upgrade firmware resource
|
|
300
|
-
if (
|
|
402
|
+
if (this.isSupportResourceUpdate(params.updateType)) {
|
|
301
403
|
this.postTipMessage('CheckLatestUiResource');
|
|
302
404
|
const resourceUrl = DataManager.getSysResourcesLatestRelease({
|
|
303
405
|
features,
|
|
@@ -322,6 +424,12 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
322
424
|
// check if the device commands has been disposed
|
|
323
425
|
this.device?.commands?.checkDisposed();
|
|
324
426
|
|
|
427
|
+
// A failed firmware download must leave the device in normal mode.
|
|
428
|
+
await acquireFirmwareBinary();
|
|
429
|
+
|
|
430
|
+
// The request may outlive the current transport command instance.
|
|
431
|
+
this.device?.commands?.checkDisposed();
|
|
432
|
+
|
|
325
433
|
// auto go to bootloader mode
|
|
326
434
|
try {
|
|
327
435
|
this.postTipMessage('AutoRebootToBootloader');
|
|
@@ -335,7 +443,7 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
335
443
|
|
|
336
444
|
// force clean classic device cache so that the device can initialize again
|
|
337
445
|
if (DeviceModelToTypes.model_classic.includes(deviceType)) {
|
|
338
|
-
DevicePool.clearDeviceCache(
|
|
446
|
+
DevicePool.clearDeviceCache(serialNo);
|
|
339
447
|
}
|
|
340
448
|
delete DevicePool.devicesCache[''];
|
|
341
449
|
await this.checkPromise?.promise;
|
|
@@ -360,33 +468,8 @@ export default class FirmwareUpdateV2 extends BaseMethod<Params> {
|
|
|
360
468
|
}
|
|
361
469
|
}
|
|
362
470
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
try {
|
|
366
|
-
if (params.binary) {
|
|
367
|
-
binary = this.params.binary;
|
|
368
|
-
} else {
|
|
369
|
-
if (!device.features) {
|
|
370
|
-
throw ERRORS.TypedError(
|
|
371
|
-
HardwareErrorCode.RuntimeError,
|
|
372
|
-
'no features found for this device'
|
|
373
|
-
);
|
|
374
|
-
}
|
|
375
|
-
this.postTipMessage('DownloadFirmware');
|
|
376
|
-
|
|
377
|
-
const firmware = await getBinary({
|
|
378
|
-
features: device.features,
|
|
379
|
-
version: params.version,
|
|
380
|
-
updateType: params.updateType,
|
|
381
|
-
isUpdateBootloader: params.isUpdateBootloader,
|
|
382
|
-
firmwareType,
|
|
383
|
-
});
|
|
384
|
-
binary = firmware.binary;
|
|
385
|
-
this.postTipMessage('DownloadFirmwareSuccess');
|
|
386
|
-
}
|
|
387
|
-
} catch (err) {
|
|
388
|
-
throw ERRORS.TypedError(HardwareErrorCode.FirmwareUpdateDownloadFailed, err.message ?? err);
|
|
389
|
-
}
|
|
471
|
+
// Devices already in bootloader mode still acquire through the same helper.
|
|
472
|
+
const binary = await acquireFirmwareBinary();
|
|
390
473
|
|
|
391
474
|
// check if the device commands has been disposed
|
|
392
475
|
this.device?.commands?.checkDisposed();
|
|
@@ -9,8 +9,6 @@ import {
|
|
|
9
9
|
getDeviceBLEFirmwareVersion,
|
|
10
10
|
getDeviceBootloaderVersion,
|
|
11
11
|
getDeviceFirmwareVersion,
|
|
12
|
-
getDeviceType,
|
|
13
|
-
getFirmwareType,
|
|
14
12
|
getLogger,
|
|
15
13
|
} from '../utils';
|
|
16
14
|
import { getBinary, getSysResourceBinary } from './firmware/getBinary';
|
|
@@ -80,12 +78,6 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
80
78
|
}
|
|
81
79
|
|
|
82
80
|
async run() {
|
|
83
|
-
if (this.device.isProtocolV2()) {
|
|
84
|
-
throw ERRORS.TypedError(
|
|
85
|
-
HardwareErrorCode.RuntimeError,
|
|
86
|
-
'Protocol V2 firmware update must use firmwareUpdateV4'
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
81
|
Log.debug('FirmwareUpdateV3 strategy: Protocol V1');
|
|
90
82
|
return this.runProtocolV1();
|
|
91
83
|
}
|
|
@@ -97,8 +89,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
97
89
|
const { device } = this;
|
|
98
90
|
const { features } = device;
|
|
99
91
|
|
|
100
|
-
const deviceType =
|
|
101
|
-
const bootloaderCurrVersion =
|
|
92
|
+
const deviceType = device.getCurrentDeviceType();
|
|
93
|
+
const bootloaderCurrVersion = device.getCurrentBootloaderVersionString() ?? '0.0.0';
|
|
102
94
|
|
|
103
95
|
this.validateDeviceAndVersion(deviceType, bootloaderCurrVersion);
|
|
104
96
|
|
|
@@ -106,7 +98,7 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
106
98
|
throw ERRORS.TypedError(HardwareErrorCode.RuntimeError, 'Device features not available');
|
|
107
99
|
}
|
|
108
100
|
|
|
109
|
-
const deviceFirmwareType =
|
|
101
|
+
const deviceFirmwareType = device.getCurrentFirmwareType();
|
|
110
102
|
const firmwareType = this.params.firmwareType ?? deviceFirmwareType;
|
|
111
103
|
this.isSwitchFirmware = firmwareType !== deviceFirmwareType;
|
|
112
104
|
|
|
@@ -511,7 +503,8 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
511
503
|
await this.device.deviceConnector?.acquire(
|
|
512
504
|
this.device.originalDescriptor.id,
|
|
513
505
|
null,
|
|
514
|
-
true
|
|
506
|
+
true,
|
|
507
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType
|
|
515
508
|
);
|
|
516
509
|
const typedCall = this.device.getCommands().typedCall.bind(this.device.getCommands());
|
|
517
510
|
await Promise.race([
|
|
@@ -548,7 +541,10 @@ export default class FirmwareUpdateV3 extends FirmwareUpdateBaseMethod<FirmwareU
|
|
|
548
541
|
webUsbCheckCount = 0;
|
|
549
542
|
}
|
|
550
543
|
|
|
551
|
-
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, this.connectId
|
|
544
|
+
const { deviceList } = await DevicePool.getDevices(devicesDescriptor, this.connectId, {
|
|
545
|
+
connectProtocol:
|
|
546
|
+
this.payload.connectProtocol ?? this.device.originalDescriptor.protocolType,
|
|
547
|
+
});
|
|
552
548
|
|
|
553
549
|
if (deviceList.length === 1) {
|
|
554
550
|
this.device.updateFromCache(deviceList[0]);
|