Browse Source

Merge branch 'develop' into bump/live-common-new-errors

gre-patch-1
Gaëtan Renaudeau 6 years ago
committed by GitHub
parent
commit
ba5b66653e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      package.json
  2. 2
      src/api/Ethereum.js
  3. 2
      src/api/Fees.js
  4. 6
      src/api/network.js
  5. 2
      src/bridge/EthereumJSBridge.js
  6. 2
      src/bridge/LibcoreBridge.js
  7. 2
      src/bridge/RippleJSBridge.js
  8. 7
      src/commands/firmwareRepair.js
  9. 2
      src/commands/libcoreGetFees.js
  10. 2
      src/commands/libcoreSignAndBroadcast.js
  11. 6
      src/components/EnsureDeviceApp.js
  12. 2
      src/components/FeesField/BitcoinKind.js
  13. 2
      src/components/FeesField/EthereumKind.js
  14. 2
      src/components/FeesField/RippleKind.js
  15. 2
      src/components/GenuineCheck.js
  16. 2
      src/components/IsUnlocked.js
  17. 2
      src/components/SettingsPage/DisablePasswordModal.js
  18. 2
      src/components/SettingsPage/PasswordForm.js
  19. 2
      src/components/SettingsPage/PasswordModal.js
  20. 7
      src/components/SettingsPage/RepairDeviceButton.js
  21. 5
      src/components/SettingsPage/sections/Help.js
  22. 61
      src/components/base/Modal/RepairModal.js
  23. 2
      src/components/modals/AccountSettingRenderBody.js
  24. 2
      src/components/modals/Receive/steps/04-step-receive-funds.js
  25. 4
      src/components/modals/Send/fields/RecipientField.js
  26. 2
      src/components/modals/Send/index.js
  27. 2
      src/helpers/db/index.js
  28. 2
      src/helpers/init-libcore.js
  29. 2
      src/helpers/ipc.js
  30. 4
      src/helpers/libcore.js
  31. 2
      src/helpers/live-common-setup-internal-hw.js
  32. 2
      src/helpers/promise.js
  33. 2
      src/helpers/reset.js
  34. 2
      src/internals/index.js
  35. 2
      src/main/bridge.js
  36. 4
      src/reducers/currenciesStatus.js
  37. 16
      static/i18n/en/app.json
  38. 15
      yarn.lock

4
package.json

@ -41,7 +41,7 @@
"@ledgerhq/hw-transport": "^4.32.0",
"@ledgerhq/hw-transport-node-hid": "^4.32.0",
"@ledgerhq/ledger-core": "2.0.0-rc.14",
"@ledgerhq/live-common": "4.9.1",
"@ledgerhq/live-common": "4.12.0",
"animated": "^0.2.2",
"async": "^2.6.1",
"axios": "^0.18.0",
@ -185,7 +185,7 @@
"yaml-loader": "^0.5.0"
},
"engines": {
"node": ">=8.9.0 <=8.14.0",
"node": ">=8.9.0 <=8.15.0",
"yarn": "^1.10.1"
},
"private": true

2
src/api/Ethereum.js

@ -1,7 +1,7 @@
// @flow
import type { CryptoCurrency } from '@ledgerhq/live-common/lib/types'
import { BigNumber } from 'bignumber.js'
import { LedgerAPINotAvailable } from '@ledgerhq/live-common/lib/errors'
import { LedgerAPINotAvailable } from '@ledgerhq/errors'
import network from './network'
import { blockchainBaseURL } from './Ledger'

2
src/api/Fees.js

@ -2,7 +2,7 @@
import invariant from 'invariant'
import LRU from 'lru-cache'
import type { Currency } from '@ledgerhq/live-common/lib/types'
import { FeeEstimationFailed } from '@ledgerhq/live-common/lib/errors'
import { FeeEstimationFailed } from '@ledgerhq/errors'
import { blockchainBaseURL } from './Ledger'
import network from './network'

6
src/api/network.js

@ -3,11 +3,7 @@ import axios from 'axios'
import { GET_CALLS_RETRY, GET_CALLS_TIMEOUT } from 'config/constants'
import { retry } from 'helpers/promise'
import logger from 'logger'
import {
LedgerAPIErrorWithMessage,
LedgerAPIError,
NetworkDown,
} from '@ledgerhq/live-common/lib/errors'
import { LedgerAPIErrorWithMessage, LedgerAPIError, NetworkDown } from '@ledgerhq/errors'
import anonymizer from 'helpers/anonymizer'
const userFriendlyError = <A>(p: Promise<A>, { url, method, startTime, ...rest }): Promise<A> =>

