diff --git a/packages/yoroi-extension/app/api/ada/index.js b/packages/yoroi-extension/app/api/ada/index.js index da69715fcd..e3dde18034 100644 --- a/packages/yoroi-extension/app/api/ada/index.js +++ b/packages/yoroi-extension/app/api/ada/index.js @@ -388,6 +388,16 @@ export type CreateVotingRegTxRequest = {| ...CreateVotingRegTxRequestCommon, trezorTWallet: {| votingPublicKey: string, + nonce: number, + |} +|} | {| + ...CreateVotingRegTxRequestCommon, + ledgerNanoWallet: {| + votingPublicKey: string, + stakingKeyPath: Array, + stakingKey: string, + rewardAddress: string, + nonce: number, |} |}; @@ -1412,7 +1422,7 @@ export default class AdaApi { throw new Error(`${nameof(this.createVotingRegTx)} no internal addresses left. Should never happen`); } let trxMetadata; - if (request.trezorTWallet) { + if (request.trezorTWallet || request.ledgerNanoWallet) { trxMetadata = undefined; } else { // Mnemonic wallet @@ -1452,12 +1462,9 @@ export default class AdaApi { wits: new Set(), }, trezorTCatalystRegistrationTxSignData: - request.trezorTWallet ? - { - votingPublicKey: request.trezorTWallet.votingPublicKey, - nonce: request.absSlotNumber, - } : - undefined, + request.trezorTWallet ? request.trezorTWallet : undefined, + ledgerNanoCatalystRegistrationTxSignData: + request.ledgerNanoWallet ? request.ledgerNanoWallet: undefined, }); } catch (error) { Logger.error(`${nameof(AdaApi)}::${nameof(this.createVotingRegTx)} error: ` + stringifyError(error)); diff --git a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.js b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.js index 7c6ff7f166..52495dd548 100644 --- a/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.js +++ b/packages/yoroi-extension/app/api/ada/lib/cardanoCrypto/catalyst.js @@ -7,12 +7,21 @@ export const CatalystLabels = Object.freeze({ DATA: 61284, SIG: 61285, }); -export function generateRegistration(request: {| - stakePrivateKey: RustModule.WalletV4.PrivateKey, - catalystPrivateKey: RustModule.WalletV4.PrivateKey, - receiverAddress: Buffer, - slotNumber: number, -|}): RustModule.WalletV4.GeneralTransactionMetadata { + +function prefix0x(hex: string): string { + if (hex.startsWith('0x')) { + return hex; + } + return '0x' + hex; +} + +export function generateRegistrationMetadata( + votingPublicKey: string, + stakingPublicKey: string, + rewardAddress: string, + nonce: number, + signer: Uint8Array => string, +): RustModule.WalletV4.GeneralTransactionMetadata { /** * Catalyst follows a certain standard to prove the voting power @@ -32,10 +41,10 @@ export function generateRegistration(request: {| const registrationData = RustModule.WalletV4.encode_json_str_to_metadatum( JSON.stringify({ - '1': `0x${Buffer.from(request.catalystPrivateKey.to_public().as_bytes()).toString('hex')}`, - '2': `0x${Buffer.from(request.stakePrivateKey.to_public().as_bytes()).toString('hex')}`, - '3': `0x${Buffer.from(request.receiverAddress).toString('hex')}`, - '4': request.slotNumber, + '1': prefix0x(votingPublicKey), + '2': prefix0x(stakingPublicKey), + '3': prefix0x(rewardAddress), + '4': nonce, }), RustModule.WalletV4.MetadataJsonSchema.BasicConversions ); @@ -48,15 +57,12 @@ export function generateRegistration(request: {| const hashedMetadata = blake2b(256 / 8).update( generalMetadata.to_bytes() ).digest('binary'); - const catalystSignature = request.stakePrivateKey - .sign(hashedMetadata) - .to_hex(); generalMetadata.insert( RustModule.WalletV4.BigNum.from_str(CatalystLabels.SIG.toString()), RustModule.WalletV4.encode_json_str_to_metadatum( JSON.stringify({ - '1': `0x${catalystSignature}`, + '1': prefix0x(signer(hashedMetadata)), }), RustModule.WalletV4.MetadataJsonSchema.BasicConversions ) @@ -64,3 +70,18 @@ export function generateRegistration(request: {| return generalMetadata; } + +export function generateRegistration(request: {| + stakePrivateKey: RustModule.WalletV4.PrivateKey, + catalystPrivateKey: RustModule.WalletV4.PrivateKey, + receiverAddress: Buffer, + slotNumber: number, +|}): RustModule.WalletV4.GeneralTransactionMetadata { + return generateRegistrationMetadata( + Buffer.from(request.catalystPrivateKey.to_public().as_bytes()).toString('hex'), + Buffer.from(request.stakePrivateKey.to_public().as_bytes()).toString('hex'), + Buffer.from(request.receiverAddress).toString('hex'), + request.slotNumber, + (hashedMetadata) => request.stakePrivateKey.sign(hashedMetadata).to_hex(), + ); +} diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/HaskellShelleyTxSignRequest.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/HaskellShelleyTxSignRequest.js index be1f4041fd..c8413a3556 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/HaskellShelleyTxSignRequest.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/HaskellShelleyTxSignRequest.js @@ -32,6 +32,14 @@ type NetworkSettingSnapshot = {| +KeyDeposit: BigNumber, |}; +type LedgerNanoCatalystRegistrationTxSignData = {| + votingPublicKey: string, + stakingKeyPath: Array, + stakingKey: string, + rewardAddress: string, + nonce: number, +|}; + export class HaskellShelleyTxSignRequest implements ISignRequest { @@ -47,8 +55,10 @@ implements ISignRequest { |}; trezorTCatalystRegistrationTxSignData: void | {| votingPublicKey: string, - nonce: BigNumber, + nonce: number, |}; + ledgerNanoCatalystRegistrationTxSignData: + void | LedgerNanoCatalystRegistrationTxSignData; constructor(data: {| senderUtxos: Array, @@ -62,8 +72,10 @@ implements ISignRequest { |}, trezorTCatalystRegistrationTxSignData?: void | {| votingPublicKey: string, - nonce: BigNumber, + nonce: number, |}; + ledgerNanoCatalystRegistrationTxSignData?: + void | LedgerNanoCatalystRegistrationTxSignData; |}) { this.senderUtxos = data.senderUtxos; this.unsignedTx = data.unsignedTx; @@ -73,6 +85,8 @@ implements ISignRequest { this.neededStakingKeyHashes = data.neededStakingKeyHashes; this.trezorTCatalystRegistrationTxSignData = data.trezorTCatalystRegistrationTxSignData; + this.ledgerNanoCatalystRegistrationTxSignData = + data.ledgerNanoCatalystRegistrationTxSignData; } txId(): string { diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js index ce726667bd..bfab2d9158 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.js @@ -18,7 +18,13 @@ import type { Address, Value, Addressing, } from '../../lib/storage/models/PublicDeriver/interfaces'; import { HaskellShelleyTxSignRequest } from './HaskellShelleyTxSignRequest'; -import { AddressType, CertificateType, TransactionSigningMode, TxOutputDestinationType, } from '@cardano-foundation/ledgerjs-hw-app-cardano'; +import { + AddressType, + CertificateType, + TransactionSigningMode, + TxOutputDestinationType, + TxAuxiliaryDataType, +} from '@cardano-foundation/ledgerjs-hw-app-cardano'; import { RustModule } from '../../lib/cardanoCrypto/rustLoader'; import { toHexOrBase58 } from '../../lib/storage/bridge/utils'; import { @@ -75,6 +81,28 @@ export async function createLedgerSignTxPayload(request: {| } const ttl = txBody.ttl(); + + let auxiliaryData = undefined; + if (request.signRequest.ledgerNanoCatalystRegistrationTxSignData) { + const { votingPublicKey, stakingKeyPath, nonce } = + request.signRequest.ledgerNanoCatalystRegistrationTxSignData; + + auxiliaryData = { + type: TxAuxiliaryDataType.CATALYST_REGISTRATION, + params: { + votingPublicKeyHex: votingPublicKey.replace(/^0x/, ''), + stakingPath: stakingKeyPath, + rewardsDestination: { + type: AddressType.REWARD, + params: { + stakingPath: stakingKeyPath, + }, + }, + nonce, + } + }; + } + return { signingMode: TransactionSigningMode.ORDINARY_TRANSACTION, tx: { @@ -88,7 +116,7 @@ export async function createLedgerSignTxPayload(request: {| }, withdrawals: ledgerWithdrawal.length === 0 ? null : ledgerWithdrawal, certificates: ledgerCertificates.length === 0 ? null : ledgerCertificates, - auxiliaryData: undefined, + auxiliaryData, validityIntervalStart: undefined, } }; @@ -358,7 +386,7 @@ export function toLedgerAddressParameters(request: {| return { type: AddressType.REWARD, params: { - spendingPath: request.path, // reward addresses use spending path + stakingPath: request.path, // reward addresses use spending path }, }; } diff --git a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js index 00033fd8d1..f495d1d9a1 100644 --- a/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js +++ b/packages/yoroi-extension/app/api/ada/transactions/shelley/ledgerTx.test.js @@ -184,7 +184,7 @@ test('Generate address parameters', async () => { })).toEqual(({ type: AddressType.REWARD, params: { - spendingPath: stakingKeyPath, + stakingPath: stakingKeyPath, } }: DeviceOwnedAddress)); } diff --git a/packages/yoroi-extension/app/containers/wallet/voting/VotingPage.js b/packages/yoroi-extension/app/containers/wallet/voting/VotingPage.js index c0d8b39e29..132e64824c 100644 --- a/packages/yoroi-extension/app/containers/wallet/voting/VotingPage.js +++ b/packages/yoroi-extension/app/containers/wallet/voting/VotingPage.js @@ -88,6 +88,7 @@ export default class VotingPage extends Component { if(selected == null){ throw new Error(`${nameof(VotingPage)} no wallet selected`); } + if (selected.getParent().getWalletType() === WalletTypeOption.HARDWARE_WALLET) { return ; } diff --git a/packages/yoroi-extension/app/stores/ada/HWVerifyAddressStore.js b/packages/yoroi-extension/app/stores/ada/HWVerifyAddressStore.js index 018a30408a..04844bf33c 100644 --- a/packages/yoroi-extension/app/stores/ada/HWVerifyAddressStore.js +++ b/packages/yoroi-extension/app/stores/ada/HWVerifyAddressStore.js @@ -127,7 +127,7 @@ export default class HWVerifyAddressStore extends Store { try { this.ledgerConnect = new LedgerConnect({ locale: this.stores.profile.currentLocale, - connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/#/v3', + connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/catalyst/#/v3.1', }); await prepareLedgerConnect(this.ledgerConnect); diff --git a/packages/yoroi-extension/app/stores/ada/LedgerConnectStore.js b/packages/yoroi-extension/app/stores/ada/LedgerConnectStore.js index 46e2fe08ee..bc2f42da3b 100644 --- a/packages/yoroi-extension/app/stores/ada/LedgerConnectStore.js +++ b/packages/yoroi-extension/app/stores/ada/LedgerConnectStore.js @@ -178,7 +178,7 @@ export default class LedgerConnectStore try { const ledgerConnect = new LedgerConnect({ locale: this.stores.profile.currentLocale, - connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/#/v3', + connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/catalyst/#/v3.1', }); this.ledgerConnect = ledgerConnect; await prepareLedgerConnect(ledgerConnect); diff --git a/packages/yoroi-extension/app/stores/ada/VotingStore.js b/packages/yoroi-extension/app/stores/ada/VotingStore.js index 875fe7673c..45fc21bc95 100644 --- a/packages/yoroi-extension/app/stores/ada/VotingStore.js +++ b/packages/yoroi-extension/app/stores/ada/VotingStore.js @@ -13,12 +13,14 @@ import { asHasUtxoChains, asGetSigningKey, asGetAllAccounting, + asGetStakingKey, } from '../../api/ada/lib/storage/models/PublicDeriver/traits'; import { isCardanoHaskell, getCardanoHaskellBaseConfig, } from '../../api/ada/lib/storage/database/prepackaged/networks'; import { genTimeToSlot } from '../../api/ada/lib/storage/bridge/timeUtils'; +import { unwrapStakingKey } from '../../api/ada/lib/storage/bridge/utils'; import { generatePrivateKeyForCatalyst } from '../../api/ada/lib/cardanoCrypto/cryptoWallet'; import { isLedgerNanoWallet, @@ -226,18 +228,50 @@ export default class VotingStore extends Store { throw new Error(`${nameof(this._createTransaction)} should never happen`); } + const config = fullConfig.reduce((acc, next) => Object.assign(acc, next), {}); + const nonce = timeToSlot({ time: new Date() }).slot; + let votingRegTxPromise; - if (isTrezorTWallet(publicDeriver.getParent())) { + if ( + publicDeriver.getParent().getWalletType() === WalletTypeOption.HARDWARE_WALLET + ) { const votingPublicKey = `0x${Buffer.from(catalystPrivateKey.to_public().as_bytes()).toString('hex')}`; - votingRegTxPromise = this.createVotingRegTx.execute({ - publicDeriver: withHasUtxoChains, - absSlotNumber, - trezorTWallet: { - votingPublicKey - }, - }).promise; + if (isTrezorTWallet(publicDeriver.getParent())) { + votingRegTxPromise = this.createVotingRegTx.execute({ + publicDeriver: withHasUtxoChains, + absSlotNumber, + trezorTWallet: { votingPublicKey, nonce }, + }).promise; + } else if (isLedgerNanoWallet(publicDeriver.getParent())) { + const withStakingKey = asGetStakingKey(publicDeriver); + if (!withStakingKey) { + throw new Error(`${nameof(this._createTransaction)} can't get staking key`); + } + const stakingKeyResp = await withStakingKey.getStakingKey(); + const stakingKey = unwrapStakingKey(stakingKeyResp.addr.Hash); + + const rewardAddress = RustModule.WalletV4.RewardAddress.new( + Number.parseInt(config.ChainNetworkId, 10), + stakingKey, + ); + + votingRegTxPromise = this.createVotingRegTx.execute({ + publicDeriver: withHasUtxoChains, + absSlotNumber, + ledgerNanoWallet: { + votingPublicKey, + stakingKeyPath: stakingKeyResp.addressing.path, + stakingKey: Buffer.from(stakingKey.to_bytes()).toString('hex'), + rewardAddress: Buffer.from(rewardAddress.to_address().to_bytes()).toString('hex'), + nonce, + }, + }).promise; + } else { + throw new Error(`${nameof(this._createTransaction)} unexpected hardware wallet type`); + } + } else if ( publicDeriver.getParent().getWalletType() === WalletTypeOption.WEB_WALLET ) { @@ -258,7 +292,7 @@ export default class VotingStore extends Store { publicDeriver: withStakingKey, password: spendingPassword, }); - const config = fullConfig.reduce((acc, next) => Object.assign(acc, next), {}); + const rewardAddress = RustModule.WalletV4.RewardAddress.new( Number.parseInt(config.ChainNetworkId, 10), RustModule.WalletV4.StakeCredential.from_keyhash(stakingKey.to_public().hash()), @@ -268,10 +302,7 @@ export default class VotingStore extends Store { stakePrivateKey: stakingKey, catalystPrivateKey, receiverAddress: Buffer.from(rewardAddress.to_address().to_bytes()), - slotNumber: timeToSlot({ - // add current slot to registration to avoid replay attacks - time: new Date(), - }).slot, + slotNumber: nonce, }); votingRegTxPromise = this.createVotingRegTx.execute({ diff --git a/packages/yoroi-extension/app/stores/ada/send/LedgerSendStore.js b/packages/yoroi-extension/app/stores/ada/send/LedgerSendStore.js index 52f9f78834..daa868d892 100644 --- a/packages/yoroi-extension/app/stores/ada/send/LedgerSendStore.js +++ b/packages/yoroi-extension/app/stores/ada/send/LedgerSendStore.js @@ -2,6 +2,7 @@ import { action, observable } from 'mobx'; import LedgerConnect from '@emurgo/ledger-connect-handler'; +import { TxAuxiliaryDataSupplementType } from '@cardano-foundation/ledgerjs-hw-app-cardano'; import type { SignTransactionResponse as LedgerSignTxResponse } from '@cardano-foundation/ledgerjs-hw-app-cardano'; @@ -48,6 +49,7 @@ import type { import { genAddressingLookup } from '../../stateless/addressStores'; import type { ActionsMap } from '../../../actions/index'; import type { StoresMap } from '../../index'; +import { generateRegistrationMetadata } from '../../../api/ada/lib/cardanoCrypto/catalyst'; /** Note: Handles Ledger Signing */ export default class LedgerSendStore extends Store { @@ -202,7 +204,7 @@ export default class LedgerSendStore extends Store { ledgerConnect = new LedgerConnect({ locale: this.stores.profile.currentLocale, - connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/#/v3', + connectorUrl: 'https://emurgo.github.io/yoroi-extension-ledger-connect-vnext/catalyst/#/v3.1', }); const { ledgerSignTxPayload } = await this.api.ada.createLedgerSignTxData({ @@ -212,7 +214,6 @@ export default class LedgerSendStore extends Store { }); await prepareLedgerConnect(ledgerConnect); - const ledgerSignTxResp: LedgerSignTxResponse = await ledgerConnect.signTransaction({ serial: request.expectedSerial, @@ -225,6 +226,42 @@ export default class LedgerSendStore extends Store { // Disposing here will fix the UI issue. ledgerConnect.dispose(); + let metadata; + + if (request.signRequest.ledgerNanoCatalystRegistrationTxSignData) { + const { + votingPublicKey, + stakingKey, + rewardAddress, + nonce, + } = request.signRequest.ledgerNanoCatalystRegistrationTxSignData; + + if ( + !ledgerSignTxResp.auxiliaryDataSupplement || + (ledgerSignTxResp.auxiliaryDataSupplement.type !== + TxAuxiliaryDataSupplementType.CATALYST_REGISTRATION) + ) { + throw new Error(`${nameof(LedgerSendStore)}::${nameof(this.signAndBroadcast)} unexpected Ledger sign transaction response`); + } + const { catalystRegistrationSignatureHex } = + ledgerSignTxResp.auxiliaryDataSupplement; + + const generalMetadata = generateRegistrationMetadata( + votingPublicKey, + stakingKey, + rewardAddress, + nonce, + (_hashedMetadata) => { + return catalystRegistrationSignatureHex; + }, + ); + metadata = RustModule.WalletV4.TransactionMetadata.new(generalMetadata); + } else { + metadata = request.signRequest.metadata; + } + + request.signRequest.self().set_metadata(metadata); + const txBody = request.signRequest.self().build(); const txId = Buffer.from(RustModule.WalletV4.hash_transaction(txBody).to_bytes()).toString('hex'); const signedTx = buildSignedTransaction( @@ -232,7 +269,7 @@ export default class LedgerSendStore extends Store { request.signRequest.senderUtxos, ledgerSignTxResp.witnesses, request.publicKey, - request.signRequest.metadata, + metadata, ); await this.api.ada.broadcastLedgerSignedTx({ diff --git a/packages/yoroi-extension/features/mock-ledger-connect/index.js b/packages/yoroi-extension/features/mock-ledger-connect/index.js index 701ddc4666..11aa60afc5 100644 --- a/packages/yoroi-extension/features/mock-ledger-connect/index.js +++ b/packages/yoroi-extension/features/mock-ledger-connect/index.js @@ -27,7 +27,12 @@ import { } from '../../app/api/ada/lib/cardanoCrypto/cryptoWallet'; import { testWallets } from '../mock-chain/TestWallets'; import { IncorrectDeviceError } from '../../app/domain/ExternalDeviceCommon'; -import { AddressType, CertificateType, TxOutputDestinationType } from '@cardano-foundation/ledgerjs-hw-app-cardano'; +import { + AddressType, + CertificateType, + TxOutputDestinationType, + TxAuxiliaryDataType +} from '@cardano-foundation/ledgerjs-hw-app-cardano'; type WalletInfo = {| rootKey: RustModule.WalletV4.Bip32PrivateKey; @@ -57,6 +62,8 @@ async function genWalletInfo(serial: string): Promise { isCompatible: true, recommendedVersion: null, supportsMary: true, + supportsCatalystRegistration: true, + supportsZeroTtl: true, }, }, }; @@ -83,7 +90,13 @@ function deriveAddress( ..., }, ): RustModule.WalletV4.Address { - const spendingKey = derivePath(rootKey, request.address.params.spendingPath); + let keyPath; + if (request.address.type === AddressType.REWARD) { + keyPath = request.address.params.stakingPath; + } else { + keyPath = request.address.params.spendingPath; + } + const spendingKey = derivePath(rootKey, keyPath); if (request.address.type === AddressType.BYRON) { return RustModule.WalletV4.ByronAddress.icarus_from_key( @@ -351,9 +364,16 @@ class MockLedgerConnect { body.set_certs(certs); } if (request.params.tx.auxiliaryData != null) { - body.set_metadata_hash(RustModule.WalletV4.MetadataHash.from_bytes( - Buffer.from(request.params.tx.auxiliaryData.params.hashHex, 'hex') - )); + if ( + request.params.tx.auxiliaryData.type === + TxAuxiliaryDataType.ARBITRARY_HASH + ) { + body.set_metadata_hash(RustModule.WalletV4.MetadataHash.from_bytes( + Buffer.from(request.params.tx.auxiliaryData.params.hashHex, 'hex') + )); + } else { + throw new Error('mock Ledger does not support Catalyst registration tx'); + } } if (request.params.tx.validityIntervalStart != null) { body.set_validity_start_interval( @@ -402,6 +422,7 @@ class MockLedgerConnect { return { txHashHex: Buffer.from(txBodyHash.to_bytes()).toString('hex'), witnesses, + auxiliaryDataSupplement: null, }; } diff --git a/packages/yoroi-extension/package-lock.json b/packages/yoroi-extension/package-lock.json index 268acad203..da281b38f3 100644 --- a/packages/yoroi-extension/package-lock.json +++ b/packages/yoroi-extension/package-lock.json @@ -4276,8 +4276,9 @@ "dev": true }, "@cardano-foundation/ledgerjs-hw-app-cardano": { - "version": "git+https://github.com/SebastienGllmt/ledgerjs-hw-app-cardano.git#5f660ceb4ab5d579b603a1c8f3c24d748582a473", - "from": "git+https://github.com/SebastienGllmt/ledgerjs-hw-app-cardano.git", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@cardano-foundation/ledgerjs-hw-app-cardano/-/ledgerjs-hw-app-cardano-3.1.0.tgz", + "integrity": "sha512-vzO1o1ebmuYoKPhjpo+1ANaBORmrqFz5bmyFpuEkinBK3OM1URJYFNSj8nOXg070XM587wUT2uihPv8BFQxgJg==", "requires": { "@ledgerhq/hw-transport": "^5.12.0", "@types/ledgerhq__hw-transport": "^4.21.3", @@ -4393,106 +4394,2475 @@ } } }, - "@emotion/sheet": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", - "dev": true - }, - "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", - "dev": true, - "requires": { - "@emotion/styled-base": "^10.0.27", - "babel-plugin-emotion": "^10.0.27" - } - }, - "@emotion/styled-base": { - "version": "10.0.31", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", - "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.8", - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3" - } - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", - "dev": true - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", - "dev": true - }, - "@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", - "dev": true - }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", - "dev": true - }, - "@emurgo/cardano-serialization-lib-browser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-6.0.0.tgz", - "integrity": "sha512-YlwDFsUxjF6kR8/oai7rDd2sOY8jnf7Dnrh89n2c3XEJ9MAkzx0zLfCw1VOBdNazKYI/t+Cz/b2ajTrVpYwPmA==" - }, - "@emurgo/cardano-serialization-lib-nodejs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-6.0.0.tgz", - "integrity": "sha512-8PaFFGqd2hD0KcSMcFh2f6VZx3G6wpzl4KhwiwyuEhUd+NWYT5ITQNFBmST0pJ6yQPP99/6Z3nc1L1dk60fGGA==", - "dev": true - }, - "@emurgo/cip14-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@emurgo/cip14-js/-/cip14-js-2.0.0.tgz", - "integrity": "sha512-EvjgTs4NCqH1j0wxXqWCj31P7NmTzl3aR+9am0OLSsf3NA9GsdKH5QNyXJrvSZILM4yWzlZNum3y8S5PfdM1aA==", - "requires": { - "bech32": "2.0.0", - "blake2b": "2.1.3" - } - }, - "@emurgo/cip4-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@emurgo/cip4-js/-/cip4-js-1.0.5.tgz", - "integrity": "sha512-vugHV1ca5zcUpx6Hzdt85KMvUbYIBAn/zwdWuSQ/1soCyEZnrOZJShi0hYRJoUghOpQ8TjGOCEln7B+Jgf3IJg==", - "requires": { - "blake2b": "2.1.3", - "buffer-crc32": "0.2.13", - "fnv-plus": "1.3.1" - } - }, - "@emurgo/js-chain-libs": { - "version": "0.7.1", - "resolved": "git+https://github.com/SebastienGllmt/js-chain-libs-pkg.git#86b4ab49440c3e46f7d802bf4a92bfa7c290280a" - }, - "@emurgo/js-chain-libs-node": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@emurgo/js-chain-libs-node/-/js-chain-libs-node-0.7.1.tgz", - "integrity": "sha512-j48d8WqwHAAwMRdHyaP/nIhkT7OCNvwFH7WJKi6YPncS0NsVhLBM+CXRIvNd2mNEN8TviVsqJrwkqWIuc0Bj/g==", - "dev": true - }, - "@emurgo/ledger-connect-handler": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@emurgo/ledger-connect-handler/-/ledger-connect-handler-4.7.0.tgz", - "integrity": "sha512-qI326TOFqnaJ+vO8O8G+vAEkTFWsw/sS4zplZnUjM62pHDlCi47mMipcmd5a5aN5fBQ70X6s+8jLm6oaD3to4A==", - "requires": { - "@cardano-foundation/ledgerjs-hw-app-cardano": "git+https://github.com/SebastienGllmt/ledgerjs-hw-app-cardano.git" - } - }, + "@emotion/sheet": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true + }, + "@emotion/styled": { + "version": "10.0.27", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", + "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.0.27", + "babel-plugin-emotion": "^10.0.27" + } + }, + "@emotion/styled-base": { + "version": "10.0.31", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.31.tgz", + "integrity": "sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "@emurgo/cardano-serialization-lib-browser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-6.0.0.tgz", + "integrity": "sha512-YlwDFsUxjF6kR8/oai7rDd2sOY8jnf7Dnrh89n2c3XEJ9MAkzx0zLfCw1VOBdNazKYI/t+Cz/b2ajTrVpYwPmA==" + }, + "@emurgo/cardano-serialization-lib-nodejs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-6.0.0.tgz", + "integrity": "sha512-8PaFFGqd2hD0KcSMcFh2f6VZx3G6wpzl4KhwiwyuEhUd+NWYT5ITQNFBmST0pJ6yQPP99/6Z3nc1L1dk60fGGA==", + "dev": true + }, + "@emurgo/cip14-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@emurgo/cip14-js/-/cip14-js-2.0.0.tgz", + "integrity": "sha512-EvjgTs4NCqH1j0wxXqWCj31P7NmTzl3aR+9am0OLSsf3NA9GsdKH5QNyXJrvSZILM4yWzlZNum3y8S5PfdM1aA==", + "requires": { + "bech32": "2.0.0", + "blake2b": "2.1.3" + } + }, + "@emurgo/cip4-js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@emurgo/cip4-js/-/cip4-js-1.0.5.tgz", + "integrity": "sha512-vugHV1ca5zcUpx6Hzdt85KMvUbYIBAn/zwdWuSQ/1soCyEZnrOZJShi0hYRJoUghOpQ8TjGOCEln7B+Jgf3IJg==", + "requires": { + "blake2b": "2.1.3", + "buffer-crc32": "0.2.13", + "fnv-plus": "1.3.1" + } + }, + "@emurgo/js-chain-libs": { + "version": "0.7.1", + "resolved": "git+https://github.com/SebastienGllmt/js-chain-libs-pkg.git#86b4ab49440c3e46f7d802bf4a92bfa7c290280a" + }, + "@emurgo/js-chain-libs-node": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@emurgo/js-chain-libs-node/-/js-chain-libs-node-0.7.1.tgz", + "integrity": "sha512-j48d8WqwHAAwMRdHyaP/nIhkT7OCNvwFH7WJKi6YPncS0NsVhLBM+CXRIvNd2mNEN8TviVsqJrwkqWIuc0Bj/g==", + "dev": true + }, + "@emurgo/ledger-connect-handler": { + "version": "file:../../../yoroi-extension-ledger-connect-handler", + "requires": { + "@cardano-foundation/ledgerjs-hw-app-cardano": "3.1.0" + }, + "dependencies": { + "@babel/cli": { + "version": "7.12.10", + "requires": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.0", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "optional": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/core": { + "version": "7.12.10", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.12.11" + }, + "@babel/template": { + "version": "7.12.7", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + } + } + }, + "@babel/generator": { + "version": "7.12.11", + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "requires": { + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "requires": { + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4" + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + }, + "dependencies": { + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "requires": { + "@babel/types": "^7.12.10" + } + } + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "requires": { + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4" + }, + "@babel/helpers": { + "version": "7.12.5", + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "has-flag": { + "version": "3.0.0" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.11.5" + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.1", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.10", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "@babel/preset-flow": { + "version": "7.12.1", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-transform-flow-strip-types": "^7.12.1" + } + }, + "@babel/runtime": { + "version": "7.12.5", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/traverse": { + "version": "7.12.12", + "requires": { + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/parser": { + "version": "7.12.11" + }, + "@babel/template": { + "version": "7.12.7", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "requires": { + "@babel/highlight": "^7.10.4" + } + } + } + } + } + }, + "@babel/types": { + "version": "7.12.12", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.12.11" + } + } + }, + "@cardano-foundation/ledgerjs-hw-app-cardano": { + "version": "3.1.0", + "requires": { + "@ledgerhq/hw-transport": "^5.12.0", + "@types/ledgerhq__hw-transport": "^4.21.3", + "base-x": "^3.0.5", + "bech32": "^1.1.4", + "node-int64": "^0.4.0" + } + }, + "@eslint/eslintrc": { + "version": "0.2.2", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "acorn-jsx": { + "version": "5.2.0" + }, + "espree": { + "version": "7.3.0", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + } + }, + "globals": { + "version": "12.4.0", + "requires": { + "type-fest": "^0.8.1" + } + } + } + }, + "@ledgerhq/devices": { + "version": "5.15.0", + "requires": { + "@ledgerhq/errors": "^5.15.0", + "@ledgerhq/logs": "^5.15.0", + "rxjs": "^6.5.5" + } + }, + "@ledgerhq/errors": { + "version": "5.15.0" + }, + "@ledgerhq/hw-transport": { + "version": "5.15.0", + "requires": { + "@ledgerhq/devices": "^5.15.0", + "@ledgerhq/errors": "^5.15.0", + "events": "^3.1.0" + } + }, + "@ledgerhq/logs": { + "version": "5.15.0" + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + } + } + }, + "@types/color-name": { + "version": "1.1.1" + }, + "@types/ledgerhq__hw-transport": { + "version": "4.21.3", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.41" + }, + "@types/parse-json": { + "version": "4.0.0" + }, + "acorn": { + "version": "7.4.0" + }, + "acorn-jsx": { + "version": "5.3.1" + }, + "ajv": { + "version": "6.12.4", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1" + }, + "ansi-regex": { + "version": "5.0.0" + }, + "ansi-styles": { + "version": "4.2.1", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "2.0.0", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "optional": true + }, + "arr-flatten": { + "version": "1.1.0", + "optional": true + }, + "arr-union": { + "version": "3.1.0", + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "optional": true + }, + "assign-symbols": { + "version": "1.0.0", + "optional": true + }, + "astral-regex": { + "version": "2.0.0" + }, + "async-each": { + "version": "1.0.3", + "optional": true + }, + "atob": { + "version": "2.1.2", + "optional": true + }, + "babel-eslint": { + "version": "10.1.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.11.6", + "requires": { + "@babel/types": "^7.11.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/traverse": { + "version": "7.11.5", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.11.5", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "balanced-match": { + "version": "1.0.0" + }, + "base": { + "version": "0.11.2", + "optional": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-x": { + "version": "3.0.6", + "requires": { + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0" + } + } + }, + "bech32": { + "version": "1.1.4" + }, + "binary-extensions": { + "version": "2.0.0" + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "cache-base": { + "version": "1.0.1", + "optional": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0" + }, + "camelcase": { + "version": "5.3.1" + }, + "chalk": { + "version": "4.0.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.0.2", + "requires": { + "anymatch": "^3.0.1", + "braces": "^3.0.2", + "glob-parent": "^5.0.0", + "is-binary-path": "^2.1.0", + "is-glob": "^4.0.1", + "normalize-path": "^3.0.0", + "readdirp": "^3.1.1" + }, + "dependencies": { + "anymatch": { + "version": "3.0.3", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0" + }, + "readdirp": { + "version": "3.1.2", + "requires": { + "picomatch": "^2.0.4" + } + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ci-info": { + "version": "2.0.0" + }, + "class-utils": { + "version": "0.3.6", + "optional": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cliui": { + "version": "6.0.0", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "optional": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "commander": { + "version": "4.1.1" + }, + "compare-versions": { + "version": "3.6.0" + }, + "component-emitter": { + "version": "1.3.0", + "optional": true + }, + "concat-map": { + "version": "0.0.1" + }, + "convert-source-map": { + "version": "1.7.0", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "optional": true + }, + "cosmiconfig": { + "version": "7.0.0", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.2", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.1.1", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0" + }, + "decode-uri-component": { + "version": "0.2.0", + "optional": true + }, + "deep-is": { + "version": "0.1.3" + }, + "define-property": { + "version": "0.2.5", + "optional": true, + "requires": { + "is-descriptor": "^0.1.0" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "0.1.6", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "optional": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "optional": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0" + }, + "enquirer": { + "version": "2.3.6", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "eslint": { + "version": "7.17.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.0.0" + }, + "globals": { + "version": "12.4.0", + "requires": { + "type-fest": "^0.8.1" + } + }, + "semver": { + "version": "7.3.2" + } + } + }, + "eslint-plugin-flowtype": { + "version": "5.2.0", + "requires": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + } + }, + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0" + }, + "espree": { + "version": "7.3.1", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.3.1", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0" + } + } + }, + "estraverse": { + "version": "4.3.0" + }, + "esutils": { + "version": "2.0.3" + }, + "events": { + "version": "3.1.0" + }, + "expand-brackets": { + "version": "2.1.4", + "optional": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "optional": true + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "optional": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-json-stable-stringify": { + "version": "2.0.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "file-entry-cache": { + "version": "6.0.0", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "4.0.0", + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "find-versions": { + "version": "4.0.0", + "requires": { + "semver-regex": "^3.1.2" + } + }, + "flat-cache": { + "version": "3.0.4", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.0" + }, + "flow-bin": { + "version": "0.133.0" + }, + "flow-copy-source": { + "version": "2.0.9", + "requires": { + "chokidar": "^3.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.0.0", + "kefir": "^3.7.3", + "yargs": "^15.0.1" + } + }, + "for-in": { + "version": "1.0.2", + "optional": true + }, + "fragment-cache": { + "version": "0.2.1", + "optional": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "8.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0" + }, + "fs.realpath": { + "version": "1.0.0" + }, + "functional-red-black-tree": { + "version": "1.0.1" + }, + "gensync": { + "version": "1.0.0-beta.1" + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-value": { + "version": "2.0.6", + "optional": true + }, + "glob": { + "version": "7.1.4", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.0.0", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0" + }, + "graceful-fs": { + "version": "4.2.2" + }, + "has-flag": { + "version": "4.0.0" + }, + "has-value": { + "version": "1.0.0", + "optional": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "optional": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "husky": { + "version": "4.3.7", + "requires": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^7.0.0", + "find-versions": "^4.0.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^5.0.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0" + } + } + }, + "ignore": { + "version": "4.0.6" + }, + "import-fresh": { + "version": "3.2.1", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "optional": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "optional": true + } + } + }, + "is-arrayish": { + "version": "0.2.1" + }, + "is-binary-path": { + "version": "2.1.0", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "optional": true + }, + "is-data-descriptor": { + "version": "1.0.0", + "optional": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "optional": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "optional": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "optional": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "optional": true + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "is-glob": { + "version": "4.0.1", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "optional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-windows": { + "version": "1.0.2", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "optional": true + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1", + "optional": true + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.13.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2" + }, + "json-parse-better-errors": { + "version": "1.0.2" + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json5": { + "version": "2.1.3", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "kefir": { + "version": "3.8.6", + "requires": { + "symbol-observable": "1.0.4" + } + }, + "kind-of": { + "version": "3.2.2", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "levn": { + "version": "0.4.1", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.20" + }, + "make-dir": { + "version": "2.1.0", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "optional": true + }, + "map-visit": { + "version": "1.0.0", + "optional": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "optional": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "optional": true + } + } + }, + "minimatch": { + "version": "3.0.4", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5" + }, + "mixin-deep": { + "version": "1.3.2", + "optional": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ms": { + "version": "2.1.2" + }, + "nanomatch": { + "version": "1.2.13", + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "optional": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "optional": true + } + } + }, + "natural-compare": { + "version": "1.4.0" + }, + "node-int64": { + "version": "0.4.0" + }, + "normalize-path": { + "version": "3.0.0" + }, + "object-copy": { + "version": "0.1.0", + "optional": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-visit": { + "version": "1.0.1", + "optional": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "optional": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "opencollective-postinstall": { + "version": "2.0.2" + }, + "optionator": { + "version": "0.9.1", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0" + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "pascalcase": { + "version": "0.1.1", + "optional": true + }, + "path-dirname": { + "version": "1.0.2", + "optional": true + }, + "path-exists": { + "version": "4.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-key": { + "version": "3.1.1" + }, + "path-parse": { + "version": "1.0.6" + }, + "path-type": { + "version": "4.0.0" + }, + "picomatch": { + "version": "2.0.7" + }, + "pify": { + "version": "4.0.1" + }, + "pkg-dir": { + "version": "5.0.0", + "requires": { + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "requires": { + "semver-compare": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "optional": true + }, + "prelude-ls": { + "version": "1.2.1" + }, + "process-nextick-args": { + "version": "2.0.1", + "optional": true + }, + "progress": { + "version": "2.0.3" + }, + "punycode": { + "version": "2.1.1" + }, + "readable-stream": { + "version": "2.3.6", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerator-runtime": { + "version": "0.13.5" + }, + "regex-not": { + "version": "1.0.2", + "optional": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "3.1.0" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "optional": true + }, + "repeat-element": { + "version": "1.1.3", + "optional": true + }, + "repeat-string": { + "version": "1.6.1", + "optional": true + }, + "require-directory": { + "version": "2.1.1" + }, + "require-from-string": { + "version": "2.0.2" + }, + "require-main-filename": { + "version": "2.0.0" + }, + "resolve": { + "version": "1.12.0", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0" + }, + "resolve-url": { + "version": "0.2.1", + "optional": true + }, + "ret": { + "version": "0.1.15", + "optional": true + }, + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.5", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2" + }, + "safe-regex": { + "version": "1.1.0", + "optional": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.7.1" + }, + "semver-compare": { + "version": "1.0.0" + }, + "semver-regex": { + "version": "3.1.2" + }, + "set-blocking": { + "version": "2.0.0" + }, + "set-value": { + "version": "2.0.1", + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "slash": { + "version": "2.0.0" + }, + "slice-ansi": { + "version": "4.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "optional": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "optional": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "optional": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "optional": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "optional": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-map": { + "version": "0.5.7" + }, + "source-map-resolve": { + "version": "0.5.2", + "optional": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "optional": true + }, + "split-string": { + "version": "3.1.0", + "optional": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "static-extend": { + "version": "0.1.2", + "optional": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "string-natural-compare": { + "version": "3.0.1" + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "supports-color": { + "version": "7.1.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "symbol-observable": { + "version": "1.0.4" + }, + "table": { + "version": "6.0.7", + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.0.3", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + } + } + }, + "text-table": { + "version": "0.2.0" + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-object-path": { + "version": "0.3.0", + "optional": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "optional": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "optional": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "optional": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "optional": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tslib": { + "version": "1.10.0" + }, + "type-check": { + "version": "0.4.0", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1" + }, + "union-value": { + "version": "1.0.1", + "optional": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2" + }, + "unset-value": { + "version": "1.0.0", + "optional": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "optional": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "optional": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "optional": true + } + } + }, + "upath": { + "version": "1.1.2", + "optional": true + }, + "uri-js": { + "version": "4.2.2", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "optional": true + }, + "use": { + "version": "3.1.1", + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "optional": true + }, + "v8-compile-cache": { + "version": "2.1.0" + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0" + }, + "which-pm-runs": { + "version": "1.0.0" + }, + "word-wrap": { + "version": "1.2.3" + }, + "wrap-ansi": { + "version": "6.2.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2" + }, + "y18n": { + "version": "4.0.1" + }, + "yaml": { + "version": "1.10.0" + }, + "yargs": { + "version": "15.3.1", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.3", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yocto-queue": { + "version": "0.1.0" + } + } + }, "@eslint/eslintrc": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", @@ -5375,13 +7745,13 @@ } }, "@ledgerhq/devices": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.50.0.tgz", - "integrity": "sha512-VU3i48egHwUSHqNPKa8dNXLxD6gvmPKbKkp2pGL8tNNGXT44iHWplEAQy7et7+Fa48Sh7G2WPBvCbQg9K/SeCw==", + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", + "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", "requires": { "@ledgerhq/errors": "^5.50.0", "@ledgerhq/logs": "^5.50.0", - "rxjs": "^6.6.7", + "rxjs": "6", "semver": "^7.3.5" }, "dependencies": { @@ -5414,11 +7784,11 @@ "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==" }, "@ledgerhq/hw-transport": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.50.0.tgz", - "integrity": "sha512-VlcVGgp+Ae4hrUFzSroPJS4i7iBWEYVat91pCl8LyrN+xD8sjamHje69JCdDYY+Cb5++0pbSZt3FGiV0ml3xGA==", + "version": "5.51.1", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", + "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", "requires": { - "@ledgerhq/devices": "^5.50.0", + "@ledgerhq/devices": "^5.51.1", "@ledgerhq/errors": "^5.50.0", "events": "^3.3.0" }, diff --git a/packages/yoroi-extension/package.json b/packages/yoroi-extension/package.json index d83a406452..1e4ecbdfd3 100644 --- a/packages/yoroi-extension/package.json +++ b/packages/yoroi-extension/package.json @@ -149,13 +149,13 @@ "ws": "7.4.3" }, "dependencies": { - "@cardano-foundation/ledgerjs-hw-app-cardano": "git+https://github.com/SebastienGllmt/ledgerjs-hw-app-cardano.git", + "@cardano-foundation/ledgerjs-hw-app-cardano": "3.1.0", "@download/blockies": "1.0.3", "@emurgo/cardano-serialization-lib-browser": "6.0.0", "@emurgo/cip14-js": "2.0.0", "@emurgo/cip4-js": "1.0.5", "@emurgo/js-chain-libs": "0.7.1", - "@emurgo/ledger-connect-handler": "4.7.0", + "@emurgo/ledger-connect-handler": "5.0.0", "@svgr/webpack": "5.5.0", "async-mutex": "^0.3.1", "axios": "0.21.1",