2
src/bridge/EthereumJSBridge.js

@ -25,7 +25,7 @@ import { apiForCurrency } from 'api/Ethereum'
import type { Tx } from 'api/Ethereum'
import getAddressCommand from 'commands/getAddress'
import signTransactionCommand from 'commands/signTransaction'
import { NotEnoughBalance, FeeNotLoaded, ETHAddressNonEIP } from '@ledgerhq/live-common/lib/errors'
import { NotEnoughBalance, FeeNotLoaded, ETHAddressNonEIP } from '@ledgerhq/errors'
import type { EditProps, WalletBridge } from './types'
type Transaction = {

2
src/bridge/LibcoreBridge.js

@ -11,7 +11,7 @@ import libcoreSyncAccount from 'commands/libcoreSyncAccount'
import libcoreSignAndBroadcast from 'commands/libcoreSignAndBroadcast'
import libcoreGetFees, { extractGetFeesInputFromAccount } from 'commands/libcoreGetFees'
import libcoreValidAddress from 'commands/libcoreValidAddress'
import { NotEnoughBalance, FeeNotLoaded } from '@ledgerhq/live-common/lib/errors'
import { NotEnoughBalance, FeeNotLoaded } from '@ledgerhq/errors'
import type { WalletBridge, EditProps } from './types'
const NOT_ENOUGH_FUNDS = 52

2
src/bridge/RippleJSBridge.js

@ -32,7 +32,7 @@ import {
NotEnoughBalance,
FeeNotLoaded,
NotEnoughBalanceBecauseDestinationNotCreated,
} from '@ledgerhq/live-common/lib/errors'
} from '@ledgerhq/errors'
import type { WalletBridge, EditProps } from './types'
type Transaction = {

7
src/commands/firmwareRepair.js

@ -3,12 +3,15 @@
import repair from '@ledgerhq/live-common/lib/hw/firmwareUpdate-repair'
import { createCommand, Command } from 'helpers/ipc'
type Input = void
type Input = {
version: ?string,
}
type Result = { progress: number }
const cmd: Command<Input, Result> = createCommand(
'firmwareRepair',
() => repair(''), // devicePath='' HACK to not depend on a devicePath because it's dynamic
({ version }) => repair('', version), // devicePath='' HACK to not depend on a devicePath because it's dynamic
)
export default cmd

2
src/commands/libcoreGetFees.js

@ -13,7 +13,7 @@ import {
bigNumberToLibcoreAmount,
getOrCreateWallet,
} from 'helpers/libcore'
import { InvalidAddress } from '@ledgerhq/live-common/lib/errors'
import { InvalidAddress } from '@ledgerhq/errors'
type BitcoinLikeTransaction = {
// TODO we rename this Transaction concept into transactionInput

2
src/commands/libcoreSignAndBroadcast.js

@ -14,7 +14,7 @@ import {
bigNumberToLibcoreAmount,
getOrCreateWallet,
} from 'helpers/libcore'
import { UpdateYourApp } from '@ledgerhq/live-common/lib/errors'
import { UpdateYourApp } from '@ledgerhq/errors'
import withLibcore from 'helpers/withLibcore'
import { createCommand, Command } from 'helpers/ipc'

6
src/components/EnsureDeviceApp.js

@ -23,11 +23,7 @@ import IconUsb from 'icons/Usb'
import type { Device } from 'types/common'
import {
WrongDeviceForAccount,
CantOpenDevice,
UpdateYourApp,
} from '@ledgerhq/live-common/lib/errors'
import { WrongDeviceForAccount, CantOpenDevice, UpdateYourApp } from '@ledgerhq/errors'
import { getCurrentDevice } from 'reducers/devices'
const usbIcon = <IconUsb size={16} />

2
src/components/FeesField/BitcoinKind.js

@ -8,7 +8,7 @@ import { translate } from 'react-i18next'
import type { T } from 'types/common'
import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors'
import { FeeNotLoaded } from '@ledgerhq/errors'
import InputCurrency from 'components/base/InputCurrency'
import Select from 'components/base/Select'
import type { Fees } from 'api/Fees'

2
src/components/FeesField/EthereumKind.js

@ -4,7 +4,7 @@ import React, { Component } from 'react'
import { BigNumber } from 'bignumber.js'
import type { Account } from '@ledgerhq/live-common/lib/types'
import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors'
import { FeeNotLoaded } from '@ledgerhq/errors'
import InputCurrency from 'components/base/InputCurrency'
import type { Fees } from 'api/Fees'
import WithFeesAPI from '../WithFeesAPI'

2
src/components/FeesField/RippleKind.js

@ -4,7 +4,7 @@ import React, { Component } from 'react'
import type { BigNumber } from 'bignumber.js'
import type { Account } from '@ledgerhq/live-common/lib/types'
import { apiForEndpointConfig, parseAPIValue } from 'api/Ripple'
import { FeeNotLoaded } from '@ledgerhq/live-common/lib/errors'
import { FeeNotLoaded } from '@ledgerhq/errors'
import InputCurrency from 'components/base/InputCurrency'
import GenericContainer from './GenericContainer'

2
src/components/GenuineCheck.js

@ -20,7 +20,7 @@ import {
DeviceNotGenuineError,
DeviceGenuineSocketEarlyClose,
UnexpectedBootloader,
} from '@ledgerhq/live-common/lib/errors'
} from '@ledgerhq/errors'
import getDeviceInfo from 'commands/getDeviceInfo'
import getIsGenuine from 'commands/getIsGenuine'

2
src/components/IsUnlocked.js

@ -17,7 +17,7 @@ import { hardReset } from 'helpers/reset'
import { fetchAccounts } from 'actions/accounts'
import { isLocked, unlock } from 'reducers/application'
import { PasswordIncorrectError } from '@ledgerhq/live-common/lib/errors'
import { PasswordIncorrectError } from '@ledgerhq/errors'
import Box from 'components/base/Box'
import InputPassword from 'components/base/InputPassword'

2
src/components/SettingsPage/DisablePasswordModal.js

@ -1,7 +1,7 @@
// @flow
import React, { PureComponent } from 'react'
import { PasswordIncorrectError } from '@ledgerhq/live-common/lib/errors'
import { PasswordIncorrectError } from '@ledgerhq/errors'
import db from 'helpers/db'
import Box from 'components/base/Box'

2
src/components/SettingsPage/PasswordForm.js

@ -6,7 +6,7 @@ import Box from 'components/base/Box'
import InputPassword from 'components/base/InputPassword'
import Label from 'components/base/Label'
import { PasswordsDontMatchError } from '@ledgerhq/live-common/lib/errors'
import { PasswordsDontMatchError } from '@ledgerhq/errors'
import type { T } from 'types/common'

2
src/components/SettingsPage/PasswordModal.js

@ -5,7 +5,7 @@ import React, { PureComponent } from 'react'
import type { T } from 'types/common'
import db from 'helpers/db'
import { PasswordIncorrectError } from '@ledgerhq/live-common/lib/errors'
import { PasswordIncorrectError } from '@ledgerhq/errors'
import Box from 'components/base/Box'
import Button from 'components/base/Button'
import { Modal, ModalContent, ModalBody, ModalTitle, ModalFooter } from 'components/base/Modal'

7
src/components/SettingsPage/RepairDeviceButton.js

@ -41,11 +41,11 @@ class RepairDeviceButton extends PureComponent<Props, State> {
this.setState({ opened: false, isLoading: false, error: null, progress: 0 })
}
action = () => {
repair = (version = null) => {
if (this.state.isLoading) return
const { push } = this.props
this.setState({ isLoading: true })
this.sub = firmwareRepair.send().subscribe({
this.sub = firmwareRepair.send({ version }).subscribe({
next: patch => {
this.setState(patch)
},
@ -76,11 +76,10 @@ class RepairDeviceButton extends PureComponent<Props, State> {
isOpened={opened}
onClose={this.close}
onReject={this.close}
onConfirm={this.action}
repair={this.repair}
isLoading={isLoading}
title={t('settings.repairDevice.title')}
desc={t('settings.repairDevice.desc')}
confirmText={t('settings.repairDevice.button')}
progress={progress}
error={error}
/>

5
src/components/SettingsPage/sections/Help.js

@ -73,7 +73,10 @@ class SectionHelp extends PureComponent<Props> {
>
<ResetButton />
</Row>
<Row title={t('settings.repairDevice.title')} desc={t('settings.repairDevice.desc')}>
<Row
title={t('settings.repairDevice.title')}
desc={t('settings.repairDevice.descSettings')}
>
<RepairDeviceButton />
</Row>
</Body>

61
src/components/base/Modal/RepairModal.js

@ -3,6 +3,7 @@
import React, { PureComponent } from 'react'
import { translate } from 'react-i18next'
import styled from 'styled-components'
import { forceRepairChoices } from '@ledgerhq/live-common/lib/hw/firmwareUpdate-repair'
import type { T } from 'types/common'
@ -11,6 +12,7 @@ import TrackPage from 'analytics/TrackPage'
import Button from 'components/base/Button'
import Box from 'components/base/Box'
import Text from 'components/base/Text'
import Select from 'components/base/Select'
import ProgressCircle from 'components/ProgressCircle'
import TranslatedError from 'components/TranslatedError'
import ExclamationCircleThin from 'icons/ExclamationCircleThin'
@ -129,7 +131,7 @@ type Props = {
confirmText?: string,
cancelText?: string,
onReject: Function,
onConfirm: Function,
repair: (?string) => *,
t: T,
isLoading?: boolean,
analyticsName: string,
@ -138,7 +140,20 @@ type Props = {
error?: Error,
}
class RepairModal extends PureComponent<Props> {
class RepairModal extends PureComponent<Props, *> {
state = {
selectedOption: forceRepairChoices[0],
}
onChange = selectedOption => {
this.setState({ selectedOption: selectedOption || forceRepairChoices[0] })
}
renderOption = option => (option && this.props.t(`settings.repairDevice.${option.label}`)) || null
renderValue = option =>
(option && this.props.t(`settings.repairDevice.${option.data.label}`)) || null
render() {
const {
cancellable,
@ -148,7 +163,7 @@ class RepairModal extends PureComponent<Props> {
confirmText,
isDanger,
onReject,
onConfirm,
repair,
isLoading,
renderIcon,
t,
@ -157,8 +172,7 @@ class RepairModal extends PureComponent<Props> {
error,
...props
} = this.props
const realConfirmText = confirmText || t('common.confirm')
const { selectedOption } = this.state
return (
<Modal
@ -177,19 +191,36 @@ class RepairModal extends PureComponent<Props> {
<DisclaimerStep desc={desc} />
)}
{!isLoading && !error ? (
<Box py={2} px={5}>
<Select
isSearchable={false}
isClearable={false}
value={selectedOption}
onChange={this.onChange}
autoFocus
options={forceRepairChoices}
renderOption={this.renderOption}
renderValue={this.renderValue}
/>
</Box>
) : null}
{!isLoading ? (
<ModalFooter horizontal align="center" justify="flex-end" flow={2}>
<Button onClick={onReject}>{t(`common.${error ? 'close' : 'cancel'}`)}</Button>
{error ? <Button onClick={onReject}>{t(`common.close`)}</Button> : null}
{error ? null : (
<Button
onClick={onConfirm}
primary={!isDanger}
danger={isDanger}
isLoading={isLoading}
disabled={isLoading}
>
{realConfirmText}
</Button>
<>
<Button
onClick={() => repair(selectedOption.value)}
primary={!isDanger}
danger={isDanger}
isLoading={isLoading}
disabled={isLoading}
>
{t('settings.repairDevice.button')}
</Button>
</>
)}
</ModalFooter>
) : null}

2
src/components/modals/AccountSettingRenderBody.js

@ -17,7 +17,7 @@ import { setDataModal } from 'reducers/modals'
import { getBridgeForCurrency } from 'bridge'
import { AccountNameRequiredError, EnpointConfigError } from '@ledgerhq/live-common/lib/errors'
import { AccountNameRequiredError, EnpointConfigError } from '@ledgerhq/errors'
import TrackPage from 'analytics/TrackPage'
import Spoiler from 'components/base/Spoiler'

2
src/components/modals/Receive/steps/04-step-receive-funds.js

@ -7,7 +7,7 @@ import TrackPage from 'analytics/TrackPage'
import getAddress from 'commands/getAddress'
import Box from 'components/base/Box'
import CurrentAddressForAccount from 'components/CurrentAddressForAccount'
import { DisconnectedDevice, WrongDeviceForAccount } from '@ledgerhq/live-common/lib/errors'
import { DisconnectedDevice, WrongDeviceForAccount } from '@ledgerhq/errors'
import type { StepProps } from '..'

4
src/components/modals/Send/fields/RecipientField.js

@ -9,8 +9,8 @@ import Box from 'components/base/Box'
import LabelWithExternalIcon from 'components/base/LabelWithExternalIcon'
import RecipientAddress from 'components/RecipientAddress'
import { track } from 'analytics/segment'
import { createCustomErrorClass } from '@ledgerhq/live-common/lib/errors/helpers'
import { CantScanQRCode } from '@ledgerhq/live-common/lib/errors'
import { createCustomErrorClass } from '@ledgerhq/errors/lib/helpers'
import { CantScanQRCode } from '@ledgerhq/errors'
type Props<Transaction> = {
t: T,

2
src/components/modals/Send/index.js

@ -20,7 +20,7 @@ import type { StepProps as DefaultStepProps } from 'components/base/Stepper'
import { getCurrentDevice } from 'reducers/devices'
import { accountsSelector } from 'reducers/accounts'
import { closeModal, openModal } from 'reducers/modals'
import { DisconnectedDevice, UserRefusedOnDevice } from '@ledgerhq/live-common/lib/errors'
import { DisconnectedDevice, UserRefusedOnDevice } from '@ledgerhq/errors'
import Modal from 'components/base/Modal'
import Stepper from 'components/base/Stepper'

2
src/helpers/db/index.js

@ -11,7 +11,7 @@ import logger from 'logger'
import { fsReadFile, fsUnlink } from 'helpers/fs'
import { promisify, debounce } from 'helpers/promise'
import { NoDBPathGiven, DBWrongPassword } from '@ledgerhq/live-common/lib/errors'
import { NoDBPathGiven, DBWrongPassword } from '@ledgerhq/errors'
type Transform = {
get: any => any,

2
src/helpers/init-libcore.js

@ -3,7 +3,7 @@
import logger from 'logger'
import invariant from 'invariant'
import network from 'api/network'
import { serializeError } from '@ledgerhq/live-common/lib/errors/helpers'
import { serializeError } from '@ledgerhq/errors/lib/helpers'
const lib = require('@ledgerhq/ledger-core')

2
src/helpers/ipc.js

@ -2,7 +2,7 @@
import logger from 'logger'
import { Observable } from 'rxjs'
import uuidv4 from 'uuid/v4'
import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers'
import { deserializeError } from '@ledgerhq/errors/lib/helpers'
export function createCommand<In, A>(id: string, impl: In => Observable<A>): Command<In, A> {
return new Command(id, impl)

4
src/helpers/libcore.js

@ -32,8 +32,8 @@ import type {
} from '@ledgerhq/live-common/lib/types'
import type { NJSAccount, NJSOperation } from '@ledgerhq/ledger-core/src/ledgercore_doc'
import { NoAddressesFound } from '@ledgerhq/live-common/lib/errors'
import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers'
import { NoAddressesFound } from '@ledgerhq/errors'
import { deserializeError } from '@ledgerhq/errors/lib/helpers'
import { timeoutTagged } from './promise'
export function isValidAddress(core: *, currency: *, address: string): boolean {

2
src/helpers/live-common-setup-internal-hw.js

@ -5,7 +5,7 @@ import { registerTransportModule } from '@ledgerhq/live-common/lib/hw'
import { addAccessHook, setErrorRemapping } from '@ledgerhq/live-common/lib/hw/deviceAccess'
import throttle from 'lodash/throttle'
import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'
import { DisconnectedDevice } from '@ledgerhq/live-common/lib/errors'
import { DisconnectedDevice } from '@ledgerhq/errors'
import { retry } from './promise'
let busy = false

2
src/helpers/promise.js

@ -2,7 +2,7 @@
// small utilities for Promises
import logger from 'logger'
import { TimeoutTagged } from '@ledgerhq/live-common/lib/errors'
import { TimeoutTagged } from '@ledgerhq/errors'
export const delay = (ms: number): Promise<void> => new Promise(f => setTimeout(f, ms))

2
src/helpers/reset.js

@ -9,7 +9,7 @@ import { disable as disableDBMiddleware } from 'middlewares/db'
import db from 'helpers/db'
import { delay } from 'helpers/promise'
import killInternalProcess from 'commands/killInternalProcess'
import { DBNotReset } from '@ledgerhq/live-common/lib/errors'
import { DBNotReset } from '@ledgerhq/errors'
async function resetLibcoreDatabase() {
await killInternalProcess.send().toPromise()

2
src/internals/index.js

@ -10,7 +10,7 @@ import uuid from 'uuid/v4'
import { setImplementation } from 'api/network'
import sentry from 'sentry/node'
import { EXPERIMENTAL_HTTP_ON_RENDERER } from 'config/constants'
import { serializeError } from '@ledgerhq/live-common/lib/errors/helpers'
import { serializeError } from '@ledgerhq/errors/lib/helpers'
require('../env')

2
src/main/bridge.js

@ -11,7 +11,7 @@ import LoggerTransport from 'logger/logger-transport-main'
import sentry, { captureException } from 'sentry/node'
import user from 'helpers/user'
import { cleanUpBeforeClosingSync } from 'helpers/log'
import { deserializeError } from '@ledgerhq/live-common/lib/errors/helpers'
import { deserializeError } from '@ledgerhq/errors/lib/helpers'
import setupAutoUpdater, { quitAndInstall } from './autoUpdate'
import { setInternalProcessPID } from './terminator'

4
src/reducers/currenciesStatus.js

@ -37,7 +37,9 @@ export const fetchCurrenciesStatus = () => async (dispatch: *) => {
method: 'GET',
url: process.env.LL_STATUS_ENDPOINT || urls.currenciesStatus,
})
dispatch(setCurrenciesStatus(data))
if (Array.isArray(data)) {
dispatch(setCurrenciesStatus(data))
}
} catch (err) {
logger.error(err)
}

16
static/i18n/en/app.json

@ -451,8 +451,12 @@
},
"repairDevice": {
"title": "Repair your Ledger device",
"desc": "If you encountered some issue while updating your device and cannot resume the update process, you can try this option to repair your device.",
"button": "Repair"
"descSettings": "Use this tool to restore your Ledger device if it has become stuck during a firmware update.",
"desc": "Please select the state of your Ledger device.",
"button": "Repair",
"generic": "Bootloader",
"mcuNotGenuine": "MCU not genuine",
"followDeviceRepair": "Follow device repair instructions"
},
"exportLogs": {
"title": "Export logs",
@ -851,7 +855,7 @@
"description": "{{message}}"
},
"UnexpectedBootloader": {
"title": "Opps, your device should not be in Bootloader mode",
"title": "Oops, your device should not be in Bootloader mode",
"description": "Please restart your device or contact us"
},
"UserRefusedFirmwareUpdate": {
@ -906,6 +910,10 @@
},
"FeeNotLoaded": {
"title": "Couldn’t load fee rates, please set manual fees"
},
"UnknownMCU": {
"title": "Unknown MCU version",
"description": "Please contact Ledger Support"
}
}
}
}

15
yarn.lock

@ -1677,6 +1677,11 @@
camelcase "^5.0.0"
prettier "^1.13.7"
"@ledgerhq/errors@^4.32.0":
version "4.33.7"
resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.33.7.tgz#b78becd20e8a68f7115ad0986fa357a8adddf6b7"
integrity sha512-1vKWcttI5NHpT6rMKKuxWPAjfwDgfgUTf/AyNAT5KXHlhiLvqnA3NDCdNUVadajVNKSa/s1u1ZWKismtbfePzg==
"@ledgerhq/hw-app-btc@^4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.32.0.tgz#e883dcaa3ebb4aca1e2cb27acfc47b8db4e85f3f"
@ -1725,12 +1730,14 @@
bindings "^1.3.0"
nan "^2.6.2"
"@ledgerhq/live-common@4.9.1":
version "4.9.1"
resolved "https://registry.yarnpkg.com/@ledgerhq/live-common/-/live-common-4.9.1.tgz#031a1b626c03f4f3dac8eb53b7bce9ceff2f5276"
integrity sha512-KvQ4cqEr1CGwce8ch3U2IHK7uw131DR74bncmS++KKwr1MxAIa4UbLTvN7w5id9eTCP67ioM7S/xsNQqtgdG9Q==
"@ledgerhq/live-common@4.12.0":
version "4.12.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/live-common/-/live-common-4.12.0.tgz#7956564236f30460916bf61667fac4ea7ab5d814"
integrity sha512-7EH/hvZiaYzOjNd/dMZif1ydFABRxR/zc5U13XhRMutL5ru4cbyDOKW6zC97FZNNaC35RJwhT7MFkhu2hwMvLA==
dependencies:
"@aeternity/ledger-app-api" "0.0.4"
"@ledgerhq/errors" "^4.32.0"
"@ledgerhq/hw-app-btc" "^4.32.0"
"@ledgerhq/hw-app-eth" "^4.32.0"
"@ledgerhq/hw-app-xrp" "^4.32.0"

Loading…
Cancel
Save